@sjcrh/proteinpaint-client 2.211.0 → 2.212.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 (883) hide show
  1. package/dist/2dmaf-R23YQDZC.js +1367 -0
  2. package/dist/AggMatrixInput-4DIGZZN4.js +406 -0
  3. package/dist/AggregateMatrix-TF6XXFUN.js +41 -0
  4. package/dist/AppHeader-JB5HPAOQ.js +830 -0
  5. package/dist/BoxPlot-47TUXQDP.js +1208 -0
  6. package/dist/CorrelationVolcano-G7K5JEPM.js +617 -0
  7. package/dist/Cuminc-LBXPOENU.js +1220 -0
  8. package/dist/Cuminc-LBXPOENU.js.map +7 -0
  9. package/dist/DE-JSWA6HXV.js +89 -0
  10. package/dist/DEinput-LEYRVYK6.js +501 -0
  11. package/dist/DM-332QECUP.js +90 -0
  12. package/dist/DifferentialAnalysis-JGH2OMTH.js +239 -0
  13. package/dist/Disco-36PJXFM6.js +3389 -0
  14. package/dist/Disco.UI-PY2KOGKY.js +243 -0
  15. package/dist/DmrPlot-5WMOBZOJ.js +362 -0
  16. package/dist/GB-6WWLTBIW.js +1392 -0
  17. package/dist/GSEA-GYUVO2XA.js +875 -0
  18. package/dist/GeneExpInput-UABEICGS.js +42 -0
  19. package/dist/Geomap-QB6FNV5R.js +84 -0
  20. package/dist/HicApp-TQKQKJTN.js +2245 -0
  21. package/dist/IDCViewer-L27ICGR5.js +10812 -0
  22. package/dist/NumBinaryEditor-FHSSXZV4.js +279 -0
  23. package/dist/NumBinaryEditor.unit.spec-AMR32JHJ.js +312 -0
  24. package/dist/NumContEditor-R5JB5XPB.js +105 -0
  25. package/dist/NumContEditor.unit.spec-3PQRIC4G.js +164 -0
  26. package/dist/NumCustomBinEditor-B3PKD54F.js +33 -0
  27. package/dist/NumCustomBinEditor.unit.spec-YZKCYZQM.js +397 -0
  28. package/dist/NumDiscreteEditor-7AO35XU7.js +170 -0
  29. package/dist/NumDiscreteEditor.unit.spec-SNDHS6VK.js +233 -0
  30. package/dist/NumRegularBinEditor-OREKM2DX.js +33 -0
  31. package/dist/NumRegularBinEditor.unit.spec-SIGD7PLE.js +278 -0
  32. package/dist/NumSplineEditor-RDFDVNJG.js +210 -0
  33. package/dist/NumSplineEditor.unit.spec-TXRQVLUE.js +224 -0
  34. package/dist/NumericDensity-QPDF6UU5.js +33 -0
  35. package/dist/NumericDensity.unit.spec-JYUYDHDG.js +418 -0
  36. package/dist/NumericHandler-JW6DLSMJ.js +34 -0
  37. package/dist/NumericHandler.unit.spec-Q2ZNM5NH.js +214 -0
  38. package/dist/ProteomeInput-OS5JWC2O.js +388 -0
  39. package/dist/Regression-53XPZCCQ.js +1416 -0
  40. package/dist/RunChart2-WEO42KPP.js +749 -0
  41. package/dist/SC-VAWRWOUI.js +1348 -0
  42. package/dist/SC-VAWRWOUI.js.map +7 -0
  43. package/dist/Violin-7VOFUOLE.js +1064 -0
  44. package/dist/Volcano-DI2RLILX.js +2456 -0
  45. package/dist/Wsi-6DNY4RUG.js +629 -0
  46. package/dist/adSandbox-B7GQZDYQ.js +33 -0
  47. package/dist/animatedBubbleChart-QGO3OY5E.js +547 -0
  48. package/dist/app-XBLP7YZQ.js +32 -0
  49. package/dist/app-ZARZ2HWS.js +42 -0
  50. package/dist/app.js +12 -12
  51. package/dist/bam-FGNF7RYM.js +876 -0
  52. package/dist/barchart-6YLJJSRO.js +42 -0
  53. package/dist/barchart2-7TTZPYWA.js +309 -0
  54. package/dist/block-7WZWBQVA.js +6250 -0
  55. package/dist/block.init-YN4KHHJ2.js +33 -0
  56. package/dist/block.mds.expressionrank-6PKN3KIE.js +354 -0
  57. package/dist/block.mds.geneboxplot-M6TXRPKO.js +823 -0
  58. package/dist/block.mds.junction-WKRLLJBT.js +1539 -0
  59. package/dist/block.mds.svcnv-I3DNNGYV.js +6796 -0
  60. package/dist/block.svg-D72WTLKP.js +159 -0
  61. package/dist/block.tk.aicheck-QT5WYKTQ.js +278 -0
  62. package/dist/block.tk.ase-3WGJONXX.js +360 -0
  63. package/dist/block.tk.bam-Q5X7D5IR.js +1901 -0
  64. package/dist/block.tk.bedgraphdot-VWE2D2HR.js +379 -0
  65. package/dist/block.tk.bigwig.ui-Q22KXFQT.js +206 -0
  66. package/dist/block.tk.hicstraw-3BMDZCQH.js +818 -0
  67. package/dist/block.tk.junction-BMKRAVUI.js +2358 -0
  68. package/dist/block.tk.junction.textmatrixui-ERLXPLGI.js +194 -0
  69. package/dist/block.tk.ld-KT5KQUXC.js +94 -0
  70. package/dist/block.tk.menu-RO7IJGFY.js +1024 -0
  71. package/dist/block.tk.pgv-PZ4AVD3V.js +938 -0
  72. package/dist/brainImaging-ZU3JSXFP.js +555 -0
  73. package/dist/brainRegions-DJELNKKN.js +217 -0
  74. package/dist/bubbleHeatmap-CPJ5KI6E.js +378 -0
  75. package/dist/cellTypeBubbleHeatmap-6NGBETXV.js +278 -0
  76. package/dist/chunk-232OR2PG.js +263 -0
  77. package/dist/chunk-26Y2MYFN.js +129 -0
  78. package/dist/chunk-33FULV5M.js +302 -0
  79. package/dist/chunk-3AXQF6GL.js +103 -0
  80. package/dist/chunk-3JHCCJ4I.js +54 -0
  81. package/dist/chunk-4S7TWVOY.js +397 -0
  82. package/dist/chunk-4ZVOO3NI.js +217 -0
  83. package/dist/chunk-5U7AYOEZ.js +1988 -0
  84. package/dist/chunk-5WIA4KFA.js +178 -0
  85. package/dist/chunk-5WMFEMII.js +550 -0
  86. package/dist/chunk-6OCWNYW3.js +49 -0
  87. package/dist/chunk-6UAY2HAB.js +5217 -0
  88. package/dist/chunk-6UAY2HAB.js.map +7 -0
  89. package/dist/chunk-753GDKSC.js +562 -0
  90. package/dist/chunk-7AOA5WZY.js +274 -0
  91. package/dist/chunk-A4D2Z2LV.js +141 -0
  92. package/dist/chunk-AUJHCGU2.js +14 -0
  93. package/dist/chunk-CWLHJ7AC.js +80 -0
  94. package/dist/chunk-DU52GAOJ.js +783 -0
  95. package/dist/chunk-DVWCDEN3.js +480 -0
  96. package/dist/chunk-E24IUWHH.js +294 -0
  97. package/dist/chunk-G4A3ZDDS.js +446 -0
  98. package/dist/chunk-HH5JKOE6.js +339 -0
  99. package/dist/chunk-HL5B4NME.js +379 -0
  100. package/dist/chunk-HYOCZPKO.js +281 -0
  101. package/dist/chunk-I6P4LZP3.js +194 -0
  102. package/dist/chunk-IBZVZZ5J.js +176 -0
  103. package/dist/chunk-JZQEDIGZ.js +518 -0
  104. package/dist/chunk-LK7XDEFW.js +1339 -0
  105. package/dist/chunk-MXJKO73I.js +272 -0
  106. package/dist/chunk-N6NL4XG2.js +2676 -0
  107. package/dist/chunk-NC4RKYVE.js +158 -0
  108. package/dist/chunk-NK235VQ6.js +4375 -0
  109. package/dist/chunk-NK235VQ6.js.map +7 -0
  110. package/dist/chunk-O3QKYUDH.js +1812 -0
  111. package/dist/chunk-O3QKYUDH.js.map +7 -0
  112. package/dist/chunk-OSYSJHAA.js +170 -0
  113. package/dist/chunk-PBWB5ZG2.js +240 -0
  114. package/dist/chunk-PCJF5MGF.js +203 -0
  115. package/dist/chunk-PF5UMQEJ.js +692 -0
  116. package/dist/chunk-PGRTCNOV.js +217 -0
  117. package/dist/chunk-Q6I2OH4P.js +182 -0
  118. package/dist/chunk-QOF27J24.js +6360 -0
  119. package/dist/chunk-QWCKIRW2.js +237 -0
  120. package/dist/chunk-R3LWGFGS.js +54 -0
  121. package/dist/chunk-REWUPST7.js +1233 -0
  122. package/dist/chunk-RMUK3TLD.js +2149 -0
  123. package/dist/chunk-RU2UHH7M.js +424 -0
  124. package/dist/chunk-RU2UHH7M.js.map +7 -0
  125. package/dist/chunk-RXQRCRHC.js +134 -0
  126. package/dist/chunk-SAMS5XBH.js +2902 -0
  127. package/dist/chunk-SXYZ274A.js +2327 -0
  128. package/dist/chunk-TAZQU2LC.js +339 -0
  129. package/dist/chunk-TFS2JZTH.js +34 -0
  130. package/dist/chunk-UFQDWGZU.js +102 -0
  131. package/dist/chunk-UJRURRJ2.js +55 -0
  132. package/dist/chunk-UWRWFS3K.js +1278 -0
  133. package/dist/chunk-UYSYZM45.js +468 -0
  134. package/dist/chunk-VHDYIOWU.js +25009 -0
  135. package/dist/chunk-VHDYIOWU.js.map +7 -0
  136. package/dist/chunk-VPOAFNVL.js +70 -0
  137. package/dist/chunk-WB57TMJN.js +56 -0
  138. package/dist/chunk-WILJJPWV.js +255 -0
  139. package/dist/chunk-X2HEDRFQ.js +102 -0
  140. package/dist/chunk-X3UNVPC5.js +626 -0
  141. package/dist/chunk-XL4N3H32.js +276 -0
  142. package/dist/chunk-XNKLJMGF.js +123 -0
  143. package/dist/chunk-XZCRYWVL.js +243 -0
  144. package/dist/chunk-Y4MV62JA.js +56 -0
  145. package/dist/chunk-YKI4GLMT.js +98 -0
  146. package/dist/chunk-ZKINKYOJ.js +2784 -0
  147. package/dist/chunk-ZMSTQP6O.js +299 -0
  148. package/dist/cohort-CWGZR37O.js +70 -0
  149. package/dist/condition-B6XBQML4.js +327 -0
  150. package/dist/controls-QPW5HUAY.js +34 -0
  151. package/dist/controls.config-IUYTWRHA.js +34 -0
  152. package/dist/correlation-M2NKGTK2.js +95 -0
  153. package/dist/customdata.inputui-RKYIMOWO.js +284 -0
  154. package/dist/dataDownload-LPBLB7QD.js +329 -0
  155. package/dist/databrowser.ui-VTWHELDY.js +425 -0
  156. package/dist/dictionary-NINKMF3F.js +113 -0
  157. package/dist/dnaMethylation-LSVNG7FK.js +33 -0
  158. package/dist/dnaMethylation.integration.spec-6IT3Y3FS.js +198 -0
  159. package/dist/dofetch-HLMSTOMY.js +48 -0
  160. package/dist/e2pca-6PKLCC7L.js +344 -0
  161. package/dist/ep-3RFB6K3B.js +1249 -0
  162. package/dist/expclust.gdc.spec-MEWKHFMD.js +302 -0
  163. package/dist/facet-A4JH7FCW.js +519 -0
  164. package/dist/gb-PTF7CLDG.js +81 -0
  165. package/dist/geneExpClustering-VKUIAYCK.js +244 -0
  166. package/dist/geneExpression-3GQFWVJL.js +310 -0
  167. package/dist/geneExpression-VC7QPM3T.js +33 -0
  168. package/dist/geneExpression.unit.spec-PQS7BOMF.js +128 -0
  169. package/dist/geneORA-FCMFWZTN.js +273 -0
  170. package/dist/geneRanking-RTPPGBD4.js +548 -0
  171. package/dist/geneVariant-2TQ2JD4K.js +36 -0
  172. package/dist/geneVariant-4S6FLJTN.js +289 -0
  173. package/dist/geneVariant.integration.spec-YTFFHWQP.js +503 -0
  174. package/dist/genefusion.ui-P7YH32A6.js +303 -0
  175. package/dist/geneset-4J43JA3C.js +203 -0
  176. package/dist/genomeBrowser.spec-T2VFNUAV.js +276 -0
  177. package/dist/grin2-5TH4EBVQ.js +949 -0
  178. package/dist/grin2-KXMSYYYM.js +70 -0
  179. package/dist/hierCluster-2HFMEHAD.js +59 -0
  180. package/dist/hierCluster-5RQV7B5I.js +55 -0
  181. package/dist/hierCluster.config-PNBGJE6F.js +36 -0
  182. package/dist/hierCluster.integration.spec-TZLVKUC5.js +483 -0
  183. package/dist/hierCluster.interactivity-OQD3IQ4X.js +49 -0
  184. package/dist/hierCluster.renderers-DUDSHKDT.js +19 -0
  185. package/dist/imagePlot-6YH7S2PV.js +156 -0
  186. package/dist/importPlot-Z2UKA456.js +8 -0
  187. package/dist/isoformExpression-SRJMGXHD.js +35 -0
  188. package/dist/isoformExpression.unit.spec-PBVKSWCS.js +237 -0
  189. package/dist/junction-D4UP2AGY.js +36 -0
  190. package/dist/junction.unit.spec-M5CEGNUE.js +182 -0
  191. package/dist/launch.adhoc-SWJOT47S.js +37 -0
  192. package/dist/leftlabel.sample-4ZAM2JSS.js +258 -0
  193. package/dist/lollipop-GMGJPMJN.js +166 -0
  194. package/dist/maf-2TFOOAIF.js +455 -0
  195. package/dist/maftimeline-DRBM4ZYD.js +587 -0
  196. package/dist/matrix-22R4BC3F.js +54 -0
  197. package/dist/matrix-W4IRSBO5.js +59 -0
  198. package/dist/matrix.cells-QKWO5EP4.js +26 -0
  199. package/dist/matrix.config-ZZ7NFCIT.js +37 -0
  200. package/dist/matrix.data-3W6P6NBU.js +23 -0
  201. package/dist/matrix.groups-XW2G5BJH.js +26 -0
  202. package/dist/matrix.integration.spec-X4UPLQRI.js +3160 -0
  203. package/dist/matrix.interactivity-NGS3LJPV.js +37 -0
  204. package/dist/matrix.layout-SAGZVQPG.js +39 -0
  205. package/dist/matrix.legend-C3MQRAZJ.js +20 -0
  206. package/dist/matrix.renderers-IG7Q2F6Y.js +34 -0
  207. package/dist/matrix.serieses-SNMIQFKB.js +19 -0
  208. package/dist/matrix.sort-WHVUSUJZ.js +26 -0
  209. package/dist/matrix.sort.unit.spec-DCWR5PZJ.js +468 -0
  210. package/dist/matrix.sorterUi.unit.spec-EBLSCLDL.js +338 -0
  211. package/dist/matrix.unit.spec-I6JGZHQZ.js +150 -0
  212. package/dist/mavb-MLVNZJSF.js +727 -0
  213. package/dist/mds.fimo-MOGZPFCK.js +513 -0
  214. package/dist/mds.samplescatterplot-YLGNYKTH.js +1545 -0
  215. package/dist/mds.survivalplot-R273N2GB.js +477 -0
  216. package/dist/multivalue-5GFBYENI.js +83 -0
  217. package/dist/numericDictTermCluster-MJK6SIWE.js +63 -0
  218. package/dist/oncomatrix-OAQT2CUN.js +290 -0
  219. package/dist/oncomatrix.spec-6C62LLJI.js +443 -0
  220. package/dist/plot.2dvaf-WDXWSC7L.js +372 -0
  221. package/dist/plot.app-YTHD3ZJQ.js +36 -0
  222. package/dist/plot.barplot-SRZM3GU3.js +97 -0
  223. package/dist/plot.boxplot-VWOMZPZE.js +146 -0
  224. package/dist/plot.brainImaging-6XL7YF5G.js +51 -0
  225. package/dist/plot.disco-VRKSTV5Z.js +99 -0
  226. package/dist/plot.ssgq-AXASDOZZ.js +134 -0
  227. package/dist/plot.vaf2cov-IF4DEEM5.js +253 -0
  228. package/dist/polar2-QQ3KHFME.js +232 -0
  229. package/dist/profileForms-2US7IYYM.js +941 -0
  230. package/dist/profilePlot-DZQCBKPA.js +49 -0
  231. package/dist/proteinView-TTLVQ43H.js +1357 -0
  232. package/dist/proteomeCohortCompare-BUZYOOIA.js +912 -0
  233. package/dist/pseudbulk.unit.spec-YNXQWDSU.js +86 -0
  234. package/dist/pseudobulk-VSXK2PTM.js +35 -0
  235. package/dist/qualitative-AKIZRNFO.js +38 -0
  236. package/dist/radar2-7GXYLICJ.js +327 -0
  237. package/dist/radarFacility2-WFKOWGH2.js +335 -0
  238. package/dist/render-F3CBMRD5.js +33 -0
  239. package/dist/report-6LHMHUDY.js +217 -0
  240. package/dist/sampleView-GWKPMVJH.js +43 -0
  241. package/dist/samplelst-TH6IBDVG.js +106 -0
  242. package/dist/samplematrix-RPCWT33H.js +2193 -0
  243. package/dist/sc-BFBHBAXF.js +81 -0
  244. package/dist/scatter-3IC6HOT7.js +925 -0
  245. package/dist/scatter-L6R6J2LC.js +88 -0
  246. package/dist/selectGenomeWithTklst-3ZK7FIOP.js +129 -0
  247. package/dist/singleCellCellType-CLJFCBV6.js +33 -0
  248. package/dist/singleCellCellType.unit.spec-W32PSTRO.js +154 -0
  249. package/dist/singleCellGeneExpression-L6MG37XE.js +33 -0
  250. package/dist/singleCellGeneExpression.unit.spec-SF46JHCU.js +148 -0
  251. package/dist/singleCellNumericValue-7QXK6KVZ.js +33 -0
  252. package/dist/singleCellNumericValue.unit.spec-VC7NQYM2.js +416 -0
  253. package/dist/singleCellPlot-5TRNRKPN.js +48 -0
  254. package/dist/singlecell-2YV3UAIQ.js +1566 -0
  255. package/dist/singlecell-I4PHM2LZ.js +81 -0
  256. package/dist/snp-ZIA4YWCZ.js +33 -0
  257. package/dist/snp.unit.spec-MVQHY4WJ.js +171 -0
  258. package/dist/snplocus-GM6IEDPR.js +203 -0
  259. package/dist/spliceevent.a53ss.diagram-ZFQDHHPY.js +146 -0
  260. package/dist/spliceevent.exonskip.diagram-ZK6JOUMU.js +278 -0
  261. package/dist/spliceevent.noeventdiagram-YKTF2VZE.js +455 -0
  262. package/dist/ssGSEA-FDN4CH2Y.js +33 -0
  263. package/dist/ssGSEA.unit.spec-YEUJBT6Z.js +83 -0
  264. package/dist/stattable-WIZRSKPH.js +117 -0
  265. package/dist/studyCatalog-X2IGVJ26.js +414 -0
  266. package/dist/summarizeCnvGeneexp-H7A5SI3R.js +158 -0
  267. package/dist/summarizeGeneexpSurvival-GJF6VD2S.js +105 -0
  268. package/dist/summarizeMutationCnv-WQLMD2TR.js +159 -0
  269. package/dist/summarizeMutationDiagnosis-3S52IDWF.js +35 -0
  270. package/dist/summarizeMutationSurvival-NTQIUNW7.js +99 -0
  271. package/dist/summary-LMRFRKKI.js +44 -0
  272. package/dist/summary.integration.spec-KQMZKSEQ.js +409 -0
  273. package/dist/summaryInput-NNHZVHQA.js +242 -0
  274. package/dist/sunburst-ICUSGIWV.js +278 -0
  275. package/dist/survival-K44Q2HAC.js +1249 -0
  276. package/dist/survival-K44Q2HAC.js.map +7 -0
  277. package/dist/survival-K5YBNNVE.js +53 -0
  278. package/dist/survival.integration.spec-4LRJW2V2.js +613 -0
  279. package/dist/svgraph-U7MS7YEM.js +1382 -0
  280. package/dist/svmr-2JGDBPAI.js +3837 -0
  281. package/dist/table-CBWOHYW6.js +197 -0
  282. package/dist/termCollection-JFGGXVFI.js +252 -0
  283. package/dist/termCollection-VE3FFL6V.js +33 -0
  284. package/dist/termCollection.unit.spec-XQQTDV4A.js +299 -0
  285. package/dist/termCollectionFractionSelection-TFGF27GR.js +42 -0
  286. package/dist/termCollectionFractionSelection.unit.spec-MKGG4JBC.js +188 -0
  287. package/dist/tk-74SGUUZY.js +41 -0
  288. package/dist/tk-K4JFYIZY.js +1121 -0
  289. package/dist/tp.ui-727EXXMT.js +1454 -0
  290. package/dist/tvs.dt-YB2C3T33.js +34 -0
  291. package/dist/tvs.dtcnv.categorical-NOWMZOE5.js +35 -0
  292. package/dist/tvs.dtcnv.continuous-3KWUNU76.js +67 -0
  293. package/dist/tvs.dtfusion-NOJSTABU.js +35 -0
  294. package/dist/tvs.dtitd-OD5B377P.js +35 -0
  295. package/dist/tvs.dtsnvindel-WIQMZTRH.js +35 -0
  296. package/dist/tvs.dtsv-HPERDN3R.js +35 -0
  297. package/dist/tvs.samplelst-TC2Z7Z35.js +98 -0
  298. package/dist/tvs.termCollection-F64BHWAL.js +122 -0
  299. package/dist/vocabulary-ZOYF2VHS.js +36 -0
  300. package/dist/wsi.direct-Z5YUZEXG.js +8343 -0
  301. package/package.json +3 -3
  302. package/dist/2dmaf-FEZRNHDF.js +0 -1367
  303. package/dist/AggMatrixInput-6FJIELYO.js +0 -406
  304. package/dist/AggregateMatrix-MUPBUGIZ.js +0 -41
  305. package/dist/AppHeader-ZTNZ62UL.js +0 -830
  306. package/dist/BoxPlot-P5SVFYSB.js +0 -1208
  307. package/dist/CorrelationVolcano-42NYXAXG.js +0 -617
  308. package/dist/Cuminc-6AKLT6HF.js +0 -1219
  309. package/dist/Cuminc-6AKLT6HF.js.map +0 -7
  310. package/dist/DE-KJHFZWND.js +0 -89
  311. package/dist/DEinput-HXB3LYZW.js +0 -501
  312. package/dist/DM-AAHX4PLH.js +0 -90
  313. package/dist/DifferentialAnalysis-JX4EDEOY.js +0 -239
  314. package/dist/Disco-GXKO4QQH.js +0 -3389
  315. package/dist/Disco.UI-DGD4RXJP.js +0 -243
  316. package/dist/DmrPlot-DQ3XTMTN.js +0 -362
  317. package/dist/GB-OUWNNBBK.js +0 -1392
  318. package/dist/GSEA-DSKGFAPG.js +0 -875
  319. package/dist/GeneExpInput-FZLOBE2Q.js +0 -42
  320. package/dist/Geomap-GP5KD3OX.js +0 -84
  321. package/dist/HicApp-2N6WYWZX.js +0 -2245
  322. package/dist/IDCViewer-MSUC7IXX.js +0 -10812
  323. package/dist/NumBinaryEditor-C4G2IH36.js +0 -279
  324. package/dist/NumBinaryEditor.unit.spec-ZAVAUGXA.js +0 -312
  325. package/dist/NumContEditor-VEEMMWHX.js +0 -105
  326. package/dist/NumContEditor.unit.spec-65ORC42O.js +0 -164
  327. package/dist/NumCustomBinEditor-YIUHJAXP.js +0 -33
  328. package/dist/NumCustomBinEditor.unit.spec-NT5VK2LO.js +0 -397
  329. package/dist/NumDiscreteEditor-A4WELAJH.js +0 -170
  330. package/dist/NumDiscreteEditor.unit.spec-7QABM6KK.js +0 -233
  331. package/dist/NumRegularBinEditor-IPVPLSQY.js +0 -33
  332. package/dist/NumRegularBinEditor.unit.spec-Q4DMWATB.js +0 -278
  333. package/dist/NumSplineEditor-5E6CIWLP.js +0 -210
  334. package/dist/NumSplineEditor.unit.spec-DHJF5F6H.js +0 -224
  335. package/dist/NumericDensity-GXMWWK2A.js +0 -33
  336. package/dist/NumericDensity.unit.spec-OAPOMSEW.js +0 -418
  337. package/dist/NumericHandler-H5WHGFXD.js +0 -34
  338. package/dist/NumericHandler.unit.spec-PBNOJEMS.js +0 -214
  339. package/dist/ProteomeInput-ZA7R5S43.js +0 -388
  340. package/dist/Regression-WSWTSXFX.js +0 -1416
  341. package/dist/RunChart2-J5CTJI5C.js +0 -749
  342. package/dist/SC-POCQDMWZ.js +0 -1181
  343. package/dist/SC-POCQDMWZ.js.map +0 -7
  344. package/dist/Violin-VA6FBRUQ.js +0 -1064
  345. package/dist/Volcano-4IEQIEDS.js +0 -2456
  346. package/dist/Wsi-LJ6AY5RI.js +0 -629
  347. package/dist/adSandbox-EIN4KEML.js +0 -33
  348. package/dist/animatedBubbleChart-LINYUKMD.js +0 -547
  349. package/dist/app-SE7UQ5DB.js +0 -42
  350. package/dist/app-VGMZNGWP.js +0 -32
  351. package/dist/bam-ZXEZWRSZ.js +0 -876
  352. package/dist/barchart-N4B4C2FO.js +0 -42
  353. package/dist/barchart2-EDVEWTVX.js +0 -309
  354. package/dist/block-E7YUGCHL.js +0 -6250
  355. package/dist/block.init-FSOCF2IM.js +0 -33
  356. package/dist/block.mds.expressionrank-EDBTITXU.js +0 -354
  357. package/dist/block.mds.geneboxplot-GG5672SY.js +0 -823
  358. package/dist/block.mds.junction-HUC4S24K.js +0 -1539
  359. package/dist/block.mds.svcnv-EQHYCIBU.js +0 -6796
  360. package/dist/block.svg-HBVPUQJ2.js +0 -159
  361. package/dist/block.tk.aicheck-TRJ5IIWZ.js +0 -278
  362. package/dist/block.tk.ase-COV7YYYO.js +0 -360
  363. package/dist/block.tk.bam-MDSLY6NH.js +0 -1901
  364. package/dist/block.tk.bedgraphdot-MKWEL53X.js +0 -379
  365. package/dist/block.tk.bigwig.ui-UKKJX7TA.js +0 -206
  366. package/dist/block.tk.hicstraw-6LNXEIOF.js +0 -818
  367. package/dist/block.tk.junction-F3SERFFD.js +0 -2358
  368. package/dist/block.tk.junction.textmatrixui-2XUMSKLS.js +0 -194
  369. package/dist/block.tk.ld-COP5RUJJ.js +0 -94
  370. package/dist/block.tk.menu-SRDPD44N.js +0 -1024
  371. package/dist/block.tk.pgv-3SVINTXN.js +0 -938
  372. package/dist/brainImaging-UNBA4KA3.js +0 -555
  373. package/dist/brainRegions-DC6TQB53.js +0 -217
  374. package/dist/bubbleHeatmap-X3W3AZJY.js +0 -378
  375. package/dist/cellTypeBubbleHeatmap-LFI6TGOO.js +0 -278
  376. package/dist/chunk-2ANFUNS3.js +0 -102
  377. package/dist/chunk-2G4SFRWC.js +0 -1278
  378. package/dist/chunk-3CGMCYZB.js +0 -237
  379. package/dist/chunk-3I4DBVLM.js +0 -55
  380. package/dist/chunk-42VFF74T.js +0 -397
  381. package/dist/chunk-4HTRCXLS.js +0 -98
  382. package/dist/chunk-55T2AMJ3.js +0 -281
  383. package/dist/chunk-5JDG5NNA.js +0 -203
  384. package/dist/chunk-6AFMWQXZ.js +0 -339
  385. package/dist/chunk-6ECKCC4X.js +0 -294
  386. package/dist/chunk-6QMC7LFA.js +0 -299
  387. package/dist/chunk-72L6NTNT.js +0 -14
  388. package/dist/chunk-7ISAV37C.js +0 -194
  389. package/dist/chunk-7MFY22IZ.js +0 -2902
  390. package/dist/chunk-A32XQLMP.js +0 -49
  391. package/dist/chunk-A3MYBXG3.js +0 -274
  392. package/dist/chunk-AU3Y6IQF.js +0 -1339
  393. package/dist/chunk-AXL3CC4U.js +0 -468
  394. package/dist/chunk-CME6DYDH.js +0 -424
  395. package/dist/chunk-CME6DYDH.js.map +0 -7
  396. package/dist/chunk-DKED35KW.js +0 -2327
  397. package/dist/chunk-DPGALT5N.js +0 -255
  398. package/dist/chunk-DPTGY4BW.js +0 -129
  399. package/dist/chunk-DQD4MTK4.js +0 -379
  400. package/dist/chunk-EFLRT7JY.js +0 -243
  401. package/dist/chunk-EMSO3BNW.js +0 -34
  402. package/dist/chunk-F2LWFF7V.js +0 -158
  403. package/dist/chunk-F5QB5YEE.js +0 -276
  404. package/dist/chunk-FKSR53VK.js +0 -182
  405. package/dist/chunk-FSWBNSQD.js +0 -178
  406. package/dist/chunk-GP4VLNMZ.js +0 -2149
  407. package/dist/chunk-HTZJQNHP.js +0 -562
  408. package/dist/chunk-ITYNHDDD.js +0 -56
  409. package/dist/chunk-IWVCFZHQ.js +0 -170
  410. package/dist/chunk-J4WRX5G6.js +0 -263
  411. package/dist/chunk-JZLIHI6A.js +0 -339
  412. package/dist/chunk-K7HFOAR7.js +0 -25008
  413. package/dist/chunk-K7HFOAR7.js.map +0 -7
  414. package/dist/chunk-KJGYGPJZ.js +0 -103
  415. package/dist/chunk-L3UFI52T.js +0 -217
  416. package/dist/chunk-L4ZPMF7E.js +0 -692
  417. package/dist/chunk-L62JI5UL.js +0 -302
  418. package/dist/chunk-MRPYHLFW.js +0 -518
  419. package/dist/chunk-MVWJHZ5G.js +0 -783
  420. package/dist/chunk-NGWU4QLU.js +0 -134
  421. package/dist/chunk-OC2FSBFB.js +0 -176
  422. package/dist/chunk-OYBYKZUR.js +0 -6360
  423. package/dist/chunk-PLHOCPJD.js +0 -272
  424. package/dist/chunk-PQDZLOY7.js +0 -102
  425. package/dist/chunk-QDNUIS2Y.js +0 -70
  426. package/dist/chunk-RHOMR2GY.js +0 -2676
  427. package/dist/chunk-SLPZ6SBN.js +0 -626
  428. package/dist/chunk-SPFK5XZH.js +0 -446
  429. package/dist/chunk-SQGAWR2L.js +0 -141
  430. package/dist/chunk-UKOOGNUF.js +0 -1233
  431. package/dist/chunk-UL5PEVZW.js +0 -123
  432. package/dist/chunk-UTMIX2H2.js +0 -2784
  433. package/dist/chunk-UZNFOCE7.js +0 -56
  434. package/dist/chunk-V7UVHM57.js +0 -550
  435. package/dist/chunk-VP2JWT5W.js +0 -1988
  436. package/dist/chunk-VSTHBKQW.js +0 -480
  437. package/dist/chunk-X7TJBXJJ.js +0 -54
  438. package/dist/chunk-XEEMCYP6.js +0 -4375
  439. package/dist/chunk-XEEMCYP6.js.map +0 -7
  440. package/dist/chunk-XTQWAVWJ.js +0 -54
  441. package/dist/chunk-YAN2MOON.js +0 -5071
  442. package/dist/chunk-YAN2MOON.js.map +0 -7
  443. package/dist/chunk-YCBENC6R.js +0 -1769
  444. package/dist/chunk-YCBENC6R.js.map +0 -7
  445. package/dist/chunk-YCORHJ64.js +0 -240
  446. package/dist/chunk-YOBTHZVU.js +0 -80
  447. package/dist/chunk-ZTT6ZHU5.js +0 -217
  448. package/dist/cohort-RF4FT2NT.js +0 -70
  449. package/dist/condition-WXE2CFYT.js +0 -327
  450. package/dist/controls-AYF4H7UG.js +0 -34
  451. package/dist/controls.config-TXZKQNYC.js +0 -34
  452. package/dist/correlation-UAYMVVUS.js +0 -95
  453. package/dist/customdata.inputui-I7RFOGYM.js +0 -284
  454. package/dist/dataDownload-4AGSDSEO.js +0 -329
  455. package/dist/databrowser.ui-RGJEA2BI.js +0 -425
  456. package/dist/dictionary-AWWQXIRP.js +0 -113
  457. package/dist/dnaMethylation-PICKZS2M.js +0 -33
  458. package/dist/dnaMethylation.integration.spec-JUSB3CFZ.js +0 -198
  459. package/dist/dofetch-ZJMKEYN2.js +0 -48
  460. package/dist/e2pca-K4W7ZJZG.js +0 -344
  461. package/dist/ep-OY5YQMEF.js +0 -1249
  462. package/dist/expclust.gdc.spec-LYDBM3TZ.js +0 -302
  463. package/dist/facet-7NJHLLCZ.js +0 -519
  464. package/dist/gb-COV44BMA.js +0 -81
  465. package/dist/geneExpClustering-EQR5XX4J.js +0 -244
  466. package/dist/geneExpression-2BNDQ6S6.js +0 -310
  467. package/dist/geneExpression-PGB6WF5H.js +0 -33
  468. package/dist/geneExpression.unit.spec-OUNGGOJP.js +0 -128
  469. package/dist/geneORA-EKNEVQOS.js +0 -273
  470. package/dist/geneRanking-XUXLRERA.js +0 -548
  471. package/dist/geneVariant-JZDYV6LS.js +0 -36
  472. package/dist/geneVariant-KPZ2FYLK.js +0 -289
  473. package/dist/geneVariant.integration.spec-ISMLGTKC.js +0 -503
  474. package/dist/genefusion.ui-GRUXFC4U.js +0 -303
  475. package/dist/geneset-RM4XIX23.js +0 -203
  476. package/dist/genomeBrowser.spec-X7EOK2LS.js +0 -276
  477. package/dist/grin2-5XRUMYQO.js +0 -949
  478. package/dist/grin2-SWZLKD52.js +0 -70
  479. package/dist/hierCluster-I6T4XD3P.js +0 -55
  480. package/dist/hierCluster-XVDGUOW7.js +0 -59
  481. package/dist/hierCluster.config-66CKAAPG.js +0 -36
  482. package/dist/hierCluster.integration.spec-OEHHO2RT.js +0 -483
  483. package/dist/hierCluster.interactivity-B5ZNFF4R.js +0 -49
  484. package/dist/hierCluster.renderers-R2DTKTLI.js +0 -19
  485. package/dist/imagePlot-ZM4IVDJT.js +0 -156
  486. package/dist/importPlot-FQ65CZRI.js +0 -8
  487. package/dist/isoformExpression-BFCLGD2U.js +0 -35
  488. package/dist/isoformExpression.unit.spec-KYI4HI7U.js +0 -237
  489. package/dist/junction-BKH6RWOP.js +0 -36
  490. package/dist/junction.unit.spec-MQIHKSNE.js +0 -182
  491. package/dist/launch.adhoc-AHTCA2BP.js +0 -37
  492. package/dist/leftlabel.sample-LIBMKP22.js +0 -258
  493. package/dist/lollipop-26ZQH3EL.js +0 -166
  494. package/dist/maf-W3W2XJ5B.js +0 -455
  495. package/dist/maftimeline-LCJD5O2M.js +0 -587
  496. package/dist/matrix-H634EZWK.js +0 -59
  497. package/dist/matrix-O2AINT5M.js +0 -54
  498. package/dist/matrix.cells-3U3CUU5I.js +0 -26
  499. package/dist/matrix.config-F6IPB5B5.js +0 -37
  500. package/dist/matrix.data-KQNBNYC6.js +0 -23
  501. package/dist/matrix.groups-QFL2ZDHD.js +0 -26
  502. package/dist/matrix.integration.spec-OVGSXJWO.js +0 -3160
  503. package/dist/matrix.interactivity-Q5ODZPDL.js +0 -37
  504. package/dist/matrix.layout-YPYM7FRY.js +0 -39
  505. package/dist/matrix.legend-ZO57ENXP.js +0 -20
  506. package/dist/matrix.renderers-NIGONKWO.js +0 -34
  507. package/dist/matrix.serieses-ZQD2U6RF.js +0 -19
  508. package/dist/matrix.sort-RZU65LR2.js +0 -26
  509. package/dist/matrix.sort.unit.spec-NDFK2A5C.js +0 -468
  510. package/dist/matrix.sorterUi.unit.spec-4ZKNOV2L.js +0 -338
  511. package/dist/matrix.unit.spec-V5XNLECG.js +0 -150
  512. package/dist/mavb-LF7A7BDK.js +0 -727
  513. package/dist/mds.fimo-KJ4HPMZP.js +0 -513
  514. package/dist/mds.samplescatterplot-ZHNWWWYI.js +0 -1545
  515. package/dist/mds.survivalplot-DNG7I22N.js +0 -477
  516. package/dist/multivalue-SJQF7PHU.js +0 -83
  517. package/dist/numericDictTermCluster-O6PKT2FJ.js +0 -63
  518. package/dist/oncomatrix-YJCPKS72.js +0 -290
  519. package/dist/oncomatrix.spec-MWGBQCIQ.js +0 -443
  520. package/dist/plot.2dvaf-KIPQYNEH.js +0 -372
  521. package/dist/plot.app-WHG3SEOG.js +0 -36
  522. package/dist/plot.barplot-DTSYFUPC.js +0 -97
  523. package/dist/plot.boxplot-MQDULP3P.js +0 -146
  524. package/dist/plot.brainImaging-DGVJQSCH.js +0 -51
  525. package/dist/plot.disco-HYPRBLMQ.js +0 -99
  526. package/dist/plot.ssgq-J5MMN7OD.js +0 -134
  527. package/dist/plot.vaf2cov-CID7GQB5.js +0 -253
  528. package/dist/polar2-QTSO2HCB.js +0 -232
  529. package/dist/profileForms-SRR2M5OS.js +0 -941
  530. package/dist/profilePlot-NDC4S2SC.js +0 -49
  531. package/dist/proteinView-EFNQL3LD.js +0 -1357
  532. package/dist/proteomeCohortCompare-WMR53HEL.js +0 -912
  533. package/dist/pseudbulk.unit.spec-6MRZNXFI.js +0 -86
  534. package/dist/pseudobulk-O5EC44RY.js +0 -35
  535. package/dist/qualitative-W6MFYG7Z.js +0 -38
  536. package/dist/radar2-GIQILMWK.js +0 -327
  537. package/dist/radarFacility2-5YJZ5JCK.js +0 -335
  538. package/dist/render-2J4LR3UI.js +0 -33
  539. package/dist/report-MUMQK6XY.js +0 -217
  540. package/dist/sampleView-NKZMNBMH.js +0 -43
  541. package/dist/samplelst-X74JZMTR.js +0 -106
  542. package/dist/samplematrix-QDQXB5ZG.js +0 -2193
  543. package/dist/sc-FGHV5CBJ.js +0 -81
  544. package/dist/scatter-QFVRBA7F.js +0 -925
  545. package/dist/scatter-YXF5VQGZ.js +0 -88
  546. package/dist/selectGenomeWithTklst-DP4RPV7U.js +0 -129
  547. package/dist/singleCellCellType-XCHCMRR6.js +0 -33
  548. package/dist/singleCellCellType.unit.spec-S3JTP235.js +0 -154
  549. package/dist/singleCellGeneExpression-FD6REV7Y.js +0 -33
  550. package/dist/singleCellGeneExpression.unit.spec-PVMZYD4G.js +0 -148
  551. package/dist/singleCellNumericValue-SIITQPMD.js +0 -33
  552. package/dist/singleCellNumericValue.unit.spec-7PJEHLF7.js +0 -416
  553. package/dist/singleCellPlot-YJCFAYJW.js +0 -48
  554. package/dist/singlecell-6R7YK5P3.js +0 -1566
  555. package/dist/singlecell-KHMH732Y.js +0 -81
  556. package/dist/snp-HXCVSW2F.js +0 -33
  557. package/dist/snp.unit.spec-HXMFR4QS.js +0 -171
  558. package/dist/snplocus-YQVHAKBC.js +0 -203
  559. package/dist/spliceevent.a53ss.diagram-4IBTR3JD.js +0 -146
  560. package/dist/spliceevent.exonskip.diagram-5ZTG65CE.js +0 -278
  561. package/dist/spliceevent.noeventdiagram-WO5KSC45.js +0 -455
  562. package/dist/ssGSEA-VJ3LVYJV.js +0 -33
  563. package/dist/ssGSEA.unit.spec-JQIJ4NZP.js +0 -83
  564. package/dist/stattable-COVQSHRZ.js +0 -117
  565. package/dist/studyCatalog-EXVRH4FI.js +0 -414
  566. package/dist/summarizeCnvGeneexp-UJBTMXXH.js +0 -158
  567. package/dist/summarizeGeneexpSurvival-XLQJGDRY.js +0 -105
  568. package/dist/summarizeMutationCnv-7RWSXB6F.js +0 -159
  569. package/dist/summarizeMutationDiagnosis-42MG737O.js +0 -35
  570. package/dist/summarizeMutationSurvival-FWVKVEHK.js +0 -99
  571. package/dist/summary-NR26ZPQB.js +0 -44
  572. package/dist/summary.integration.spec-Z7JSUTGK.js +0 -409
  573. package/dist/summaryInput-DGKUOJVC.js +0 -242
  574. package/dist/sunburst-C5JNGFT7.js +0 -278
  575. package/dist/survival-GCEX3EAZ.js +0 -53
  576. package/dist/survival-OAQA5JQN.js +0 -1248
  577. package/dist/survival-OAQA5JQN.js.map +0 -7
  578. package/dist/survival.integration.spec-ZX5RD6VQ.js +0 -613
  579. package/dist/svgraph-XCFZ2WAG.js +0 -1382
  580. package/dist/svmr-4XTTURHA.js +0 -3837
  581. package/dist/table-FQZ4UAH6.js +0 -197
  582. package/dist/termCollection-5QCR6LED.js +0 -33
  583. package/dist/termCollection-DN6A6HJU.js +0 -252
  584. package/dist/termCollection.unit.spec-RSSSXDHU.js +0 -299
  585. package/dist/termCollectionFractionSelection-OSN7FITY.js +0 -42
  586. package/dist/termCollectionFractionSelection.unit.spec-UW6D3DVK.js +0 -188
  587. package/dist/tk-4CZCVYBP.js +0 -41
  588. package/dist/tk-BIPJNXBZ.js +0 -1121
  589. package/dist/tp.ui-NI4U7567.js +0 -1454
  590. package/dist/tvs.dt-YRDNDXUU.js +0 -34
  591. package/dist/tvs.dtcnv.categorical-REP4T33P.js +0 -35
  592. package/dist/tvs.dtcnv.continuous-K7OREEP5.js +0 -67
  593. package/dist/tvs.dtfusion-AB5MPH3Q.js +0 -35
  594. package/dist/tvs.dtitd-AFWU7ACY.js +0 -35
  595. package/dist/tvs.dtsnvindel-G7XQEKEO.js +0 -35
  596. package/dist/tvs.dtsv-Y6BEY4J2.js +0 -35
  597. package/dist/tvs.samplelst-XRRWPC2E.js +0 -98
  598. package/dist/tvs.termCollection-PL4AN3GA.js +0 -122
  599. package/dist/vocabulary-DJZWOO6Q.js +0 -36
  600. package/dist/wsi.direct-XUWANMKV.js +0 -8343
  601. /package/dist/{2dmaf-FEZRNHDF.js.map → 2dmaf-R23YQDZC.js.map} +0 -0
  602. /package/dist/{AggMatrixInput-6FJIELYO.js.map → AggMatrixInput-4DIGZZN4.js.map} +0 -0
  603. /package/dist/{AggregateMatrix-MUPBUGIZ.js.map → AggregateMatrix-TF6XXFUN.js.map} +0 -0
  604. /package/dist/{AppHeader-ZTNZ62UL.js.map → AppHeader-JB5HPAOQ.js.map} +0 -0
  605. /package/dist/{BoxPlot-P5SVFYSB.js.map → BoxPlot-47TUXQDP.js.map} +0 -0
  606. /package/dist/{CorrelationVolcano-42NYXAXG.js.map → CorrelationVolcano-G7K5JEPM.js.map} +0 -0
  607. /package/dist/{DE-KJHFZWND.js.map → DE-JSWA6HXV.js.map} +0 -0
  608. /package/dist/{DEinput-HXB3LYZW.js.map → DEinput-LEYRVYK6.js.map} +0 -0
  609. /package/dist/{DM-AAHX4PLH.js.map → DM-332QECUP.js.map} +0 -0
  610. /package/dist/{DifferentialAnalysis-JX4EDEOY.js.map → DifferentialAnalysis-JGH2OMTH.js.map} +0 -0
  611. /package/dist/{Disco-GXKO4QQH.js.map → Disco-36PJXFM6.js.map} +0 -0
  612. /package/dist/{Disco.UI-DGD4RXJP.js.map → Disco.UI-PY2KOGKY.js.map} +0 -0
  613. /package/dist/{DmrPlot-DQ3XTMTN.js.map → DmrPlot-5WMOBZOJ.js.map} +0 -0
  614. /package/dist/{GB-OUWNNBBK.js.map → GB-6WWLTBIW.js.map} +0 -0
  615. /package/dist/{GSEA-DSKGFAPG.js.map → GSEA-GYUVO2XA.js.map} +0 -0
  616. /package/dist/{GeneExpInput-FZLOBE2Q.js.map → GeneExpInput-UABEICGS.js.map} +0 -0
  617. /package/dist/{Geomap-GP5KD3OX.js.map → Geomap-QB6FNV5R.js.map} +0 -0
  618. /package/dist/{HicApp-2N6WYWZX.js.map → HicApp-TQKQKJTN.js.map} +0 -0
  619. /package/dist/{IDCViewer-MSUC7IXX.js.map → IDCViewer-L27ICGR5.js.map} +0 -0
  620. /package/dist/{NumBinaryEditor-C4G2IH36.js.map → NumBinaryEditor-FHSSXZV4.js.map} +0 -0
  621. /package/dist/{NumBinaryEditor.unit.spec-ZAVAUGXA.js.map → NumBinaryEditor.unit.spec-AMR32JHJ.js.map} +0 -0
  622. /package/dist/{NumContEditor-VEEMMWHX.js.map → NumContEditor-R5JB5XPB.js.map} +0 -0
  623. /package/dist/{NumContEditor.unit.spec-65ORC42O.js.map → NumContEditor.unit.spec-3PQRIC4G.js.map} +0 -0
  624. /package/dist/{NumCustomBinEditor-YIUHJAXP.js.map → NumCustomBinEditor-B3PKD54F.js.map} +0 -0
  625. /package/dist/{NumCustomBinEditor.unit.spec-NT5VK2LO.js.map → NumCustomBinEditor.unit.spec-YZKCYZQM.js.map} +0 -0
  626. /package/dist/{NumDiscreteEditor-A4WELAJH.js.map → NumDiscreteEditor-7AO35XU7.js.map} +0 -0
  627. /package/dist/{NumDiscreteEditor.unit.spec-7QABM6KK.js.map → NumDiscreteEditor.unit.spec-SNDHS6VK.js.map} +0 -0
  628. /package/dist/{NumRegularBinEditor-IPVPLSQY.js.map → NumRegularBinEditor-OREKM2DX.js.map} +0 -0
  629. /package/dist/{NumRegularBinEditor.unit.spec-Q4DMWATB.js.map → NumRegularBinEditor.unit.spec-SIGD7PLE.js.map} +0 -0
  630. /package/dist/{NumSplineEditor-5E6CIWLP.js.map → NumSplineEditor-RDFDVNJG.js.map} +0 -0
  631. /package/dist/{NumSplineEditor.unit.spec-DHJF5F6H.js.map → NumSplineEditor.unit.spec-TXRQVLUE.js.map} +0 -0
  632. /package/dist/{NumericDensity-GXMWWK2A.js.map → NumericDensity-QPDF6UU5.js.map} +0 -0
  633. /package/dist/{NumericDensity.unit.spec-OAPOMSEW.js.map → NumericDensity.unit.spec-JYUYDHDG.js.map} +0 -0
  634. /package/dist/{NumericHandler-H5WHGFXD.js.map → NumericHandler-JW6DLSMJ.js.map} +0 -0
  635. /package/dist/{NumericHandler.unit.spec-PBNOJEMS.js.map → NumericHandler.unit.spec-Q2ZNM5NH.js.map} +0 -0
  636. /package/dist/{ProteomeInput-ZA7R5S43.js.map → ProteomeInput-OS5JWC2O.js.map} +0 -0
  637. /package/dist/{Regression-WSWTSXFX.js.map → Regression-53XPZCCQ.js.map} +0 -0
  638. /package/dist/{RunChart2-J5CTJI5C.js.map → RunChart2-WEO42KPP.js.map} +0 -0
  639. /package/dist/{Violin-VA6FBRUQ.js.map → Violin-7VOFUOLE.js.map} +0 -0
  640. /package/dist/{Volcano-4IEQIEDS.js.map → Volcano-DI2RLILX.js.map} +0 -0
  641. /package/dist/{Wsi-LJ6AY5RI.js.map → Wsi-6DNY4RUG.js.map} +0 -0
  642. /package/dist/{adSandbox-EIN4KEML.js.map → adSandbox-B7GQZDYQ.js.map} +0 -0
  643. /package/dist/{animatedBubbleChart-LINYUKMD.js.map → animatedBubbleChart-QGO3OY5E.js.map} +0 -0
  644. /package/dist/{app-SE7UQ5DB.js.map → app-XBLP7YZQ.js.map} +0 -0
  645. /package/dist/{app-VGMZNGWP.js.map → app-ZARZ2HWS.js.map} +0 -0
  646. /package/dist/{bam-ZXEZWRSZ.js.map → bam-FGNF7RYM.js.map} +0 -0
  647. /package/dist/{barchart-N4B4C2FO.js.map → barchart-6YLJJSRO.js.map} +0 -0
  648. /package/dist/{barchart2-EDVEWTVX.js.map → barchart2-7TTZPYWA.js.map} +0 -0
  649. /package/dist/{block-E7YUGCHL.js.map → block-7WZWBQVA.js.map} +0 -0
  650. /package/dist/{block.init-FSOCF2IM.js.map → block.init-YN4KHHJ2.js.map} +0 -0
  651. /package/dist/{block.mds.expressionrank-EDBTITXU.js.map → block.mds.expressionrank-6PKN3KIE.js.map} +0 -0
  652. /package/dist/{block.mds.geneboxplot-GG5672SY.js.map → block.mds.geneboxplot-M6TXRPKO.js.map} +0 -0
  653. /package/dist/{block.mds.junction-HUC4S24K.js.map → block.mds.junction-WKRLLJBT.js.map} +0 -0
  654. /package/dist/{block.mds.svcnv-EQHYCIBU.js.map → block.mds.svcnv-I3DNNGYV.js.map} +0 -0
  655. /package/dist/{block.svg-HBVPUQJ2.js.map → block.svg-D72WTLKP.js.map} +0 -0
  656. /package/dist/{block.tk.aicheck-TRJ5IIWZ.js.map → block.tk.aicheck-QT5WYKTQ.js.map} +0 -0
  657. /package/dist/{block.tk.ase-COV7YYYO.js.map → block.tk.ase-3WGJONXX.js.map} +0 -0
  658. /package/dist/{block.tk.bam-MDSLY6NH.js.map → block.tk.bam-Q5X7D5IR.js.map} +0 -0
  659. /package/dist/{block.tk.bedgraphdot-MKWEL53X.js.map → block.tk.bedgraphdot-VWE2D2HR.js.map} +0 -0
  660. /package/dist/{block.tk.bigwig.ui-UKKJX7TA.js.map → block.tk.bigwig.ui-Q22KXFQT.js.map} +0 -0
  661. /package/dist/{block.tk.hicstraw-6LNXEIOF.js.map → block.tk.hicstraw-3BMDZCQH.js.map} +0 -0
  662. /package/dist/{block.tk.junction-F3SERFFD.js.map → block.tk.junction-BMKRAVUI.js.map} +0 -0
  663. /package/dist/{block.tk.junction.textmatrixui-2XUMSKLS.js.map → block.tk.junction.textmatrixui-ERLXPLGI.js.map} +0 -0
  664. /package/dist/{block.tk.ld-COP5RUJJ.js.map → block.tk.ld-KT5KQUXC.js.map} +0 -0
  665. /package/dist/{block.tk.menu-SRDPD44N.js.map → block.tk.menu-RO7IJGFY.js.map} +0 -0
  666. /package/dist/{block.tk.pgv-3SVINTXN.js.map → block.tk.pgv-PZ4AVD3V.js.map} +0 -0
  667. /package/dist/{brainImaging-UNBA4KA3.js.map → brainImaging-ZU3JSXFP.js.map} +0 -0
  668. /package/dist/{brainRegions-DC6TQB53.js.map → brainRegions-DJELNKKN.js.map} +0 -0
  669. /package/dist/{bubbleHeatmap-X3W3AZJY.js.map → bubbleHeatmap-CPJ5KI6E.js.map} +0 -0
  670. /package/dist/{cellTypeBubbleHeatmap-LFI6TGOO.js.map → cellTypeBubbleHeatmap-6NGBETXV.js.map} +0 -0
  671. /package/dist/{chunk-J4WRX5G6.js.map → chunk-232OR2PG.js.map} +0 -0
  672. /package/dist/{chunk-DPTGY4BW.js.map → chunk-26Y2MYFN.js.map} +0 -0
  673. /package/dist/{chunk-L62JI5UL.js.map → chunk-33FULV5M.js.map} +0 -0
  674. /package/dist/{chunk-KJGYGPJZ.js.map → chunk-3AXQF6GL.js.map} +0 -0
  675. /package/dist/{chunk-X7TJBXJJ.js.map → chunk-3JHCCJ4I.js.map} +0 -0
  676. /package/dist/{chunk-42VFF74T.js.map → chunk-4S7TWVOY.js.map} +0 -0
  677. /package/dist/{chunk-L3UFI52T.js.map → chunk-4ZVOO3NI.js.map} +0 -0
  678. /package/dist/{chunk-VP2JWT5W.js.map → chunk-5U7AYOEZ.js.map} +0 -0
  679. /package/dist/{chunk-FSWBNSQD.js.map → chunk-5WIA4KFA.js.map} +0 -0
  680. /package/dist/{chunk-V7UVHM57.js.map → chunk-5WMFEMII.js.map} +0 -0
  681. /package/dist/{chunk-A32XQLMP.js.map → chunk-6OCWNYW3.js.map} +0 -0
  682. /package/dist/{chunk-HTZJQNHP.js.map → chunk-753GDKSC.js.map} +0 -0
  683. /package/dist/{chunk-A3MYBXG3.js.map → chunk-7AOA5WZY.js.map} +0 -0
  684. /package/dist/{chunk-SQGAWR2L.js.map → chunk-A4D2Z2LV.js.map} +0 -0
  685. /package/dist/{chunk-72L6NTNT.js.map → chunk-AUJHCGU2.js.map} +0 -0
  686. /package/dist/{chunk-YOBTHZVU.js.map → chunk-CWLHJ7AC.js.map} +0 -0
  687. /package/dist/{chunk-MVWJHZ5G.js.map → chunk-DU52GAOJ.js.map} +0 -0
  688. /package/dist/{chunk-VSTHBKQW.js.map → chunk-DVWCDEN3.js.map} +0 -0
  689. /package/dist/{chunk-6ECKCC4X.js.map → chunk-E24IUWHH.js.map} +0 -0
  690. /package/dist/{chunk-SPFK5XZH.js.map → chunk-G4A3ZDDS.js.map} +0 -0
  691. /package/dist/{chunk-6AFMWQXZ.js.map → chunk-HH5JKOE6.js.map} +0 -0
  692. /package/dist/{chunk-DQD4MTK4.js.map → chunk-HL5B4NME.js.map} +0 -0
  693. /package/dist/{chunk-55T2AMJ3.js.map → chunk-HYOCZPKO.js.map} +0 -0
  694. /package/dist/{chunk-7ISAV37C.js.map → chunk-I6P4LZP3.js.map} +0 -0
  695. /package/dist/{chunk-OC2FSBFB.js.map → chunk-IBZVZZ5J.js.map} +0 -0
  696. /package/dist/{chunk-MRPYHLFW.js.map → chunk-JZQEDIGZ.js.map} +0 -0
  697. /package/dist/{chunk-AU3Y6IQF.js.map → chunk-LK7XDEFW.js.map} +0 -0
  698. /package/dist/{chunk-PLHOCPJD.js.map → chunk-MXJKO73I.js.map} +0 -0
  699. /package/dist/{chunk-RHOMR2GY.js.map → chunk-N6NL4XG2.js.map} +0 -0
  700. /package/dist/{chunk-F2LWFF7V.js.map → chunk-NC4RKYVE.js.map} +0 -0
  701. /package/dist/{chunk-IWVCFZHQ.js.map → chunk-OSYSJHAA.js.map} +0 -0
  702. /package/dist/{chunk-YCORHJ64.js.map → chunk-PBWB5ZG2.js.map} +0 -0
  703. /package/dist/{chunk-5JDG5NNA.js.map → chunk-PCJF5MGF.js.map} +0 -0
  704. /package/dist/{chunk-L4ZPMF7E.js.map → chunk-PF5UMQEJ.js.map} +0 -0
  705. /package/dist/{chunk-ZTT6ZHU5.js.map → chunk-PGRTCNOV.js.map} +0 -0
  706. /package/dist/{chunk-FKSR53VK.js.map → chunk-Q6I2OH4P.js.map} +0 -0
  707. /package/dist/{chunk-OYBYKZUR.js.map → chunk-QOF27J24.js.map} +0 -0
  708. /package/dist/{chunk-3CGMCYZB.js.map → chunk-QWCKIRW2.js.map} +0 -0
  709. /package/dist/{chunk-XTQWAVWJ.js.map → chunk-R3LWGFGS.js.map} +0 -0
  710. /package/dist/{chunk-UKOOGNUF.js.map → chunk-REWUPST7.js.map} +0 -0
  711. /package/dist/{chunk-GP4VLNMZ.js.map → chunk-RMUK3TLD.js.map} +0 -0
  712. /package/dist/{chunk-NGWU4QLU.js.map → chunk-RXQRCRHC.js.map} +0 -0
  713. /package/dist/{chunk-7MFY22IZ.js.map → chunk-SAMS5XBH.js.map} +0 -0
  714. /package/dist/{chunk-DKED35KW.js.map → chunk-SXYZ274A.js.map} +0 -0
  715. /package/dist/{chunk-JZLIHI6A.js.map → chunk-TAZQU2LC.js.map} +0 -0
  716. /package/dist/{chunk-EMSO3BNW.js.map → chunk-TFS2JZTH.js.map} +0 -0
  717. /package/dist/{chunk-2ANFUNS3.js.map → chunk-UFQDWGZU.js.map} +0 -0
  718. /package/dist/{chunk-3I4DBVLM.js.map → chunk-UJRURRJ2.js.map} +0 -0
  719. /package/dist/{chunk-2G4SFRWC.js.map → chunk-UWRWFS3K.js.map} +0 -0
  720. /package/dist/{chunk-AXL3CC4U.js.map → chunk-UYSYZM45.js.map} +0 -0
  721. /package/dist/{chunk-QDNUIS2Y.js.map → chunk-VPOAFNVL.js.map} +0 -0
  722. /package/dist/{chunk-UZNFOCE7.js.map → chunk-WB57TMJN.js.map} +0 -0
  723. /package/dist/{chunk-DPGALT5N.js.map → chunk-WILJJPWV.js.map} +0 -0
  724. /package/dist/{chunk-PQDZLOY7.js.map → chunk-X2HEDRFQ.js.map} +0 -0
  725. /package/dist/{chunk-SLPZ6SBN.js.map → chunk-X3UNVPC5.js.map} +0 -0
  726. /package/dist/{chunk-F5QB5YEE.js.map → chunk-XL4N3H32.js.map} +0 -0
  727. /package/dist/{chunk-UL5PEVZW.js.map → chunk-XNKLJMGF.js.map} +0 -0
  728. /package/dist/{chunk-EFLRT7JY.js.map → chunk-XZCRYWVL.js.map} +0 -0
  729. /package/dist/{chunk-ITYNHDDD.js.map → chunk-Y4MV62JA.js.map} +0 -0
  730. /package/dist/{chunk-4HTRCXLS.js.map → chunk-YKI4GLMT.js.map} +0 -0
  731. /package/dist/{chunk-UTMIX2H2.js.map → chunk-ZKINKYOJ.js.map} +0 -0
  732. /package/dist/{chunk-6QMC7LFA.js.map → chunk-ZMSTQP6O.js.map} +0 -0
  733. /package/dist/{cohort-RF4FT2NT.js.map → cohort-CWGZR37O.js.map} +0 -0
  734. /package/dist/{condition-WXE2CFYT.js.map → condition-B6XBQML4.js.map} +0 -0
  735. /package/dist/{controls-AYF4H7UG.js.map → controls-QPW5HUAY.js.map} +0 -0
  736. /package/dist/{controls.config-TXZKQNYC.js.map → controls.config-IUYTWRHA.js.map} +0 -0
  737. /package/dist/{correlation-UAYMVVUS.js.map → correlation-M2NKGTK2.js.map} +0 -0
  738. /package/dist/{customdata.inputui-I7RFOGYM.js.map → customdata.inputui-RKYIMOWO.js.map} +0 -0
  739. /package/dist/{dataDownload-4AGSDSEO.js.map → dataDownload-LPBLB7QD.js.map} +0 -0
  740. /package/dist/{databrowser.ui-RGJEA2BI.js.map → databrowser.ui-VTWHELDY.js.map} +0 -0
  741. /package/dist/{dictionary-AWWQXIRP.js.map → dictionary-NINKMF3F.js.map} +0 -0
  742. /package/dist/{dnaMethylation-PICKZS2M.js.map → dnaMethylation-LSVNG7FK.js.map} +0 -0
  743. /package/dist/{dnaMethylation.integration.spec-JUSB3CFZ.js.map → dnaMethylation.integration.spec-6IT3Y3FS.js.map} +0 -0
  744. /package/dist/{dofetch-ZJMKEYN2.js.map → dofetch-HLMSTOMY.js.map} +0 -0
  745. /package/dist/{e2pca-K4W7ZJZG.js.map → e2pca-6PKLCC7L.js.map} +0 -0
  746. /package/dist/{ep-OY5YQMEF.js.map → ep-3RFB6K3B.js.map} +0 -0
  747. /package/dist/{expclust.gdc.spec-LYDBM3TZ.js.map → expclust.gdc.spec-MEWKHFMD.js.map} +0 -0
  748. /package/dist/{facet-7NJHLLCZ.js.map → facet-A4JH7FCW.js.map} +0 -0
  749. /package/dist/{gb-COV44BMA.js.map → gb-PTF7CLDG.js.map} +0 -0
  750. /package/dist/{geneExpClustering-EQR5XX4J.js.map → geneExpClustering-VKUIAYCK.js.map} +0 -0
  751. /package/dist/{geneExpression-2BNDQ6S6.js.map → geneExpression-3GQFWVJL.js.map} +0 -0
  752. /package/dist/{geneExpression-PGB6WF5H.js.map → geneExpression-VC7QPM3T.js.map} +0 -0
  753. /package/dist/{geneExpression.unit.spec-OUNGGOJP.js.map → geneExpression.unit.spec-PQS7BOMF.js.map} +0 -0
  754. /package/dist/{geneORA-EKNEVQOS.js.map → geneORA-FCMFWZTN.js.map} +0 -0
  755. /package/dist/{geneRanking-XUXLRERA.js.map → geneRanking-RTPPGBD4.js.map} +0 -0
  756. /package/dist/{geneVariant-JZDYV6LS.js.map → geneVariant-2TQ2JD4K.js.map} +0 -0
  757. /package/dist/{geneVariant-KPZ2FYLK.js.map → geneVariant-4S6FLJTN.js.map} +0 -0
  758. /package/dist/{geneVariant.integration.spec-ISMLGTKC.js.map → geneVariant.integration.spec-YTFFHWQP.js.map} +0 -0
  759. /package/dist/{genefusion.ui-GRUXFC4U.js.map → genefusion.ui-P7YH32A6.js.map} +0 -0
  760. /package/dist/{geneset-RM4XIX23.js.map → geneset-4J43JA3C.js.map} +0 -0
  761. /package/dist/{genomeBrowser.spec-X7EOK2LS.js.map → genomeBrowser.spec-T2VFNUAV.js.map} +0 -0
  762. /package/dist/{grin2-5XRUMYQO.js.map → grin2-5TH4EBVQ.js.map} +0 -0
  763. /package/dist/{grin2-SWZLKD52.js.map → grin2-KXMSYYYM.js.map} +0 -0
  764. /package/dist/{hierCluster-I6T4XD3P.js.map → hierCluster-2HFMEHAD.js.map} +0 -0
  765. /package/dist/{hierCluster-XVDGUOW7.js.map → hierCluster-5RQV7B5I.js.map} +0 -0
  766. /package/dist/{hierCluster.config-66CKAAPG.js.map → hierCluster.config-PNBGJE6F.js.map} +0 -0
  767. /package/dist/{hierCluster.integration.spec-OEHHO2RT.js.map → hierCluster.integration.spec-TZLVKUC5.js.map} +0 -0
  768. /package/dist/{hierCluster.interactivity-B5ZNFF4R.js.map → hierCluster.interactivity-OQD3IQ4X.js.map} +0 -0
  769. /package/dist/{hierCluster.renderers-R2DTKTLI.js.map → hierCluster.renderers-DUDSHKDT.js.map} +0 -0
  770. /package/dist/{imagePlot-ZM4IVDJT.js.map → imagePlot-6YH7S2PV.js.map} +0 -0
  771. /package/dist/{importPlot-FQ65CZRI.js.map → importPlot-Z2UKA456.js.map} +0 -0
  772. /package/dist/{isoformExpression-BFCLGD2U.js.map → isoformExpression-SRJMGXHD.js.map} +0 -0
  773. /package/dist/{isoformExpression.unit.spec-KYI4HI7U.js.map → isoformExpression.unit.spec-PBVKSWCS.js.map} +0 -0
  774. /package/dist/{junction-BKH6RWOP.js.map → junction-D4UP2AGY.js.map} +0 -0
  775. /package/dist/{junction.unit.spec-MQIHKSNE.js.map → junction.unit.spec-M5CEGNUE.js.map} +0 -0
  776. /package/dist/{launch.adhoc-AHTCA2BP.js.map → launch.adhoc-SWJOT47S.js.map} +0 -0
  777. /package/dist/{leftlabel.sample-LIBMKP22.js.map → leftlabel.sample-4ZAM2JSS.js.map} +0 -0
  778. /package/dist/{lollipop-26ZQH3EL.js.map → lollipop-GMGJPMJN.js.map} +0 -0
  779. /package/dist/{maf-W3W2XJ5B.js.map → maf-2TFOOAIF.js.map} +0 -0
  780. /package/dist/{maftimeline-LCJD5O2M.js.map → maftimeline-DRBM4ZYD.js.map} +0 -0
  781. /package/dist/{matrix-H634EZWK.js.map → matrix-22R4BC3F.js.map} +0 -0
  782. /package/dist/{matrix-O2AINT5M.js.map → matrix-W4IRSBO5.js.map} +0 -0
  783. /package/dist/{matrix.cells-3U3CUU5I.js.map → matrix.cells-QKWO5EP4.js.map} +0 -0
  784. /package/dist/{matrix.config-F6IPB5B5.js.map → matrix.config-ZZ7NFCIT.js.map} +0 -0
  785. /package/dist/{matrix.data-KQNBNYC6.js.map → matrix.data-3W6P6NBU.js.map} +0 -0
  786. /package/dist/{matrix.groups-QFL2ZDHD.js.map → matrix.groups-XW2G5BJH.js.map} +0 -0
  787. /package/dist/{matrix.integration.spec-OVGSXJWO.js.map → matrix.integration.spec-X4UPLQRI.js.map} +0 -0
  788. /package/dist/{matrix.interactivity-Q5ODZPDL.js.map → matrix.interactivity-NGS3LJPV.js.map} +0 -0
  789. /package/dist/{matrix.layout-YPYM7FRY.js.map → matrix.layout-SAGZVQPG.js.map} +0 -0
  790. /package/dist/{matrix.legend-ZO57ENXP.js.map → matrix.legend-C3MQRAZJ.js.map} +0 -0
  791. /package/dist/{matrix.renderers-NIGONKWO.js.map → matrix.renderers-IG7Q2F6Y.js.map} +0 -0
  792. /package/dist/{matrix.serieses-ZQD2U6RF.js.map → matrix.serieses-SNMIQFKB.js.map} +0 -0
  793. /package/dist/{matrix.sort-RZU65LR2.js.map → matrix.sort-WHVUSUJZ.js.map} +0 -0
  794. /package/dist/{matrix.sort.unit.spec-NDFK2A5C.js.map → matrix.sort.unit.spec-DCWR5PZJ.js.map} +0 -0
  795. /package/dist/{matrix.sorterUi.unit.spec-4ZKNOV2L.js.map → matrix.sorterUi.unit.spec-EBLSCLDL.js.map} +0 -0
  796. /package/dist/{matrix.unit.spec-V5XNLECG.js.map → matrix.unit.spec-I6JGZHQZ.js.map} +0 -0
  797. /package/dist/{mavb-LF7A7BDK.js.map → mavb-MLVNZJSF.js.map} +0 -0
  798. /package/dist/{mds.fimo-KJ4HPMZP.js.map → mds.fimo-MOGZPFCK.js.map} +0 -0
  799. /package/dist/{mds.samplescatterplot-ZHNWWWYI.js.map → mds.samplescatterplot-YLGNYKTH.js.map} +0 -0
  800. /package/dist/{mds.survivalplot-DNG7I22N.js.map → mds.survivalplot-R273N2GB.js.map} +0 -0
  801. /package/dist/{multivalue-SJQF7PHU.js.map → multivalue-5GFBYENI.js.map} +0 -0
  802. /package/dist/{numericDictTermCluster-O6PKT2FJ.js.map → numericDictTermCluster-MJK6SIWE.js.map} +0 -0
  803. /package/dist/{oncomatrix-YJCPKS72.js.map → oncomatrix-OAQT2CUN.js.map} +0 -0
  804. /package/dist/{oncomatrix.spec-MWGBQCIQ.js.map → oncomatrix.spec-6C62LLJI.js.map} +0 -0
  805. /package/dist/{plot.2dvaf-KIPQYNEH.js.map → plot.2dvaf-WDXWSC7L.js.map} +0 -0
  806. /package/dist/{plot.app-WHG3SEOG.js.map → plot.app-YTHD3ZJQ.js.map} +0 -0
  807. /package/dist/{plot.barplot-DTSYFUPC.js.map → plot.barplot-SRZM3GU3.js.map} +0 -0
  808. /package/dist/{plot.boxplot-MQDULP3P.js.map → plot.boxplot-VWOMZPZE.js.map} +0 -0
  809. /package/dist/{plot.brainImaging-DGVJQSCH.js.map → plot.brainImaging-6XL7YF5G.js.map} +0 -0
  810. /package/dist/{plot.disco-HYPRBLMQ.js.map → plot.disco-VRKSTV5Z.js.map} +0 -0
  811. /package/dist/{plot.ssgq-J5MMN7OD.js.map → plot.ssgq-AXASDOZZ.js.map} +0 -0
  812. /package/dist/{plot.vaf2cov-CID7GQB5.js.map → plot.vaf2cov-IF4DEEM5.js.map} +0 -0
  813. /package/dist/{polar2-QTSO2HCB.js.map → polar2-QQ3KHFME.js.map} +0 -0
  814. /package/dist/{profileForms-SRR2M5OS.js.map → profileForms-2US7IYYM.js.map} +0 -0
  815. /package/dist/{profilePlot-NDC4S2SC.js.map → profilePlot-DZQCBKPA.js.map} +0 -0
  816. /package/dist/{proteinView-EFNQL3LD.js.map → proteinView-TTLVQ43H.js.map} +0 -0
  817. /package/dist/{proteomeCohortCompare-WMR53HEL.js.map → proteomeCohortCompare-BUZYOOIA.js.map} +0 -0
  818. /package/dist/{pseudbulk.unit.spec-6MRZNXFI.js.map → pseudbulk.unit.spec-YNXQWDSU.js.map} +0 -0
  819. /package/dist/{pseudobulk-O5EC44RY.js.map → pseudobulk-VSXK2PTM.js.map} +0 -0
  820. /package/dist/{qualitative-W6MFYG7Z.js.map → qualitative-AKIZRNFO.js.map} +0 -0
  821. /package/dist/{radar2-GIQILMWK.js.map → radar2-7GXYLICJ.js.map} +0 -0
  822. /package/dist/{radarFacility2-5YJZ5JCK.js.map → radarFacility2-WFKOWGH2.js.map} +0 -0
  823. /package/dist/{render-2J4LR3UI.js.map → render-F3CBMRD5.js.map} +0 -0
  824. /package/dist/{report-MUMQK6XY.js.map → report-6LHMHUDY.js.map} +0 -0
  825. /package/dist/{sampleView-NKZMNBMH.js.map → sampleView-GWKPMVJH.js.map} +0 -0
  826. /package/dist/{samplelst-X74JZMTR.js.map → samplelst-TH6IBDVG.js.map} +0 -0
  827. /package/dist/{samplematrix-QDQXB5ZG.js.map → samplematrix-RPCWT33H.js.map} +0 -0
  828. /package/dist/{sc-FGHV5CBJ.js.map → sc-BFBHBAXF.js.map} +0 -0
  829. /package/dist/{scatter-QFVRBA7F.js.map → scatter-3IC6HOT7.js.map} +0 -0
  830. /package/dist/{scatter-YXF5VQGZ.js.map → scatter-L6R6J2LC.js.map} +0 -0
  831. /package/dist/{selectGenomeWithTklst-DP4RPV7U.js.map → selectGenomeWithTklst-3ZK7FIOP.js.map} +0 -0
  832. /package/dist/{singleCellCellType-XCHCMRR6.js.map → singleCellCellType-CLJFCBV6.js.map} +0 -0
  833. /package/dist/{singleCellCellType.unit.spec-S3JTP235.js.map → singleCellCellType.unit.spec-W32PSTRO.js.map} +0 -0
  834. /package/dist/{singleCellGeneExpression-FD6REV7Y.js.map → singleCellGeneExpression-L6MG37XE.js.map} +0 -0
  835. /package/dist/{singleCellGeneExpression.unit.spec-PVMZYD4G.js.map → singleCellGeneExpression.unit.spec-SF46JHCU.js.map} +0 -0
  836. /package/dist/{singleCellNumericValue-SIITQPMD.js.map → singleCellNumericValue-7QXK6KVZ.js.map} +0 -0
  837. /package/dist/{singleCellNumericValue.unit.spec-7PJEHLF7.js.map → singleCellNumericValue.unit.spec-VC7NQYM2.js.map} +0 -0
  838. /package/dist/{singleCellPlot-YJCFAYJW.js.map → singleCellPlot-5TRNRKPN.js.map} +0 -0
  839. /package/dist/{singlecell-6R7YK5P3.js.map → singlecell-2YV3UAIQ.js.map} +0 -0
  840. /package/dist/{singlecell-KHMH732Y.js.map → singlecell-I4PHM2LZ.js.map} +0 -0
  841. /package/dist/{snp-HXCVSW2F.js.map → snp-ZIA4YWCZ.js.map} +0 -0
  842. /package/dist/{snp.unit.spec-HXMFR4QS.js.map → snp.unit.spec-MVQHY4WJ.js.map} +0 -0
  843. /package/dist/{snplocus-YQVHAKBC.js.map → snplocus-GM6IEDPR.js.map} +0 -0
  844. /package/dist/{spliceevent.a53ss.diagram-4IBTR3JD.js.map → spliceevent.a53ss.diagram-ZFQDHHPY.js.map} +0 -0
  845. /package/dist/{spliceevent.exonskip.diagram-5ZTG65CE.js.map → spliceevent.exonskip.diagram-ZK6JOUMU.js.map} +0 -0
  846. /package/dist/{spliceevent.noeventdiagram-WO5KSC45.js.map → spliceevent.noeventdiagram-YKTF2VZE.js.map} +0 -0
  847. /package/dist/{ssGSEA-VJ3LVYJV.js.map → ssGSEA-FDN4CH2Y.js.map} +0 -0
  848. /package/dist/{ssGSEA.unit.spec-JQIJ4NZP.js.map → ssGSEA.unit.spec-YEUJBT6Z.js.map} +0 -0
  849. /package/dist/{stattable-COVQSHRZ.js.map → stattable-WIZRSKPH.js.map} +0 -0
  850. /package/dist/{studyCatalog-EXVRH4FI.js.map → studyCatalog-X2IGVJ26.js.map} +0 -0
  851. /package/dist/{summarizeCnvGeneexp-UJBTMXXH.js.map → summarizeCnvGeneexp-H7A5SI3R.js.map} +0 -0
  852. /package/dist/{summarizeGeneexpSurvival-XLQJGDRY.js.map → summarizeGeneexpSurvival-GJF6VD2S.js.map} +0 -0
  853. /package/dist/{summarizeMutationCnv-7RWSXB6F.js.map → summarizeMutationCnv-WQLMD2TR.js.map} +0 -0
  854. /package/dist/{summarizeMutationDiagnosis-42MG737O.js.map → summarizeMutationDiagnosis-3S52IDWF.js.map} +0 -0
  855. /package/dist/{summarizeMutationSurvival-FWVKVEHK.js.map → summarizeMutationSurvival-NTQIUNW7.js.map} +0 -0
  856. /package/dist/{summary-NR26ZPQB.js.map → summary-LMRFRKKI.js.map} +0 -0
  857. /package/dist/{summary.integration.spec-Z7JSUTGK.js.map → summary.integration.spec-KQMZKSEQ.js.map} +0 -0
  858. /package/dist/{summaryInput-DGKUOJVC.js.map → summaryInput-NNHZVHQA.js.map} +0 -0
  859. /package/dist/{sunburst-C5JNGFT7.js.map → sunburst-ICUSGIWV.js.map} +0 -0
  860. /package/dist/{survival-GCEX3EAZ.js.map → survival-K5YBNNVE.js.map} +0 -0
  861. /package/dist/{survival.integration.spec-ZX5RD6VQ.js.map → survival.integration.spec-4LRJW2V2.js.map} +0 -0
  862. /package/dist/{svgraph-XCFZ2WAG.js.map → svgraph-U7MS7YEM.js.map} +0 -0
  863. /package/dist/{svmr-4XTTURHA.js.map → svmr-2JGDBPAI.js.map} +0 -0
  864. /package/dist/{table-FQZ4UAH6.js.map → table-CBWOHYW6.js.map} +0 -0
  865. /package/dist/{termCollection-DN6A6HJU.js.map → termCollection-JFGGXVFI.js.map} +0 -0
  866. /package/dist/{termCollection-5QCR6LED.js.map → termCollection-VE3FFL6V.js.map} +0 -0
  867. /package/dist/{termCollection.unit.spec-RSSSXDHU.js.map → termCollection.unit.spec-XQQTDV4A.js.map} +0 -0
  868. /package/dist/{termCollectionFractionSelection-OSN7FITY.js.map → termCollectionFractionSelection-TFGF27GR.js.map} +0 -0
  869. /package/dist/{termCollectionFractionSelection.unit.spec-UW6D3DVK.js.map → termCollectionFractionSelection.unit.spec-MKGG4JBC.js.map} +0 -0
  870. /package/dist/{tk-4CZCVYBP.js.map → tk-74SGUUZY.js.map} +0 -0
  871. /package/dist/{tk-BIPJNXBZ.js.map → tk-K4JFYIZY.js.map} +0 -0
  872. /package/dist/{tp.ui-NI4U7567.js.map → tp.ui-727EXXMT.js.map} +0 -0
  873. /package/dist/{tvs.dt-YRDNDXUU.js.map → tvs.dt-YB2C3T33.js.map} +0 -0
  874. /package/dist/{tvs.dtcnv.categorical-REP4T33P.js.map → tvs.dtcnv.categorical-NOWMZOE5.js.map} +0 -0
  875. /package/dist/{tvs.dtcnv.continuous-K7OREEP5.js.map → tvs.dtcnv.continuous-3KWUNU76.js.map} +0 -0
  876. /package/dist/{tvs.dtfusion-AB5MPH3Q.js.map → tvs.dtfusion-NOJSTABU.js.map} +0 -0
  877. /package/dist/{tvs.dtitd-AFWU7ACY.js.map → tvs.dtitd-OD5B377P.js.map} +0 -0
  878. /package/dist/{tvs.dtsnvindel-G7XQEKEO.js.map → tvs.dtsnvindel-WIQMZTRH.js.map} +0 -0
  879. /package/dist/{tvs.dtsv-Y6BEY4J2.js.map → tvs.dtsv-HPERDN3R.js.map} +0 -0
  880. /package/dist/{tvs.samplelst-XRRWPC2E.js.map → tvs.samplelst-TC2Z7Z35.js.map} +0 -0
  881. /package/dist/{tvs.termCollection-PL4AN3GA.js.map → tvs.termCollection-F64BHWAL.js.map} +0 -0
  882. /package/dist/{vocabulary-DJZWOO6Q.js.map → vocabulary-ZOYF2VHS.js.map} +0 -0
  883. /package/dist/{wsi.direct-XUWANMKV.js.map → wsi.direct-Z5YUZEXG.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../plots/sc/model/SCModel.ts", "../plots/sc/viewModel/SCViewModel.ts", "../plots/sc/interactions/SCInteractions.ts", "../plots/sc/view/SCSampleTable.ts", "../plots/sc/view/SampleTableRenderer.ts", "../plots/sc/view/PlotButtons.ts", "../plots/sc/view/SectionRenderer.ts", "../plots/sc/settings/Settings.ts", "../plots/sc/view/SCViewRenderer.ts", "../plots/sc/settings/defaults.ts", "../plots/sc/subplots/DynamicSubplot.ts", "../plots/sc/subplots/SubplotManager.ts", "../plots/sc/SC.ts"],
4
+ "sourcesContent": ["import type { AppApi } from '#rx'\nimport type { SCFormattedState } from '../SCTypes'\nimport { dofetch3 } from '#common/dofetch'\nimport type { SCViewer } from '../SC'\nimport { getNormalRoot } from '#filter/filter.utils'\n\n/** Fetches data for sc app */\nexport class SCModel {\n\tsc: SCViewer\n\tapp: AppApi\n\tid?: string\n\tstate: SCFormattedState\n\n\tconstructor(sc: SCViewer) {\n\t\tthis.sc = sc\n\t\tthis.app = sc.app\n\t\tthis.id = sc.id\n\t\tthis.state = sc.app.getState()\n\t}\n\n\t/********** All Single Cell SAMPLES for rendering the sample table ******** */\n\tasync getAllSampleData(state) {\n\t\tconst body = {\n\t\t\tgenome: state.vocab.genome,\n\t\t\tdslabel: state.vocab.dslabel,\n\t\t\tfilter: getNormalRoot(state.termfilter.filter),\n\t\t\tfilter0: state.termfilter.filter0\n\t\t}\n\t\treturn await dofetch3('termdb/singlecellSamples', { body, signal: this.sc.api?.getAbortSignal() })\n\t}\n\n\t//Fetches optional name for ds defined columns\n\tasync getColumnLabels(dsScSamples: { [key: string]: any }) {\n\t\tif (!dsScSamples || !dsScSamples.sampleColumns) return\n\t\tconst colsCopy = structuredClone(dsScSamples.sampleColumns)\n\t\tfor (const col of colsCopy) {\n\t\t\tlet label = col.termid\n\t\t\ttry {\n\t\t\t\tlabel = (await this.app.vocabApi.getterm(col.termid)).name\n\t\t\t} catch (e: any) {\n\t\t\t\tif (e.message) {\n\t\t\t\t\t//Ignore. if statement to prevent tsc error.\n\t\t\t\t}\n\t\t\t\t/** Ignore errors and use the termid as the column header.\n\t\t\t\t * this is due to practical constrain that gdc needs to supply\n\t\t\t\t * analysis.workflow_type as 'Library', but this is not a term\n\t\t\t\t * in gdc dictionary */\n\t\t\t}\n\t\t\tcol.label = label\n\t\t}\n\t\treturn colsCopy\n\t}\n\n\t/********** Single Cell DATA for rendering plots ********\n\t * This is for the plot buttons. Returns an array plots with found files or\n\t * available data. */\n\tasync getSampleData() {\n\t\tconst body = this.getDataRequestOpts()\n\t\tif (!body) return\n\t\treturn await dofetch3('termdb/singlecellData', { body, signal: this.sc.api?.getAbortSignal() })\n\t}\n\n\t/** May provide active plots to the request and return plot data when\n\t * checkPlotAvailability is false. When checkPlotAvailability is true,\n\t * only returns which plots are available but not the actual data. */\n\tgetDataRequestOpts(_plots: any[] = [], checkPlotAvailability = true) {\n\t\tconst state = this.app.getState()\n\t\tconst singleCellTermdbConfig = state.termdbConfig?.queries?.singleCell\n\t\tif (!singleCellTermdbConfig?.data) throw new Error('No singleCell.data defined in termdbConfig.queries')\n\n\t\tconst config = state.plots.find((p: any) => p.id === this.id)\n\t\tif (!config.settings.sc.item) return\n\n\t\tconst plots = _plots?.length ? _plots : singleCellTermdbConfig.data.plots.map(p => p.name)\n\n\t\treturn {\n\t\t\tgenome: this.state.vocab.genome,\n\t\t\tdslabel: this.state.vocab.dslabel,\n\t\t\t// if true, only return available plot names, but not actual plot data\n\t\t\tcheckPlotAvailability,\n\t\t\tplots,\n\t\t\tsample: {\n\t\t\t\teID: config.settings.sc.item.eID,\n\t\t\t\tsID: config.settings.sc.item.sID\n\t\t\t}\n\t\t}\n\t}\n\n\t/** whether a sample has a spatial image (with the consolidated h5ad the\n\t spatial subplot needs), keyed by sID. Successful probes are cached;\n\t failures return false for the current render and may be retried. */\n\tsampleHasSpatial: { [sID: string]: boolean } = {}\n\tasync hasSpatialImage(sID: string): Promise<boolean> {\n\t\tif (!(sID in this.sampleHasSpatial)) {\n\t\t\t// only probe datasets that can have spatial images: termdbConfig\n\t\t\t// carries a presence-only queries.w2 marker when ds.queries.w2\n\t\t\t// exists (termdb.config.ts). Without it the wsiBySample route can\n\t\t\t// only 500, so skip the request entirely. (Deliberately not the\n\t\t\t// supportedChartTypes 'wsi' flag \u2014 that reflects the chart MENU,\n\t\t\t// which allowlist datasets like mmrf hide while still serving\n\t\t\t// spatial images per sample.)\n\t\t\tif (!this.state.termdbConfig?.queries?.w2) return false\n\t\t\tlet r: any\n\t\t\ttry {\n\t\t\t\tr = await dofetch3('termdb/wsiBySample', {\n\t\t\t\t\t// imageType: only the spatial root is enumerated for the probe\n\t\t\t\t\tbody: {\n\t\t\t\t\t\tgenome: this.state.vocab.genome,\n\t\t\t\t\t\tdslabel: this.state.vocab.dslabel,\n\t\t\t\t\t\tsample_id: sID,\n\t\t\t\t\t\timageType: 'spatial'\n\t\t\t\t\t},\n\t\t\t\t\tsignal: this.sc.api?.getAbortSignal()\n\t\t\t\t})\n\t\t\t} catch (e: any) {\n\t\t\t\t// a superseding dispatch aborts in-flight requests: rethrow so\n\t\t\t\t// rx's stale-render handling stops this render, instead of it\n\t\t\t\t// continuing with a made-up false\n\t\t\t\tif (this.app.vocabApi?.isAbortError?.(e)) throw e\n\t\t\t\treturn false // network failure: false for this render, retried next\n\t\t\t}\n\t\t\t// dofetch3 resolves server error payloads without rejecting: treat\n\t\t\t// them like a thrown failure \u2014 false now, uncached so a later\n\t\t\t// render can retry \u2014 never as proof the sample has no image\n\t\t\tif (r?.error) return false\n\t\t\tthis.sampleHasSpatial[sID] = !!(r?.images || []).some((i: any) => i.type == 'spatial' && i.spatialData)\n\t\t}\n\t\treturn this.sampleHasSpatial[sID]\n\t}\n\n\t/** Essentially for the GDC. Maybe applied to other ds in the future. */\n\tasync getCategories(_plots: any[]): Promise<string[] | undefined> {\n\t\tconst body = this.getDataRequestOpts(_plots, false)\n\t\tif (!body) return\n\n\t\tlet res\n\t\ttry {\n\t\t\tres = await dofetch3('termdb/singlecellData', { body, signal: this.sc.api?.getAbortSignal() })\n\t\t} catch (e: any) {\n\t\t\tif (e instanceof Error) console.error(`${e.message || e}`)\n\t\t}\n\n\t\treturn this.formatCategories(res)\n\t}\n\n\tformatCategories(res: any): string[] {\n\t\tconst plot = structuredClone(res.plots[0])\n\n\t\tplot.cells = [...plot.noExpCells, ...plot.expCells]\n\t\tconst clusters: Set<string> = new Set(plot.cells.map(c => c.category))\n\n\t\t/** Clean up list into an descending array */\n\t\tconst sortedClusters: string[] = Array.from(clusters).sort((a: any, b: any) => {\n\t\t\tconst num1 = parseInt(a.split(' ')[1])\n\t\t\tconst num2 = parseInt(b.split(' ')[1])\n\t\t\treturn num1 - num2\n\t\t})\n\t\treturn sortedClusters\n\t}\n}\n", "import type { AppApi } from '#rx'\nimport type { TableColumn, TableRow } from '#dom'\nimport type { SCConfig, SCFormattedState, SampleColumn, SCTableData } from '../SCTypes'\nimport type { SingleCellSample } from '#types'\n\nexport class SCViewModel {\n\tapp: AppApi\n\tstate: SCFormattedState\n\ttableData!: SCTableData\n\tsampleColumns: SampleColumn[]\n\tmetaResultIds: Set<string>\n\n\tconstructor(app: AppApi, sampleColumns?: SampleColumn[]) {\n\t\tthis.app = app\n\t\tthis.state = this.app.getState()\n\t\tthis.sampleColumns = sampleColumns || []\n\t\tthis.metaResultIds = new Set()\n\t}\n\n\tprocessData(config: SCConfig, _items: SingleCellSample[]) {\n\t\t//Sort meta analysis results to show at the beginning of the table.\n\t\t//Prevents breaking the logic for selected rows after formating the table data.\n\t\tconst items = _items.sort((a, b) => (b.isMetaResult === a.isMetaResult ? 0 : b.isMetaResult ? 1 : -1))\n\n\t\tconst [rows, columns, sampleColIdx] = this.getTabelData(config, items, this.sampleColumns)\n\t\tconst selectedRows: number[] = []\n\t\tconst sID = config.settings.sc.item?.sID\n\t\tconst i = sID\n\t\t\t? items.findIndex(item => item.sample === sID || item.experiments?.some(e => e.sampleName === sID))\n\t\t\t: -1\n\t\tif (i != -1) selectedRows.push(i)\n\n\t\t/** Returning this data separately from the eventual\n\t\t * viewData because it's static. */\n\t\tthis.tableData = {\n\t\t\trows: rows as any,\n\t\t\tcolumns: columns as any,\n\t\t\tselectedRows,\n\t\t\tsampleColIdx\n\t\t}\n\t}\n\n\t/** Shape the selected sample's plot data for the plot buttons view:\n\t * the server's plots plus flags the view only reads (hasSpatial shows\n\t * the Spatial button). */\n\tformatPlotsData(sampleData: any, hasSpatial: boolean) {\n\t\treturn { ...sampleData, hasSpatial }\n\t}\n\n\tgetTabelData(\n\t\tplotConfig: SCConfig,\n\t\titems: SingleCellSample[],\n\t\tsampleColumns?: SampleColumn[]\n\t): [TableRow[], TableColumn[], number] {\n\t\tconst rows: TableRow[] = []\n\t\tconst hasExperiments = items.some(i => i.experiments)\n\t\tlet sampleColIdx = -1\n\n\t\t/** First column may either be a list of samples or mix of samples, meta, and/or pseudobulk.\n\t\t * Only use 'Sample' or config setting if everything is a sample. */\n\t\tlet firstColLabel = plotConfig.settings.sc.columns.sample\n\t\tif (items[0]?.isMetaResult) firstColLabel = ''\n\t\tconst columns: TableColumn[] = [{ label: firstColLabel, sortable: true }]\n\t\tif (hasExperiments) {\n\t\t\tcolumns.push({ label: 'Sample', sortable: true }) //add after the case column\n\t\t\tsampleColIdx = 1\n\t\t} else sampleColIdx = 0\n\t\tcolumns.push({ label: 'Shown plots' }) //Empty column for plot buttons\n\n\t\t// add in optional sample columns\n\t\tfor (const col of sampleColumns || []) {\n\t\t\tcolumns.push({\n\t\t\t\tlabel: col.label,\n\t\t\t\twidth: '14vw',\n\t\t\t\tsortable: true\n\t\t\t})\n\t\t}\n\n\t\t// if samples are using experiments, add the hardcoded experiment column at the end\n\t\tif (hasExperiments) columns.push({ label: 'Experiment', sortable: true }) // corresponds to this.samples[].experiments[].experimentID\n\n\t\tfor (const item of items) {\n\t\t\tif (item.isMetaResult) this.metaResultIds.add(item.sample)\n\t\t\tif (hasExperiments)\n\t\t\t\t//GDC\n\t\t\t\tfor (const exp of item.experiments!) {\n\t\t\t\t\t// first cell is always sample name. sneak in experiment object to be accessed in click callback\n\t\t\t\t\t//TODO: Consider removing the experimentID as it is no longer needed.\n\t\t\t\t\tconst row: { [index: string]: any }[] = [{ value: item.sample, __experimentID: exp.experimentID }]\n\t\t\t\t\t// hardcode to expect exp.sampleName and add this as a column\n\t\t\t\t\trow.push({ value: exp.sampleName })\n\t\t\t\t\trow.push({ value: '' }) //Empty cell for shown plot buttons\n\t\t\t\t\t// optional sample and experiment columns\n\t\t\t\t\tfor (const col of sampleColumns || []) {\n\t\t\t\t\t\trow.push({ value: item[col.termid] })\n\t\t\t\t\t}\n\n\t\t\t\t\t// hardcode to always add in experiment id column. link out only if the ds declares a\n\t\t\t\t\t// url template for it (as singleCellPlot.js does)\n\t\t\t\t\tconst urlTemp = this.state.termdbConfig?.urlTemplates?.scrnaExperimentId\n\t\t\t\t\tif (urlTemp) row.push({ value: exp.experimentID, url: `${urlTemp.base}${exp.experimentID}` })\n\t\t\t\t\telse row.push({ value: exp.experimentID })\n\t\t\t\t\trows.push(row)\n\t\t\t\t}\n\t\t\telse {\n\t\t\t\t// sample does not use experiment\n\t\t\t\t// first cell is sample name\n\t\t\t\tconst row: { [index: string]: any }[] = item.isMetaResult\n\t\t\t\t\t? [{ html: item.sample.replace(/_/g, ' '), value: item.sample, elemId: 'isMetaResult' }]\n\t\t\t\t\t: [{ value: item.sample }]\n\t\t\t\t//Empty cell for shown plot buttons\n\t\t\t\trow.push({ value: '' })\n\t\t\t\t// optional sample columns\n\t\t\t\tfor (const col of sampleColumns || []) {\n\t\t\t\t\tconst value = item[col.termid]\n\t\t\t\t\tif (value == null && item.isMetaResult) row.push({ value: 'All' })\n\t\t\t\t\telse row.push({ value: item[col.termid] })\n\t\t\t\t}\n\t\t\t\trows.push(row)\n\t\t\t}\n\t\t}\n\t\treturn [rows, columns, sampleColIdx]\n\t}\n}\n", "import type { AppApi } from '#rx'\nimport type { SCModel } from '../model/SCModel.ts'\nimport type { SCViewer } from '../SC.ts'\nimport type { SCViewModel } from '../viewModel/SCViewModel.ts'\n\n/** Handles the interactivity from the view */\nexport class SCInteractions {\n\tapp: AppApi\n\tid: string\n\tmodel: SCModel\n\tviewModel: SCViewModel\n\n\tconstructor(sc: SCViewer) {\n\t\tthis.app = sc.app\n\t\tthis.id = sc.id\n\t\tthis.model = sc.model\n\t\tthis.viewModel = sc.viewModel\n\t}\n\n\t/** Add the plot to the state.plots array with .parentId. Adding\n\t * .parentId prevents the plot from launching in a new sandbox outside SC.\n\t * Pass the .parentId to both the plotConfig and the action.\n\t * this.getState() in SC.ts will find all the subplots with the parentId==this.id\n\t * SC.main() initializes the subplots as components in chartsDiv */\n\tasync createSubplot(config) {\n\t\tconst c = Object.assign({}, config, { parentId: this.id })\n\t\tawait this.app.dispatch({\n\t\t\ttype: 'plot_create',\n\t\t\tparentId: this.id,\n\t\t\tconfig: c\n\t\t})\n\t}\n\n\t/** Updates the selected item in the plot settings */\n\tasync updateItem(item) {\n\t\titem.isMetaResult = this.viewModel.metaResultIds.has(item.sID)\n\t\tawait this.app.dispatch({\n\t\t\ttype: 'plot_edit',\n\t\t\tid: this.id,\n\t\t\tconfig: { settings: { sc: { item } } }\n\t\t})\n\t}\n\n\tasync getDropDownOptions(plot): Promise<string[] | undefined> {\n\t\treturn this.model.getCategories(plot)\n\t}\n}\n", "import type { SCDom, SCTableData } from '../SCTypes'\nimport { icons, sortTableCallBack } from '#dom'\n\n/**\n * Focused, stable renderer for the SC sample table.\n *\n * The shared renderTable() helper in client/dom/table.ts is a generic table system\n * that rebuilds rows/cells aggressively. That makes it awkward to preserve scroll\n * position when subplot state updates only change the \"Shown plots\" column.\n *\n * This class keeps the table shell stable and updates only the dynamic cells that\n * actually change:\n * - whether the \"Shown plots\" column is visible\n * - the buttons inside each sample's \"Shown plots\" cell\n * - the checked radio input, when the selected sample changes\n *\n * setTableData() is called on every SC update() (e.g. on every subplot state\n * change), so it only tears down and rebuilds the table shell when the sample\n * list or columns actually changed (see isSameShape()). Otherwise it leaves\n * existing row/cell DOM nodes in place so scroll position and row identity\n * survive updates that only affect plot buttons.\n */\nexport class SCSampleTable {\n\tdom: SCDom | any\n\ttableData: SCTableData\n\tsampleColIdx: number\n\tshowPlotsColumn = false\n\trowMap = new Map<string, any>()\n\trows: any[] = []\n\tcolumns: any[] = []\n\tholder: any\n\tparentDiv: any\n\ttable: any\n\ttbody: any\n\tthead: any\n\ttableHeaderRow: any\n\tonRowClick?: (sampleId: string) => void\n\n\tconstructor(dom: SCDom | any, tableData: SCTableData, opts: { onRowClick?: (sampleId: string) => void } = {}) {\n\t\tthis.dom = dom\n\t\tthis.holder = dom?.tableDiv || dom\n\t\tthis.tableData = tableData\n\t\tthis.sampleColIdx = tableData.sampleColIdx ?? 0\n\t\tthis.rows = tableData.rows\n\t\tthis.columns = tableData.columns\n\t\tthis.onRowClick = opts.onRowClick\n\t\tthis.renderStaticTable()\n\t}\n\n\tprivate renderStaticTable() {\n\t\tthis.holder.selectAll('*').remove()\n\n\t\tthis.parentDiv = this.holder\n\t\t\t.append('div')\n\t\t\t.style('background-color', 'white')\n\t\t\t.style('display', 'inline-block')\n\t\t\t.style('max-height', '30vh')\n\t\t\t.style('max-width', '90vw')\n\t\t\t.classed('sjpp_show_scrollbar', true)\n\n\t\tthis.table = this.parentDiv.append('table').style('width', '100%')\n\t\tthis.thead = this.table.append('thead')\n\t\tthis.thead\n\t\t\t.style('position', 'sticky')\n\t\t\t.style('top', '0')\n\t\t\t.style('background-color', 'white')\n\t\t\t.style('z-index', '1')\n\t\tthis.tableHeaderRow = this.thead.append('tr')\n\t\tthis.tbody = this.table.append('tbody')\n\n\t\tthis.renderHeader()\n\t\tthis.renderRows()\n\t}\n\n\tprivate renderHeader() {\n\t\tthis.tableHeaderRow.append('th').style('width', '1.5vw').style('padding', '0')\n\t\tfor (const [columnIndex, column] of this.columns.entries()) {\n\t\t\tconst th = this.tableHeaderRow.append('th').attr('class', 'sjpp_table_item sjpp_table_header')\n\t\t\tif (column.label === 'Shown plots' && !this.showPlotsColumn) th.style('display', 'none')\n\t\t\tif (column.width) th.style('width', column.width)\n\t\t\tif (column.tooltip) th.attr('title', column.tooltip)\n\t\t\tconst labelWrap = th.append('span').style('display', 'inline-flex').style('align-items', 'center')\n\t\t\tlabelWrap.append('span').text(column.label)\n\t\t\tif (column.sortable) {\n\t\t\t\tconst sortDiv = labelWrap.append('div').style('display', 'inline-block').style('padding-left', '6px')\n\t\t\t\tlet isAscending = false\n\t\t\t\ticons['updown'](sortDiv, {\n\t\t\t\t\thandler: () => {\n\t\t\t\t\t\tisAscending = !isAscending\n\t\t\t\t\t\tconst nextRows = sortTableCallBack(columnIndex, this.rows, isAscending)\n\t\t\t\t\t\tthis.sortRows(nextRows)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate renderRows() {\n\t\tthis.rowMap.clear()\n\t\tfor (const [rowIndex, row] of this.rows.entries()) {\n\t\t\tconst tr = this.tbody.append('tr').attr('class', 'sjpp_row_wrapper').attr('tabindex', 0)\n\t\t\tif (rowIndex % 2 === 1) tr.style('background-color', 'rgb(245,245,245)')\n\t\t\tconst sampleCell = row[this.sampleColIdx]\n\t\t\tconst sampleId = String(sampleCell?.value ?? '')\n\t\t\tif (!sampleId) continue\n\n\t\t\tconst entry: any = {\n\t\t\t\tsampleId,\n\t\t\t\trow: tr,\n\t\t\t\tcells: {}\n\t\t\t}\n\n\t\t\tconst radioCell = tr.append('td').style('width', '1.5vw').style('padding', '0 6px').style('text-align', 'center')\n\t\t\tradioCell\n\t\t\t\t.append('input')\n\t\t\t\t.attr('type', 'radio')\n\t\t\t\t.attr('name', 'sjpp-sc-row-selection')\n\t\t\t\t.attr('value', sampleId)\n\t\t\t\t.attr('aria-label', `Select ${sampleId}`)\n\t\t\t\t.property('checked', this.tableData.selectedRows.includes(rowIndex))\n\t\t\t\t.on('change', () => {\n\t\t\t\t\tif (this.onRowClick) this.onRowClick(sampleId)\n\t\t\t\t})\n\n\t\t\tfor (const [colIdx, cell] of row.entries()) {\n\t\t\t\tconst td = tr.append('td').attr('class', 'sjpp_table_item').attr('data-testid', 'sjpp-table-cell-item')\n\t\t\t\tif (this.columns[colIdx]?.label === 'Shown plots' && !this.showPlotsColumn) td.style('display', 'none')\n\t\t\t\tif (colIdx === this.sampleColIdx) {\n\t\t\t\t\tentry.cells.sample = td\n\t\t\t\t}\n\t\t\t\tif (this.columns[colIdx]?.label === 'Shown plots') {\n\t\t\t\t\tentry.cells.shownPlots = td\n\t\t\t\t}\n\t\t\t\tif ('value' in cell) td.text(cell.value).attr('aria-label', cell.value)\n\t\t\t\telse if (cell.html) td.html(cell.html)\n\t\t\t\telse if (cell.url) td.append('a').text(cell.value || cell.url).attr('href', cell.url).attr('aria-label', `Click to ${cell.url}`)\n\t\t\t}\n\n\t\t\ttr.on('click', () => {\n\t\t\t\tif (this.onRowClick) this.onRowClick(sampleId)\n\t\t\t})\n\t\t\ttr.on('keydown', event => {\n\t\t\t\tif (event.key === 'Enter') {\n\t\t\t\t\tif (this.onRowClick) this.onRowClick(sampleId)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tthis.rowMap.set(sampleId, entry)\n\t\t}\n\t}\n\n\t/** Patches the table in place when the incoming data describes the same\n\t * set of samples/columns (e.g. a subplot state change re-triggers SC's\n\t * main()/update() without the sample list itself changing). Only falls\n\t * back to a full teardown+rebuild when the sample list or columns\n\t * actually changed, so row identity (and scroll position) survives\n\t * updates that only affect the \"Shown plots\" column. */\n\tsetTableData(tableData: SCTableData) {\n\t\tconst needsRebuild = !this.isSameShape(tableData)\n\t\tthis.tableData = tableData\n\t\tthis.rows = tableData.rows\n\t\tthis.columns = tableData.columns\n\t\tthis.sampleColIdx = tableData.sampleColIdx ?? 0\n\t\tif (needsRebuild) {\n\t\t\tthis.renderStaticTable()\n\t\t} else {\n\t\t\tthis.syncSelectedRows(tableData)\n\t\t}\n\t}\n\n\t/** Compares by the set of sample IDs rather than row order, since sortRows()\n\t * reorders this.rows/DOM in place on user interaction. Comparing positionally\n\t * would treat that as a \"shape change\" on the next incoming tableData and\n\t * force an unnecessary rebuild that undoes the sort and resets scroll. */\n\tprivate isSameShape(tableData: SCTableData): boolean {\n\t\tif (tableData.columns.length !== this.columns.length) return false\n\t\tfor (const [i, column] of this.columns.entries()) {\n\t\t\tif (tableData.columns[i]?.label !== column.label) return false\n\t\t}\n\t\tif (tableData.rows.length !== this.rows.length) return false\n\t\tconst incomingSampleColIdx = tableData.sampleColIdx ?? this.sampleColIdx\n\t\treturn tableData.rows.every(row => this.rowMap.has(String(row[incomingSampleColIdx]?.value ?? '')))\n\t}\n\n\t/** selectedRows is always 0 or 1 entries (radio selection), see SCViewModel. */\n\tprivate syncSelectedRows(tableData: SCTableData) {\n\t\tconst sampleColIdx = tableData.sampleColIdx ?? this.sampleColIdx\n\t\tconst selectedRowIndex = tableData.selectedRows[0]\n\t\tconst selectedId =\n\t\t\tselectedRowIndex != null ? String(tableData.rows[selectedRowIndex]?.[sampleColIdx]?.value ?? '') : ''\n\t\tfor (const [sampleId, entry] of this.rowMap) {\n\t\t\tconst input = entry.row.select('input[type=\"radio\"]').node()\n\t\t\tif (input) input.checked = sampleId === selectedId\n\t\t}\n\t}\n\n\tsetShownPlotsColumnVisibility(visible: boolean) {\n\t\tif (visible !== this.showPlotsColumn) this.toggleShownPlotsColumn(visible)\n\t}\n\n\tprivate toggleShownPlotsColumn(visible: boolean) {\n\t\tthis.showPlotsColumn = visible\n\t\tconst shownPlotsHeaderIndex = this.columns.findIndex(c => c.label === 'Shown plots')\n\t\tif (shownPlotsHeaderIndex === -1) return\n\t\tconst domColumnIndex = shownPlotsHeaderIndex + 1\n\n\t\tconst headerCells = this.tableHeaderRow.selectAll('th').nodes()\n\t\tconst visibleState = visible ? 'table-cell' : 'none'\n\t\tif (headerCells[domColumnIndex]) headerCells[domColumnIndex].style.display = visibleState\n\n\t\tfor (const entry of this.rowMap.values()) {\n\t\t\tentry.cells.shownPlots?.style('display', visibleState)\n\t\t}\n\t}\n\n\t/**\n\t * Placeholder for future sorted-row updates.\n\t *\n\t * This intentionally keeps row identity stable and reorders existing DOM nodes\n\t * instead of deleting/recreating the whole table when sorting.\n\t */\n\tsortRows(sortedRows: any[]) {\n\t\tconst parentNode = this.tbody.node()\n\t\tfor (const row of sortedRows) {\n\t\t\tconst sampleId = String(row[this.sampleColIdx]?.value ?? '')\n\t\t\tconst entry = this.rowMap.get(sampleId)\n\t\t\tif (!entry) continue\n\t\t\tparentNode.appendChild(entry.row.node())\n\t\t}\n\t\tthis.rows = sortedRows\n\t}\n}\n", "import type { SCDom, SCSampleSandbox, SCTableData } from '../SCTypes'\nimport type { TableCell } from '#dom'\nimport type { SCInteractions } from '../interactions/SCInteractions'\nimport { SCSampleTable } from './SCSampleTable'\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\ttable: SCSampleTable | null = null\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.tableData = tableData\n\t\tthis.table = new SCSampleTable(this.dom, tableData, {\n\t\t\tonRowClick: sampleId => {\n\t\t\t\tconst data = this.tableData\n\t\t\t\tconst sampleColIdx = data.sampleColIdx ?? 0\n\t\t\t\tconst rowIndex = data.rows.findIndex(row => String(row[sampleColIdx]?.value ?? '') === sampleId)\n\t\t\t\tif (rowIndex === -1) return\n\t\t\t\tconst item = this.buildItemFromRow(data, rowIndex)\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\tthis.reapplyAllPlotButtons()\n\t}\n\n\t/** Builds an item object from a table row, mapping column labels to keys.\n\t * Converts 'sample' -> 'sID' and 'experiment' -> 'eID'.\n\t * Extracted out from noButtonCallback for testing. */\n\tbuildItemFromRow(tableData: SCTableData, index: number) {\n\t\tconst item = {} as { sID: string; eID: string; [key: string]: any }\n\t\ttableData.rows[index].forEach((r: TableCell, idx: number) => {\n\t\t\tif (!r.value) return\n\t\t\tlet key = tableData.columns[idx].label.toLowerCase()\n\t\t\t/** Convert the column labels into the required sample structure keys.\n\t\t\t * Maintains the sample obj used throughout the app whilst allowing for\n\t\t\t * dynamic column labels based on the config. */\n\t\t\tkey = key === 'sample' || key === '' ? 'sID' : key === 'experiment' ? 'eID' : key\n\t\t\titem[key] = r.value\n\t\t})\n\t\tif (!item.sID) throw new Error('Selected item must have sID property')\n\t\treturn item\n\t}\n\n\tupdateTable(tableData: SCTableData) {\n\t\tthis.tableData = tableData\n\t\tif (!this.table) {\n\t\t\tthis.renderSamplesTable(tableData)\n\t\t\treturn\n\t\t}\n\t\tthis.table.setTableData(tableData)\n\t\tthis.reapplyAllPlotButtons()\n\t}\n\n\tupdatePlotBtns(activeSandboxes: Map<string, SCSampleSandbox[]>) {\n\t\tthis.activeSandboxes = activeSandboxes\n\t\tlet totalPlots = 0\n\t\tfor (const sandboxes of activeSandboxes.values()) totalPlots += sandboxes.length\n\t\tthis.table?.setShownPlotsColumnVisibility(totalPlots >= 2)\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 sampleSandboxes = this.activeSandboxes.get(sampleId)\n\t\tif (!sampleSandboxes || sampleSandboxes.length === 0) return\n\t\tif (!this.table) return\n\n\t\tconst cell = this.table.rowMap.get(sampleId)?.cells?.shownPlots\n\t\tif (!cell) return\n\n\t\tconst plotIds = sampleSandboxes.map(s => s.plotId).join(',')\n\t\tconst cached = this.rendered.get(sampleId)\n\t\tif (cached && cached.cell === cell && cached.plotIds === plotIds) return\n\n\t\tcell.selectAll('.sjpp-sc-table-plot-btn').remove()\n\t\tthis.rendered.set(sampleId, { cell, plotIds })\n\t\tfor (const { div, plotName } of sampleSandboxes) {\n\t\t\tthis.appendPlotBtn(cell, div, plotName, sampleId)\n\t\t}\n\t}\n\n\tappendPlotBtn(cell: any, sandboxDiv: any, plotName: string, sampleId: string) {\n\t\tconst text = plotName.length > 25 ? plotName.slice(0, 12) + '...' : plotName\n\t\tconst label = `Scroll to ${plotName}`\n\t\tcell\n\t\t\t.append('button')\n\t\t\t.attr('class', 'sjpp-sc-table-plot-btn')\n\t\t\t.attr('data-testid', `sjpp-sc-table-${sampleId}-${plotName}-btn`)\n\t\t\t.style('padding', '2px 5px')\n\t\t\t.style('margin-left', '4px')\n\t\t\t.style('font-size', '0.8em')\n\t\t\t.style('border-radius', '20px')\n\t\t\t.style('border', '0.5px solid black')\n\t\t\t.style('cursor', 'pointer')\n\t\t\t.text(text)\n\t\t\t.attr('aria-label', label)\n\t\t\t.attr('title', label)\n\t\t\t.attr('tabindex', 0)\n\t\t\t.on('click', () => {\n\t\t\t\tsandboxDiv.node().scrollIntoView({ behavior: 'smooth', block: 'start' })\n\t\t\t})\n\t}\n}\n", "import type { Div, Elem } from '../../../types/d3'\nimport type { SCInteractions } from '../interactions/SCInteractions'\nimport { Menu } from '#dom'\nimport { digestMessage } from '#termsetting'\nimport { TermTypeGroups } from '#shared/terms.js'\nimport { SINGLECELL_CELLTYPE, SINGLECELL_GENE_EXPRESSION } from '#types'\nimport type { SCSample } from '../SCTypes'\nimport type { Settings } from '../settings/Settings'\n\n/** Rendering for the plot buttons that appear below the item\n * table. Plot buttons are rendered based on the available plots\n * for the selected sample, and the config defined in\n * termdbConfig.queries.singleCell.data.plots. Each plot config\n * in termdbConfig should define a name that matches the plot\n * names returned from the server, and can optionally define\n * colorColumns which will be used to apply color to the plot\n * if those columns are present in the data.\n *\n * Notes:\n * - The hierarchical clustering limits to the first 100 genes.\n * */\nexport class PlotButtons {\n\tplotBtnsDom: {\n\t\tholder: Div\n\t\tpromptDiv: Div\n\t\tselectPrompt: Elem\n\t\tbtnsDiv: Div\n\t\ttip: Menu\n\t}\n\tdata?: any\n\titem?: SCSample\n\tinteractions: SCInteractions\n\tscTermdbConfig: any\n\tsettings!: Settings\n\t/** Single cell cell type terms defined in the ds file and saved in the termdbConfig */\n\tscctTerms?: any[]\n\t/** Single cell numeric value terms defined in the ds file and saved in the termdbConfig */\n\tscnvTerms?: any[]\n\tavailablePlots!: Set<string>\n\n\t/** scctTerms and the scTermdbConfig are created on server init and will not change. */\n\tconstructor(interactions: SCInteractions, holder: Div, termdbConfig) {\n\t\tholder.style('padding', '10px')\n\t\tconst promptDiv = holder.append('div').style('padding', '10px 0').text('Select data from')\n\t\tthis.plotBtnsDom = {\n\t\t\tholder,\n\t\t\tpromptDiv,\n\t\t\tselectPrompt: promptDiv.append('span'),\n\t\t\tbtnsDiv: holder.append('div'),\n\t\t\ttip: new Menu({ padding: '' })\n\t\t}\n\t\tthis.interactions = interactions\n\t\tthis.scctTerms = termdbConfig?.termType2terms?.[TermTypeGroups.SINGLECELL_CELLTYPE]\n\t\tthis.scnvTerms = termdbConfig?.termType2terms?.[TermTypeGroups.SINGLECELL_NUMERIC_VALUE]\n\t\tthis.scTermdbConfig = termdbConfig.queries.singleCell\n\t}\n\n\tupdate(settings: Settings, data) {\n\t\t/** If the user has not selected a item yet but clicks\n\t\t * the select item/plots btn above the table, the prompt appears\n\t\t * unnecessarily */\n\t\tconst item = settings.sc.item\n\t\tthis.plotBtnsDom.holder.style('display', !item ? 'none' : 'block')\n\t\tif (!item) return\n\t\tif (data != null && data.plots) this.data = data\n\t\t//Show buttons for plots with found data files (see note above).\n\t\tthis.availablePlots = new Set(this.data?.plots?.map((p: any) => p.name))\n\t\tthis.settings = settings\n\t\tthis.item = item\n\t\tconst name = item.sID\n\t\tthis.plotBtnsDom.selectPrompt.text(` ${name}:`)\n\t\tthis.renderChartBtns()\n\t}\n\n\trenderChartBtns() {\n\t\tthis.plotBtnsDom.btnsDiv.selectAll('*').remove()\n\t\t/** TODO: May eventually get rid of this an used support chart types already \n\t\t * defined in the termdbConfig when more data available. In the interim, \n\t\t * the summary plot in particular maybe hidden if no cell type \n\t\t * annotations are available. */\n\t\tconst disabledPlots = this.scTermdbConfig?.scApp?.disabledPlots || []\n\t\tconst btns = this.getChartBtnOpts().filter(b => !disabledPlots.includes(b.chartType)).filter(b => b.isVisible())\n\n\t\tthis.plotBtnsDom.btnsDiv\n\t\t\t.selectAll('button')\n\t\t\t.data(btns)\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\tchartType: 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\tchartType: 'sampleScatter',\n\t\t\t\tisVisible: () => true,\n\t\t\t\tgetPlotConfig: async () => {\n\t\t\t\t\treturn await this.getSingleCellConfig(plot.name)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t\tbtns.push(\n\t\t\t{\n\t\t\t\tlabel: 'Summary',\n\t\t\t\tchartType: 'dictionary',\n\t\t\t\t/** Note: if only spatial image available, this plot should not show. */\n\t\t\t\tisVisible: () => this.availablePlots.has('dictionary'),\n\t\t\t\tgetPlotConfig: () => {\n\t\t\t\t\tconst sample = { ...this.item!, plots: Array.from(this.availablePlots) }\n\t\t\t\t\tconst isMeta = sample?.isMetaResult || false\n\t\t\t\t\treturn {\n\t\t\t\t\t\tchartType: 'dictionary',\n\t\t\t\t\t\tsample,\n\t\t\t\t\t\tspawnConfig: {\n\t\t\t\t\t\t\tparentId: this.interactions.id,\n\t\t\t\t\t\t\theaderText: this.makeHeaderText(sample, isMeta),\n\t\t\t\t\t\t\thidePlotFilter: !isMeta,\n\t\t\t\t\t\t\tsample\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttree: {\n\t\t\t\t\t\t\tusecase: {\n\t\t\t\t\t\t\t\ttarget: 'dictionary',\n\t\t\t\t\t\t\t\tspecialCase: {\n\t\t\t\t\t\t\t\t\ttype: 'singleCell',\n\t\t\t\t\t\t\t\t\tconfig: { sample }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Gene expression',\n\t\t\t\tchartType: 'GeneExpInput',\n\t\t\t\tisVisible: () => this.scTermdbConfig?.geneExpression && this.availablePlots.has(this.scTermdbConfig.geneExpression?.label || 'Gene expression'),\n\t\t\t\tgetPlotConfig: () => {\n\t\t\t\t\tconst sample = this.item!\n\t\t\t\t\tconst isMeta = sample?.isMetaResult || false\n\t\t\t\t\tconst headerText = this.makeHeaderText(sample, isMeta)\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tchartType: 'GeneExpInput',\n\t\t\t\t\t\ttermType: SINGLECELL_GENE_EXPRESSION,\n\t\t\t\t\t\theaderText,\n\t\t\t\t\t\ttermProperties: { sample },\n\t\t\t\t\t\tparentId: this.interactions.id,\n\t\t\t\t\t\tsample,\n\t\t\t\t\t\tspawnConfig: {\n\t\t\t\t\t\t\tparentId: this.interactions.id,\n\t\t\t\t\t\t\theaderText,\n\t\t\t\t\t\t\thidePlotFilter: !isMeta,\n\t\t\t\t\t\t\t/** Must pass this to summary config in the event a continuous\n\t\t\t\t\t\t\t * overlay is applied, launching the scatter plot. Without it,\n\t\t\t\t\t\t\t * the single cell model is not used. */\n\t\t\t\t\t\t\tsingleCellPlot: {\n\t\t\t\t\t\t\t\tname: [...this.availablePlots][0],\n\t\t\t\t\t\t\t\tsample\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Differential expression',\n\t\t\t\tchartType: 'DA',\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\tchartType: 'imagePlot',\n\t\t\t\tisVisible: () =>\n\t\t\t\t\tthis.scTermdbConfig?.images && this.availablePlots.has(this.scTermdbConfig.images.label || 'Image'),\n\t\t\t\tgetPlotConfig: () => {\n\t\t\t\t\tconst isMeta = this.item?.isMetaResult || false\n\t\t\t\t\treturn {\n\t\t\t\t\t\tchartType: 'imagePlot',\n\t\t\t\t\t\tsample: this.item!,\n\t\t\t\t\t\timgDir: this.scTermdbConfig?.images,\n\t\t\t\t\t\theaderText: this.makeHeaderText(this.item!, isMeta),\n\t\t\t\t\t\tsettings: { imagePlot: { width: '', height: 400 } }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t// spatial tissue viewer for samples with a spatial image (the model's\n\t\t\t\t// wsiBySample probe sets data.hasSpatial); spawns the w2 wsi plot in\n\t\t\t\t// fixed-sample mode, which has its own burger menu for the overlays\n\t\t\t\tlabel: 'Spatial',\n\t\t\t\tchartType: 'wsi',\n\t\t\t\tisVisible: () => !!this.data?.hasSpatial,\n\t\t\t\tgetPlotConfig: () => {\n\t\t\t\t\tconst sample = this.item!\n\t\t\t\t\treturn {\n\t\t\t\t\t\tchartType: 'wsi',\n\t\t\t\t\t\tname: `Sample: ${sample.sID} Spatial`,\n\t\t\t\t\t\tsample,\n\t\t\t\t\t\tplotName: 'Spatial'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t\treturn btns\n\t}\n\n\tmakeHeaderText(sample: any, isMeta: boolean, plot?: string) {\n\t\t/** Case and project are GDC specific */\n\t\tconst caseText = sample.case ? ` Case: ${sample.case}` : ''\n\t\tconst projectText = sample?.['project id'] ? ` Project: ${sample['project id']}` : ''\n\t\treturn `${isMeta ? '' : 'Sample: '}${sample.sID}${caseText}${projectText}${plot ? ` (${plot})` : ''}`\n\t}\n\n\t//********** Btn Menus **********/\n\tasync termDropdownMenu(plot: any, self: PlotButtons) {\n\t\t/** An array of plots is required for the server request.\n\t\t * The data for all scRNA plots is the same. Pick the first one */\n\t\tconst _plot = Array.from(self.availablePlots)[0]\n\t\tconst options: string[] | undefined = await self.interactions.getDropDownOptions([_plot])\n\t\tif (!options?.length) throw new Error('No options found for this plot. Cannot open dropdown menu.')\n\n\t\tself.plotBtnsDom.tip.clear()\n\t\tconst wrapper = self.plotBtnsDom.tip.d.append('div').style('padding', '10px')\n\t\twrapper\n\t\t\t.append('div')\n\t\t\t.style('display', 'block')\n\t\t\t.style('width', '300px')\n\t\t\t.text(`View differentially expressed genes of a ${self.scTermdbConfig.DEgenes.termId} versus rest of the cells:`)\n\n\t\tconst select = wrapper\n\t\t\t.append('select')\n\t\t\t.style('margin', '10px 0')\n\t\t\t.style('width', 'auto')\n\t\t\t.style('padding', '5px')\n\t\t\t.on('change', async function () {\n\t\t\t\tself.plotBtnsDom.tip.hide()\n\t\t\t\tconst value = select.node()!.value\n\t\t\t\tif (value.indexOf('Select') == 0) return //ignore prompt option\n\t\t\t\tconst config = plot.getPlotConfig(value)\n\t\t\t\tawait self.interactions.createSubplot(config)\n\t\t\t})\n\n\t\tconst regex = new RegExp(self.scTermdbConfig.DEgenes.termId, 'gi')\n\t\toptions.unshift(`Select a ${self.scTermdbConfig.DEgenes.termId}...`)\n\t\tfor (const cluster of options) {\n\t\t\tselect.append('option').attr('value', cluster.replace(regex, '').trim()).text(cluster)\n\t\t}\n\t}\n\n\t//********** Plot Config Helpers **********/\n\tasync getSingleCellConfig(plotName: string): Promise<object> {\n\t\tif (!this.item) throw new Error('No item selected')\n\t\tconst plot = this.scTermdbConfig.data.plots.find(p => p.name == plotName)\n\t\tif (!plot) throw new Error(`No plot by name ${plotName} in data.plots.`)\n\t\tconst sample = this.item\n\t\tconst isMeta = sample?.isMetaResult || false\n\t\tconst config: any = {\n\t\t\tchartType: 'sampleScatter',\n\t\t\tname: this.makeHeaderText(sample, isMeta, plotName),\n\t\t\tsample,\n\t\t\tsingleCellPlot: {\n\t\t\t\tname: plotName,\n\t\t\t\tsample\n\t\t\t}\n\t\t}\n\t\tif (plot.colorColumns?.[0]) {\n\t\t\t// apply optional color term. hardcodes to 1st of the array\n\t\t\tconst key = plot.colorColumns[0]?.type == 'numeric' ? 'scnv' : 'scct'\n\t\t\tconfig.colorTW = await this.makeScTW(key, sample, plot)\n\t\t}\n\t\treturn config\n\t}\n\n\t// Quick fix. Eventually use the handler to get the proper term from the termdbConfig\n\tasync makeScTW(key, item: { sID: string; eID: string }, plot: any) {\n\t\tif (!key) throw new Error('Key is required for makeScTW')\n\t\tconst colorColName = plot.colorColumns[0].name\n\t\tconst savedTerm = this[`${key}Terms`]?.find(t => t.name == colorColName && t.plot == plot.name)\n\t\tif (!savedTerm) {\n\t\t\tconst ttg = key === 'scct' ? TermTypeGroups.SINGLECELL_CELLTYPE : TermTypeGroups.SINGLECELL_NUMERIC_VALUE\n\t\t\tthrow new Error(`No term found for colorColumn=${colorColName} in .termType2terms.${ttg} for plot ${plot.name}`)\n\t\t}\n\t\tconst term = Object.assign(structuredClone(savedTerm), {\n\t\t\tsample: item\n\t\t})\n\t\tconst id = await digestMessage(`${plot.name}-${item.sID}-${item.eID}`)\n\t\treturn Object.assign({ $id: id }, { term })\n\t}\n}\n", "import type { Sections } from './Sections'\nimport type { Div, Elem } from '../../../types/d3'\nimport type { SCViewer } from '../SC'\nimport type { SingleCellSample } from '#types'\nimport type { GroupByOptions } from '../settings/Settings'\n\n/** Manages the mapping and rendering of the sections based on the groupBy option.\n * sections{} maps the section key (i.e. sampleId, plotName, or none) to the section\n * wrapper, title, subplots div, and the sandboxes in that section.\n *\n * Initializing and destroying the plot components is within SC.ts\n * (i.e. sc.components.plots[plotId]). This ensures plots are responsive to state changes.\n */\nexport class SectionRenderer {\n\tsections: Sections\n\tholder: Div\n\t/** Maps the plotId to either the sampleId, plotName, or none (i.e. key in sections map)\n\t * as a reverse lookup. Used in tandem with sections{} to manage the sandboxes\n\t * within each section. */\n\tplotId2Key: Map<string, string>\n\tgroupBy: (typeof GroupByOptions)[number]\n\n\tconstructor(sectionsDiv: Div, groupBy: (typeof GroupByOptions)[number]) {\n\t\tthis.sections = {}\n\t\tthis.holder = sectionsDiv\n\t\t//Key may be either sampleId, plotName, or none\n\t\tthis.plotId2Key = new Map()\n\t\tthis.groupBy = groupBy\n\t}\n\n\t/** Send the sc with the updated state. May not be necessary long term. If not,\n\t * remove and put in the constructor. */\n\tasync update(sc: SCViewer, subplots: any, groupBy: (typeof GroupByOptions)[number]) {\n\t\tif (groupBy !== this.groupBy) {\n\t\t\tthis.groupBy = groupBy\n\t\t\tthis.regroupSections(sc, subplots)\n\t\t\treturn\n\t\t}\n\t\tconst activeSubplots = new Set(subplots.map(s => s.id))\n\n\t\t/** Reconcile stale sandbox wrappers using section state.\n\t\t * Subplot lifecycle is managed by SubplotManager. */\n\t\tfor (const plotId of Array.from(this.plotId2Key.keys())) {\n\t\t\tif (!activeSubplots.has(plotId)) this.removeSandbox(plotId)\n\t\t}\n\n\t\tfor (const subplot of subplots) {\n\t\t\tconst key = this.getKey(subplot, sc)\n\t\t\tif (!key) continue\n\t\t\tif (!this.sections[key]) this.initSection(key, sc)\n\t\t\tif (!this.sections[key].sandboxes[subplot.id]) {\n\t\t\t\tthis.plotId2Key.set(subplot.id, key)\n\t\t\t\tsc.subplotManager.setSectionKey(subplot.id, key)\n\t\t\t\tawait this.initSandbox(sc, subplot, key)\n\t\t\t}\n\t\t}\n\n\t\t/** Remove sections after iterating through subplots to avoid\n\t\t * deleting sections before they can be re-rendered with the correct plots */\n\t\tfor (const key of Object.keys(this.sections)) {\n\t\t\tif (Object.keys(this.sections[key].sandboxes).length === 0) {\n\t\t\t\tthis.removeSection(key, sc)\n\t\t\t}\n\t\t}\n\t}\n\n\t/** Reparent existing sandboxes into new section containers\n\t * without destroying/recreating plot components. */\n\tprivate regroupSections(sc: SCViewer, subplots: any[]) {\n\t\t// Detach existing sandbox from their parents before clearing\n\t\tconst detached: Map<string, any> = new Map()\n\t\tfor (const [plotId, key] of this.plotId2Key) {\n\t\t\tconst sandboxNode = this.sections[key]?.sandboxes[plotId]\n\t\t\tif (sandboxNode) {\n\t\t\t\t// Remove from current parent without destroying\n\t\t\t\tsandboxNode.remove()\n\t\t\t\tdetached.set(plotId, sandboxNode)\n\t\t\t}\n\t\t}\n\n\t\t// Clear the section wrappers since sandboxes are already detached\n\t\tthis.holder.selectAll('*').remove()\n\t\tthis.sections = {}\n\t\tthis.plotId2Key = new Map()\n\n\t\t// Regroup into new sections, reparenting existing sandbox\n\t\tfor (const subplot of subplots) {\n\t\t\tconst key = this.getKey(subplot, sc)\n\t\t\tif (!key) continue\n\t\t\tif (!this.sections[key]) this.initSection(key, sc)\n\n\t\t\tthis.plotId2Key.set(subplot.id, key)\n\t\t\tsc.subplotManager.setSectionKey(subplot.id, key)\n\t\t\tconst existing = detached.get(subplot.id)\n\t\t\tif (existing) {\n\t\t\t\t// Reparent the existing sandbox into the new section\n\t\t\t\tthis.sections[key].subplots.node()!.prepend(existing.node())\n\t\t\t\tthis.sections[key].sandboxes[subplot.id] = existing\n\t\t\t}\n\t\t}\n\t}\n\n\tgetKey(subplot: any, sc): string | undefined {\n\t\tif (this.groupBy === 'none') return 'none'\n\t\tif (this.groupBy === 'sample') return this.getSampleId(subplot)\n\t\treturn sc.subplotManager.getPlotName(subplot)\n\t}\n\n\t/** Extract sID from a subplot's config.\n\t * Actual subplots store sample as {sID, eID} at top level or on term.term.sample. */\n\tgetSampleId(subplot: any): string | undefined {\n\t\treturn subplot.sample?.sID || subplot.singleCellPlot?.sample?.sID || subplot.term?.term?.sample?.sID\n\t}\n\n\tinitSection(key: string, sc: SCViewer) {\n\t\tconst item = this.findSampleMetadata(key, sc)\n\n\t\tconst titleAttrText =\n\t\t\tthis.groupBy == 'sample' ? 'this sample section' : this.groupBy == 'plot' ? 'this plot section' : 'all plots'\n\t\tconst sectionWrapper = this.holder\n\t\t\t.insert('div', ':first-child')\n\t\t\t.style('padding', '10px')\n\t\t\t.attr('data-testid', `sjpp-sc-section-wrapper-${key}`)\n\n\t\t//delete section btn\n\t\tsectionWrapper\n\t\t\t.append('span')\n\t\t\t.attr('data-testid', `sjpp-sc-section-remove-btn-${key}`)\n\t\t\t.style('margin', '0px 5px')\n\t\t\t.style('cursor', 'pointer')\n\t\t\t.attr('title', `Remove ${titleAttrText}`)\n\t\t\t.html(\n\t\t\t\t`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" fill=\"#000\" class=\"bi bi-x-lg\" viewBox=\"0 0 12 12\">\n <path\n stroke=\"#000\"\n transform=\"scale(0.75)\"\n d=\"M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z\"/>\n </svg>`\n\t\t\t)\n\t\t\t.on('click', () => {\n\t\t\t\tthis.removeSection(key, sc)\n\t\t\t})\n\n\t\tconst titleText = this.makeSectionTitleText(key, item)\n\t\tconst titleWrapper = sectionWrapper.append('span').style('font-weight', 600).style('opacity', 0.7).text(titleText)\n\t\tif (titleText.length) {\n\t\t\tconst arrow = titleWrapper\n\t\t\t\t.append('span')\n\t\t\t\t.style('font-size', '0.8em')\n\t\t\t\t.style('padding-left', '3px')\n\t\t\t\t.attr('title', `Show/hide plots in ${titleAttrText}`)\n\t\t\t\t.text('\u25BC')\n\n\t\t\ttitleWrapper.on('click', () => {\n\t\t\t\tconst isHidden = this.sections[key].subplots.style('display') === 'none'\n\t\t\t\tthis.sections[key].subplots.style('display', isHidden ? 'block' : 'none')\n\t\t\t\tarrow.text(isHidden ? '\u25BC' : '\u25B2')\n\t\t\t})\n\t\t}\n\n\t\tthis.sections[key] = {\n\t\t\tsectionWrapper,\n\t\t\ttitle: titleWrapper,\n\t\t\tsubplots: sectionWrapper.append('div').attr('data-testid', `sjpp-sc-subplots-${key}`),\n\t\t\tsandboxes: {}\n\t\t}\n\t}\n\n\t/** Look up sample metadata from the fetched items list.\n\t * For experiment datasets, matches sID against experiments[].sampleName.\n\t * For non-experiment datasets, matches sID against item.sample. */\n\tfindSampleMetadata(sampleId: string, sc: SCViewer): SingleCellSample | undefined {\n\t\tif (!sc.items) return undefined\n\t\treturn sc.items.find(item => item.sample === sampleId || item.experiments?.some(e => e.sampleName === sampleId))\n\t}\n\n\tmakeSectionTitleText(key: string, item?: SingleCellSample) {\n\t\tif (this.groupBy === 'none') return 'All plots'\n\t\tif (this.groupBy === 'plot') return key\n\t\tconst caseText = item?.sample && item.sample !== key ? `Case: ${item.sample}` : ''\n\t\tconst isMeta = item?.isMetaResult || false\n\t\tconst itemText = `${isMeta ? '' : 'Sample: '}${key}`\n\t\tconst projectProp = item?.case?.project?.project_id || item?.['project id']\n\t\tconst projectText = projectProp ? `Project: ${projectProp}` : ''\n\t\treturn [itemText, caseText, projectText].filter(Boolean).join(' ')\n\t}\n\n\tasync initSandbox(sc: any, subplot: any, key: string) {\n\t\tconst sandboxHolder = this.sections[key].subplots\n\t\t\t.insert('div', ':first-child')\n\t\t\t.attr('data-testid', `sjpp-sc-sandbox-${subplot.id}`) as any as Elem\n\n\t\tconst sandboxDiv = await sc.subplotManager.initSubplotSandbox(sandboxHolder, subplot, {\n\t\t\tsectionKey: key\n\t\t})\n\t\tthis.sections[key].sandboxes[subplot.id] = sandboxDiv\n\t}\n\n\tremoveSection(key: string, sc: SCViewer) {\n\t\tconst subactions: { type: string; id: string; parentId: string }[] = []\n\t\tfor (const plotId of Object.keys(this.sections[key].sandboxes || {})) {\n\t\t\tthis.removeSandbox(plotId, key)\n\t\t\t/** Need to remove plots from the state to prevent main from re-rendering\n\t\t\t * and memory leak from orphaned components after the section is deleted. */\n\t\t\tsubactions.push({\n\t\t\t\ttype: 'plot_delete',\n\t\t\t\tid: plotId,\n\t\t\t\tparentId: sc.id\n\t\t\t})\n\t\t}\n\t\tif (subactions.length > 0) {\n\t\t\tsc.app.dispatch({\n\t\t\t\ttype: 'app_refresh',\n\t\t\t\tsubactions\n\t\t\t})\n\t\t}\n\t\tthis.sections[key].sectionWrapper.remove()\n\t\tdelete this.sections[key]\n\t}\n\n\tremoveSandbox(plotId: string, _key?: string) {\n\t\tconst key = _key || this.plotId2Key.get(plotId)\n\t\tif (!key) return\n\t\tconst section = this.sections[key]\n\t\tconst sandbox = section?.sandboxes?.[plotId]\n\t\tif (sandbox) sandbox.remove()\n\t\tif (section?.sandboxes?.[plotId]) delete section.sandboxes[plotId]\n\t\t//Remove the reference to the plotId in plot2Sample map to avoid memory leak\n\t\tthis.plotId2Key.delete(plotId)\n\t}\n}\n", "import type { SCSample } from '../SCTypes'\n\nexport const GroupByOptions = ['sample', 'plot', 'none'] as const\n\nexport type Settings = {\n\tsc: SCSettings\n\thierCluster: {\n\t\tunit: string\n\t\tyDendrogramHeight: number\n\t\tclusterSamples: boolean\n\t}\n}\n\nexport type SCSettings = {\n\tcolumns: {\n\t\t/** Defined column name for 'sample' column*/\n\t\tsample: string\n\t}\n\t/** Active item chosen by the user */\n\titem: SCSample | undefined\n\tgroupBy: (typeof GroupByOptions)[number]\n}\n", "import type { SCActiveSubplot, SCDom, SCFormattedState, SCTableData } from '../SCTypes'\nimport type { SCInteractions } from '../interactions/SCInteractions'\nimport { SampleTableRenderer } from './SampleTableRenderer'\nimport { PlotButtons } from './PlotButtons'\nimport { SectionRenderer } from './SectionRenderer'\nimport type { SCViewer } from '../SC.ts'\nimport type { SubplotManager } from '../subplots/SubplotManager.ts'\nimport { GroupByOptions, type SCSettings, type Settings } from '../settings/Settings'\nimport { make_radios } from '#dom'\n\n/** Manages the initial rendering of the sample table and the dynamic\n * rendering of the plot buttons and sections based on the selected sample and plots.\n * .update() from sc.main() updates the plot buttons and sections. */\nexport class SCViewRenderer {\n\t//On load, show table\n\t//Eventually maybe an app dispatch and not a flag\n\tstatic inUse: boolean = true\n\n\tsc: SCViewer\n\tdom: SCDom\n\tinteractions: SCInteractions\n\tplotBtns!: PlotButtons\n\tsectionRenderer!: SectionRenderer\n\tsampleTableRenderer?: SampleTableRenderer\n\tgroupsWrapper!: any\n\n\tconstructor(sc: SCViewer) {\n\t\tthis.sc = sc\n\t\tthis.dom = sc.dom\n\t\tthis.interactions = sc.interactions\n\t\tthis.dom.controlsDiv.style('padding', '10px')\n\t}\n\n\trender(settings: SCSettings, state: SCFormattedState) {\n\t\tthis.renderSelectBtn()\n\t\tthis.renderGroupByOptions(settings)\n\t\tthis.plotBtns = new PlotButtons(this.interactions, this.dom.plotsBtnsDiv, state.termdbConfig)\n\t\tthis.sectionRenderer = new SectionRenderer(this.dom.sectionsDiv, settings.groupBy)\n\t\t// this.dom.plotsBtnsDiv.style('display', 'none')\n\t}\n\n\t/** Renders the select btn at the top of the page that\n\t * show/hides the item table and plot buttons */\n\trenderSelectBtn() {\n\t\tconst btn = this.dom.controlsDiv\n\t\t\t.append('button')\n\t\t\t.attr('data-testid', 'sjpp-sc-item-table-select-btn')\n\t\t\t.attr('title', 'Show/hide sample table and plot buttons')\n\t\t\t.style('border-radius', '20px')\n\t\t\t.style('padding', '5px 10px')\n\t\t\t.style('background-color', 'transparent')\n\t\t\t//Will need to use ds specific keys/logic here\n\t\t\t.text('Select sample and plots')\n\n\t\tconst arrowSpan = btn.append('span').style('font-size', '0.8em').style('padding-left', '3px').text('\u25BC')\n\n\t\tbtn.on('click', () => {\n\t\t\tSCViewRenderer.inUse = !SCViewRenderer.inUse\n\t\t\tarrowSpan.text(SCViewRenderer.inUse ? '\u25BC' : '\u25B2')\n\t\t\tthis.dom.tableDiv.style('display', SCViewRenderer.inUse ? 'block' : 'none')\n\t\t\tthis.dom.plotsBtnsDiv.style('display', SCViewRenderer.inUse ? 'block' : 'none')\n\t\t})\n\t}\n\n\trenderGroupByOptions(settings: SCSettings) {\n\t\tthis.groupsWrapper = this.dom.controlsDiv.append('div').style('display', 'none')\n\t\tthis.groupsWrapper\n\t\t\t.append('span')\n\t\t\t.style('padding', '3px 0px 3px 20px')\n\t\t\t.style('opacity', 0.7)\n\t\t\t.text('Group by:')\n\t\tconst optionsDiv = this.groupsWrapper.append('span').style('display', 'inline-block')\n\t\tconst options = GroupByOptions.map(option => {\n\t\t\treturn {\n\t\t\t\tlabel: `${option.charAt(0).toUpperCase() + option.slice(1)}`,\n\t\t\t\tvalue: option,\n\t\t\t\tchecked: settings.groupBy === option\n\t\t\t}\n\t\t})\n\t\tmake_radios({\n\t\t\tholder: optionsDiv,\n\t\t\tstyles: { display: 'inline-block' },\n\t\t\toptions,\n\t\t\tcallback: async value => {\n\t\t\t\tawait this.sc.app.dispatch({\n\t\t\t\t\ttype: 'plot_edit',\n\t\t\t\t\tid: this.sc.id,\n\t\t\t\t\tconfig: { settings: { sc: { ...settings, groupBy: value } } }\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n\n\tasync update(\n\t\tsettings: Settings,\n\t\tdata: any,\n\t\tactiveSubplots: SCActiveSubplot[],\n\t\ttableData: SCTableData,\n\t\tsubplotManager: SubplotManager\n\t) {\n\t\tif (!this.sampleTableRenderer) {\n\t\t\tthis.sampleTableRenderer = new SampleTableRenderer(this.dom, this.interactions, tableData)\n\t\t} else {\n\t\t\tthis.sampleTableRenderer.updateTable(tableData)\n\t\t}\n\t\tthis.plotBtns.update(settings, data)\n\t\t//Also handles when settings.sc.groupBy == 'none' to show all plots in one section\n\t\tawait this.sectionRenderer.update(\n\t\t\tthis.sc,\n\t\t\tactiveSubplots.map(s => s.subplot),\n\t\t\tsettings.sc.groupBy\n\t\t)\n\t\tconst activeSandboxes = subplotManager.getSampleSandboxes()\n\t\t//Hide grouping option until more than one sample with potentially more than one plot is available\n\t\tthis.groupsWrapper.style('display', activeSandboxes.size > 1 ? 'inline-block' : 'none')\n\t\tthis.sampleTableRenderer.updatePlotBtns(activeSandboxes)\n\t}\n}\n", "import { getGEunit } from '#tw/geneExpression'\nimport type { Settings } from './Settings'\n\n/** Define all subplot settings here */\nexport function getDefaultSCAppSettings(overrides = {}, app): Settings {\n\tconst defaults: Settings = {\n\t\tsc: {\n\t\t\tcolumns: {\n\t\t\t\tsample: 'Sample'\n\t\t\t},\n\t\t\titem: undefined,\n\t\t\tgroupBy: 'sample'\n\t\t},\n\t\thierCluster: {\n\t\t\tunit: getGEunit(app.vocabApi),\n\t\t\tyDendrogramHeight: 0,\n\t\t\tclusterSamples: false\n\t\t}\n\t}\n\treturn Object.assign(defaults, overrides)\n}\n", "import { importPlot } from '#plots/importPlot.js'\nimport { getCompInit, multiInit, type RxComponent, type ComponentApi } from '#rx'\nimport { filterRxCompInit } from '#filter'\nimport type { MassAppApi } from '#mass/types/mass'\n\n/** Wrapper for subplot sanbdoxes created dynamically.\n * Builds out the expected dom structure and extra functionality (e.g. plot filter)\n *\n * Note: #mass/app.ts expects parent plots to manage plot init for all subplots,\n * which means plotInit() and summaryInit() are never called for subplots.\n * The functionality here is sligthly different from MassPlot && plotInit()\n * in #mass/plot.js to support dynamic creation and destory within the parent */\n\nclass DynamicSubplot implements RxComponent {\n\tstatic type = 'dynamicSubplot'\n\n\ttype: string\n\topts!: { [index: string]: any }\n\tapp: MassAppApi\n\tid!: string\n\tstate: any\n\tcomponents!: { [name: string]: ComponentApi }\n\tdom: { [index: string]: any } = {}\n\tparentId?: string\n\n\tconstructor(opts) {\n\t\tthis.type = DynamicSubplot.type\n\t\tthis.opts = opts\n\t\tthis.app = opts.app\n\t\tthis.parentId = opts?.parentId\n\t}\n\n\tasync init() {\n\t\tthis.opts.holder.app_div.attr('data-testid', 'sjpp-sc-subplot-sandbox-' + this.opts.chartType)\n\n\t\t/** Summary expects the entire sandbox. No need to create dom. */\n\t\tif (this.opts.chartType == 'summary') return\n\n\t\tthis.dom = {\n\t\t\tholder: this.opts.holder,\n\t\t\tviz: this.opts.holder.body.append('div').style('position', 'relative'),\n\t\t\tpaneTitleDiv: this.opts.holder.header.append('div').style('position', 'relative'),\n\t\t\tfilterDiv: this.opts.holder.header.append('div').style('position', 'relative'),\n\t\t\terrorDiv: this.opts.holder.body.append('div').style('position', 'relative')\n\t\t}\n\t}\n\n\tgetState(appState) {\n\t\tconst config = appState.plots.find(p => p.id === this.id)\n\t\tif (!config) {\n\t\t\tthrow `No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`\n\t\t}\n\t\treturn {\n\t\t\tconfig\n\t\t}\n\t}\n\n\tasync main() {\n\t\tif (!this.components) await this.setComponents()\n\t}\n\n\tasync setComponents() {\n\t\tconst _ = await importPlot(this.opts.chartType)\n\t\tconst chartOpts: { [index: string]: any } = {\n\t\t\tapp: this.app,\n\t\t\tid: this.id,\n\t\t\tparentId: this.parentId\n\t\t}\n\t\tif (this.opts.chartType == 'summary') {\n\t\t\tchartOpts.holder = this.opts.holder\n\t\t\tchartOpts.hidePlotFilter = this.opts.isMetaResult\n\t\t} else {\n\t\t\tchartOpts.holder = this.dom.viz\n\t\t\tchartOpts.header = this.dom.paneTitleDiv\n\t\t}\n\t\tconst promises: { [index: string]: any } = {\n\t\t\tchart: _.componentInit(chartOpts)\n\t\t}\n\n\t\t/** Summary inits its own plot filter */\n\t\tif (!this.state.config?.hidePlotFilter && this.opts.isMetaResult && this.opts.chartType != 'summary') {\n\t\t\tpromises.filter = filterRxCompInit({\n\t\t\t\tapp: this.app,\n\t\t\t\tvocabApi: this.app.vocabApi,\n\t\t\t\tparentId: this.id,\n\t\t\t\tholder: this.dom.filterDiv,\n\t\t\t\thideLabel: true,\n\t\t\t\temptyLabel: '+Add new filter',\n\t\t\t\tcallback: filter => {\n\t\t\t\t\tthis.app.dispatch({\n\t\t\t\t\t\tid: this.id,\n\t\t\t\t\t\ttype: 'plot_edit',\n\t\t\t\t\t\tconfig: { filter }\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tthis.components = await multiInit(promises)\n\t}\n\n\tdestroy() {\n\t\tconst appDiv = this.dom?.holder?.app_div\n\t\tif (appDiv) {\n\t\t\tappDiv.selectAll('*').remove()\n\t\t\tappDiv.remove()\n\t\t}\n\t\tfor (const key in this.dom) {\n\t\t\tdelete this.dom[key]\n\t\t}\n\t}\n}\n\nexport const dynamicSubplotInit = getCompInit(DynamicSubplot)\n", "import type { SCViewer } from '../SC'\nimport { newSandboxDiv } from '#dom'\nimport { dynamicSubplotInit } from './DynamicSubplot'\nimport type { SCActiveSubplot, SCSampleSandbox } from '../SCTypes'\n\n/** Instead of managing multiple maps of the subplots (e.g within the \n * SampleTableRenderer, SectionRenderer, etc.), use this manager to keep track\n * of all the subplots, their dom, sections, etc. \n) */\n\nexport class SubplotManager {\n\tsc: SCViewer\n\tscCompPlots: { [key: string]: any }\n\t/** Maps plotId to active subplot information */\n\trecords: Map<string, SCActiveSubplot>\n\n\tconstructor(sc: SCViewer) {\n\t\tthis.sc = sc\n\t\tthis.scCompPlots = this.sc.components.plots\n\t\tthis.records = new Map()\n\t}\n\n\tmap(subplots: any[]): SCActiveSubplot[] {\n\t\tconst subplotIds = new Set(subplots.map(s => s.id))\n\t\tfor (const compPlotId of Object.keys(this.scCompPlots)) {\n\t\t\tif (!subplotIds.has(compPlotId)) {\n\t\t\t\tthis.removeSubplot(compPlotId)\n\t\t\t}\n\t\t}\n\n\t\tfor (const recordId of Array.from(this.records.keys())) {\n\t\t\tif (!subplotIds.has(recordId)) this.records.delete(recordId)\n\t\t}\n\n\t\tfor (const subplot of subplots) {\n\t\t\tthis.updateSubplotRecord(subplot)\n\t\t}\n\n\t\treturn this.getActiveSubplotsFlat()\n\t}\n\n\tupdateSubplotRecord(subplot) {\n\t\tconst existing = this.records.get(subplot.id)\n\t\tconst sampleId = this.getSampleId(subplot)\n\t\tconst isMeta = (sampleId && this.sc.viewModel.metaResultIds.has(sampleId)) || false\n\t\tthis.records.set(subplot.id, {\n\t\t\tplotId: subplot.id,\n\t\t\tsampleId,\n\t\t\tplotName: this.getPlotName(subplot),\n\t\t\tsectionKey: existing?.sectionKey,\n\t\t\tsubplot,\n\t\t\tsandboxDiv: existing?.sandboxDiv,\n\t\t\tisMetaResult: isMeta\n\t\t})\n\t}\n\n\tremoveSubplot(subplotId) {\n\t\tif (this.scCompPlots[subplotId]) this.scCompPlots[subplotId].destroy()\n\t\tdelete this.scCompPlots[subplotId]\n\t\tthis.records.delete(subplotId)\n\t}\n\n\tasync initSubplotSandbox(sandboxHolder, subplot, initOpts: { sectionKey?: string; onClose?: () => void } = {}) {\n\t\tconst sandbox = newSandboxDiv(sandboxHolder, {\n\t\t\tclose: () => {\n\t\t\t\t/** destroy this dom and component before app.dispatch.\n\t\t\t\t * Avoids the component attempting to update after\n\t\t\t\t * the plot is deleted from the state. */\n\t\t\t\tthis.removeSubplot(subplot.id)\n\t\t\t\tthis.sc.app.dispatch({\n\t\t\t\t\ttype: 'plot_delete',\n\t\t\t\t\tid: subplot.id,\n\t\t\t\t\tparentId: this.sc.id\n\t\t\t\t})\n\t\t\t\tif (initOpts.onClose) initOpts.onClose()\n\t\t\t},\n\t\t\tplotId: subplot.id\n\t\t})\n\n\t\tconst subplotOpts = Object.assign({}, subplot, {\n\t\t\tapp: this.sc.app,\n\t\t\tparentId: this.sc.id,\n\t\t\tid: subplot.id,\n\t\t\tholder: sandbox,\n\t\t\tisMetaResult: this.records.get(subplot.id)?.isMetaResult || false\n\t\t})\n\n\t\tthis.scCompPlots[subplot.id] = await dynamicSubplotInit(subplotOpts)\n\t\tthis.setSandbox(subplot.id, sandbox.app_div)\n\t\tif (initOpts.sectionKey) this.setSectionKey(subplot.id, initOpts.sectionKey)\n\t\treturn sandbox.app_div\n\t}\n\n\tsetSandbox(plotId: string, sandboxDiv: any) {\n\t\tconst record = this.records.get(plotId)\n\t\tif (!record) return\n\t\trecord.sandboxDiv = sandboxDiv\n\t\tthis.records.set(plotId, record)\n\t}\n\n\tsetSectionKey(plotId: string, sectionKey?: string) {\n\t\tconst record = this.records.get(plotId)\n\t\tif (!record) return\n\t\trecord.sectionKey = sectionKey\n\t\tthis.records.set(plotId, record)\n\t}\n\n\tgetActiveSubplotsFlat(): SCActiveSubplot[] {\n\t\treturn Array.from(this.records.values())\n\t}\n\n\tgetSampleId(subplot: any): string | undefined {\n\t\treturn subplot.sample?.sID || subplot.singleCellPlot?.sample?.sID || subplot.term?.term?.sample?.sID\n\t}\n\n\tgetPlotName(subplot: any): string {\n\t\t/** Hardcoding logic for some transient and parent plots for now. May consider\n\t\t * adding to the config if this becomes more complex. Must weight against\n\t\t * adding unnecessary complexity to the config for edge cases though.*/\n\t\tconst nameOverrides = new Map([\n\t\t\t['GeneExpInput', 'Gene expression'],\n\t\t\t['imagePlot', subplot?.imgDir?.label || 'Image'],\n\t\t\t['dictionary', 'Summary'],\n\t\t\t['summary', 'Summary']\n\t\t])\n\t\tlet plotName = subplot?.plotName || nameOverrides.get(subplot?.chartType) || subplot?.singleCellPlot?.name\n\t\tif (!plotName) {\n\t\t\tif (subplot?.term?.term?.plot) plotName = subplot.term.term.plot\n\t\t\telse plotName = subplot.chartType || 'Plot'\n\t\t}\n\t\treturn plotName\n\t}\n\n\tgetSampleSandboxes(activeSubplots: SCActiveSubplot[] = this.getActiveSubplotsFlat()): Map<string, SCSampleSandbox[]> {\n\t\tconst sandboxes = new Map<string, SCSampleSandbox[]>()\n\t\tfor (const active of activeSubplots) {\n\t\t\tif (!active.sampleId || !active.sandboxDiv) continue\n\t\t\tif (!sandboxes.has(active.sampleId)) sandboxes.set(active.sampleId, [])\n\t\t\tsandboxes.get(active.sampleId)!.push({ plotId: active.plotId, div: active.sandboxDiv, plotName: active.plotName })\n\t\t}\n\t\treturn sandboxes\n\t}\n}\n", "import type { BasePlotConfig, MassAppApi, MassState } from '#mass/types/mass'\nimport type { SCConfigOpts, SCDom, SCFormattedState, SCViewerOpts, SampleColumn } from './SCTypes'\nimport type { SingleCellSample } from '#types'\nimport { PlotBase } from '../PlotBase.ts'\nimport { getCompInit, copyMerge, type RxComponent, type ComponentApi } from '#rx'\nimport { SCModel } from './model/SCModel'\nimport { SCViewModel } from './viewModel/SCViewModel'\nimport { SCInteractions } from './interactions/SCInteractions'\nimport { SCViewRenderer } from './view/SCViewRenderer'\nimport { getDefaultSCAppSettings } from './settings/defaults.ts'\nimport { getCombinedTermFilter } from '#filter'\nimport { SubplotManager } from './subplots/SubplotManager.ts'\nimport { formatHeaderText } from '#dom'\n\n/** Viewer for single cell data. Renders a sample table and associated subplots for each sample.*/\nexport class SCViewer extends PlotBase implements RxComponent {\n\tstatic type = 'sc'\n\n\ttype: string\n\tcomponents: { plots: { [key: string]: any } }\n\tdom: SCDom\n\tinteractions!: SCInteractions\n\titems!: SingleCellSample[]\n\titemColumns!: SampleColumn[]\n\tmodel!: SCModel\n\tsubplotManager!: SubplotManager\n\tview!: SCViewRenderer\n\tviewModel!: SCViewModel\n\n\tconstructor(opts: SCViewerOpts, api: ComponentApi) {\n\t\tsuper(opts, api)\n\t\tthis.type = SCViewer.type\n\t\tthis.components = {\n\t\t\tplots: {}\n\t\t}\n\t\tconst div = opts.holder\n\t\t\t.classed('sjpp-sc-main', true)\n\t\t\t.append('div')\n\t\t\t.style('padding', '5px')\n\t\t\t.style('display', 'inline-block')\n\t\t\t.style('vertical-align', 'top')\n\n\t\tthis.dom = {\n\t\t\tdiv,\n\t\t\tloading: opts.holder\n\t\t\t\t.append('div')\n\t\t\t\t.attr('class', 'sjpp-sc-main-loading')\n\t\t\t\t.attr('data-testid', 'sjpp-sc-main-loading')\n\t\t\t\t.style('position', 'absolute')\n\t\t\t\t.style('top', '0')\n\t\t\t\t.style('left', '0')\n\t\t\t\t.style('width', '100%')\n\t\t\t\t.style('height', '100%')\n\t\t\t\t.style('background-color', 'rgba(255, 255, 255, 0.95)')\n\t\t\t\t.style('text-align', 'center'),\n\t\t\tcontrolsDiv: div.append('div').attr('id', 'sjpp-sc-controls-btn'),\n\t\t\ttableDiv: div.append('div').attr('id', 'sjpp-sc-item-table'),\n\t\t\tplotsBtnsDiv: div.append('div').attr('id', 'sjpp-sc-plot-buttons').style('display', 'none'),\n\t\t\tsectionsDiv: div.append('div').attr('id', 'sjpp-sc-sections')\n\t\t}\n\n\t\t//opts.header is the sandbox header\n\t\tif (opts.header) formatHeaderText({\n\t\t\theader: opts.header,\n\t\t\tchartType: 'SINGLE CELL'\n\t\t})\n\t}\n\n\tgetState(appState: any): SCFormattedState {\n\t\tconst config = appState.plots.find((p: BasePlotConfig) => p.id === this.id)\n\t\tif (!config) {\n\t\t\tthrow new Error(\n\t\t\t\t`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`\n\t\t\t)\n\t\t}\n\t\tconst termfilter = getCombinedTermFilter(appState, config.filter)\n\n\t\treturn {\n\t\t\tconfig,\n\t\t\tsubplots: appState.plots.filter(p => p.parentId === this.id),\n\t\t\ttermfilter,\n\t\t\ttermdbConfig: appState.termdbConfig,\n\t\t\tvocab: appState.vocab\n\t\t}\n\t}\n\n\tasync init(appState: MassState) {\n\t\tconst state = this.getState(appState) as SCFormattedState\n\t\t/** ds defines defaults in termdbConfig.queries.singleCell\n\t\t * see Dataset type when resuming development */\n\t\tconst dsScSamples = state.termdbConfig.queries?.singleCell?.samples\n\t\tthis.model = new SCModel(this)\n\t\ttry {\n\t\t\tthis.itemColumns = await this.model.getColumnLabels(dsScSamples)\n\t\t} catch (e: any) {\n\t\t\tif (e instanceof Error) console.error(`${e.message || e} [SC init()]`)\n\t\t\telse if (e.stack) console.log(e.stack)\n\t\t\tthrow new Error(e.message || e)\n\t\t}\n\t\tthis.viewModel = new SCViewModel(this.app, this.itemColumns)\n\t\tthis.interactions = new SCInteractions(this)\n\t\tthis.subplotManager = new SubplotManager(this)\n\t\tthis.view = new SCViewRenderer(this)\n\t\t/** Only renders the controls above the table */\n\t\tthis.view.render(state.config.settings.sc, state)\n\t}\n\n\tasync main() {\n\t\tif (!this.model) throw new Error(`Model not initialized`)\n\t\tif (!this.viewModel) throw new Error(`ViewModel not initialized`)\n\t\tif (!this.view) throw new Error(`View not initialized`)\n\t\tif (!this.interactions) throw new Error(`Interactions not initialized`)\n\n\t\tconst state = structuredClone(this.state) as SCFormattedState\n\t\tconst config = state.config\n\n\t\tsuper.toggleLoadingDiv()\n\n\t\tlet data: any\n\t\ttry {\n\t\t\tconst allSampleData = await this.model.getAllSampleData(state)\n\t\t\tif (!allSampleData || allSampleData.error) {\n\t\t\t\tsuper.toggleLoadingDiv('none')\n\t\t\t\tsuper.printError(allSampleData?.error || 'No samples found for this dataset')\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.items = allSampleData.samples\n\n\t\t\tthis.viewModel.processData(config, allSampleData.samples)\n\n\t\t\tif (config.settings?.sc?.item) {\n\t\t\t\tconst sampleData = await this.model.getSampleData()\n\t\t\t\tif (!sampleData || sampleData.error) {\n\t\t\t\t\tsuper.toggleLoadingDiv('none')\n\t\t\t\t\tsuper.printError(sampleData?.error || 'No data found for this sample')\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconst hasSpatial = await this.model.hasSpatialImage(config.settings.sc.item.sID)\n\t\t\t\tdata = this.viewModel.formatPlotsData(sampleData, hasSpatial)\n\t\t\t}\n\t\t} catch (e: any) {\n\t\t\tif (e instanceof Error) console.error(`${e.message || e} [SC main()]`)\n\t\t\telse if (e.stack) console.log(e.stack)\n\t\t\tsuper.toggleLoadingDiv('none')\n\t\t\tsuper.printError(e.message || e)\n\t\t\treturn\n\t\t}\n\t\tconst activeSubplots = this.subplotManager.map(state.subplots)\n\t\tawait this.view.update(config.settings, data, activeSubplots, this.viewModel.tableData, this.subplotManager)\n\t\tsuper.toggleLoadingDiv('none')\n\t}\n}\n\nexport const SCInit = getCompInit(SCViewer)\nexport const componentInit = SCInit\n\nexport function getPlotConfig(opts: SCConfigOpts, app: MassAppApi) {\n\tconst config = {\n\t\tchartType: 'sc',\n\t\tsettings: getDefaultSCAppSettings(opts.overrides, app)\n\t} as any\n\n\treturn copyMerge(config, opts)\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }