@sjcrh/proteinpaint-client 2.219.1 → 2.221.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 (983) hide show
  1. package/dist/2dmaf-7YU3SNKL.js +1362 -0
  2. package/dist/AggMatrixInput-73CDR5FS.js +402 -0
  3. package/dist/AggregateMatrix-NNULVFBM.js +37 -0
  4. package/dist/AppHeader-EZDDLLXU.js +826 -0
  5. package/dist/BoxPlot-463E7CRY.js +1229 -0
  6. package/dist/CorrelationVolcano-LHIIMBPP.js +613 -0
  7. package/dist/Cuminc-UL2TCIKV.js +1217 -0
  8. package/dist/DE-VRFSKFDW.js +85 -0
  9. package/dist/DEinput-FZTQRWVC.js +479 -0
  10. package/dist/DM-PO7CQZNT.js +86 -0
  11. package/dist/DifferentialAnalysis-WK6HE3YH.js +236 -0
  12. package/dist/Disco-YBNQJQFG.js +3384 -0
  13. package/dist/Disco.UI-HC5XYBFV.js +239 -0
  14. package/dist/DmrPlot-7VJ5C66D.js +361 -0
  15. package/dist/GB-VPFQRDRO.js +1388 -0
  16. package/dist/GSEA-ZEJB3QZQ.js +870 -0
  17. package/dist/GeneExpInput-SBDDIY6G.js +38 -0
  18. package/dist/Geomap-23AHGP2V.js +80 -0
  19. package/dist/HicApp-7AQQE4CM.js +2240 -0
  20. package/dist/IDCViewer-NO5Q6VOB.js +10808 -0
  21. package/dist/NumBinaryEditor-DSRP4OOU.js +274 -0
  22. package/dist/NumBinaryEditor.unit.spec-TT666YL4.js +308 -0
  23. package/dist/NumContEditor-6CURFOCH.js +100 -0
  24. package/dist/NumContEditor.unit.spec-MNVCFCMP.js +160 -0
  25. package/dist/NumCustomBinEditor-SQRR5EFL.js +29 -0
  26. package/dist/NumCustomBinEditor.unit.spec-F7BZWGGT.js +393 -0
  27. package/dist/NumDiscreteEditor-U7Z2QNYP.js +165 -0
  28. package/dist/NumDiscreteEditor.unit.spec-EIEBUZCX.js +229 -0
  29. package/dist/NumRegularBinEditor-CVZSWN6Y.js +29 -0
  30. package/dist/NumRegularBinEditor.unit.spec-ZMAJOIHL.js +274 -0
  31. package/dist/NumSplineEditor-U43D5NBJ.js +205 -0
  32. package/dist/NumSplineEditor.unit.spec-C52AADTS.js +220 -0
  33. package/dist/NumericDensity-PUKDZOVI.js +29 -0
  34. package/dist/NumericDensity.unit.spec-2347S76D.js +414 -0
  35. package/dist/NumericHandler-3RT32PTR.js +30 -0
  36. package/dist/NumericHandler.unit.spec-4PADL4KZ.js +225 -0
  37. package/dist/ProteomeInput-NFV4FW4U.js +610 -0
  38. package/dist/Regression-N7M7N6G4.js +1412 -0
  39. package/dist/RunChart2-UPQ7C6QE.js +744 -0
  40. package/dist/SC-KBW2NHUV.js +1290 -0
  41. package/dist/Violin-GWCOP3ZF.js +1092 -0
  42. package/dist/Volcano-X3HT32GQ.js +2661 -0
  43. package/dist/Volcano-X3HT32GQ.js.map +7 -0
  44. package/dist/Wsi-NXAEOYIS.js +636 -0
  45. package/dist/aboutSunburst-5EKXZV2A.js +86 -0
  46. package/dist/aboutSunburst-5EKXZV2A.js.map +7 -0
  47. package/dist/adSandbox-RPEWEEW7.js +29 -0
  48. package/dist/animatedBubbleChart-ILDMZRBX.js +542 -0
  49. package/dist/app-LOUC4J47.js +28 -0
  50. package/dist/app-MRKXZ6AZ.js +38 -0
  51. package/dist/app.js +15 -15
  52. package/dist/bam-SQWPHCZZ.js +872 -0
  53. package/dist/bam-SQWPHCZZ.js.map +7 -0
  54. package/dist/barchart-CJR37234.js +38 -0
  55. package/dist/barchart2-QQYLTHWR.js +305 -0
  56. package/dist/block-GLF6QNKY.js +6203 -0
  57. package/dist/block-GLF6QNKY.js.map +7 -0
  58. package/dist/block.init-YJQTJIDO.js +29 -0
  59. package/dist/block.mds.expressionrank-GBMEI5KQ.js +350 -0
  60. package/dist/block.mds.geneboxplot-XWE3E5IW.js +819 -0
  61. package/dist/block.mds.junction-QLEHFVPE.js +1534 -0
  62. package/dist/block.mds.svcnv-53DTOPBC.js +6413 -0
  63. package/dist/block.svg-57T37ABS.js +155 -0
  64. package/dist/block.tk.aicheck-6DXJTS3H.js +274 -0
  65. package/dist/block.tk.bam-CJFFQDNX.js +1906 -0
  66. package/dist/block.tk.bam-CJFFQDNX.js.map +7 -0
  67. package/dist/block.tk.bigwig.ui-OYIVXE2L.js +202 -0
  68. package/dist/block.tk.hicstraw-UKTGEBWT.js +814 -0
  69. package/dist/block.tk.junction-ZU5KPFQ3.js +2353 -0
  70. package/dist/block.tk.junction.textmatrixui-P4WXTAZR.js +190 -0
  71. package/dist/block.tk.ld-3PQ4O2AE.js +90 -0
  72. package/dist/block.tk.menu-LLITB6UA.js +1050 -0
  73. package/dist/block.tk.pgv-Y3FBXUO3.js +934 -0
  74. package/dist/brainImaging-4B3WXLNP.js +550 -0
  75. package/dist/brainRegions-7VLONUWN.js +213 -0
  76. package/dist/bubbleHeatmap-DI6GJRR6.js +374 -0
  77. package/dist/cellTypeBubbleHeatmap-HJY53DB2.js +274 -0
  78. package/dist/chunk-226MNBZ2.js +240 -0
  79. package/dist/chunk-2CDFU4MQ.js +536 -0
  80. package/dist/chunk-2CDFU4MQ.js.map +7 -0
  81. package/dist/chunk-2CNFGVHU.js +257 -0
  82. package/dist/chunk-2MC3RNKA.js +2685 -0
  83. package/dist/chunk-2OMX5AYB.js +195 -0
  84. package/dist/chunk-2SL4QWUS.js +50 -0
  85. package/dist/chunk-3KGBC5MK.js +692 -0
  86. package/dist/chunk-3PCRAPUV.js +56 -0
  87. package/dist/chunk-4DBOMSKP.js +102 -0
  88. package/dist/chunk-4TJO2DGU.js +2297 -0
  89. package/dist/chunk-4TJO2DGU.js.map +7 -0
  90. package/dist/chunk-57BS6KNI.js +466 -0
  91. package/dist/chunk-5AXS5G4A.js +2334 -0
  92. package/dist/chunk-5DI4UNH5.js +562 -0
  93. package/dist/chunk-5HJG6ECV.js +237 -0
  94. package/dist/chunk-5ZYANHGX.js +550 -0
  95. package/dist/chunk-6T4MN7LV.js +397 -0
  96. package/dist/chunk-75MRUW2K.js +103 -0
  97. package/dist/chunk-7J3W3KCN.js +255 -0
  98. package/dist/chunk-7SFK32JP.js +398 -0
  99. package/dist/chunk-7SFK32JP.js.map +7 -0
  100. package/dist/chunk-AIZYAKIE.js +182 -0
  101. package/dist/chunk-AJNFI6GA.js +2008 -0
  102. package/dist/chunk-BJAWDZBL.js +2799 -0
  103. package/dist/chunk-C6PVZVIH.js +379 -0
  104. package/dist/chunk-C77X5ZUV.js +176 -0
  105. package/dist/chunk-C7KUMZQM.js +59 -0
  106. package/dist/chunk-C7ROKWV2.js +140 -0
  107. package/dist/chunk-CAH6LJ5Z.js +31 -0
  108. package/dist/chunk-CUCP2GMT.js +102 -0
  109. package/dist/chunk-DTGAMBRJ.js +134 -0
  110. package/dist/chunk-DXT7GDHY.js +55 -0
  111. package/dist/chunk-ENPMWVWG.js +5214 -0
  112. package/dist/chunk-EYKJQJ7R.js +382 -0
  113. package/dist/chunk-FE5TCBIT.js +30 -0
  114. package/dist/chunk-FJ2JV2VK.js +217 -0
  115. package/dist/chunk-FPMJJBLV.js +4389 -0
  116. package/dist/chunk-FPMJJBLV.js.map +7 -0
  117. package/dist/chunk-FZYVPRVQ.js +38 -0
  118. package/dist/chunk-GBKQHVKJ.js +274 -0
  119. package/dist/chunk-GUW7VTUL.js +281 -0
  120. package/dist/chunk-H7F6DMJA.js +70 -0
  121. package/dist/chunk-HH3NUAR2.js +96 -0
  122. package/dist/chunk-HRTPGNOG.js +159 -0
  123. package/dist/chunk-IFPRYTS7.js +848 -0
  124. package/dist/chunk-IJSFSUI4.js +302 -0
  125. package/dist/chunk-IRQKX6DL.js +263 -0
  126. package/dist/chunk-JHLF2ZC2.js +472 -0
  127. package/dist/chunk-JNZL7HKB.js +1219 -0
  128. package/dist/chunk-K2ARLT2A.js +26 -0
  129. package/dist/chunk-K3G56J5R.js +299 -0
  130. package/dist/chunk-KKUCG2QE.js +516 -0
  131. package/dist/chunk-KPXCXBNU.js +626 -0
  132. package/dist/chunk-LF5WBI27.js +418 -0
  133. package/dist/chunk-LF5WBI27.js.map +7 -0
  134. package/dist/chunk-MANAUI7R.js +54 -0
  135. package/dist/chunk-MEUSRAOE.js +170 -0
  136. package/dist/chunk-MHWYRNGA.js +348 -0
  137. package/dist/chunk-MSTYU3QO.js +14 -0
  138. package/dist/chunk-MWARRQT4.js +141 -0
  139. package/dist/chunk-MXKYPTZ7.js +203 -0
  140. package/dist/chunk-NX5IB4IY.js +37 -0
  141. package/dist/chunk-OZUF7O2S.js +133 -0
  142. package/dist/chunk-PRTLCJYF.js +2941 -0
  143. package/dist/chunk-PRTLCJYF.js.map +7 -0
  144. package/dist/chunk-PWYMHUXY.js +116 -0
  145. package/dist/chunk-PWYMHUXY.js.map +7 -0
  146. package/dist/chunk-QNCE6EOK.js +82 -0
  147. package/dist/chunk-RIHO7ZD5.js +119 -0
  148. package/dist/chunk-RV335DF2.js +266 -0
  149. package/dist/chunk-SFPZUBPM.js +2102 -0
  150. package/dist/chunk-SFPZUBPM.js.map +7 -0
  151. package/dist/chunk-THAUD62Q.js +1253 -0
  152. package/dist/chunk-VBTBUXXX.js +6375 -0
  153. package/dist/chunk-VHWJK2MP.js +56 -0
  154. package/dist/chunk-VLIOMJDR.js +276 -0
  155. package/dist/chunk-VMK4RHV5.js +54 -0
  156. package/dist/chunk-WD7FZ5EE.js +26536 -0
  157. package/dist/chunk-WD7FZ5EE.js.map +7 -0
  158. package/dist/chunk-WJLRU5OF.js +5786 -0
  159. package/dist/chunk-WJLRU5OF.js.map +7 -0
  160. package/dist/chunk-WKT7RF3C.js +468 -0
  161. package/dist/chunk-WXSMUSU7.js +184 -0
  162. package/dist/chunk-WXSX5OQJ.js +296 -0
  163. package/dist/chunk-WY3IORKG.js +194 -0
  164. package/dist/chunk-WYSOOKFJ.js +480 -0
  165. package/dist/chunk-XBBFFOLS.js +123 -0
  166. package/dist/chunk-XSRQGX5H.js +340 -0
  167. package/dist/chunk-YLL6CTBL.js +54 -0
  168. package/dist/chunk-YPBY37KD.js +1339 -0
  169. package/dist/chunk-YUNJBIK4.js +243 -0
  170. package/dist/chunk-Z5ECCUNG.js +444 -0
  171. package/dist/chunk-ZAC34BZQ.js +35 -0
  172. package/dist/chunk-ZAC34BZQ.js.map +7 -0
  173. package/dist/cohort-5WL6UJOS.js +66 -0
  174. package/dist/cohortSunburst-R3Z5KJQL.js +402 -0
  175. package/dist/condition-2IILUMVB.js +323 -0
  176. package/dist/controls-G3JITZF5.js +30 -0
  177. package/dist/controls.config-BO7KPPET.js +30 -0
  178. package/dist/correlation-CZILLVEM.js +91 -0
  179. package/dist/customdata.inputui-BXFQAMTR.js +280 -0
  180. package/dist/dataDownload-QTWR4IW7.js +326 -0
  181. package/dist/dataDownload-QTWR4IW7.js.map +7 -0
  182. package/dist/databrowser.ui-V2NJQF3U.js +421 -0
  183. package/dist/dictionary-OVAQX6R3.js +109 -0
  184. package/dist/dnaMethylation-DHPFRXB2.js +29 -0
  185. package/dist/dnaMethylation.integration.spec-PJLIRGN5.js +194 -0
  186. package/dist/dofetch-KBTN6OW4.js +49 -0
  187. package/dist/e2pca-O7SNMJGB.js +340 -0
  188. package/dist/ep-NIVLKG4S.js +1247 -0
  189. package/dist/expclust.gdc.spec-LVCD6C43.js +298 -0
  190. package/dist/facet-LB4SCXE4.js +556 -0
  191. package/dist/gb-3IJ4NCPO.js +77 -0
  192. package/dist/geneExpClustering-SIAC7CMA.js +240 -0
  193. package/dist/geneExpression-KPUOZ4PT.js +309 -0
  194. package/dist/geneExpression-P2TTZXN2.js +29 -0
  195. package/dist/geneExpression.unit.spec-Q5D6XHUF.js +151 -0
  196. package/dist/geneORA-PKUIJKTL.js +269 -0
  197. package/dist/geneRanking-ZGT5MHBV.js +544 -0
  198. package/dist/geneVariant-24YNANTT.js +289 -0
  199. package/dist/geneVariant-CDGENHWQ.js +32 -0
  200. package/dist/geneVariant.integration.spec-7QW4C2WO.js +672 -0
  201. package/dist/genefusion.ui-NVXGSBXD.js +299 -0
  202. package/dist/geneset-7STL6UDD.js +199 -0
  203. package/dist/genomeBrowser.spec-OE2CIP7I.js +272 -0
  204. package/dist/grin2-2HXUIY5O.js +66 -0
  205. package/dist/grin2-32IIJR5E.js +945 -0
  206. package/dist/hierCluster-MDZEI2KB.js +51 -0
  207. package/dist/hierCluster-T3PZUGBI.js +55 -0
  208. package/dist/hierCluster.config-7UN6AYGB.js +32 -0
  209. package/dist/hierCluster.integration.spec-DWOYVK6T.js +479 -0
  210. package/dist/hierCluster.interactivity-5OM6XNFG.js +45 -0
  211. package/dist/hierCluster.renderers-YGX6MZZW.js +18 -0
  212. package/dist/imagePlot-KBRXDV5G.js +152 -0
  213. package/dist/importPlot-DJMIC22L.js +8 -0
  214. package/dist/isoformExpression-SWDWADRC.js +31 -0
  215. package/dist/isoformExpression.unit.spec-2U5KCYBP.js +233 -0
  216. package/dist/junction-NMXVVGRG.js +32 -0
  217. package/dist/junction.customTerm-3R2GNE3A.js +15 -0
  218. package/dist/junction.unit.spec-JTGBPPN7.js +178 -0
  219. package/dist/launch.adhoc-YB5SKMNY.js +33 -0
  220. package/dist/leftlabel.sample-QKXIODCS.js +253 -0
  221. package/dist/lollipop-TSZ62PBH.js +162 -0
  222. package/dist/maf-4L5YN4CG.js +451 -0
  223. package/dist/maftimeline-VOYB3NY3.js +583 -0
  224. package/dist/matrix-IWJECVTF.js +55 -0
  225. package/dist/matrix-MMJAJZA7.js +50 -0
  226. package/dist/matrix.cells-5RTZUJVN.js +25 -0
  227. package/dist/matrix.config-DZGOZWJS.js +33 -0
  228. package/dist/matrix.data-Y5TPRGMW.js +22 -0
  229. package/dist/matrix.groups-6DXCAY4P.js +25 -0
  230. package/dist/matrix.integration.spec-2N237E7T.js +3156 -0
  231. package/dist/matrix.interactivity-FL33UUKR.js +33 -0
  232. package/dist/matrix.layout-7SYHV3KJ.js +35 -0
  233. package/dist/matrix.legend-S3E76TVO.js +19 -0
  234. package/dist/matrix.renderers-3SIBT2RP.js +30 -0
  235. package/dist/matrix.serieses-3UGLZW25.js +18 -0
  236. package/dist/matrix.sort-A7CNLDUJ.js +25 -0
  237. package/dist/matrix.sort.unit.spec-L3H44T6I.js +464 -0
  238. package/dist/matrix.sorterUi-6PZR3YOD.js +15 -0
  239. package/dist/matrix.sorterUi.unit.spec-2NRU5UFH.js +334 -0
  240. package/dist/matrix.unit.spec-HRZIJB6T.js +146 -0
  241. package/dist/mavb-ZVRQSDPS.js +726 -0
  242. package/dist/mds.fimo-ZKETTET7.js +509 -0
  243. package/dist/mds.samplescatterplot-ZV3UNRLP.js +1545 -0
  244. package/dist/mds.survivalplot-OVXZRTU4.js +472 -0
  245. package/dist/multivalue-6BE5IA4F.js +79 -0
  246. package/dist/numericDictTermCluster-6XDVVWLE.js +62 -0
  247. package/dist/oncomatrix-XK62NEOO.js +286 -0
  248. package/dist/oncomatrix.spec-YVTCHOPS.js +439 -0
  249. package/dist/plot.2dvaf-NUOBWMNX.js +368 -0
  250. package/dist/plot.app-G6IQWXTV.js +32 -0
  251. package/dist/plot.barplot-6QJ6HEJR.js +93 -0
  252. package/dist/plot.boxplot-XKQJSW2O.js +142 -0
  253. package/dist/plot.brainImaging-UTHFJFXU.js +51 -0
  254. package/dist/plot.disco-3MSCX7TM.js +98 -0
  255. package/dist/plot.ssgq-4KBVHF42.js +130 -0
  256. package/dist/plot.vaf2cov-OGUQSSDS.js +249 -0
  257. package/dist/polar2-V7M56GTZ.js +228 -0
  258. package/dist/profileForms-TS3BJLHH.js +937 -0
  259. package/dist/profilePlot-DP5272HR.js +45 -0
  260. package/dist/proteinView-K4K4SP3L.js +1346 -0
  261. package/dist/proteomeCohortCompare-SFWVGLFK.js +866 -0
  262. package/dist/pseudbulk.unit.spec-NFOA7J2C.js +82 -0
  263. package/dist/pseudobulk-XKZQEZ4I.js +31 -0
  264. package/dist/qualitative-7OSFNVI5.js +241 -0
  265. package/dist/qualitative-OIIN6E4Y.js +34 -0
  266. package/dist/radar2-AHZJKX7S.js +323 -0
  267. package/dist/radarFacility2-OUW6D5E7.js +331 -0
  268. package/dist/rememberedGvQ.unit.spec-SHTMMZGG.js +210 -0
  269. package/dist/render-7UZSGX3Q.js +29 -0
  270. package/dist/report-J7HKTXZ2.js +213 -0
  271. package/dist/sampleView-6547OUIM.js +39 -0
  272. package/dist/samplelst-UHF23UEB.js +114 -0
  273. package/dist/samplematrix-OOKS3TMR.js +2188 -0
  274. package/dist/sc-WF2BLGNG.js +77 -0
  275. package/dist/scatter-ABCVFGRV.js +84 -0
  276. package/dist/scatter-WF7XM3IA.js +919 -0
  277. package/dist/selectGenomeWithTklst-67HU5KRB.js +125 -0
  278. package/dist/singleCellCellType-3FZPJ25V.js +29 -0
  279. package/dist/singleCellCellType.unit.spec-TOMREHWK.js +150 -0
  280. package/dist/singleCellGeneExpression-NQTJ5KJQ.js +29 -0
  281. package/dist/singleCellGeneExpression.unit.spec-ZWUQTU2N.js +144 -0
  282. package/dist/singleCellNumericValue-VI7H722L.js +29 -0
  283. package/dist/singleCellNumericValue.unit.spec-QGLHES7H.js +412 -0
  284. package/dist/singleCellPlot-RU5T6SJK.js +44 -0
  285. package/dist/singlecell-C3CJVNXP.js +1562 -0
  286. package/dist/singlecell-NRQZ7KC6.js +77 -0
  287. package/dist/snp-X6XY65VS.js +29 -0
  288. package/dist/snp.unit.spec-6EENK7GQ.js +167 -0
  289. package/dist/snplocus-R4JA6TFT.js +200 -0
  290. package/dist/snplst-SOWVHSXH.js +36 -0
  291. package/dist/spliceevent.a53ss.diagram-IRLCCVQZ.js +142 -0
  292. package/dist/spliceevent.exonskip.diagram-4KG7LE5D.js +274 -0
  293. package/dist/spliceevent.noeventdiagram-OWXAJJX7.js +451 -0
  294. package/dist/ssGSEA-EMOKPLMP.js +29 -0
  295. package/dist/ssGSEA.unit.spec-KXQ7R5WH.js +79 -0
  296. package/dist/stattable-H2G7MOZG.js +112 -0
  297. package/dist/studyCatalog-3ITQXWFL.js +457 -0
  298. package/dist/summarizeCnvGeneexp-ZIPU6YDY.js +154 -0
  299. package/dist/summarizeGeneexpSurvival-3RYU226R.js +101 -0
  300. package/dist/summarizeMutationCnv-RGDBUB22.js +155 -0
  301. package/dist/summarizeMutationDiagnosis-Z4MZE6Y4.js +31 -0
  302. package/dist/summarizeMutationSurvival-Z5CNRH7E.js +95 -0
  303. package/dist/summary-6QQCNX3B.js +40 -0
  304. package/dist/summary.integration.spec-3ULXTZUP.js +405 -0
  305. package/dist/summaryInput-4QKR34QB.js +238 -0
  306. package/dist/sunburst-KB3BWC72.js +34 -0
  307. package/dist/sunburst-XTFBHZNH.js +274 -0
  308. package/dist/survival-7O6ZK63E.js +49 -0
  309. package/dist/survival-NNCY4K6C.js +1248 -0
  310. package/dist/survival.integration.spec-ZYZHZAXA.js +609 -0
  311. package/dist/svgraph-ZLSFFEAC.js +1377 -0
  312. package/dist/svmr-REBBDEYM.js +3834 -0
  313. package/dist/swimmer-NUBRIWLI.js +993 -0
  314. package/dist/swimmer-NUBRIWLI.js.map +7 -0
  315. package/dist/table-CWIQQESJ.js +192 -0
  316. package/dist/termCollection-7TYJSQ45.js +29 -0
  317. package/dist/termCollection-7Z55QNL7.js +247 -0
  318. package/dist/termCollection.unit.spec-LQ5MIBDH.js +295 -0
  319. package/dist/termCollectionFractionSelection-24DZYVDU.js +38 -0
  320. package/dist/termCollectionFractionSelection.unit.spec-DCV2CFS5.js +184 -0
  321. package/dist/tk-2WZFPRCP.js +37 -0
  322. package/dist/tk-QTLEYIP7.js +1193 -0
  323. package/dist/tk-QTLEYIP7.js.map +7 -0
  324. package/dist/tp.ui-HXQX2UH4.js +1453 -0
  325. package/dist/tvs.categorical-4D3JI2ER.js +28 -0
  326. package/dist/tvs.condition-62FXFHZ5.js +160 -0
  327. package/dist/tvs.density-IGO4I4T2.js +19 -0
  328. package/dist/tvs.dt-FZSVMJOO.js +34 -0
  329. package/dist/tvs.dtcnv.categorical-PPFQIC42.js +31 -0
  330. package/dist/tvs.dtcnv.continuous-TV2IGHY4.js +72 -0
  331. package/dist/tvs.dtfusion-ON4BA4XJ.js +31 -0
  332. package/dist/tvs.dtitd-VFNROOWQ.js +31 -0
  333. package/dist/tvs.dtsnvindel-ZXOP37T5.js +31 -0
  334. package/dist/tvs.dtsv-EUHPTW7J.js +31 -0
  335. package/dist/tvs.multivalue-NHVXZNDI.js +84 -0
  336. package/dist/tvs.numeric-FPWDPO3J.js +32 -0
  337. package/dist/tvs.samplelst-ZZHRNUP4.js +95 -0
  338. package/dist/tvs.survival-F3KSG3U6.js +110 -0
  339. package/dist/tvs.termCollection-B37DZLDY.js +118 -0
  340. package/dist/vocabulary-XNE5FFDK.js +32 -0
  341. package/dist/vocabulary-XNE5FFDK.js.map +7 -0
  342. package/dist/wsi.direct-3YH3QGQD.js +11514 -0
  343. package/package.json +4 -4
  344. package/dist/2dmaf-O2SQ5RGD.js +0 -1362
  345. package/dist/AggMatrixInput-LUCTWXHU.js +0 -402
  346. package/dist/AggregateMatrix-JVMF27YL.js +0 -37
  347. package/dist/AppHeader-DJU6HRKO.js +0 -826
  348. package/dist/BoxPlot-22RXMPRL.js +0 -1229
  349. package/dist/CorrelationVolcano-PBZWPFSN.js +0 -613
  350. package/dist/Cuminc-EL74X5GY.js +0 -1217
  351. package/dist/DE-W5SAMMRW.js +0 -85
  352. package/dist/DEinput-ZKEFJZQU.js +0 -479
  353. package/dist/DM-ABKDXMDG.js +0 -86
  354. package/dist/DifferentialAnalysis-3JTZ5WCQ.js +0 -236
  355. package/dist/Disco-ME53U25C.js +0 -3384
  356. package/dist/Disco.UI-F7XKJMKR.js +0 -239
  357. package/dist/DmrPlot-OWBXUTON.js +0 -361
  358. package/dist/GB-7X6DBWKS.js +0 -1388
  359. package/dist/GSEA-GAZIEGD7.js +0 -870
  360. package/dist/GeneExpInput-BAOC6ICV.js +0 -38
  361. package/dist/Geomap-OZERLL7V.js +0 -80
  362. package/dist/HicApp-WDH5LVTD.js +0 -2240
  363. package/dist/IDCViewer-XBZFU3BU.js +0 -10808
  364. package/dist/NumBinaryEditor-5R4EUQOZ.js +0 -274
  365. package/dist/NumBinaryEditor.unit.spec-ULBXMOYY.js +0 -308
  366. package/dist/NumContEditor-EN6V4FLQ.js +0 -100
  367. package/dist/NumContEditor.unit.spec-VDWKNIFN.js +0 -160
  368. package/dist/NumCustomBinEditor-UB34ALNZ.js +0 -29
  369. package/dist/NumCustomBinEditor.unit.spec-WZXJ7GEC.js +0 -393
  370. package/dist/NumDiscreteEditor-H6J67YEL.js +0 -165
  371. package/dist/NumDiscreteEditor.unit.spec-KJ7YU22W.js +0 -229
  372. package/dist/NumRegularBinEditor-R5JVUG7J.js +0 -29
  373. package/dist/NumRegularBinEditor.unit.spec-RZ73FMNO.js +0 -274
  374. package/dist/NumSplineEditor-AOR6OAJA.js +0 -205
  375. package/dist/NumSplineEditor.unit.spec-Z6ZEI3UO.js +0 -220
  376. package/dist/NumericDensity-SRTFTDQA.js +0 -29
  377. package/dist/NumericDensity.unit.spec-MRREBAYU.js +0 -414
  378. package/dist/NumericHandler-7RALUACA.js +0 -30
  379. package/dist/NumericHandler.unit.spec-MDO23WRB.js +0 -225
  380. package/dist/ProteomeInput-MOBXHRD5.js +0 -610
  381. package/dist/Regression-XWT4NNTG.js +0 -1412
  382. package/dist/RunChart2-Q7W5MWJS.js +0 -744
  383. package/dist/SC-MM3JTEVL.js +0 -1290
  384. package/dist/Violin-XNTBDUPG.js +0 -1092
  385. package/dist/Volcano-GRKXU3WL.js +0 -2619
  386. package/dist/Volcano-GRKXU3WL.js.map +0 -7
  387. package/dist/Wsi-22KJSFVH.js +0 -636
  388. package/dist/adSandbox-TLYWQOOA.js +0 -29
  389. package/dist/animatedBubbleChart-67SY5JGP.js +0 -542
  390. package/dist/app-FG3KPE4R.js +0 -28
  391. package/dist/app-VK5LYO6B.js +0 -38
  392. package/dist/bam-TNLNISLV.js +0 -872
  393. package/dist/bam-TNLNISLV.js.map +0 -7
  394. package/dist/barchart-IGWRVB6W.js +0 -38
  395. package/dist/barchart2-TT6OBJJP.js +0 -305
  396. package/dist/block-5PV2TYWJ.js +0 -6232
  397. package/dist/block-5PV2TYWJ.js.map +0 -7
  398. package/dist/block.init-2Y6CNK7H.js +0 -29
  399. package/dist/block.mds.expressionrank-VZ4JVPTG.js +0 -350
  400. package/dist/block.mds.geneboxplot-NYMS32JP.js +0 -819
  401. package/dist/block.mds.junction-3R6C3B5W.js +0 -1534
  402. package/dist/block.mds.svcnv-SO5CYYIQ.js +0 -6413
  403. package/dist/block.svg-R4ASXXNW.js +0 -155
  404. package/dist/block.tk.aicheck-LYRTDZRA.js +0 -274
  405. package/dist/block.tk.bam-GR7CHGGQ.js +0 -1897
  406. package/dist/block.tk.bam-GR7CHGGQ.js.map +0 -7
  407. package/dist/block.tk.bedgraphdot-GERXK2O6.js +0 -375
  408. package/dist/block.tk.bedgraphdot-GERXK2O6.js.map +0 -7
  409. package/dist/block.tk.bigwig.ui-3KMMZX2M.js +0 -202
  410. package/dist/block.tk.hicstraw-7HH4PGFY.js +0 -814
  411. package/dist/block.tk.junction-BPEKLYS2.js +0 -2353
  412. package/dist/block.tk.junction.textmatrixui-2QU5DL2X.js +0 -190
  413. package/dist/block.tk.ld-TJREYPNY.js +0 -90
  414. package/dist/block.tk.menu-HDBZK4YP.js +0 -1050
  415. package/dist/block.tk.pgv-G5GCYBK2.js +0 -934
  416. package/dist/brainImaging-ODWHF7WZ.js +0 -550
  417. package/dist/brainRegions-DC7DEA7N.js +0 -213
  418. package/dist/bubbleHeatmap-T5ACULRL.js +0 -374
  419. package/dist/cellTypeBubbleHeatmap-RQINXXTK.js +0 -274
  420. package/dist/chunk-24ZS2XWC.js +0 -176
  421. package/dist/chunk-2EPEWVKQ.js +0 -4378
  422. package/dist/chunk-2EPEWVKQ.js.map +0 -7
  423. package/dist/chunk-2PHFY3VP.js +0 -195
  424. package/dist/chunk-2QFMKWNS.js +0 -281
  425. package/dist/chunk-2UB6JZ3I.js +0 -466
  426. package/dist/chunk-3GQ54XTJ.js +0 -70
  427. package/dist/chunk-3IE6FDVA.js +0 -1253
  428. package/dist/chunk-4ENIOXIT.js +0 -133
  429. package/dist/chunk-4OOQ52ET.js +0 -182
  430. package/dist/chunk-5NI77Z3O.js +0 -119
  431. package/dist/chunk-5TPWMYBG.js +0 -274
  432. package/dist/chunk-64JHE3GV.js +0 -50
  433. package/dist/chunk-6MUJGVOH.js +0 -140
  434. package/dist/chunk-6XKAOSQE.js +0 -116
  435. package/dist/chunk-6XKAOSQE.js.map +0 -7
  436. package/dist/chunk-6YGSVJJD.js +0 -54
  437. package/dist/chunk-7PQVNQFR.js +0 -255
  438. package/dist/chunk-7XW4JWMJ.js +0 -170
  439. package/dist/chunk-7ZEJKFGW.js +0 -55
  440. package/dist/chunk-A6ZUYQHO.js +0 -159
  441. package/dist/chunk-ALIMVUHR.js +0 -1219
  442. package/dist/chunk-ANBGNYNP.js +0 -1339
  443. package/dist/chunk-ATZNXW5F.js +0 -237
  444. package/dist/chunk-AUPTEHV7.js +0 -257
  445. package/dist/chunk-B2KYLEYM.js +0 -30
  446. package/dist/chunk-BJCET6RU.js +0 -263
  447. package/dist/chunk-BKW35Z4U.js +0 -26619
  448. package/dist/chunk-BKW35Z4U.js.map +0 -7
  449. package/dist/chunk-CJHNPYFQ.js +0 -2292
  450. package/dist/chunk-CJHNPYFQ.js.map +0 -7
  451. package/dist/chunk-CTVPW77S.js +0 -194
  452. package/dist/chunk-D6U65W7Q.js +0 -626
  453. package/dist/chunk-DJMDETVU.js +0 -2685
  454. package/dist/chunk-DKPAOVJH.js +0 -243
  455. package/dist/chunk-DRESQF33.js +0 -38
  456. package/dist/chunk-DXM5MQCZ.js +0 -382
  457. package/dist/chunk-ETXOEP4N.js +0 -184
  458. package/dist/chunk-FOUMNTII.js +0 -134
  459. package/dist/chunk-FTGLS763.js +0 -56
  460. package/dist/chunk-GN2A5NL5.js +0 -472
  461. package/dist/chunk-GWNCQ5YI.js +0 -468
  462. package/dist/chunk-GX6G2SSW.js +0 -26
  463. package/dist/chunk-H3YF55ZI.js +0 -848
  464. package/dist/chunk-IANE75G3.js +0 -444
  465. package/dist/chunk-IKZQST6E.js +0 -5213
  466. package/dist/chunk-IPRYYK26.js +0 -96
  467. package/dist/chunk-JL3PYV5F.js +0 -6375
  468. package/dist/chunk-K6VYSDB5.js +0 -276
  469. package/dist/chunk-KSS26PXB.js +0 -54
  470. package/dist/chunk-LO2QBHP6.js +0 -418
  471. package/dist/chunk-LO2QBHP6.js.map +0 -7
  472. package/dist/chunk-LSRFRZNP.js +0 -59
  473. package/dist/chunk-LYX4S6WA.js +0 -266
  474. package/dist/chunk-ME3HB3V6.js +0 -5787
  475. package/dist/chunk-ME3HB3V6.js.map +0 -7
  476. package/dist/chunk-MP7BA3GK.js +0 -14
  477. package/dist/chunk-MVSUESEV.js +0 -141
  478. package/dist/chunk-NQMS7WV3.js +0 -2799
  479. package/dist/chunk-NR6WFCPF.js +0 -348
  480. package/dist/chunk-NS2MZN3C.js +0 -562
  481. package/dist/chunk-NUA66GW7.js +0 -37
  482. package/dist/chunk-NYEFSOKD.js +0 -550
  483. package/dist/chunk-OVHQFZAE.js +0 -34
  484. package/dist/chunk-OVHQFZAE.js.map +0 -7
  485. package/dist/chunk-QM724EG2.js +0 -103
  486. package/dist/chunk-RIL33JCW.js +0 -102
  487. package/dist/chunk-RJAJG5KN.js +0 -2954
  488. package/dist/chunk-RJAJG5KN.js.map +0 -7
  489. package/dist/chunk-SLHXR4BZ.js +0 -82
  490. package/dist/chunk-SO76DLSZ.js +0 -299
  491. package/dist/chunk-T7CKGRGP.js +0 -398
  492. package/dist/chunk-T7CKGRGP.js.map +0 -7
  493. package/dist/chunk-TUO5I6LP.js +0 -123
  494. package/dist/chunk-TWTPWEYL.js +0 -240
  495. package/dist/chunk-U2GHNZ4N.js +0 -54
  496. package/dist/chunk-UAB5PGOP.js +0 -56
  497. package/dist/chunk-UCB3W3OT.js +0 -217
  498. package/dist/chunk-UJIB7QM3.js +0 -2334
  499. package/dist/chunk-UYQGTW7I.js +0 -1857
  500. package/dist/chunk-UYQGTW7I.js.map +0 -7
  501. package/dist/chunk-VBDJG6GZ.js +0 -2008
  502. package/dist/chunk-VOXUMZMG.js +0 -379
  503. package/dist/chunk-WCNMP54T.js +0 -516
  504. package/dist/chunk-WETOH7YW.js +0 -692
  505. package/dist/chunk-WKGKKM6F.js +0 -480
  506. package/dist/chunk-WV44DGEJ.js +0 -397
  507. package/dist/chunk-XVEEMQAT.js +0 -31
  508. package/dist/chunk-YBOHXANC.js +0 -302
  509. package/dist/chunk-YNQFOPS6.js +0 -203
  510. package/dist/chunk-YVQ4USPP.js +0 -340
  511. package/dist/chunk-ZWLT5QS3.js +0 -102
  512. package/dist/chunk-ZYAZHJPZ.js +0 -296
  513. package/dist/cohort-QSLKB4ZO.js +0 -66
  514. package/dist/cohortSunburst-AQFSNJ5K.js +0 -402
  515. package/dist/condition-MLS6TJHV.js +0 -323
  516. package/dist/controls-ZT3GZ667.js +0 -30
  517. package/dist/controls.config-F7NIPLKB.js +0 -30
  518. package/dist/correlation-ZEIQJGSQ.js +0 -91
  519. package/dist/customdata.inputui-6PJSAJK2.js +0 -280
  520. package/dist/dataDownload-CHMPXHBY.js +0 -325
  521. package/dist/dataDownload-CHMPXHBY.js.map +0 -7
  522. package/dist/databrowser.ui-EMZ5L2Y7.js +0 -421
  523. package/dist/dictionary-U2BWGY6B.js +0 -109
  524. package/dist/dnaMethylation-R34E2XNC.js +0 -29
  525. package/dist/dnaMethylation.integration.spec-4Z2AJHWY.js +0 -194
  526. package/dist/dofetch-JY4A7BYI.js +0 -47
  527. package/dist/e2pca-WSSCXX6A.js +0 -340
  528. package/dist/ep-ATUWEHDJ.js +0 -1247
  529. package/dist/expclust.gdc.spec-QRIRRPO7.js +0 -298
  530. package/dist/facet-5VDCSP3S.js +0 -556
  531. package/dist/gb-Y4UG6LFA.js +0 -77
  532. package/dist/geneExpClustering-OO67JNJ2.js +0 -240
  533. package/dist/geneExpression-5KGV3MAA.js +0 -29
  534. package/dist/geneExpression-KPRFXKU7.js +0 -309
  535. package/dist/geneExpression.unit.spec-YV45EZ5O.js +0 -151
  536. package/dist/geneORA-R74JPUTC.js +0 -269
  537. package/dist/geneRanking-IJTXNMHV.js +0 -544
  538. package/dist/geneVariant-HBAHT6LU.js +0 -32
  539. package/dist/geneVariant-JT3EGAIH.js +0 -289
  540. package/dist/geneVariant.integration.spec-TFQYPUAS.js +0 -672
  541. package/dist/genefusion.ui-MMTQMTHC.js +0 -299
  542. package/dist/geneset-VMBICNCZ.js +0 -199
  543. package/dist/genomeBrowser.spec-2XLLIYGA.js +0 -272
  544. package/dist/grin2-2RYPEUWV.js +0 -66
  545. package/dist/grin2-Y6KAFVV2.js +0 -945
  546. package/dist/hierCluster-EKGFBQT4.js +0 -51
  547. package/dist/hierCluster-Z4PVNMGS.js +0 -55
  548. package/dist/hierCluster.config-Q6WUNK2K.js +0 -32
  549. package/dist/hierCluster.integration.spec-2LHSHNFC.js +0 -479
  550. package/dist/hierCluster.interactivity-OGQ3KUY6.js +0 -45
  551. package/dist/hierCluster.renderers-3GJZXG75.js +0 -18
  552. package/dist/imagePlot-ZJEZPBX7.js +0 -152
  553. package/dist/importPlot-GFEFYEHZ.js +0 -8
  554. package/dist/isoformExpression-A2X3DSR6.js +0 -31
  555. package/dist/isoformExpression.unit.spec-VKMEGCL4.js +0 -233
  556. package/dist/junction-HWIHLQU2.js +0 -32
  557. package/dist/junction.customTerm-C3VWXEYH.js +0 -15
  558. package/dist/junction.unit.spec-ZYJGDOXJ.js +0 -178
  559. package/dist/launch.adhoc-HW5AZM4T.js +0 -33
  560. package/dist/leftlabel.sample-MTW2HRRQ.js +0 -253
  561. package/dist/lollipop-VWW5H6CR.js +0 -162
  562. package/dist/maf-KEJYO3H4.js +0 -451
  563. package/dist/maftimeline-MJZDSGSR.js +0 -583
  564. package/dist/matrix-3UJW6LOA.js +0 -50
  565. package/dist/matrix-W4AX5OBM.js +0 -55
  566. package/dist/matrix.cells-5DAIZ3E5.js +0 -25
  567. package/dist/matrix.config-PK26VPQT.js +0 -33
  568. package/dist/matrix.data-UK5DGKBK.js +0 -22
  569. package/dist/matrix.groups-NM4Q5YDN.js +0 -25
  570. package/dist/matrix.integration.spec-FGWNBCRR.js +0 -3156
  571. package/dist/matrix.interactivity-4C37PII5.js +0 -33
  572. package/dist/matrix.layout-ODV7WXUP.js +0 -35
  573. package/dist/matrix.legend-5MY7OXWN.js +0 -19
  574. package/dist/matrix.renderers-QA7W7ZUL.js +0 -30
  575. package/dist/matrix.serieses-4FSFJPCK.js +0 -18
  576. package/dist/matrix.sort-3QLFMBJ5.js +0 -25
  577. package/dist/matrix.sort.unit.spec-HVOC6IYT.js +0 -464
  578. package/dist/matrix.sorterUi-EY3SA6CG.js +0 -15
  579. package/dist/matrix.sorterUi.unit.spec-OAXWPZZI.js +0 -334
  580. package/dist/matrix.unit.spec-RAL7AU22.js +0 -146
  581. package/dist/mavb-KIM63AC4.js +0 -726
  582. package/dist/mds.fimo-DMAVM56P.js +0 -509
  583. package/dist/mds.samplescatterplot-KILTR2C7.js +0 -1545
  584. package/dist/mds.survivalplot-PV76ANBP.js +0 -472
  585. package/dist/multivalue-2V5LMQY7.js +0 -79
  586. package/dist/numericDictTermCluster-TGL4X6UC.js +0 -62
  587. package/dist/oncomatrix-2O7SLXHX.js +0 -286
  588. package/dist/oncomatrix.spec-HZJKOF5G.js +0 -439
  589. package/dist/plot.2dvaf-424NNMMA.js +0 -368
  590. package/dist/plot.app-YBZDNST2.js +0 -32
  591. package/dist/plot.barplot-YZQBYJUY.js +0 -93
  592. package/dist/plot.boxplot-5OW6IBQL.js +0 -142
  593. package/dist/plot.brainImaging-H3ABPPD3.js +0 -51
  594. package/dist/plot.disco-X7KCDWGX.js +0 -98
  595. package/dist/plot.ssgq-GYRVHTC7.js +0 -130
  596. package/dist/plot.vaf2cov-B2TELPHL.js +0 -249
  597. package/dist/polar2-5KNZRLXY.js +0 -228
  598. package/dist/profileForms-FY34KXCL.js +0 -937
  599. package/dist/profilePlot-3FX2TPYC.js +0 -45
  600. package/dist/proteinView-WSEO3LD3.js +0 -1346
  601. package/dist/proteomeCohortCompare-KA2DF3EE.js +0 -866
  602. package/dist/pseudbulk.unit.spec-AT3TFCOW.js +0 -82
  603. package/dist/pseudobulk-4ZRHUC7W.js +0 -31
  604. package/dist/qualitative-3OBGJRP6.js +0 -241
  605. package/dist/qualitative-FHJD44OA.js +0 -34
  606. package/dist/radar2-X757WR6V.js +0 -323
  607. package/dist/radarFacility2-GUBAK4Y3.js +0 -331
  608. package/dist/rememberedGvQ.unit.spec-ADO4Y2OE.js +0 -210
  609. package/dist/render-MZEPNEMU.js +0 -29
  610. package/dist/report-TUAFDGAE.js +0 -213
  611. package/dist/sampleView-X6YKCBE7.js +0 -39
  612. package/dist/samplelst-UPNRALBH.js +0 -114
  613. package/dist/samplematrix-W3HZK3IS.js +0 -2188
  614. package/dist/sc-UL7233UR.js +0 -77
  615. package/dist/scatter-FTJ77NUM.js +0 -919
  616. package/dist/scatter-VQQRIW6N.js +0 -84
  617. package/dist/selectGenomeWithTklst-HPYPSPFI.js +0 -125
  618. package/dist/singleCellCellType-XTKGOH6H.js +0 -29
  619. package/dist/singleCellCellType.unit.spec-A62GT72A.js +0 -150
  620. package/dist/singleCellGeneExpression-X7H5GTU3.js +0 -29
  621. package/dist/singleCellGeneExpression.unit.spec-2KQBHG7O.js +0 -144
  622. package/dist/singleCellNumericValue-6YS42PZ2.js +0 -29
  623. package/dist/singleCellNumericValue.unit.spec-DNVXQFKI.js +0 -412
  624. package/dist/singleCellPlot-MGOQ7EQV.js +0 -44
  625. package/dist/singlecell-CIOB5XON.js +0 -77
  626. package/dist/singlecell-QW3SLQD6.js +0 -1562
  627. package/dist/snp-6B4MIPKL.js +0 -29
  628. package/dist/snp.unit.spec-HNILS56E.js +0 -167
  629. package/dist/snplocus-DDFLYZ2Y.js +0 -200
  630. package/dist/snplst-JYKOV73J.js +0 -36
  631. package/dist/spliceevent.a53ss.diagram-IBD5ITXR.js +0 -142
  632. package/dist/spliceevent.exonskip.diagram-ZJGEVUYW.js +0 -274
  633. package/dist/spliceevent.noeventdiagram-RNLNTFOW.js +0 -451
  634. package/dist/ssGSEA-42VQLAXL.js +0 -29
  635. package/dist/ssGSEA.unit.spec-FBJANIKG.js +0 -79
  636. package/dist/stattable-FROSNTJY.js +0 -112
  637. package/dist/studyCatalog-XIYNJ24U.js +0 -457
  638. package/dist/summarizeCnvGeneexp-N3OFI24L.js +0 -154
  639. package/dist/summarizeGeneexpSurvival-J4DO2AL4.js +0 -101
  640. package/dist/summarizeMutationCnv-Y43BBSI4.js +0 -155
  641. package/dist/summarizeMutationDiagnosis-JAEAUFCA.js +0 -31
  642. package/dist/summarizeMutationSurvival-4QZDDXDV.js +0 -95
  643. package/dist/summary-DTJZ7NNA.js +0 -40
  644. package/dist/summary.integration.spec-HRRE3J45.js +0 -405
  645. package/dist/summaryInput-WCADUZBK.js +0 -238
  646. package/dist/sunburst-BGXSCB63.js +0 -274
  647. package/dist/sunburst-DSFFFP33.js +0 -504
  648. package/dist/sunburst-DSFFFP33.js.map +0 -7
  649. package/dist/survival-LFXQIWRT.js +0 -49
  650. package/dist/survival-ONWZ5RFM.js +0 -1248
  651. package/dist/survival.integration.spec-ZP7XWHQH.js +0 -609
  652. package/dist/svgraph-2SL2SJVU.js +0 -1377
  653. package/dist/svmr-ONIPMLC2.js +0 -3834
  654. package/dist/swimmer-2EJZH5PP.js +0 -785
  655. package/dist/swimmer-2EJZH5PP.js.map +0 -7
  656. package/dist/table-LLCFO4KK.js +0 -192
  657. package/dist/termCollection-DAHJGR5P.js +0 -247
  658. package/dist/termCollection-QIN53TIL.js +0 -29
  659. package/dist/termCollection.unit.spec-FQOX2IVP.js +0 -295
  660. package/dist/termCollectionFractionSelection-UKEVVZXL.js +0 -38
  661. package/dist/termCollectionFractionSelection.unit.spec-URGEYBU2.js +0 -184
  662. package/dist/tk-4PYQ6WJQ.js +0 -1116
  663. package/dist/tk-4PYQ6WJQ.js.map +0 -7
  664. package/dist/tk-GM7CJ2LU.js +0 -37
  665. package/dist/tp.ui-TRUHW6GP.js +0 -1453
  666. package/dist/tvs.categorical-IY6YSFVN.js +0 -28
  667. package/dist/tvs.condition-YTD7GOPW.js +0 -160
  668. package/dist/tvs.density-CB24PXDE.js +0 -19
  669. package/dist/tvs.dt-AQQIZD5Z.js +0 -34
  670. package/dist/tvs.dtcnv.categorical-WOAOGJSW.js +0 -31
  671. package/dist/tvs.dtcnv.continuous-TJBEPJGO.js +0 -72
  672. package/dist/tvs.dtfusion-SFMZQKKU.js +0 -31
  673. package/dist/tvs.dtitd-Q5RQTCLD.js +0 -31
  674. package/dist/tvs.dtsnvindel-UEK4O6WI.js +0 -31
  675. package/dist/tvs.dtsv-ECS4KEYG.js +0 -31
  676. package/dist/tvs.multivalue-CJIZ3I54.js +0 -84
  677. package/dist/tvs.numeric-UFAOJR2B.js +0 -32
  678. package/dist/tvs.samplelst-BVFY2P7Q.js +0 -95
  679. package/dist/tvs.survival-L56B3I55.js +0 -110
  680. package/dist/tvs.termCollection-BFIBVBSA.js +0 -118
  681. package/dist/vocabulary-MTKDDDGB.js +0 -32
  682. package/dist/wsi.direct-OSHY7VL4.js +0 -11514
  683. /package/dist/{2dmaf-O2SQ5RGD.js.map → 2dmaf-7YU3SNKL.js.map} +0 -0
  684. /package/dist/{AggMatrixInput-LUCTWXHU.js.map → AggMatrixInput-73CDR5FS.js.map} +0 -0
  685. /package/dist/{AggregateMatrix-JVMF27YL.js.map → AggregateMatrix-NNULVFBM.js.map} +0 -0
  686. /package/dist/{AppHeader-DJU6HRKO.js.map → AppHeader-EZDDLLXU.js.map} +0 -0
  687. /package/dist/{BoxPlot-22RXMPRL.js.map → BoxPlot-463E7CRY.js.map} +0 -0
  688. /package/dist/{CorrelationVolcano-PBZWPFSN.js.map → CorrelationVolcano-LHIIMBPP.js.map} +0 -0
  689. /package/dist/{Cuminc-EL74X5GY.js.map → Cuminc-UL2TCIKV.js.map} +0 -0
  690. /package/dist/{DE-W5SAMMRW.js.map → DE-VRFSKFDW.js.map} +0 -0
  691. /package/dist/{DEinput-ZKEFJZQU.js.map → DEinput-FZTQRWVC.js.map} +0 -0
  692. /package/dist/{DM-ABKDXMDG.js.map → DM-PO7CQZNT.js.map} +0 -0
  693. /package/dist/{DifferentialAnalysis-3JTZ5WCQ.js.map → DifferentialAnalysis-WK6HE3YH.js.map} +0 -0
  694. /package/dist/{Disco-ME53U25C.js.map → Disco-YBNQJQFG.js.map} +0 -0
  695. /package/dist/{Disco.UI-F7XKJMKR.js.map → Disco.UI-HC5XYBFV.js.map} +0 -0
  696. /package/dist/{DmrPlot-OWBXUTON.js.map → DmrPlot-7VJ5C66D.js.map} +0 -0
  697. /package/dist/{GB-7X6DBWKS.js.map → GB-VPFQRDRO.js.map} +0 -0
  698. /package/dist/{GSEA-GAZIEGD7.js.map → GSEA-ZEJB3QZQ.js.map} +0 -0
  699. /package/dist/{GeneExpInput-BAOC6ICV.js.map → GeneExpInput-SBDDIY6G.js.map} +0 -0
  700. /package/dist/{Geomap-OZERLL7V.js.map → Geomap-23AHGP2V.js.map} +0 -0
  701. /package/dist/{HicApp-WDH5LVTD.js.map → HicApp-7AQQE4CM.js.map} +0 -0
  702. /package/dist/{IDCViewer-XBZFU3BU.js.map → IDCViewer-NO5Q6VOB.js.map} +0 -0
  703. /package/dist/{NumBinaryEditor-5R4EUQOZ.js.map → NumBinaryEditor-DSRP4OOU.js.map} +0 -0
  704. /package/dist/{NumBinaryEditor.unit.spec-ULBXMOYY.js.map → NumBinaryEditor.unit.spec-TT666YL4.js.map} +0 -0
  705. /package/dist/{NumContEditor-EN6V4FLQ.js.map → NumContEditor-6CURFOCH.js.map} +0 -0
  706. /package/dist/{NumContEditor.unit.spec-VDWKNIFN.js.map → NumContEditor.unit.spec-MNVCFCMP.js.map} +0 -0
  707. /package/dist/{NumCustomBinEditor-UB34ALNZ.js.map → NumCustomBinEditor-SQRR5EFL.js.map} +0 -0
  708. /package/dist/{NumCustomBinEditor.unit.spec-WZXJ7GEC.js.map → NumCustomBinEditor.unit.spec-F7BZWGGT.js.map} +0 -0
  709. /package/dist/{NumDiscreteEditor-H6J67YEL.js.map → NumDiscreteEditor-U7Z2QNYP.js.map} +0 -0
  710. /package/dist/{NumDiscreteEditor.unit.spec-KJ7YU22W.js.map → NumDiscreteEditor.unit.spec-EIEBUZCX.js.map} +0 -0
  711. /package/dist/{NumRegularBinEditor-R5JVUG7J.js.map → NumRegularBinEditor-CVZSWN6Y.js.map} +0 -0
  712. /package/dist/{NumRegularBinEditor.unit.spec-RZ73FMNO.js.map → NumRegularBinEditor.unit.spec-ZMAJOIHL.js.map} +0 -0
  713. /package/dist/{NumSplineEditor-AOR6OAJA.js.map → NumSplineEditor-U43D5NBJ.js.map} +0 -0
  714. /package/dist/{NumSplineEditor.unit.spec-Z6ZEI3UO.js.map → NumSplineEditor.unit.spec-C52AADTS.js.map} +0 -0
  715. /package/dist/{NumericDensity-SRTFTDQA.js.map → NumericDensity-PUKDZOVI.js.map} +0 -0
  716. /package/dist/{NumericDensity.unit.spec-MRREBAYU.js.map → NumericDensity.unit.spec-2347S76D.js.map} +0 -0
  717. /package/dist/{NumericHandler-7RALUACA.js.map → NumericHandler-3RT32PTR.js.map} +0 -0
  718. /package/dist/{NumericHandler.unit.spec-MDO23WRB.js.map → NumericHandler.unit.spec-4PADL4KZ.js.map} +0 -0
  719. /package/dist/{ProteomeInput-MOBXHRD5.js.map → ProteomeInput-NFV4FW4U.js.map} +0 -0
  720. /package/dist/{Regression-XWT4NNTG.js.map → Regression-N7M7N6G4.js.map} +0 -0
  721. /package/dist/{RunChart2-Q7W5MWJS.js.map → RunChart2-UPQ7C6QE.js.map} +0 -0
  722. /package/dist/{SC-MM3JTEVL.js.map → SC-KBW2NHUV.js.map} +0 -0
  723. /package/dist/{Violin-XNTBDUPG.js.map → Violin-GWCOP3ZF.js.map} +0 -0
  724. /package/dist/{Wsi-22KJSFVH.js.map → Wsi-NXAEOYIS.js.map} +0 -0
  725. /package/dist/{adSandbox-TLYWQOOA.js.map → adSandbox-RPEWEEW7.js.map} +0 -0
  726. /package/dist/{animatedBubbleChart-67SY5JGP.js.map → animatedBubbleChart-ILDMZRBX.js.map} +0 -0
  727. /package/dist/{app-FG3KPE4R.js.map → app-LOUC4J47.js.map} +0 -0
  728. /package/dist/{app-VK5LYO6B.js.map → app-MRKXZ6AZ.js.map} +0 -0
  729. /package/dist/{barchart-IGWRVB6W.js.map → barchart-CJR37234.js.map} +0 -0
  730. /package/dist/{barchart2-TT6OBJJP.js.map → barchart2-QQYLTHWR.js.map} +0 -0
  731. /package/dist/{block.init-2Y6CNK7H.js.map → block.init-YJQTJIDO.js.map} +0 -0
  732. /package/dist/{block.mds.expressionrank-VZ4JVPTG.js.map → block.mds.expressionrank-GBMEI5KQ.js.map} +0 -0
  733. /package/dist/{block.mds.geneboxplot-NYMS32JP.js.map → block.mds.geneboxplot-XWE3E5IW.js.map} +0 -0
  734. /package/dist/{block.mds.junction-3R6C3B5W.js.map → block.mds.junction-QLEHFVPE.js.map} +0 -0
  735. /package/dist/{block.mds.svcnv-SO5CYYIQ.js.map → block.mds.svcnv-53DTOPBC.js.map} +0 -0
  736. /package/dist/{block.svg-R4ASXXNW.js.map → block.svg-57T37ABS.js.map} +0 -0
  737. /package/dist/{block.tk.aicheck-LYRTDZRA.js.map → block.tk.aicheck-6DXJTS3H.js.map} +0 -0
  738. /package/dist/{block.tk.bigwig.ui-3KMMZX2M.js.map → block.tk.bigwig.ui-OYIVXE2L.js.map} +0 -0
  739. /package/dist/{block.tk.hicstraw-7HH4PGFY.js.map → block.tk.hicstraw-UKTGEBWT.js.map} +0 -0
  740. /package/dist/{block.tk.junction-BPEKLYS2.js.map → block.tk.junction-ZU5KPFQ3.js.map} +0 -0
  741. /package/dist/{block.tk.junction.textmatrixui-2QU5DL2X.js.map → block.tk.junction.textmatrixui-P4WXTAZR.js.map} +0 -0
  742. /package/dist/{block.tk.ld-TJREYPNY.js.map → block.tk.ld-3PQ4O2AE.js.map} +0 -0
  743. /package/dist/{block.tk.menu-HDBZK4YP.js.map → block.tk.menu-LLITB6UA.js.map} +0 -0
  744. /package/dist/{block.tk.pgv-G5GCYBK2.js.map → block.tk.pgv-Y3FBXUO3.js.map} +0 -0
  745. /package/dist/{brainImaging-ODWHF7WZ.js.map → brainImaging-4B3WXLNP.js.map} +0 -0
  746. /package/dist/{brainRegions-DC7DEA7N.js.map → brainRegions-7VLONUWN.js.map} +0 -0
  747. /package/dist/{bubbleHeatmap-T5ACULRL.js.map → bubbleHeatmap-DI6GJRR6.js.map} +0 -0
  748. /package/dist/{cellTypeBubbleHeatmap-RQINXXTK.js.map → cellTypeBubbleHeatmap-HJY53DB2.js.map} +0 -0
  749. /package/dist/{chunk-TWTPWEYL.js.map → chunk-226MNBZ2.js.map} +0 -0
  750. /package/dist/{chunk-AUPTEHV7.js.map → chunk-2CNFGVHU.js.map} +0 -0
  751. /package/dist/{chunk-DJMDETVU.js.map → chunk-2MC3RNKA.js.map} +0 -0
  752. /package/dist/{chunk-2PHFY3VP.js.map → chunk-2OMX5AYB.js.map} +0 -0
  753. /package/dist/{chunk-64JHE3GV.js.map → chunk-2SL4QWUS.js.map} +0 -0
  754. /package/dist/{chunk-WETOH7YW.js.map → chunk-3KGBC5MK.js.map} +0 -0
  755. /package/dist/{chunk-UAB5PGOP.js.map → chunk-3PCRAPUV.js.map} +0 -0
  756. /package/dist/{chunk-ZWLT5QS3.js.map → chunk-4DBOMSKP.js.map} +0 -0
  757. /package/dist/{chunk-2UB6JZ3I.js.map → chunk-57BS6KNI.js.map} +0 -0
  758. /package/dist/{chunk-UJIB7QM3.js.map → chunk-5AXS5G4A.js.map} +0 -0
  759. /package/dist/{chunk-NS2MZN3C.js.map → chunk-5DI4UNH5.js.map} +0 -0
  760. /package/dist/{chunk-ATZNXW5F.js.map → chunk-5HJG6ECV.js.map} +0 -0
  761. /package/dist/{chunk-NYEFSOKD.js.map → chunk-5ZYANHGX.js.map} +0 -0
  762. /package/dist/{chunk-WV44DGEJ.js.map → chunk-6T4MN7LV.js.map} +0 -0
  763. /package/dist/{chunk-QM724EG2.js.map → chunk-75MRUW2K.js.map} +0 -0
  764. /package/dist/{chunk-7PQVNQFR.js.map → chunk-7J3W3KCN.js.map} +0 -0
  765. /package/dist/{chunk-4OOQ52ET.js.map → chunk-AIZYAKIE.js.map} +0 -0
  766. /package/dist/{chunk-VBDJG6GZ.js.map → chunk-AJNFI6GA.js.map} +0 -0
  767. /package/dist/{chunk-NQMS7WV3.js.map → chunk-BJAWDZBL.js.map} +0 -0
  768. /package/dist/{chunk-VOXUMZMG.js.map → chunk-C6PVZVIH.js.map} +0 -0
  769. /package/dist/{chunk-24ZS2XWC.js.map → chunk-C77X5ZUV.js.map} +0 -0
  770. /package/dist/{chunk-LSRFRZNP.js.map → chunk-C7KUMZQM.js.map} +0 -0
  771. /package/dist/{chunk-6MUJGVOH.js.map → chunk-C7ROKWV2.js.map} +0 -0
  772. /package/dist/{chunk-XVEEMQAT.js.map → chunk-CAH6LJ5Z.js.map} +0 -0
  773. /package/dist/{chunk-RIL33JCW.js.map → chunk-CUCP2GMT.js.map} +0 -0
  774. /package/dist/{chunk-FOUMNTII.js.map → chunk-DTGAMBRJ.js.map} +0 -0
  775. /package/dist/{chunk-7ZEJKFGW.js.map → chunk-DXT7GDHY.js.map} +0 -0
  776. /package/dist/{chunk-IKZQST6E.js.map → chunk-ENPMWVWG.js.map} +0 -0
  777. /package/dist/{chunk-DXM5MQCZ.js.map → chunk-EYKJQJ7R.js.map} +0 -0
  778. /package/dist/{chunk-B2KYLEYM.js.map → chunk-FE5TCBIT.js.map} +0 -0
  779. /package/dist/{chunk-UCB3W3OT.js.map → chunk-FJ2JV2VK.js.map} +0 -0
  780. /package/dist/{chunk-DRESQF33.js.map → chunk-FZYVPRVQ.js.map} +0 -0
  781. /package/dist/{chunk-5TPWMYBG.js.map → chunk-GBKQHVKJ.js.map} +0 -0
  782. /package/dist/{chunk-2QFMKWNS.js.map → chunk-GUW7VTUL.js.map} +0 -0
  783. /package/dist/{chunk-3GQ54XTJ.js.map → chunk-H7F6DMJA.js.map} +0 -0
  784. /package/dist/{chunk-IPRYYK26.js.map → chunk-HH3NUAR2.js.map} +0 -0
  785. /package/dist/{chunk-A6ZUYQHO.js.map → chunk-HRTPGNOG.js.map} +0 -0
  786. /package/dist/{chunk-H3YF55ZI.js.map → chunk-IFPRYTS7.js.map} +0 -0
  787. /package/dist/{chunk-YBOHXANC.js.map → chunk-IJSFSUI4.js.map} +0 -0
  788. /package/dist/{chunk-BJCET6RU.js.map → chunk-IRQKX6DL.js.map} +0 -0
  789. /package/dist/{chunk-GN2A5NL5.js.map → chunk-JHLF2ZC2.js.map} +0 -0
  790. /package/dist/{chunk-ALIMVUHR.js.map → chunk-JNZL7HKB.js.map} +0 -0
  791. /package/dist/{chunk-GX6G2SSW.js.map → chunk-K2ARLT2A.js.map} +0 -0
  792. /package/dist/{chunk-SO76DLSZ.js.map → chunk-K3G56J5R.js.map} +0 -0
  793. /package/dist/{chunk-WCNMP54T.js.map → chunk-KKUCG2QE.js.map} +0 -0
  794. /package/dist/{chunk-D6U65W7Q.js.map → chunk-KPXCXBNU.js.map} +0 -0
  795. /package/dist/{chunk-6YGSVJJD.js.map → chunk-MANAUI7R.js.map} +0 -0
  796. /package/dist/{chunk-7XW4JWMJ.js.map → chunk-MEUSRAOE.js.map} +0 -0
  797. /package/dist/{chunk-NR6WFCPF.js.map → chunk-MHWYRNGA.js.map} +0 -0
  798. /package/dist/{chunk-MP7BA3GK.js.map → chunk-MSTYU3QO.js.map} +0 -0
  799. /package/dist/{chunk-MVSUESEV.js.map → chunk-MWARRQT4.js.map} +0 -0
  800. /package/dist/{chunk-YNQFOPS6.js.map → chunk-MXKYPTZ7.js.map} +0 -0
  801. /package/dist/{chunk-NUA66GW7.js.map → chunk-NX5IB4IY.js.map} +0 -0
  802. /package/dist/{chunk-4ENIOXIT.js.map → chunk-OZUF7O2S.js.map} +0 -0
  803. /package/dist/{chunk-SLHXR4BZ.js.map → chunk-QNCE6EOK.js.map} +0 -0
  804. /package/dist/{chunk-5NI77Z3O.js.map → chunk-RIHO7ZD5.js.map} +0 -0
  805. /package/dist/{chunk-LYX4S6WA.js.map → chunk-RV335DF2.js.map} +0 -0
  806. /package/dist/{chunk-3IE6FDVA.js.map → chunk-THAUD62Q.js.map} +0 -0
  807. /package/dist/{chunk-JL3PYV5F.js.map → chunk-VBTBUXXX.js.map} +0 -0
  808. /package/dist/{chunk-FTGLS763.js.map → chunk-VHWJK2MP.js.map} +0 -0
  809. /package/dist/{chunk-K6VYSDB5.js.map → chunk-VLIOMJDR.js.map} +0 -0
  810. /package/dist/{chunk-U2GHNZ4N.js.map → chunk-VMK4RHV5.js.map} +0 -0
  811. /package/dist/{chunk-GWNCQ5YI.js.map → chunk-WKT7RF3C.js.map} +0 -0
  812. /package/dist/{chunk-ETXOEP4N.js.map → chunk-WXSMUSU7.js.map} +0 -0
  813. /package/dist/{chunk-ZYAZHJPZ.js.map → chunk-WXSX5OQJ.js.map} +0 -0
  814. /package/dist/{chunk-CTVPW77S.js.map → chunk-WY3IORKG.js.map} +0 -0
  815. /package/dist/{chunk-WKGKKM6F.js.map → chunk-WYSOOKFJ.js.map} +0 -0
  816. /package/dist/{chunk-TUO5I6LP.js.map → chunk-XBBFFOLS.js.map} +0 -0
  817. /package/dist/{chunk-YVQ4USPP.js.map → chunk-XSRQGX5H.js.map} +0 -0
  818. /package/dist/{chunk-KSS26PXB.js.map → chunk-YLL6CTBL.js.map} +0 -0
  819. /package/dist/{chunk-ANBGNYNP.js.map → chunk-YPBY37KD.js.map} +0 -0
  820. /package/dist/{chunk-DKPAOVJH.js.map → chunk-YUNJBIK4.js.map} +0 -0
  821. /package/dist/{chunk-IANE75G3.js.map → chunk-Z5ECCUNG.js.map} +0 -0
  822. /package/dist/{cohort-QSLKB4ZO.js.map → cohort-5WL6UJOS.js.map} +0 -0
  823. /package/dist/{cohortSunburst-AQFSNJ5K.js.map → cohortSunburst-R3Z5KJQL.js.map} +0 -0
  824. /package/dist/{condition-MLS6TJHV.js.map → condition-2IILUMVB.js.map} +0 -0
  825. /package/dist/{controls-ZT3GZ667.js.map → controls-G3JITZF5.js.map} +0 -0
  826. /package/dist/{controls.config-F7NIPLKB.js.map → controls.config-BO7KPPET.js.map} +0 -0
  827. /package/dist/{correlation-ZEIQJGSQ.js.map → correlation-CZILLVEM.js.map} +0 -0
  828. /package/dist/{customdata.inputui-6PJSAJK2.js.map → customdata.inputui-BXFQAMTR.js.map} +0 -0
  829. /package/dist/{databrowser.ui-EMZ5L2Y7.js.map → databrowser.ui-V2NJQF3U.js.map} +0 -0
  830. /package/dist/{dictionary-U2BWGY6B.js.map → dictionary-OVAQX6R3.js.map} +0 -0
  831. /package/dist/{dnaMethylation-R34E2XNC.js.map → dnaMethylation-DHPFRXB2.js.map} +0 -0
  832. /package/dist/{dnaMethylation.integration.spec-4Z2AJHWY.js.map → dnaMethylation.integration.spec-PJLIRGN5.js.map} +0 -0
  833. /package/dist/{dofetch-JY4A7BYI.js.map → dofetch-KBTN6OW4.js.map} +0 -0
  834. /package/dist/{e2pca-WSSCXX6A.js.map → e2pca-O7SNMJGB.js.map} +0 -0
  835. /package/dist/{ep-ATUWEHDJ.js.map → ep-NIVLKG4S.js.map} +0 -0
  836. /package/dist/{expclust.gdc.spec-QRIRRPO7.js.map → expclust.gdc.spec-LVCD6C43.js.map} +0 -0
  837. /package/dist/{facet-5VDCSP3S.js.map → facet-LB4SCXE4.js.map} +0 -0
  838. /package/dist/{gb-Y4UG6LFA.js.map → gb-3IJ4NCPO.js.map} +0 -0
  839. /package/dist/{geneExpClustering-OO67JNJ2.js.map → geneExpClustering-SIAC7CMA.js.map} +0 -0
  840. /package/dist/{geneExpression-KPRFXKU7.js.map → geneExpression-KPUOZ4PT.js.map} +0 -0
  841. /package/dist/{geneExpression-5KGV3MAA.js.map → geneExpression-P2TTZXN2.js.map} +0 -0
  842. /package/dist/{geneExpression.unit.spec-YV45EZ5O.js.map → geneExpression.unit.spec-Q5D6XHUF.js.map} +0 -0
  843. /package/dist/{geneORA-R74JPUTC.js.map → geneORA-PKUIJKTL.js.map} +0 -0
  844. /package/dist/{geneRanking-IJTXNMHV.js.map → geneRanking-ZGT5MHBV.js.map} +0 -0
  845. /package/dist/{geneVariant-JT3EGAIH.js.map → geneVariant-24YNANTT.js.map} +0 -0
  846. /package/dist/{geneVariant-HBAHT6LU.js.map → geneVariant-CDGENHWQ.js.map} +0 -0
  847. /package/dist/{geneVariant.integration.spec-TFQYPUAS.js.map → geneVariant.integration.spec-7QW4C2WO.js.map} +0 -0
  848. /package/dist/{genefusion.ui-MMTQMTHC.js.map → genefusion.ui-NVXGSBXD.js.map} +0 -0
  849. /package/dist/{geneset-VMBICNCZ.js.map → geneset-7STL6UDD.js.map} +0 -0
  850. /package/dist/{genomeBrowser.spec-2XLLIYGA.js.map → genomeBrowser.spec-OE2CIP7I.js.map} +0 -0
  851. /package/dist/{grin2-2RYPEUWV.js.map → grin2-2HXUIY5O.js.map} +0 -0
  852. /package/dist/{grin2-Y6KAFVV2.js.map → grin2-32IIJR5E.js.map} +0 -0
  853. /package/dist/{hierCluster-EKGFBQT4.js.map → hierCluster-MDZEI2KB.js.map} +0 -0
  854. /package/dist/{hierCluster-Z4PVNMGS.js.map → hierCluster-T3PZUGBI.js.map} +0 -0
  855. /package/dist/{hierCluster.config-Q6WUNK2K.js.map → hierCluster.config-7UN6AYGB.js.map} +0 -0
  856. /package/dist/{hierCluster.integration.spec-2LHSHNFC.js.map → hierCluster.integration.spec-DWOYVK6T.js.map} +0 -0
  857. /package/dist/{hierCluster.interactivity-OGQ3KUY6.js.map → hierCluster.interactivity-5OM6XNFG.js.map} +0 -0
  858. /package/dist/{hierCluster.renderers-3GJZXG75.js.map → hierCluster.renderers-YGX6MZZW.js.map} +0 -0
  859. /package/dist/{imagePlot-ZJEZPBX7.js.map → imagePlot-KBRXDV5G.js.map} +0 -0
  860. /package/dist/{importPlot-GFEFYEHZ.js.map → importPlot-DJMIC22L.js.map} +0 -0
  861. /package/dist/{isoformExpression-A2X3DSR6.js.map → isoformExpression-SWDWADRC.js.map} +0 -0
  862. /package/dist/{isoformExpression.unit.spec-VKMEGCL4.js.map → isoformExpression.unit.spec-2U5KCYBP.js.map} +0 -0
  863. /package/dist/{junction-HWIHLQU2.js.map → junction-NMXVVGRG.js.map} +0 -0
  864. /package/dist/{junction.customTerm-C3VWXEYH.js.map → junction.customTerm-3R2GNE3A.js.map} +0 -0
  865. /package/dist/{junction.unit.spec-ZYJGDOXJ.js.map → junction.unit.spec-JTGBPPN7.js.map} +0 -0
  866. /package/dist/{launch.adhoc-HW5AZM4T.js.map → launch.adhoc-YB5SKMNY.js.map} +0 -0
  867. /package/dist/{leftlabel.sample-MTW2HRRQ.js.map → leftlabel.sample-QKXIODCS.js.map} +0 -0
  868. /package/dist/{lollipop-VWW5H6CR.js.map → lollipop-TSZ62PBH.js.map} +0 -0
  869. /package/dist/{maf-KEJYO3H4.js.map → maf-4L5YN4CG.js.map} +0 -0
  870. /package/dist/{maftimeline-MJZDSGSR.js.map → maftimeline-VOYB3NY3.js.map} +0 -0
  871. /package/dist/{matrix-3UJW6LOA.js.map → matrix-IWJECVTF.js.map} +0 -0
  872. /package/dist/{matrix-W4AX5OBM.js.map → matrix-MMJAJZA7.js.map} +0 -0
  873. /package/dist/{matrix.cells-5DAIZ3E5.js.map → matrix.cells-5RTZUJVN.js.map} +0 -0
  874. /package/dist/{matrix.config-PK26VPQT.js.map → matrix.config-DZGOZWJS.js.map} +0 -0
  875. /package/dist/{matrix.data-UK5DGKBK.js.map → matrix.data-Y5TPRGMW.js.map} +0 -0
  876. /package/dist/{matrix.groups-NM4Q5YDN.js.map → matrix.groups-6DXCAY4P.js.map} +0 -0
  877. /package/dist/{matrix.integration.spec-FGWNBCRR.js.map → matrix.integration.spec-2N237E7T.js.map} +0 -0
  878. /package/dist/{matrix.interactivity-4C37PII5.js.map → matrix.interactivity-FL33UUKR.js.map} +0 -0
  879. /package/dist/{matrix.layout-ODV7WXUP.js.map → matrix.layout-7SYHV3KJ.js.map} +0 -0
  880. /package/dist/{matrix.legend-5MY7OXWN.js.map → matrix.legend-S3E76TVO.js.map} +0 -0
  881. /package/dist/{matrix.renderers-QA7W7ZUL.js.map → matrix.renderers-3SIBT2RP.js.map} +0 -0
  882. /package/dist/{matrix.serieses-4FSFJPCK.js.map → matrix.serieses-3UGLZW25.js.map} +0 -0
  883. /package/dist/{matrix.sort-3QLFMBJ5.js.map → matrix.sort-A7CNLDUJ.js.map} +0 -0
  884. /package/dist/{matrix.sort.unit.spec-HVOC6IYT.js.map → matrix.sort.unit.spec-L3H44T6I.js.map} +0 -0
  885. /package/dist/{matrix.sorterUi-EY3SA6CG.js.map → matrix.sorterUi-6PZR3YOD.js.map} +0 -0
  886. /package/dist/{matrix.sorterUi.unit.spec-OAXWPZZI.js.map → matrix.sorterUi.unit.spec-2NRU5UFH.js.map} +0 -0
  887. /package/dist/{matrix.unit.spec-RAL7AU22.js.map → matrix.unit.spec-HRZIJB6T.js.map} +0 -0
  888. /package/dist/{mavb-KIM63AC4.js.map → mavb-ZVRQSDPS.js.map} +0 -0
  889. /package/dist/{mds.fimo-DMAVM56P.js.map → mds.fimo-ZKETTET7.js.map} +0 -0
  890. /package/dist/{mds.samplescatterplot-KILTR2C7.js.map → mds.samplescatterplot-ZV3UNRLP.js.map} +0 -0
  891. /package/dist/{mds.survivalplot-PV76ANBP.js.map → mds.survivalplot-OVXZRTU4.js.map} +0 -0
  892. /package/dist/{multivalue-2V5LMQY7.js.map → multivalue-6BE5IA4F.js.map} +0 -0
  893. /package/dist/{numericDictTermCluster-TGL4X6UC.js.map → numericDictTermCluster-6XDVVWLE.js.map} +0 -0
  894. /package/dist/{oncomatrix-2O7SLXHX.js.map → oncomatrix-XK62NEOO.js.map} +0 -0
  895. /package/dist/{oncomatrix.spec-HZJKOF5G.js.map → oncomatrix.spec-YVTCHOPS.js.map} +0 -0
  896. /package/dist/{plot.2dvaf-424NNMMA.js.map → plot.2dvaf-NUOBWMNX.js.map} +0 -0
  897. /package/dist/{plot.app-YBZDNST2.js.map → plot.app-G6IQWXTV.js.map} +0 -0
  898. /package/dist/{plot.barplot-YZQBYJUY.js.map → plot.barplot-6QJ6HEJR.js.map} +0 -0
  899. /package/dist/{plot.boxplot-5OW6IBQL.js.map → plot.boxplot-XKQJSW2O.js.map} +0 -0
  900. /package/dist/{plot.brainImaging-H3ABPPD3.js.map → plot.brainImaging-UTHFJFXU.js.map} +0 -0
  901. /package/dist/{plot.disco-X7KCDWGX.js.map → plot.disco-3MSCX7TM.js.map} +0 -0
  902. /package/dist/{plot.ssgq-GYRVHTC7.js.map → plot.ssgq-4KBVHF42.js.map} +0 -0
  903. /package/dist/{plot.vaf2cov-B2TELPHL.js.map → plot.vaf2cov-OGUQSSDS.js.map} +0 -0
  904. /package/dist/{polar2-5KNZRLXY.js.map → polar2-V7M56GTZ.js.map} +0 -0
  905. /package/dist/{profileForms-FY34KXCL.js.map → profileForms-TS3BJLHH.js.map} +0 -0
  906. /package/dist/{profilePlot-3FX2TPYC.js.map → profilePlot-DP5272HR.js.map} +0 -0
  907. /package/dist/{proteinView-WSEO3LD3.js.map → proteinView-K4K4SP3L.js.map} +0 -0
  908. /package/dist/{proteomeCohortCompare-KA2DF3EE.js.map → proteomeCohortCompare-SFWVGLFK.js.map} +0 -0
  909. /package/dist/{pseudbulk.unit.spec-AT3TFCOW.js.map → pseudbulk.unit.spec-NFOA7J2C.js.map} +0 -0
  910. /package/dist/{pseudobulk-4ZRHUC7W.js.map → pseudobulk-XKZQEZ4I.js.map} +0 -0
  911. /package/dist/{qualitative-3OBGJRP6.js.map → qualitative-7OSFNVI5.js.map} +0 -0
  912. /package/dist/{qualitative-FHJD44OA.js.map → qualitative-OIIN6E4Y.js.map} +0 -0
  913. /package/dist/{radar2-X757WR6V.js.map → radar2-AHZJKX7S.js.map} +0 -0
  914. /package/dist/{radarFacility2-GUBAK4Y3.js.map → radarFacility2-OUW6D5E7.js.map} +0 -0
  915. /package/dist/{rememberedGvQ.unit.spec-ADO4Y2OE.js.map → rememberedGvQ.unit.spec-SHTMMZGG.js.map} +0 -0
  916. /package/dist/{render-MZEPNEMU.js.map → render-7UZSGX3Q.js.map} +0 -0
  917. /package/dist/{report-TUAFDGAE.js.map → report-J7HKTXZ2.js.map} +0 -0
  918. /package/dist/{sampleView-X6YKCBE7.js.map → sampleView-6547OUIM.js.map} +0 -0
  919. /package/dist/{samplelst-UPNRALBH.js.map → samplelst-UHF23UEB.js.map} +0 -0
  920. /package/dist/{samplematrix-W3HZK3IS.js.map → samplematrix-OOKS3TMR.js.map} +0 -0
  921. /package/dist/{sc-UL7233UR.js.map → sc-WF2BLGNG.js.map} +0 -0
  922. /package/dist/{scatter-VQQRIW6N.js.map → scatter-ABCVFGRV.js.map} +0 -0
  923. /package/dist/{scatter-FTJ77NUM.js.map → scatter-WF7XM3IA.js.map} +0 -0
  924. /package/dist/{selectGenomeWithTklst-HPYPSPFI.js.map → selectGenomeWithTklst-67HU5KRB.js.map} +0 -0
  925. /package/dist/{singleCellCellType-XTKGOH6H.js.map → singleCellCellType-3FZPJ25V.js.map} +0 -0
  926. /package/dist/{singleCellCellType.unit.spec-A62GT72A.js.map → singleCellCellType.unit.spec-TOMREHWK.js.map} +0 -0
  927. /package/dist/{singleCellGeneExpression-X7H5GTU3.js.map → singleCellGeneExpression-NQTJ5KJQ.js.map} +0 -0
  928. /package/dist/{singleCellGeneExpression.unit.spec-2KQBHG7O.js.map → singleCellGeneExpression.unit.spec-ZWUQTU2N.js.map} +0 -0
  929. /package/dist/{singleCellNumericValue-6YS42PZ2.js.map → singleCellNumericValue-VI7H722L.js.map} +0 -0
  930. /package/dist/{singleCellNumericValue.unit.spec-DNVXQFKI.js.map → singleCellNumericValue.unit.spec-QGLHES7H.js.map} +0 -0
  931. /package/dist/{singleCellPlot-MGOQ7EQV.js.map → singleCellPlot-RU5T6SJK.js.map} +0 -0
  932. /package/dist/{singlecell-QW3SLQD6.js.map → singlecell-C3CJVNXP.js.map} +0 -0
  933. /package/dist/{singlecell-CIOB5XON.js.map → singlecell-NRQZ7KC6.js.map} +0 -0
  934. /package/dist/{snp-6B4MIPKL.js.map → snp-X6XY65VS.js.map} +0 -0
  935. /package/dist/{snp.unit.spec-HNILS56E.js.map → snp.unit.spec-6EENK7GQ.js.map} +0 -0
  936. /package/dist/{snplocus-DDFLYZ2Y.js.map → snplocus-R4JA6TFT.js.map} +0 -0
  937. /package/dist/{snplst-JYKOV73J.js.map → snplst-SOWVHSXH.js.map} +0 -0
  938. /package/dist/{spliceevent.a53ss.diagram-IBD5ITXR.js.map → spliceevent.a53ss.diagram-IRLCCVQZ.js.map} +0 -0
  939. /package/dist/{spliceevent.exonskip.diagram-ZJGEVUYW.js.map → spliceevent.exonskip.diagram-4KG7LE5D.js.map} +0 -0
  940. /package/dist/{spliceevent.noeventdiagram-RNLNTFOW.js.map → spliceevent.noeventdiagram-OWXAJJX7.js.map} +0 -0
  941. /package/dist/{ssGSEA-42VQLAXL.js.map → ssGSEA-EMOKPLMP.js.map} +0 -0
  942. /package/dist/{ssGSEA.unit.spec-FBJANIKG.js.map → ssGSEA.unit.spec-KXQ7R5WH.js.map} +0 -0
  943. /package/dist/{stattable-FROSNTJY.js.map → stattable-H2G7MOZG.js.map} +0 -0
  944. /package/dist/{studyCatalog-XIYNJ24U.js.map → studyCatalog-3ITQXWFL.js.map} +0 -0
  945. /package/dist/{summarizeCnvGeneexp-N3OFI24L.js.map → summarizeCnvGeneexp-ZIPU6YDY.js.map} +0 -0
  946. /package/dist/{summarizeGeneexpSurvival-J4DO2AL4.js.map → summarizeGeneexpSurvival-3RYU226R.js.map} +0 -0
  947. /package/dist/{summarizeMutationCnv-Y43BBSI4.js.map → summarizeMutationCnv-RGDBUB22.js.map} +0 -0
  948. /package/dist/{summarizeMutationDiagnosis-JAEAUFCA.js.map → summarizeMutationDiagnosis-Z4MZE6Y4.js.map} +0 -0
  949. /package/dist/{summarizeMutationSurvival-4QZDDXDV.js.map → summarizeMutationSurvival-Z5CNRH7E.js.map} +0 -0
  950. /package/dist/{summary-DTJZ7NNA.js.map → summary-6QQCNX3B.js.map} +0 -0
  951. /package/dist/{summary.integration.spec-HRRE3J45.js.map → summary.integration.spec-3ULXTZUP.js.map} +0 -0
  952. /package/dist/{summaryInput-WCADUZBK.js.map → summaryInput-4QKR34QB.js.map} +0 -0
  953. /package/dist/{termCollection-QIN53TIL.js.map → sunburst-KB3BWC72.js.map} +0 -0
  954. /package/dist/{sunburst-BGXSCB63.js.map → sunburst-XTFBHZNH.js.map} +0 -0
  955. /package/dist/{survival-LFXQIWRT.js.map → survival-7O6ZK63E.js.map} +0 -0
  956. /package/dist/{survival-ONWZ5RFM.js.map → survival-NNCY4K6C.js.map} +0 -0
  957. /package/dist/{survival.integration.spec-ZP7XWHQH.js.map → survival.integration.spec-ZYZHZAXA.js.map} +0 -0
  958. /package/dist/{svgraph-2SL2SJVU.js.map → svgraph-ZLSFFEAC.js.map} +0 -0
  959. /package/dist/{svmr-ONIPMLC2.js.map → svmr-REBBDEYM.js.map} +0 -0
  960. /package/dist/{table-LLCFO4KK.js.map → table-CWIQQESJ.js.map} +0 -0
  961. /package/dist/{termCollectionFractionSelection-UKEVVZXL.js.map → termCollection-7TYJSQ45.js.map} +0 -0
  962. /package/dist/{termCollection-DAHJGR5P.js.map → termCollection-7Z55QNL7.js.map} +0 -0
  963. /package/dist/{termCollection.unit.spec-FQOX2IVP.js.map → termCollection.unit.spec-LQ5MIBDH.js.map} +0 -0
  964. /package/dist/{tk-GM7CJ2LU.js.map → termCollectionFractionSelection-24DZYVDU.js.map} +0 -0
  965. /package/dist/{termCollectionFractionSelection.unit.spec-URGEYBU2.js.map → termCollectionFractionSelection.unit.spec-DCV2CFS5.js.map} +0 -0
  966. /package/dist/{tvs.categorical-IY6YSFVN.js.map → tk-2WZFPRCP.js.map} +0 -0
  967. /package/dist/{tp.ui-TRUHW6GP.js.map → tp.ui-HXQX2UH4.js.map} +0 -0
  968. /package/dist/{tvs.density-CB24PXDE.js.map → tvs.categorical-4D3JI2ER.js.map} +0 -0
  969. /package/dist/{tvs.condition-YTD7GOPW.js.map → tvs.condition-62FXFHZ5.js.map} +0 -0
  970. /package/dist/{tvs.dt-AQQIZD5Z.js.map → tvs.density-IGO4I4T2.js.map} +0 -0
  971. /package/dist/{tvs.numeric-UFAOJR2B.js.map → tvs.dt-FZSVMJOO.js.map} +0 -0
  972. /package/dist/{tvs.dtcnv.categorical-WOAOGJSW.js.map → tvs.dtcnv.categorical-PPFQIC42.js.map} +0 -0
  973. /package/dist/{tvs.dtcnv.continuous-TJBEPJGO.js.map → tvs.dtcnv.continuous-TV2IGHY4.js.map} +0 -0
  974. /package/dist/{tvs.dtfusion-SFMZQKKU.js.map → tvs.dtfusion-ON4BA4XJ.js.map} +0 -0
  975. /package/dist/{tvs.dtitd-Q5RQTCLD.js.map → tvs.dtitd-VFNROOWQ.js.map} +0 -0
  976. /package/dist/{tvs.dtsnvindel-UEK4O6WI.js.map → tvs.dtsnvindel-ZXOP37T5.js.map} +0 -0
  977. /package/dist/{tvs.dtsv-ECS4KEYG.js.map → tvs.dtsv-EUHPTW7J.js.map} +0 -0
  978. /package/dist/{tvs.multivalue-CJIZ3I54.js.map → tvs.multivalue-NHVXZNDI.js.map} +0 -0
  979. /package/dist/{vocabulary-MTKDDDGB.js.map → tvs.numeric-FPWDPO3J.js.map} +0 -0
  980. /package/dist/{tvs.samplelst-BVFY2P7Q.js.map → tvs.samplelst-ZZHRNUP4.js.map} +0 -0
  981. /package/dist/{tvs.survival-L56B3I55.js.map → tvs.survival-F3KSG3U6.js.map} +0 -0
  982. /package/dist/{tvs.termCollection-BFIBVBSA.js.map → tvs.termCollection-B37DZLDY.js.map} +0 -0
  983. /package/dist/{wsi.direct-OSHY7VL4.js.map → wsi.direct-3YH3QGQD.js.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../plots/swimmer.ts"],
4
- "sourcesContent": ["import { getCompInit, copyMerge, type RxComponent, type ComponentApi } from '#rx'\nimport { PlotBase } from '#plots/PlotBase.ts'\nimport { controlsInit } from './controls'\nimport { dofetch3 } from '#common/dofetch'\nimport { Menu, DownloadMenu, axisstyle, shapes, shapeSelector, make_radios } from '#dom'\nimport { rgb } from 'd3-color'\nimport { getCombinedTermFilter } from '#filter'\nimport { getColors } from '#shared/common.js'\nimport { scaleLinear } from 'd3-scale'\nimport { axisBottom } from 'd3-axis'\nimport type {\n\tSwimmerLane,\n\tSwimmerLegendItem,\n\tSwimmerPoint,\n\tSwimmerRequest,\n\tSwimmerResponse,\n\tSwimmerTimeReference\n} from '#types'\nimport { getTermValue } from './sampleView.ts'\nimport { getT0T2defaultQ } from './summaryQ.ts'\nimport { fillTermWrapper } from '#termsetting'\n\n/*\nswimmer plot: one horizontal lane per patient. the thin grey base bar spans from\ntime 0 to the lane end (the terminal event, e.g. death, else the latest event or interval end);\ncolored segments mark treatment intervals; dots mark clinical events. when the ds has time references\n(e.g. birth, diagnosis, treatment start), radio buttons above the plot switch time 0 between them.\n*/\n\ntype LegendEntry = {\n\tkey: string\n\tlabel: string\n\tcolor: string\n\tshape: string\n\t/** marker height relative to the other events */\n\tsize: number\n\tsampleTerms?: string[]\n\t/** hidden by the user in the legend: its segments or markers are not drawn */\n\thidden: boolean\n}\n\n/** user changes to one legend item, overriding the ds config */\ntype LegendOverride = { color?: string; shape?: string; hidden?: boolean }\n\n/** legend overrides by legend label (items of several keys merged under one label change together).\nhidden is stored as false rather than deleted, since plot_edit merges settings and cannot remove keys */\ntype LegendOverrides = {\n\tcategories: { [label: string]: LegendOverride }\n\tevents: { [label: string]: LegendOverride }\n\t/** categories of the \"mark by\" term on linked points (e.g. ctDNA status of CSF dots) */\n\tpointCategories: { [label: string]: LegendOverride }\n}\n\n/** linked points (with a point sample) that have no value for the \"mark by\" term */\nconst noValueCategory = 'No value'\n\n/** pixel gap between a lane name and the lane area */\nconst labelGap = 14\n\n/** pixel width of the legend column, right of the lanes */\nconst legendWidth = 190\n\n/** bounding box of each shape path within its 16x16 icon box, measured once per shape. the icons fill\nthat box unevenly (e.g. the cross spans 12px, the circle 16px), so sizing by the box would give markers\nof different heights */\nconst shapeBBox = new Map<string, { x: number; y: number; width: number; height: number }>()\n\n/** draw an event marker centered at (cx, cy) inside holder, scaled so the visible shape is `height` px tall.\nthe shape is a key of the shared #dom shapes. a transparent\nrect keeps thin shapes (e.g. a cross) easy to hover */\nfunction drawMarker(holder, shapeKey: string, cx: number, cy: number, height: number, color: string) {\n\tconst key = shapes[shapeKey] ? shapeKey : 'filledCircle'\n\tconst shape = shapes[key]\n\tconst g = holder.append('g').attr('transform', `translate(${cx},${cy})`)\n\tg.append('rect')\n\t\t.attr('x', -height / 2)\n\t\t.attr('y', -height / 2)\n\t\t.attr('width', height)\n\t\t.attr('height', height)\n\t\t.attr('fill', 'transparent')\n\tconst path = g.append('path').attr('d', shape.path).attr('fill', color)\n\tlet box = shapeBBox.get(key)\n\tif (!box) {\n\t\tconst b = path.node().getBBox()\n\t\t// getBBox() is all zeros while the svg is hidden; fall back to the icon box without caching\n\t\tif (b.width && b.height) {\n\t\t\tbox = { x: b.x, y: b.y, width: b.width, height: b.height }\n\t\t\tshapeBBox.set(key, box)\n\t\t}\n\t}\n\tconst bb = box || { x: 0, y: 0, width: 16, height: 16 }\n\t// solid shapes get a thin white halo, to stand out on segments and on each other; line shapes (cross,\n\t// outlines) are thin filled paths, so a same-colored stroke thickens them to stay legible. the stroke (px)\n\t// is subtracted from the height\n\tconst strokePx = shape.isFilled ? Math.min(1, height * 0.1) : Math.max(1, height * 0.08)\n\tconst scale = Math.max(0.1, height - strokePx) / bb.height\n\tpath\n\t\t.attr('transform', `scale(${scale}) translate(${-(bb.x + bb.width / 2)},${-(bb.y + bb.height / 2)})`)\n\t\t.attr('stroke', shape.isFilled ? 'white' : color)\n\t\t.attr('stroke-width', strokePx / scale)\n\t\t.attr('stroke-linejoin', 'round')\n\treturn g\n}\n\ntype SwimmerSettings = {\n\t/** pixel height of one lane, including spacing */\n\trowHeight: number\n\t/** pixel width of the lane area, excluding sample names and legend */\n\tplotWidth: number\n\t/** 'end': longest lane first; 'sample': by lane (patient) name */\n\tsortBy: 'end' | 'sample'\n\tshowSampleNames: boolean\n\tlegend: LegendOverrides\n\t/** key of a ds time reference (swimmer.timeReferences); unset: the ds default */\n\ttimeReference?: string\n}\n\nclass Swimmer extends PlotBase implements RxComponent {\n\tstatic type = 'swimmer'\n\n\ttype: string\n\tcomponents: { controls: any }\n\tdom!: {\n\t\tholder: any\n\t\tcontrolsHolder: any\n\t\terrdiv: any\n\t\tloadingDiv: any\n\t\tplotDiv: any\n\t\tnoteDiv: any\n\t\ttip: Menu\n\t}\n\trenderer!: SwimmerRenderer\n\n\tconstructor(opts: any, api: ComponentApi) {\n\t\tsuper(opts, api)\n\t\tthis.type = Swimmer.type\n\t\tthis.components = { controls: {} }\n\t\tif (this.opts.header) {\n\t\t\tthis.opts.header.style('padding-left', '7px').style('color', 'rgb(85, 85, 85)').html('Swimmer Plot')\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) throw `No plot with id='${this.id}' found`\n\t\treturn {\n\t\t\tconfig,\n\t\t\t// global mass filter combined with this plot's local filter (config.filter, set by the plot wrapper's filter UI)\n\t\t\ttermfilter: getCombinedTermFilter(appState, config.filter),\n\t\t\tgenome: appState.vocab.genome,\n\t\t\tdslabel: appState.vocab.dslabel,\n\t\t\tswimmer: appState.termdbConfig?.queries?.swimmer || {}\n\t\t}\n\t}\n\n\tasync init() {\n\t\tconst holder = this.opts.holder.append('div').attr('data-testid', 'sjpp-swimmer-holder')\n\t\tconst controlsHolder = holder.append('div').style('display', 'inline-block').style('vertical-align', 'top')\n\t\tconst rightDiv = holder.append('div').style('display', 'inline-block').style('vertical-align', 'top')\n\t\tthis.dom = {\n\t\t\tholder,\n\t\t\tcontrolsHolder,\n\t\t\terrdiv: rightDiv.append('div').attr('class', 'sja_errorbar').style('display', 'none'),\n\t\t\tloadingDiv: rightDiv.append('div').style('display', 'none').style('padding', '24px').text('Loading ...'),\n\t\t\tplotDiv: rightDiv.append('div').attr('data-testid', 'sjpp-swimmer-plot').style('padding', '10px'),\n\t\t\tnoteDiv: rightDiv\n\t\t\t\t.append('div')\n\t\t\t\t.style('padding', '0 10px 10px 10px')\n\t\t\t\t.style('font-size', '.9em')\n\t\t\t\t.style('opacity', 0.7),\n\t\t\ttip: new Menu({ padding: '5px' })\n\t\t}\n\t\tthis.renderer = new SwimmerRenderer(this.app, this.dom, settings =>\n\t\t\tthis.app.dispatch({ type: 'plot_edit', id: this.id, config: { settings: { swimmer: settings } } })\n\t\t)\n\t\tconst laneName = this.renderer.laneType?.name || 'sample'\n\t\tthis.components = {\n\t\t\tcontrols: await controlsInit({\n\t\t\t\tapp: this.app,\n\t\t\t\tid: this.id,\n\t\t\t\tholder: controlsHolder,\n\t\t\t\tinputs: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'term',\n\t\t\t\t\t\tconfigKey: 'term0',\n\t\t\t\t\t\tchartType: 'swimmer',\n\t\t\t\t\t\tusecase: { target: 'swimmer', detail: 'term0' },\n\t\t\t\t\t\tlabel: 'Divide by',\n\t\t\t\t\t\ttitle: 'Split lanes into one panel per category',\n\t\t\t\t\t\tvocabApi: this.app.vocabApi,\n\t\t\t\t\t\tnumericEditMenuVersion: ['discrete'],\n\t\t\t\t\t\tdefaultQ4fillTW: getT0T2defaultQ()\n\t\t\t\t\t},\n\t\t\t\t\t...this.getPointTermInputs(),\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Sort lanes by',\n\t\t\t\t\t\ttype: 'radio',\n\t\t\t\t\t\tchartType: 'swimmer',\n\t\t\t\t\t\tsettingsKey: 'sortBy',\n\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t{ label: 'Lane length', value: 'end' },\n\t\t\t\t\t\t\t{ label: `${laneName[0].toUpperCase()}${laneName.slice(1)} name`, value: 'sample' }\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: `Show ${laneName} names`,\n\t\t\t\t\t\ttype: 'checkbox',\n\t\t\t\t\t\tchartType: 'swimmer',\n\t\t\t\t\t\tsettingsKey: 'showSampleNames',\n\t\t\t\t\t\tboxLabel: 'Yes'\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Row height',\n\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\tchartType: 'swimmer',\n\t\t\t\t\t\tsettingsKey: 'rowHeight',\n\t\t\t\t\t\tmin: 6,\n\t\t\t\t\t\tmax: 50\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Plot width',\n\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\tchartType: 'swimmer',\n\t\t\t\t\t\tsettingsKey: 'plotWidth',\n\t\t\t\t\t\tmin: 200,\n\t\t\t\t\t\tmax: 3000\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t})\n\t\t}\n\t\tthis.components.controls.on('downloadClick.swimmer', event => {\n\t\t\tconst svg = this.renderer.dom.svg\n\t\t\tif (!svg) return\n\t\t\tnew DownloadMenu([{ name: 'Swimmer plot', svg }], 'swimmer_plot').show(event.clientX, event.clientY, event.target)\n\t\t})\n\t}\n\n\t/** \"Mark <event> by\" term input, only when the ds has points linked to samples (e.g. CSF dots). the\n\tterm picker lists only terms of those samples' types */\n\tgetPointTermInputs() {\n\t\tconst sw = this.app.vocabApi.termdbConfig?.queries?.swimmer\n\t\tif (!sw?.pointSampleTypes?.length) return []\n\t\tconst events = (sw.pointSampleEvents || []).map(k => sw.events?.[k]?.label || k)\n\t\tconst what = [...new Set(events)].join(' / ') || 'linked samples'\n\t\treturn [\n\t\t\t{\n\t\t\t\ttype: 'term',\n\t\t\t\tconfigKey: 'pointTerm',\n\t\t\t\tchartType: 'swimmer',\n\t\t\t\tusecase: { target: 'swimmer', detail: 'pointTerm', sampleTypes: sw.pointSampleTypes },\n\t\t\t\tlabel: `Mark ${what} by`,\n\t\t\t\ttitle: `Color the ${what} markers by a variable of their own samples`,\n\t\t\t\tvocabApi: this.app.vocabApi,\n\t\t\t\tnumericEditMenuVersion: ['discrete'],\n\t\t\t\tdefaultQ4fillTW: getT0T2defaultQ()\n\t\t\t}\n\t\t]\n\t}\n\n\tasync main() {\n\t\ttry {\n\t\t\tthis.toggleLoadingDiv()\n\t\t\tthis.dom.errdiv.style('display', 'none')\n\t\t\tconst result = await this.fetchLanes()\n\t\t\tthis.toggleLoadingDiv('none')\n\t\t\tthis.renderer.update({\n\t\t\t\tswimmer: this.state.swimmer,\n\t\t\t\tsettings: this.state.config.settings.swimmer,\n\t\t\t\tlanes: result.lanes,\n\t\t\t\tdivideByOrder: result.divideByOrder,\n\t\t\t\tterm0: this.state.config.term0,\n\t\t\t\tpointTerm: this.state.config.pointTerm,\n\t\t\t\tpointCategoryOrder: result.pointCategoryOrder,\n\t\t\t\ttimeReference: result.timeReference\n\t\t\t})\n\t\t} catch (e: any) {\n\t\t\tthis.toggleLoadingDiv('none')\n\t\t\tthis.printError(e)\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tthis.renderer?.destroy()\n\t}\n\n\tasync fetchLanes(): Promise<SwimmerResponse> {\n\t\tconst body: any = {\n\t\t\tgenome: this.state.genome,\n\t\t\tdslabel: this.state.dslabel,\n\t\t\tfilter: this.state.termfilter?.filter\n\t\t}\n\t\tif (this.state.config.term0) body.term0 = this.state.config.term0\n\t\tif (this.state.config.pointTerm) body.pointTerm = this.state.config.pointTerm\n\t\tconst timeReference = this.state.config.settings.swimmer.timeReference\n\t\tif (timeReference) body.timeReference = timeReference\n\t\treturn await fetchSwimmerLanes(body)\n\t}\n}\n\n/** draws swimmer lanes, divide-by panels and the legend into dom.plotDiv, with notes in dom.noteDiv. used by\nthe swimmer chart and by sample view, which shows the lane of the viewed patient */\nexport class SwimmerRenderer {\n\tapp: any\n\t/** client copy of ds.queries.swimmer: timeLabel, timeReferences, categories, events, terminalEvent,\n\tpointSampleTypes, pointSampleEvents */\n\tswimmer: any = {}\n\tsettings!: SwimmerSettings\n\t/** divide-by tw, lanes are then split into one panel per category */\n\tterm0?: any\n\tlanes: SwimmerLane[] = []\n\t/** divide-by category order from the server, only with term0 */\n\tdivideByOrder: string[] = []\n\t/** \"mark by\" tw of the linked points (e.g. a CSF term); their markers are then colored by point.category */\n\tpointTerm?: any\n\t/** point category order from the server, only with pointTerm */\n\tpointCategoryOrder: string[] = []\n\t/** key of the time reference of the lanes, from the server; unset when the ds has none */\n\ttimeReference?: string\n\tdom: { plotDiv: any; noteDiv: any; tip: Menu; svg?: any }\n\t/** sample type of the lanes, which are patients: the root sample type when the db has exactly one, e.g.\n\t{name:'patient', plural_name:'patients'}, to name lanes in messages and controls. */\n\tlaneType?: { name: string; plural_name: string }\n\t/** annotations of point samples (e.g. CSF) shown on hover, fetched once per sample id */\n\tpointSampleAnno = new Map<string, Promise<{ label: string; value: string }[]>>()\n\t/** menu to edit a legend entry, reused across legend clicks */\n\tlegendMenu?: Menu\n\n\t/** called with changed settings (e.g. legend edits, time reference); without it the renderer keeps legend\n\tchanges itself and redraws, and offers no time reference radio buttons since switching needs new lanes */\n\tonSettingsChange?: (settings: Partial<SwimmerSettings>) => void\n\n\tconstructor(\n\t\tapp: any,\n\t\tdom: { plotDiv: any; noteDiv: any; tip: Menu },\n\t\tonSettingsChange?: (settings: Partial<SwimmerSettings>) => void\n\t) {\n\t\tthis.app = app\n\t\tthis.dom = dom\n\t\tthis.onSettingsChange = onSettingsChange\n\t\tconst roots = Object.values(app.vocabApi?.termdbConfig?.sampleTypes || {}).filter((t: any) => t.parent_id == null)\n\t\tif (roots.length == 1) this.laneType = roots[0] as { name: string; plural_name: string }\n\t}\n\n\tupdate(d: {\n\t\tswimmer: any\n\t\tsettings: SwimmerSettings\n\t\tlanes: SwimmerLane[]\n\t\tdivideByOrder?: string[]\n\t\tterm0?: any\n\t\tpointTerm?: any\n\t\tpointCategoryOrder?: string[]\n\t\ttimeReference?: string\n\t}) {\n\t\tthis.swimmer = d.swimmer || {}\n\t\tthis.settings = d.settings\n\t\tthis.lanes = d.lanes\n\t\tthis.divideByOrder = d.divideByOrder || []\n\t\tthis.term0 = d.term0\n\t\tthis.pointTerm = d.pointTerm\n\t\tthis.pointCategoryOrder = d.pointCategoryOrder || []\n\t\tthis.timeReference = d.timeReference\n\t\tthis.render()\n\t}\n\n\t/** whether a point is colored by the \"mark by\" term: a linked point of a markBy event */\n\tisMarkedPoint(p: SwimmerPoint): boolean {\n\t\treturn !!this.pointTerm && p.sampleId !== undefined && !!this.swimmer.pointSampleEvents?.includes(p.event)\n\t}\n\n\t/** with pointTerm: legend of the marked points' categories, in server order, then \"No value\" when some\n\tmarked point lacks a value. colors come from term.values when set there, else a default palette; the shape\n\tis that of the point's event. user overrides apply as for the other legend sections */\n\tgetPointLegend(events: { byKey: Map<string, LegendEntry> }) {\n\t\tif (!this.pointTerm) return { byKey: new Map<string, LegendEntry>(), entries: [] as LegendEntry[] }\n\t\tlet hasNoValue = false\n\t\tlet shape: string | undefined\n\t\tfor (const lane of this.lanes) {\n\t\t\tfor (const p of lane.points) {\n\t\t\t\tif (!this.isMarkedPoint(p)) continue\n\t\t\t\tshape ||= events.byKey.get(p.event)?.shape\n\t\t\t\tif (!p.category) hasNoValue = true\n\t\t\t}\n\t\t}\n\t\tconst termColors = new Map<string, string>()\n\t\tfor (const [k, v] of Object.entries((this.pointTerm.term?.values || {}) as { [k: string]: any }))\n\t\t\tif (v.color) termColors.set(v.label || k, v.color)\n\t\tconst labels = [...this.pointCategoryOrder, ...(hasNoValue ? [noValueCategory] : [])]\n\t\tconst palette = getColors(Math.max(labels.length, 1))\n\t\tconst configured = {}\n\t\tfor (const label of labels)\n\t\t\tconfigured[label] = {\n\t\t\t\tlabel,\n\t\t\t\tcolor: label == noValueCategory ? '#aaa' : termColors.get(label) || palette(label),\n\t\t\t\tshape\n\t\t\t}\n\t\treturn this.getLegend(configured, new Set(labels), this.settings.legend?.pointCategories)\n\t}\n\n\t/** lanes split by divide-by category, in server order. without term0 there is one unlabeled group.\n\ta patient with several categories (a multivalue term, or samples in different categories) is in each\n\tof its groups; lanes without a value are left out and counted in the note below the plot */\n\tgetGroups<T extends { lane: SwimmerLane }>(lanes: T[]): { label?: string; lanes: T[] }[] {\n\t\tif (!this.term0) return [{ lanes }]\n\t\tconst byLabel = new Map<string, T[]>(this.divideByOrder.map(c => [c, []]))\n\t\tlet noValue = 0\n\t\tfor (const l of lanes) {\n\t\t\tif (!l.lane.divideBy?.length) {\n\t\t\t\tnoValue++\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor (const c of l.lane.divideBy) {\n\t\t\t\tif (!byLabel.has(c)) byLabel.set(c, [])\n\t\t\t\tbyLabel.get(c)!.push(l)\n\t\t\t}\n\t\t}\n\t\tif (noValue) {\n\t\t\tconst name = this.term0.term?.name || 'the divide-by variable'\n\t\t\tconst noun = noValue > 1 ? this.laneType?.plural_name || 'samples' : this.laneType?.name || 'sample'\n\t\t\tthis.dom.noteDiv\n\t\t\t\t.append('div')\n\t\t\t\t.attr('data-testid', 'sjpp-swimmer-novalue-note')\n\t\t\t\t.text(`${noValue} ${noun} without a value for ${name} not shown`)\n\t\t}\n\t\treturn [...byLabel].filter(([, l]) => l.length).map(([label, l]) => ({ label, lanes: l }))\n\t}\n\n\t/** lane end: the terminal event time when present, else the latest event or interval time */\n\tgetLaneEnd(lane: SwimmerLane): number {\n\t\tconst terminal = this.swimmer.terminalEvent\n\t\tif (terminal) {\n\t\t\tconst t = lane.points.find(p => p.event == terminal)\n\t\t\tif (t) return t.time\n\t\t}\n\t\tlet end = 0\n\t\tfor (const p of lane.points) end = Math.max(end, p.time)\n\t\tfor (const r of lane.ranges) end = Math.max(end, r.start, r.end ?? 0)\n\t\treturn end\n\t}\n\n\t/** legend entries for interval categories or events: configured items first (in config order,\n\tmerged by label), then any key found in the data that the ds did not configure, with a default color. a\n\tclipBeforeOrigin event with no drawn marker (e.g. birth in a treatment-referenced view) is left out. user\n\toverrides (by label) take precedence over the ds config */\n\tgetLegend(\n\t\tconfigured: { [key: string]: SwimmerLegendItem } | undefined,\n\t\tdataKeys: Set<string>,\n\t\toverrides: { [label: string]: LegendOverride } = {}\n\t) {\n\t\tconst byKey = new Map<string, LegendEntry>()\n\t\tconst entries: LegendEntry[] = []\n\t\tconst seenLabels = new Set<string>()\n\t\tconst unconfigured = [...dataKeys].filter(k => !configured?.[k])\n\t\tconst fallback = getColors(Math.max(unconfigured.length, 1))\n\t\tconst add = (key: string, item: SwimmerLegendItem) => {\n\t\t\tconst label = item.label || key\n\t\t\tconst o = overrides[label] || {}\n\t\t\tconst e: LegendEntry = {\n\t\t\t\tkey,\n\t\t\t\tlabel,\n\t\t\t\tcolor: o.color || item.color || fallback(key),\n\t\t\t\tshape: o.shape || item.shape || 'filledCircle',\n\t\t\t\tsize: item.size || 1,\n\t\t\t\tsampleTerms: item.sampleTerms,\n\t\t\t\thidden: !!o.hidden\n\t\t\t}\n\t\t\tbyKey.set(key, e)\n\t\t\tif (!seenLabels.has(e.label)) {\n\t\t\t\tseenLabels.add(e.label)\n\t\t\t\tentries.push(e)\n\t\t\t}\n\t\t}\n\t\tfor (const [key, item] of Object.entries(configured || {})) {\n\t\t\tif (item.clipBeforeOrigin && !dataKeys.has(key)) continue\n\t\t\tadd(key, item)\n\t\t}\n\t\tfor (const key of unconfigured) add(key, {})\n\t\treturn { byKey, entries }\n\t}\n\n\trender() {\n\t\tconst s = this.settings\n\t\tconst plotDiv = this.dom.plotDiv\n\t\tplotDiv.selectAll('*').remove()\n\t\tthis.dom.noteDiv.selectAll('*').remove()\n\t\tdelete this.dom.svg\n\n\t\tconst ref: SwimmerTimeReference | undefined = this.swimmer.timeReferences?.find(\n\t\t\t(r: SwimmerTimeReference) => r.key == this.timeReference\n\t\t)\n\t\tthis.renderTimeReferences()\n\n\t\tif (!this.lanes.length) {\n\t\t\tplotDiv\n\t\t\t\t.append('div')\n\t\t\t\t.style('opacity', 0.6)\n\t\t\t\t.text(`No ${this.laneType?.plural_name || 'samples'} with timeline data match the current filter`)\n\t\t\treturn\n\t\t}\n\n\t\tconst lanes = this.lanes.map(lane => ({ lane, end: this.getLaneEnd(lane) }))\n\t\tif (s.sortBy == 'sample') lanes.sort((a, b) => a.lane.sample.localeCompare(b.lane.sample))\n\t\telse lanes.sort((a, b) => b.end - a.end)\n\n\t\tconst categoryKeys = new Set<string>()\n\t\tconst eventKeys = new Set<string>()\n\t\tfor (const { lane } of lanes) {\n\t\t\tfor (const r of lane.ranges) categoryKeys.add(r.category)\n\t\t\t// a clipped event (e.g. birth in a treatment-referenced view) is not drawn\n\t\t\tfor (const p of lane.points) if (!this.isClipped(p)) eventKeys.add(p.event)\n\t\t}\n\t\tconst categories = this.getLegend(this.swimmer.categories, categoryKeys, s.legend?.categories)\n\t\tconst events = this.getLegend(this.swimmer.events, eventKeys, s.legend?.events)\n\t\tconst pointCategories = this.getPointLegend(events)\n\n\t\tconst fontSize = Math.min(12, Math.max(7, s.rowHeight - 3))\n\t\tconst axisHeight = 45\n\t\tconst topPad = 10\n\t\tconst rightPad = 20\n\t\t// lanes are separated by a thin fixed gap so the bar fills most of the row; segments and\n\t\t// event dots scale with the bar rather than the row\n\t\tconst laneGap = Math.max(1, Math.round(s.rowHeight * 0.1))\n\t\tconst barH = Math.max(2, s.rowHeight - laneGap)\n\t\tconst segH = Math.max(1, barH * 0.6)\n\t\t// the base bar is a thin line under the segments\n\t\tconst baseH = Math.max(1, barH * 0.25)\n\t\t// event markers are 70% of the bar height, all shapes the same height unless an event sets a relative size\n\t\tconst markerH = Math.max(4, barH * 0.7)\n\n\t\tconst svg = plotDiv.append('svg').attr('data-testid', 'sjpp-swimmer-svg')\n\t\tthis.dom.svg = svg\n\t\tconst names = lanes.map(l => l.lane.sample)\n\t\tconst labelWidth = s.showSampleNames ? getMaxTextWidth(svg, names, fontSize) + labelGap + 6 : 10\n\n\t\t// one shared time scale for all divide-by panels, so they can be compared\n\t\tconst maxEnd = Math.max(...lanes.map(l => l.end), 1)\n\t\t// events before the time origin (e.g. a CSF sample collected before treatment start) have\n\t\t// negative times; extend the axis left so they do not overlap the sample names. events with\n\t\t// clipBeforeOrigin (e.g. birth in a treatment-referenced view) do not; their markers before time 0 are\n\t\t// not drawn\n\t\tlet minTime = 0\n\t\tfor (const { lane } of lanes) {\n\t\t\tfor (const p of lane.points) {\n\t\t\t\tif (!this.isClipped(p)) minTime = Math.min(minTime, p.time)\n\t\t\t}\n\t\t\tfor (const r of lane.ranges) minTime = Math.min(minTime, r.start)\n\t\t}\n\t\tconst x = scaleLinear()\n\t\t\t.domain([minTime < 0 ? minTime - (maxEnd - minTime) * 0.01 : 0, maxEnd * 1.02])\n\t\t\t.range([0, s.plotWidth])\n\t\tconst ticks = x.ticks(Math.max(2, Math.floor(s.plotWidth / 90)))\n\n\t\tconst tip = this.dom.tip\n\t\tconst timeLabel = ref?.timeLabel || this.swimmer.timeLabel || 'Time'\n\t\tconst fmt = (d: number) => (Number.isInteger(d) ? String(d) : d.toFixed(1))\n\n\t\tconst groups = this.getGroups(lanes)\n\t\tif (!groups.length) {\n\t\t\tsvg.remove()\n\t\t\tdelete this.dom.svg\n\t\t\tplotDiv\n\t\t\t\t.append('div')\n\t\t\t\t.style('opacity', 0.6)\n\t\t\t\t.text(`No ${this.laneType?.plural_name || 'samples'} have a value for the divide-by variable`)\n\t\t\treturn\n\t\t}\n\t\tconst titleH = groups[0].label !== undefined ? 24 : 0\n\t\tconst groupGap = 16\n\t\tlet yOffset = topPad\n\t\tfor (const group of groups) {\n\t\t\tif (group.label !== undefined) {\n\t\t\t\tsvg\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.attr('data-testid', 'sjpp-swimmer-group-title')\n\t\t\t\t\t.attr('x', labelWidth)\n\t\t\t\t\t.attr('y', yOffset + 15)\n\t\t\t\t\t.attr('font-size', 14)\n\t\t\t\t\t.attr('font-weight', 600)\n\t\t\t\t\t.attr('fill', '#333')\n\t\t\t\t\t.text(`${group.label} (n=${group.lanes.length})`)\n\t\t\t\tyOffset += titleH\n\t\t\t}\n\t\t\tconst plotHeight = group.lanes.length * s.rowHeight\n\t\t\tconst mainG = svg.append('g').attr('transform', `translate(${labelWidth},${yOffset})`)\n\n\t\t\t// vertical grid lines behind the lanes\n\t\t\tmainG\n\t\t\t\t.append('g')\n\t\t\t\t.selectAll('line')\n\t\t\t\t.data(ticks)\n\t\t\t\t.enter()\n\t\t\t\t.append('line')\n\t\t\t\t.attr('x1', d => x(d))\n\t\t\t\t.attr('x2', d => x(d))\n\t\t\t\t.attr('y1', 0)\n\t\t\t\t.attr('y2', plotHeight)\n\t\t\t\t.attr('stroke', '#e6e6e6')\n\t\t\t\t.attr('shape-rendering', 'crispEdges')\n\n\t\t\tfor (const [i, { lane, end }] of group.lanes.entries()) {\n\t\t\t\tconst y = i * s.rowHeight\n\t\t\t\tconst g = mainG.append('g').attr('transform', `translate(0,${y})`)\n\n\t\t\t\t// base bar: a thin line, hovered through a transparent rect of the bar height\n\t\t\t\tconst baseG = g.append('g')\n\t\t\t\tbaseG\n\t\t\t\t\t.append('rect')\n\t\t\t\t\t.attr('x', x(0))\n\t\t\t\t\t.attr('y', (s.rowHeight - baseH) / 2)\n\t\t\t\t\t.attr('width', Math.max(0, x(end) - x(0)))\n\t\t\t\t\t.attr('height', baseH)\n\t\t\t\t\t.attr('fill', '#999')\n\t\t\t\t\t.attr('fill-opacity', 0.5)\n\t\t\t\t\t.attr('shape-rendering', 'crispEdges')\n\t\t\t\tbaseG\n\t\t\t\t\t.append('rect')\n\t\t\t\t\t.attr('x', x(0))\n\t\t\t\t\t.attr('y', (s.rowHeight - barH) / 2)\n\t\t\t\t\t.attr('width', Math.max(0, x(end) - x(0)))\n\t\t\t\t\t.attr('height', barH)\n\t\t\t\t\t.attr('fill', 'transparent')\n\t\t\t\tbaseG\n\t\t\t\t\t.on('mouseover', event => {\n\t\t\t\t\t\ttip.clear().show(event.clientX, event.clientY)\n\t\t\t\t\t\ttip.d.append('div').style('font-weight', 'bold').text(lane.sample)\n\t\t\t\t\t\ttip.d.append('div').text(`Lane end: ${fmt(end)} (${timeLabel.toLowerCase()})`)\n\t\t\t\t\t})\n\t\t\t\t\t.on('mouseout', () => tip.hide())\n\n\t\t\t\t// interval segments. one without an end (blank or NA in the file) is ongoing: drawn up to the lane\n\t\t\t\t// end, with an arrowhead\n\t\t\t\tfor (const r of lane.ranges) {\n\t\t\t\t\tconst entry = categories.byKey.get(r.category)!\n\t\t\t\t\tif (entry.hidden) continue\n\t\t\t\t\tconst segEnd = r.end ?? Math.max(end, r.start)\n\t\t\t\t\tconst segTop = (s.rowHeight - segH) / 2\n\t\t\t\t\tconst seg = g.append('g').on('mouseout', () => tip.hide())\n\t\t\t\t\t// translucent, so overlapping intervals and the base bar show through\n\t\t\t\t\tseg.attr('fill-opacity', 0.75)\n\t\t\t\t\tseg\n\t\t\t\t\t\t.append('rect')\n\t\t\t\t\t\t.attr('x', x(r.start))\n\t\t\t\t\t\t.attr('y', segTop)\n\t\t\t\t\t\t.attr('width', Math.max(1, x(segEnd) - x(r.start)))\n\t\t\t\t\t\t.attr('height', segH)\n\t\t\t\t\t\t.attr('fill', entry.color)\n\t\t\t\t\t\t.attr('shape-rendering', 'crispEdges')\n\t\t\t\t\tif (r.end == null) {\n\t\t\t\t\t\tconst xe = x(r.start) + Math.max(1, x(segEnd) - x(r.start))\n\t\t\t\t\t\tseg\n\t\t\t\t\t\t\t.append('path')\n\t\t\t\t\t\t\t.attr(\n\t\t\t\t\t\t\t\t'd',\n\t\t\t\t\t\t\t\t`M${xe},${segTop - segH / 3}L${xe + segH * 0.8},${s.rowHeight / 2}L${xe},${segTop + segH * 1.33}Z`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.attr('fill', entry.color)\n\t\t\t\t\t}\n\t\t\t\t\tseg.on('mouseover', event => {\n\t\t\t\t\t\ttip.clear().show(event.clientX, event.clientY)\n\t\t\t\t\t\ttip.d.append('div').style('font-weight', 'bold').text(lane.sample)\n\t\t\t\t\t\ttip.d.append('div').text(`${entry.label}${entry.label != r.category ? ` (${r.category})` : ''}`)\n\t\t\t\t\t\ttip.d\n\t\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t\t.text(\n\t\t\t\t\t\t\t\tr.end == null\n\t\t\t\t\t\t\t\t\t? `From ${fmt(r.start)}, ongoing (${timeLabel.toLowerCase()})`\n\t\t\t\t\t\t\t\t\t: `${fmt(r.start)} to ${fmt(r.end)} (${timeLabel.toLowerCase()})`\n\t\t\t\t\t\t\t)\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t// events\n\t\t\t\tfor (const p of lane.points) {\n\t\t\t\t\tif (this.isClipped(p)) continue\n\t\t\t\t\tconst entry = events.byKey.get(p.event)!\n\t\t\t\t\tif (entry.hidden) continue\n\t\t\t\t\t// a marked point is drawn by its \"mark by\" category\n\t\t\t\t\tconst mark = this.isMarkedPoint(p) ? pointCategories.byKey.get(p.category || noValueCategory) : undefined\n\t\t\t\t\tif (mark?.hidden) continue\n\t\t\t\t\tconst dot = drawMarker(\n\t\t\t\t\t\tg,\n\t\t\t\t\t\tmark?.shape || entry.shape,\n\t\t\t\t\t\tx(p.time),\n\t\t\t\t\t\ts.rowHeight / 2,\n\t\t\t\t\t\tmarkerH * entry.size,\n\t\t\t\t\t\tmark?.color || entry.color\n\t\t\t\t\t)\n\t\t\t\t\t\t.attr('data-event', p.event)\n\t\t\t\t\t\t.on('mouseover', event => {\n\t\t\t\t\t\t\ttip.clear().show(event.clientX, event.clientY)\n\t\t\t\t\t\t\ttip.d.append('div').style('font-weight', 'bold').text(lane.sample)\n\t\t\t\t\t\t\ttip.d.append('div').text(`${entry.label}: ${fmt(p.time)} (${timeLabel.toLowerCase()})`)\n\t\t\t\t\t\t\tif (mark) tip.d.append('div').text(`${this.pointTerm.term?.name}: ${mark.label}`)\n\t\t\t\t\t\t\tif (p.sample) {\n\t\t\t\t\t\t\t\ttip.d.append('div').text(`Sample: ${p.sample}`)\n\t\t\t\t\t\t\t\tif (p.sampleId !== undefined && entry.sampleTerms?.length)\n\t\t\t\t\t\t\t\t\tthis.showPointSampleAnno(tip, p.sampleId, entry.sampleTerms)\n\t\t\t\t\t\t\t\ttip.d.append('div').style('font-size', '0.8em').style('opacity', 0.7).text('Click to open sample view')\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.on('mouseout', () => tip.hide())\n\t\t\t\t\tif (p.sample && p.sampleId !== undefined) {\n\t\t\t\t\t\tconst sample = { sampleId: p.sampleId, sampleName: p.sample }\n\t\t\t\t\t\tdot\n\t\t\t\t\t\t\t.attr('data-testid', 'sjpp-swimmer-linked-point')\n\t\t\t\t\t\t\t.attr('role', 'button')\n\t\t\t\t\t\t\t.attr('tabindex', 0)\n\t\t\t\t\t\t\t.attr('aria-label', `Open sample view of ${p.sample}`)\n\t\t\t\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t\t\t\t.on('click', () => {\n\t\t\t\t\t\t\t\ttip.hide()\n\t\t\t\t\t\t\t\tthis.openSampleView(sample)\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.on('keydown', (event: KeyboardEvent) => {\n\t\t\t\t\t\t\t\tif (event.key === 'Enter' || event.key === ' ') {\n\t\t\t\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t\t\t\t\tthis.openSampleView(sample)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (s.showSampleNames) {\n\t\t\t\t\tg.append('text')\n\t\t\t\t\t\t.attr('x', -labelGap)\n\t\t\t\t\t\t.attr('y', s.rowHeight / 2)\n\t\t\t\t\t\t.attr('text-anchor', 'end')\n\t\t\t\t\t\t.attr('dominant-baseline', 'central')\n\t\t\t\t\t\t.attr('font-size', fontSize)\n\t\t\t\t\t\t.attr('fill', '#333')\n\t\t\t\t\t\t.attr('role', 'button')\n\t\t\t\t\t\t.attr('tabindex', 0)\n\t\t\t\t\t\t.attr('aria-label', `Open sample view of ${lane.sample}`)\n\t\t\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t\t\t.text(lane.sample)\n\t\t\t\t\t\t.on('click', () => this.openSampleView({ sampleId: lane.sampleId, sampleName: lane.sample }, true))\n\t\t\t\t\t\t.on('keydown', (event: KeyboardEvent) => {\n\t\t\t\t\t\t\tif (event.key === 'Enter' || event.key === ' ') {\n\t\t\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t\t\t\tthis.openSampleView({ sampleId: lane.sampleId, sampleName: lane.sample }, true)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.on('mouseover', event => {\n\t\t\t\t\t\t\ttip.clear().show(event.clientX, event.clientY)\n\t\t\t\t\t\t\ttip.d.append('div').text('Click to open sample view')\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.on('mouseout', () => tip.hide())\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// x axis\n\t\t\tconst axisG = mainG.append('g').attr('transform', `translate(0,${plotHeight + 2})`)\n\t\t\taxisG.call(axisBottom(x).tickValues(ticks))\n\t\t\taxisstyle({ axis: axisG, showline: true, fontsize: 11 })\n\t\t\taxisG\n\t\t\t\t.append('text')\n\t\t\t\t.attr('x', s.plotWidth / 2)\n\t\t\t\t.attr('y', 34)\n\t\t\t\t.attr('text-anchor', 'middle')\n\t\t\t\t.attr('font-size', 12)\n\t\t\t\t.attr('fill', '#333')\n\t\t\t\t.text(timeLabel)\n\t\t\tyOffset += plotHeight + axisHeight + groupGap\n\t\t}\n\t\tconst legendHeight = this.renderLegend(\n\t\t\tsvg.append('g').attr('transform', `translate(${labelWidth + s.plotWidth + rightPad},${topPad})`),\n\t\t\tcategories.entries,\n\t\t\tevents.entries,\n\t\t\tpointCategories.entries\n\t\t)\n\t\t// a few lanes (e.g. one patient in sample view) can be shorter than the legend\n\t\tsvg\n\t\t\t.attr('width', labelWidth + s.plotWidth + rightPad + legendWidth)\n\t\t\t.attr('height', Math.max(yOffset - groupGap, topPad + legendHeight))\n\t}\n\n\t/** returns the legend height. events linked to samples (e.g. \"CSF sample\") are listed last. with a \"mark\n\tby\" term their markers take the term's category colors and shapes, so the event row has no icon and names\n\tthe term, and the term's categories follow, indented:\n\t Events\n\t Follow-up\n\t CSF sample by <term name>\n\t category1\n\t category2 */\n\trenderLegend(g, categories: LegendEntry[], events: LegendEntry[], pointCategories: LegendEntry[] = []): number {\n\t\tconst lineH = 18\n\t\tconst indent = 20\n\t\tlet y = 0\n\t\tconst fit = (text: string, max: number) => (text.length > max ? text.slice(0, max - 1) + '\u2026' : text)\n\t\tconst title = (text: string) => {\n\t\t\tg.append('text')\n\t\t\t\t.attr('y', y + 10)\n\t\t\t\t.attr('font-size', 12)\n\t\t\t\t.attr('font-weight', 'bold')\n\t\t\t\t.text(text)\n\t\t\ty += lineH\n\t\t}\n\t\tconst item = (\n\t\t\ttype: keyof LegendOverrides,\n\t\t\te: LegendEntry,\n\t\t\tentries: LegendEntry[],\n\t\t\tdrawIcon: (holder: any, e: LegendEntry) => void,\n\t\t\t/** label: shown instead of e.label */\n\t\t\topts: { x?: number; allowColor?: boolean; allowShape?: boolean; label?: string } = {}\n\t\t) => {\n\t\t\tconst x = opts.x || 0\n\t\t\t// long labels (e.g. a term name, or a free-text note stored as a category) are cut to fit the legend\n\t\t\t// width, with the full text on hover\n\t\t\tconst max = Math.floor((26 * (legendWidth - x)) / legendWidth)\n\t\t\tconst row = g\n\t\t\t\t.append('g')\n\t\t\t\t.attr('transform', `translate(${x},${y})`)\n\t\t\t\t.attr('data-testid', 'sjpp-swimmer-legend-item')\n\t\t\t\t.attr('data-legend-type', type)\n\t\t\t\t.attr('role', 'button')\n\t\t\t\t.attr('tabindex', 0)\n\t\t\t\t.attr('aria-label', `Edit legend item ${opts.label || e.label}`)\n\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t.style('opacity', e.hidden ? 0.4 : 1)\n\t\t\tconst showMenu = event =>\n\t\t\t\tthis.showLegendMenu(event, type, e, entries, {\n\t\t\t\t\tallowColor: opts.allowColor !== false,\n\t\t\t\t\tallowShape: type != 'categories' && opts.allowShape !== false\n\t\t\t\t})\n\t\t\trow.on('click', showMenu).on('keydown', (event: KeyboardEvent) => {\n\t\t\t\tif (event.key === 'Enter' || event.key === ' ') {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tshowMenu(event)\n\t\t\t\t}\n\t\t\t})\n\t\t\t// transparent box so the gap between icon and label is clickable too\n\t\t\trow\n\t\t\t\t.append('rect')\n\t\t\t\t.attr('width', legendWidth - 20 - x)\n\t\t\t\t.attr('height', lineH)\n\t\t\t\t.attr('fill', 'transparent')\n\t\t\tdrawIcon(row, e)\n\t\t\trow\n\t\t\t\t.append('text')\n\t\t\t\t.attr('x', 20)\n\t\t\t\t.attr('y', 10)\n\t\t\t\t.attr('font-size', 12)\n\t\t\t\t.attr('fill', '#333')\n\t\t\t\t.style('text-decoration', e.hidden ? 'line-through' : 'none')\n\t\t\t\t.text(fit(opts.label || e.label, max))\n\t\t\tif ((opts.label || e.label).length > max) row.append('title').text(opts.label || e.label)\n\t\t\ty += lineH\n\t\t}\n\t\tconst rect = (row, e: LegendEntry) =>\n\t\t\trow.append('rect').attr('x', 0).attr('y', 3).attr('width', 14).attr('height', 8).attr('fill', e.color)\n\t\tconst marker = (row, e: LegendEntry) => drawMarker(row, e.shape, 7, 7, Math.max(6, 12 * e.size), e.color)\n\n\t\tif (categories.length) {\n\t\t\ttitle('Intervals')\n\t\t\tfor (const e of categories) item('categories', e, categories, rect)\n\t\t\ty += 8\n\t\t}\n\t\tif (events.length) {\n\t\t\tconst linkedKeys = new Set<string>(this.swimmer.pointSampleEvents || [])\n\t\t\tconst linked = events.filter(e => linkedKeys.has(e.key))\n\t\t\tconst ordered = [...events.filter(e => !linkedKeys.has(e.key)), ...linked]\n\t\t\tconst marked = this.pointTerm && pointCategories.length > 0\n\t\t\ttitle('Events')\n\t\t\tfor (const e of ordered) {\n\t\t\t\tif (!marked || !linkedKeys.has(e.key)) {\n\t\t\t\t\titem('events', e, ordered, marker)\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\t// markers take the mark-by term's category colors and shapes: no icon, no color or shape option\n\t\t\t\titem('events', e, ordered, () => {}, {\n\t\t\t\t\tallowColor: false,\n\t\t\t\t\tallowShape: false,\n\t\t\t\t\tlabel: `${e.label} by ${this.pointTerm.term?.name || ''}`\n\t\t\t\t})\n\t\t\t}\n\t\t\tif (marked) {\n\t\t\t\tfor (const e of pointCategories) item('pointCategories', e, pointCategories, marker, { x: indent })\n\t\t\t}\n\t\t\ty += 8\n\t\t}\n\t\treturn y\n\t}\n\n\t/** a clipBeforeOrigin event before time 0 (e.g. birth in a treatment-referenced view), not drawn */\n\tisClipped(p: SwimmerPoint) {\n\t\treturn p.time < 0 && !!this.swimmer.events?.[p.event]?.clipBeforeOrigin\n\t}\n\n\t/** radio buttons to switch the time reference (e.g. birth, diagnosis, treatment start), above the plot. only\n\twith two or more ds time references and onSettingsChange, which refetches the lanes */\n\trenderTimeReferences() {\n\t\tconst refs: SwimmerTimeReference[] = this.swimmer.timeReferences || []\n\t\tif (refs.length < 2 || !this.onSettingsChange) return\n\t\tconst current = this.timeReference\n\t\tconst holder = this.dom.plotDiv\n\t\t\t.append('div')\n\t\t\t.attr('data-testid', 'sjpp-swimmer-time-references')\n\t\t\t.attr('role', 'radiogroup')\n\t\t\t.attr('aria-label', 'Time from')\n\t\t\t.style('margin-bottom', '8px')\n\t\tholder.append('span').style('margin-right', '8px').style('opacity', 0.8).text('Time from:')\n\t\tmake_radios({\n\t\t\tholder: holder.append('div').style('display', 'inline-block'),\n\t\t\toptions: refs.map(r => ({\n\t\t\t\tlabel: r.label || r.key,\n\t\t\t\tvalue: r.key,\n\t\t\t\tchecked: r.key == current,\n\t\t\t\ttestid: `sjpp-swimmer-time-reference-${r.key}`\n\t\t\t})),\n\t\t\tstyles: { display: 'inline-block', padding: '3px 10px 3px 0' },\n\t\t\t// the lanes are refetched and the plot redrawn, these radios included\n\t\t\tcallback: key => this.onSettingsChange!({ timeReference: key })\n\t\t})\n\t}\n\n\t/** legend item menu, as in the scatter plot legend: hide/show, show only, show all, color, and shape for\n\tevents. \"show only\" and \"show all\" act within the item's own section (intervals, events or mark-by\n\tcategories). color and shape options are left out for an event whose markers are drawn by the mark-by term */\n\tshowLegendMenu(\n\t\tevent,\n\t\ttype: keyof LegendOverrides,\n\t\te: LegendEntry,\n\t\tentries: LegendEntry[],\n\t\topts: { allowColor: boolean; allowShape: boolean }\n\t) {\n\t\tthis.dom.tip.hide()\n\t\tif (!this.legendMenu) this.legendMenu = new Menu({ padding: '0px' })\n\t\tconst menu = this.legendMenu\n\t\tconst div = menu.clear().d.append('div')\n\t\tconst option = (text: string, edit: () => { [label: string]: LegendOverride }) =>\n\t\t\tdiv\n\t\t\t\t.append('div')\n\t\t\t\t.attr('class', 'sja_menuoption sja_sharp_border')\n\t\t\t\t.text(text)\n\t\t\t\t.on('click', () => {\n\t\t\t\t\tmenu.hide()\n\t\t\t\t\tthis.editLegend(type, edit())\n\t\t\t\t})\n\t\toption(e.hidden ? 'Show' : 'Hide', () => ({ [e.label]: { hidden: !e.hidden } }))\n\t\tif (entries.length > 1)\n\t\t\toption('Show only', () => Object.fromEntries(entries.map(x => [x.label, { hidden: x.label != e.label }])))\n\t\tif (entries.some(x => x.hidden))\n\t\t\toption('Show all', () => Object.fromEntries(entries.map(x => [x.label, { hidden: false }])))\n\t\tif (opts.allowColor)\n\t\t\tdiv\n\t\t\t\t.append('div')\n\t\t\t\t.attr('class', 'sja_sharp_border')\n\t\t\t\t.style('padding', '0px 10px')\n\t\t\t\t.text('Color:')\n\t\t\t\t.append('input')\n\t\t\t\t.attr('type', 'color')\n\t\t\t\t.attr('value', rgb(e.color).formatHex())\n\t\t\t\t.on('change', (ev: Event) => {\n\t\t\t\t\tmenu.hide()\n\t\t\t\t\tthis.editLegend(type, { [e.label]: { color: (ev.target as HTMLInputElement).value } })\n\t\t\t\t})\n\t\tif (opts.allowShape) {\n\t\t\tdiv\n\t\t\t\t.append('div')\n\t\t\t\t.attr('class', 'sja_menuoption sja_sharp_border')\n\t\t\t\t.text('Change shape')\n\t\t\t\t.on('click', () => {\n\t\t\t\t\tdiv.selectAll('*').remove()\n\t\t\t\t\t// shapeSelector lists the shapes in the order of the shapes object\n\t\t\t\t\tshapeSelector(div, (index: number) => {\n\t\t\t\t\t\tmenu.hide()\n\t\t\t\t\t\tthis.editLegend(type, { [e.label]: { shape: Object.keys(shapes)[index] } })\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t}\n\t\tmenu.showunder(event.target)\n\t}\n\n\t/** remove the body-mounted menus and their body listeners */\n\tdestroy() {\n\t\tthis.dom.tip.destroy()\n\t\tthis.legendMenu?.destroy()\n\t}\n\n\t/** merge changes into the legend overrides, then save them through onSettingsChange or redraw locally */\n\teditLegend(type: keyof LegendOverrides, changes: { [label: string]: LegendOverride }) {\n\t\tconst legend: LegendOverrides = structuredClone(\n\t\t\tthis.settings.legend || { categories: {}, events: {}, pointCategories: {} }\n\t\t)\n\t\tif (!legend[type]) legend[type] = {}\n\t\tfor (const [label, o] of Object.entries(changes)) legend[type][label] = { ...legend[type][label], ...o }\n\t\tif (this.onSettingsChange) this.onSettingsChange({ legend })\n\t\telse {\n\t\t\tthis.settings = { ...this.settings, legend }\n\t\t\tthis.render()\n\t\t}\n\t}\n\n\t/** list annotations of a point's own sample (e.g. a CSF sample) in the open tooltip, using the same\n\tsingle-sample query and value formatting as sample view. termIds comes from the event's sampleTerms in\n\tthe dataset config and sets which terms are shown and in what order. the table fills in only if the\n\ttooltip still shows this point */\n\tasync showPointSampleAnno(tip, sampleId: number, termIds: string[]) {\n\t\tconst holder = tip.d.append('div').attr('data-sampleid', sampleId).style('margin', '4px 0')\n\t\tholder.append('div').style('opacity', 0.6).text('Loading annotations ...')\n\t\tlet rows: { label: string; value: string }[]\n\t\ttry {\n\t\t\trows = await this.getPointSampleAnno(sampleId, termIds)\n\t\t} catch (e: any) {\n\t\t\trows = []\n\t\t\tconsole.warn('swimmer: cannot load sample annotations', e)\n\t\t}\n\t\tif (!holder.node()?.isConnected) return // tooltip moved on to another element\n\t\tholder.selectAll('*').remove()\n\t\tif (!rows.length) return\n\t\tconst table = holder.append('table').style('border-spacing', '0 1px').style('font-size', '0.9em')\n\t\tfor (const r of rows) {\n\t\t\tconst tr = table.append('tr')\n\t\t\ttr.append('td').style('padding-right', '8px').style('opacity', 0.7).text(r.label)\n\t\t\ttr.append('td').text(r.value)\n\t\t}\n\t}\n\n\tgetPointSampleAnno(sampleId: number, termIds: string[]) {\n\t\tconst cacheKey = `${sampleId}\\t${termIds.join('\\t')}`\n\t\tlet pr = this.pointSampleAnno.get(cacheKey)\n\t\tif (!pr) {\n\t\t\tpr = (async () => {\n\t\t\t\tconst data = await this.app.vocabApi.getSingleSampleData({ sampleId, term_ids: termIds })\n\t\t\t\tif ('error' in data) throw data.error\n\t\t\t\tconst rows: { label: string; value: string }[] = []\n\t\t\t\t// configured order; a term without a value for this sample is skipped\n\t\t\t\tfor (const id of termIds.filter(id => data[id])) {\n\t\t\t\t\tconst term = data[id].term\n\t\t\t\t\tconst value = getTermValue(term, data)\n\t\t\t\t\tif (value != null) rows.push({ label: term.name, value })\n\t\t\t\t}\n\t\t\t\treturn rows\n\t\t\t})()\n\t\t\t// a failed fetch is not cached, so the next hover retries\n\t\t\tpr.catch(() => this.pointSampleAnno.delete(cacheKey))\n\t\t\tthis.pointSampleAnno.set(cacheKey, pr)\n\t\t}\n\t\treturn pr\n\t}\n\n\t/** withRelated: open the sample with its related samples (e.g. a patient lane shows the patient and\n\tits primary/PDX/CSF samples as columns), as when the sample is picked in the sample view search box;\n\totherwise only this sample (e.g. a CSF dot). the sample view's swimmer lane uses the same time reference */\n\topenSampleView(sample: { sampleId: number; sampleName: string }, withRelated = false) {\n\t\tconst config: any = { chartType: 'sampleView', ...(withRelated ? { sample } : { samples: [sample] }) }\n\t\tif (this.timeReference) config.swimmerTimeReference = this.timeReference\n\t\tthis.app.dispatch({ type: 'plot_create', config })\n\t}\n}\n\n/** termdb/swimmer request. the route sends errors as a plain string, so they are not cached by dofetch3 */\nexport async function fetchSwimmerLanes(body: SwimmerRequest): Promise<SwimmerResponse> {\n\tconst result: SwimmerResponse | string = await dofetch3('termdb/swimmer', { body })\n\tif (typeof result == 'string') throw result\n\tif (!result?.lanes) throw 'invalid response from termdb/swimmer'\n\treturn result\n}\n\n/** default settings of the swimmer chart, reused by sample view */\nexport function getDefaultSwimmerSettings(): SwimmerSettings {\n\treturn {\n\t\trowHeight: 20,\n\t\tplotWidth: 800,\n\t\tsortBy: 'end',\n\t\tshowSampleNames: true,\n\t\tlegend: { categories: {}, events: {}, pointCategories: {} }\n\t}\n}\n\n/** widest rendered label in px at the given font size (px). getBBox() is 0 when the svg is hidden,\nwhich only shrinks the left margin; the plot is visible when render() runs */\nfunction getMaxTextWidth(svg, labels: string[], fontSize: number): number {\n\tlet max = 0\n\tfor (const label of labels) {\n\t\tconst t = svg.append('text').attr('font-size', fontSize).text(label)\n\t\tmax = Math.max(max, t.node().getBBox().width)\n\t\tt.remove()\n\t}\n\treturn max\n}\n\nexport async function getPlotConfig(opts, app) {\n\tconst settings = getDefaultSwimmerSettings()\n\tconst config: any = {\n\t\tchartType: 'swimmer',\n\t\tsettings: {\n\t\t\tcontrols: { isOpen: false },\n\t\t\tswimmer: settings\n\t\t}\n\t}\n\tcopyMerge(config, opts)\n\t// a divide-by or mark-by tw from a saved session or another chart is raw until filled here\n\tif (config.term0) config.term0 = await fillTermWrapper(config.term0, app.vocabApi)\n\tif (config.pointTerm) config.pointTerm = await fillTermWrapper(config.pointTerm, app.vocabApi)\n\treturn config\n}\n\nexport const swimmerInit = getCompInit(Swimmer)\n// this alias will allow abstracted dynamic imports\nexport const componentInit = swimmerInit\n"],
5
- "mappings": "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",
6
- "names": ["id"]
7
- }
@@ -1,192 +0,0 @@
1
- import {
2
- PlotBase,
3
- controlsInit
4
- } from "./chunk-BKW35Z4U.js";
5
- import "./chunk-HJ6L54YS.js";
6
- import "./chunk-ETXOEP4N.js";
7
- import "./chunk-CNFTQSNE.js";
8
- import "./chunk-5NI77Z3O.js";
9
- import "./chunk-TVJOSRCH.js";
10
- import "./chunk-3CIL7KH7.js";
11
- import "./chunk-T4XPCSLP.js";
12
- import "./chunk-CJHNPYFQ.js";
13
- import "./chunk-W5J3LTYS.js";
14
- import "./chunk-NR6WFCPF.js";
15
- import "./chunk-GN2A5NL5.js";
16
- import "./chunk-ME3HB3V6.js";
17
- import {
18
- getCompInit
19
- } from "./chunk-HBNB5TRH.js";
20
- import "./chunk-PF4DSFDR.js";
21
- import "./chunk-4OLM3KSB.js";
22
- import "./chunk-6XKAOSQE.js";
23
- import "./chunk-TLT4YIG3.js";
24
- import "./chunk-5R63Q5KH.js";
25
- import {
26
- select_default
27
- } from "./chunk-I6Y4O3RR.js";
28
- import "./chunk-Q5RDQNIT.js";
29
- import "./chunk-HS5PO5ZQ.js";
30
-
31
- // plots/table.js
32
- var TdbTable = class _TdbTable extends PlotBase {
33
- static type = "table";
34
- constructor(opts, api) {
35
- super(opts, api);
36
- this.type = _TdbTable.type;
37
- }
38
- async init() {
39
- const opts = this.opts;
40
- const controls = opts.controls ? null : opts.holder.append("div");
41
- const holder = opts.controls ? opts.holder : opts.holder.append("div");
42
- this.dom = {
43
- header: opts.header,
44
- controls,
45
- holder,
46
- div: holder.style("margin", "10px 0px").style("display", "none"),
47
- inputs: ["term1", "overlay"]
48
- };
49
- if (this.dom.header) this.dom.header.html("Crosstab");
50
- setInteractivity(this);
51
- setRenderers(this);
52
- await this.setControls();
53
- }
54
- async setControls() {
55
- if (this.opts.controls) {
56
- this.opts.controls.on("downloadClick.table", this.download);
57
- } else {
58
- this.dom.holder.attr("class", "pp-termdb-plot-viz").style("display", "inline-block").style("min-width", "300px").style("margin-left", "50px");
59
- this.components = {
60
- controls: await controlsInit({
61
- app: this.app,
62
- id: this.id,
63
- holder: this.dom.controls.style("display", "inline-block")
64
- })
65
- };
66
- this.components.controls.on("downloadClick.table", this.download);
67
- }
68
- }
69
- getState(appState, sub) {
70
- const config = appState.plots.find((p) => p.id === this.id);
71
- if (!config) {
72
- throw `No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`;
73
- }
74
- return {
75
- activeCohort: appState.activeCohort,
76
- termfilter: appState.termfilter,
77
- config: {
78
- term: config.term,
79
- term2: config.term2,
80
- settings: {
81
- common: config.settings.common,
82
- table: config.settings.table
83
- }
84
- }
85
- };
86
- }
87
- async main() {
88
- try {
89
- this.config = structuredClone(this.state.config);
90
- if (!this.config.term2) {
91
- this.dom.div.style("display", "none");
92
- throw "term2 is required for table view";
93
- }
94
- const c = this.state.config;
95
- if (this.dom.header) this.dom.header.html(c.term.term.name + " vs " + c.term2.term.name);
96
- const reqOpts = this.getDataRequestOpts();
97
- this.data = await this.vocabApi.getNestedChartSeriesData(reqOpts);
98
- this.app.vocabApi.syncTermData(this.state.config, this.data);
99
- const [columns, rows] = this.processData(this.data);
100
- this.render(columns, rows);
101
- } catch (e) {
102
- throw e;
103
- }
104
- }
105
- // creates an opts object for the vocabApi.getNestedChartsData()
106
- getDataRequestOpts() {
107
- const c = this.config;
108
- const opts = { term: c.term, filter: this.state.termfilter.filter };
109
- if (c.term2) opts.term2 = c.term2;
110
- if (c.term0) opts.term0 = c.term0;
111
- return opts;
112
- }
113
- processData(data) {
114
- const t2 = this.config.term2.term;
115
- const columns = data.refs.rows.map((key) => {
116
- const label = t2.values && key in t2.values ? t2.values[key].label : key;
117
- return { key, label };
118
- });
119
- const column_keys = data.refs.rows;
120
- const t1 = this.config.term.term;
121
- const rows = data.refs.cols.map((v1) => {
122
- const series = data.charts[0].serieses.find((d) => d.seriesId == v1);
123
- const label = t1.values && v1 in t1.values ? t1.values[v1].label : v1;
124
- return {
125
- label,
126
- lst: !series ? [] : series.data.slice().sort((a, b) => column_keys.indexOf(a.dataId) - column_keys.indexOf(b.dataId)).map((d) => {
127
- return {
128
- label: d.dataId,
129
- value: d.total
130
- };
131
- })
132
- };
133
- });
134
- return [columns, rows];
135
- }
136
- };
137
- function setInteractivity(self) {
138
- self.download = () => {
139
- if (!self.state || !self.state.isVisible) return;
140
- const data = [];
141
- self.dom.div.selectAll("tr").each(function() {
142
- const series = [];
143
- select_default(this).selectAll("th, td").each(function() {
144
- series.push(select_default(this).text());
145
- });
146
- data.push(series);
147
- });
148
- const matrix = data.map((row) => row.join(" ")).join("\n");
149
- const a = document.createElement("a");
150
- document.body.appendChild(a);
151
- a.addEventListener(
152
- "click",
153
- function() {
154
- a.download = self.config.term.term.name + " table.txt";
155
- a.href = URL.createObjectURL(new Blob([matrix], { type: "text/tab-separated-values" }));
156
- document.body.removeChild(a);
157
- },
158
- false
159
- );
160
- a.click();
161
- };
162
- }
163
- function setRenderers(self) {
164
- self.render = function render(columns, rows) {
165
- self.dom.div.style("display", "inline-block").selectAll("*").remove();
166
- const table = self.dom.div.append("table").style("margin-right", "20px").style("border-spacing", "3px").style("border-collapse", "collapse").style("border", "1px solid black");
167
- const tr = table.append("tr").style("white-space", "normal").style("background-color", "#ececec");
168
- tr.append("td");
169
- for (const value of columns) {
170
- const label = value.label;
171
- tr.append("th").text(label.length > 20 ? label.slice(0, 16) + "..." : label).attr("aria-label", label).style("border", "1px solid black").style("padding", "3px").style("text-align", "center").style("min-width", "80px").style("max-width", "150px").style("word-break", label.length > 12 ? "break-word" : "normal").style("vertical-align", "top");
172
- }
173
- let i = 0;
174
- for (const t1v of rows) {
175
- const tr2 = table.append("tr").style("background-color", i++ % 2 == 0 ? "#fff" : "#ececec");
176
- tr2.append("th").text(t1v.label.length > 20 ? t1v.label.slice(0, 20) + "..." : t1v.label).attr("aria-label", t1v.label).style("border", "1px solid black").style("padding", "3px").style("word-break", t1v.label.length > 12 ? "break-all" : "normal");
177
- const column_keys = columns.map((d) => d.key);
178
- for (const t2label of column_keys) {
179
- const td = tr2.append("td").style("border", "1px solid black").style("padding", "3px 5px").style("text-align", "center");
180
- const v = t1v.lst.find((i2) => i2.label == t2label);
181
- if (v) {
182
- td.html(v.value);
183
- }
184
- }
185
- }
186
- };
187
- }
188
- var tableInit = getCompInit(TdbTable);
189
- export {
190
- tableInit
191
- };
192
- //# sourceMappingURL=table-LLCFO4KK.js.map
@@ -1,247 +0,0 @@
1
- import {
2
- HandlerBase,
3
- getFractionSelectionError,
4
- renderFractionSelection,
5
- renderTable
6
- } from "./chunk-BKW35Z4U.js";
7
- import "./chunk-HJ6L54YS.js";
8
- import "./chunk-ETXOEP4N.js";
9
- import "./chunk-CNFTQSNE.js";
10
- import "./chunk-5NI77Z3O.js";
11
- import "./chunk-TVJOSRCH.js";
12
- import "./chunk-3CIL7KH7.js";
13
- import "./chunk-T4XPCSLP.js";
14
- import "./chunk-CJHNPYFQ.js";
15
- import "./chunk-W5J3LTYS.js";
16
- import "./chunk-NR6WFCPF.js";
17
- import {
18
- termItemType
19
- } from "./chunk-GN2A5NL5.js";
20
- import "./chunk-ME3HB3V6.js";
21
- import "./chunk-HBNB5TRH.js";
22
- import "./chunk-PF4DSFDR.js";
23
- import "./chunk-4OLM3KSB.js";
24
- import "./chunk-6XKAOSQE.js";
25
- import "./chunk-TLT4YIG3.js";
26
- import "./chunk-5R63Q5KH.js";
27
- import "./chunk-I6Y4O3RR.js";
28
- import "./chunk-Q5RDQNIT.js";
29
- import "./chunk-HS5PO5ZQ.js";
30
-
31
- // termsetting/handlers/termCollection.ts
32
- var TermCollectionHandler = class extends HandlerBase {
33
- //main menu dom elements before drag and drop divs are added
34
- constructor(opts) {
35
- super(opts);
36
- this.dom = {};
37
- this.termsetting = opts.termsetting;
38
- this.tw = opts.termsetting.tw;
39
- this.dom.holder = opts.holder || this.termsetting.dom.tip.d;
40
- }
41
- async showEditMenu(div) {
42
- const self = this.termsetting;
43
- div.selectAll("*").remove();
44
- const terms = self.term.termlst;
45
- const groupDiv = div.append("div");
46
- const callback = this.tw.term.memberType == "numeric" ? self.tw.type === "TermCollectionTWFraction" ? addFractionTable(self, groupDiv, terms) : addNumericTable(self, groupDiv, terms) : addCategoricalTable(self, groupDiv, terms);
47
- const buttons = div.append("div").style("padding", "6px 20px");
48
- buttons.append("button").attr("data-testid", "sjpp-term-collection-members-apply").text("Apply").on("click", callback);
49
- }
50
- async showBinsEditMenu(div) {
51
- const self = this.termsetting;
52
- div.selectAll("*").remove();
53
- const { NumericHandler } = await import("./NumericHandler-7RALUACA.js");
54
- const { NumDiscreteEditor } = await import("./NumDiscreteEditor-H6J67YEL.js");
55
- const numericHandler = new NumericHandler({ termsetting: self });
56
- const densityData = { min: 0, max: 1 };
57
- numericHandler.density_data = densityData;
58
- numericHandler.density.density_data = densityData;
59
- numericHandler.density.no_density_data = true;
60
- numericHandler.density.showViolin = async (div2) => {
61
- div2.selectAll("*").remove();
62
- div2.append("div").style("padding", "10px 5px").text("Fraction range is 0 to 1.");
63
- return densityData;
64
- };
65
- numericHandler.density.setBinLines = async () => {
66
- };
67
- const editor = new NumDiscreteEditor({ termsetting: self }, numericHandler);
68
- await editor.showEditMenu(div.append("div"));
69
- const buttons = div.append("div").style("margin", "0px 0px 10px 12px");
70
- buttons.append("button").attr("data-testid", "sjpp-term-collection-bins-apply").text("Apply").on("click", () => {
71
- const editedQ = editor.getEditedQ();
72
- self.q = {
73
- ...editedQ,
74
- denominators: self.q.denominators,
75
- numerators: self.q.numerators
76
- };
77
- self.dom.tip.hide();
78
- self.api.runCallback();
79
- });
80
- buttons.append("button").style("margin-left", "8px").text("Reset").on("click", () => editor.undoEdits());
81
- }
82
- getPillStatus() {
83
- return this.tw.getStatus(this.termsetting.usecase);
84
- }
85
- };
86
- function addFractionTable(self, div, terms) {
87
- const selection = {
88
- numerators: self.q.numerators?.slice() || [],
89
- denominators: self.q.denominators?.slice() || []
90
- };
91
- renderFractionSelection({
92
- holder: div,
93
- termlst: terms,
94
- selection,
95
- propsByTermId: self.term.propsByTermId
96
- });
97
- return () => {
98
- const error = getFractionSelectionError(selection);
99
- if (error) return window.alert(error);
100
- const q = self.q;
101
- q.denominators = selection.denominators;
102
- q.numerators = selection.numerators;
103
- self.api.runCallback();
104
- };
105
- }
106
- function addNumericTable(self, div, terms) {
107
- const selectedRows = getSelectedRows(self, terms);
108
- const rows = [];
109
- for (const [index, term] of terms.entries()) {
110
- const selected = selectedRows.includes(index);
111
- const checked = selected && self.q.numerators?.includes(term.id) ? "checked" : "";
112
- const disabled = selected ? "" : "disabled";
113
- rows.push([
114
- {},
115
- {
116
- html: `<input type='checkbox' data-testid='sjpp-term-collection-sort-member' ${checked} ${disabled} />`
117
- }
118
- ]);
119
- }
120
- const columns = [getTermNameColumn(self, terms), { label: "Use for sorting" }];
121
- const noButtonCallback = () => {
122
- for (const tr of div.select("table").select("tbody").node().querySelectorAll("tr")) {
123
- const memberCheckbox = tr.querySelector(
124
- 'input[type="checkbox"]:not([data-testid="sjpp-term-collection-sort-member"])'
125
- );
126
- const sortingCheckbox = tr.querySelector(
127
- '[data-testid="sjpp-term-collection-sort-member"]'
128
- );
129
- if (!memberCheckbox || !sortingCheckbox) continue;
130
- sortingCheckbox.disabled = !memberCheckbox.checked;
131
- if (!memberCheckbox.checked) sortingCheckbox.checked = false;
132
- }
133
- };
134
- renderTable({
135
- rows,
136
- columns,
137
- div,
138
- maxHeight: "40vh",
139
- noButtonCallback,
140
- striped: false,
141
- showHeader: true,
142
- //false,
143
- selectedRows,
144
- columnButtons: void 0,
145
- //Leave until table.js is typed
146
- buttons: void 0
147
- });
148
- return () => {
149
- const q = self.q;
150
- const trs = div.select("table").select("tbody").node().querySelectorAll("tr");
151
- q.lst = getSelectedTermIds(terms, trs);
152
- q.numerators = terms.filter((term, i) => {
153
- const checked = trs[i].querySelector('[data-testid="sjpp-term-collection-sort-member"]')?.checked;
154
- return checked === true;
155
- }).map((t) => t.id);
156
- self.api.runCallback();
157
- };
158
- }
159
- function addCategoricalTable(self, div, terms) {
160
- const rows = [];
161
- for (let i = 0; i < terms.length; i++) {
162
- rows.push([{}]);
163
- }
164
- const selectedRows = getSelectedRows(self, terms);
165
- const columns = [getTermNameColumn(self, terms)];
166
- renderTable({
167
- rows,
168
- columns,
169
- div: div.append("div").style("margin-top", "10px"),
170
- maxWidth: "30vw",
171
- maxHeight: "40vh",
172
- noButtonCallback: () => {
173
- },
174
- striped: false,
175
- showHeader: true,
176
- //false,
177
- selectedRows,
178
- columnButtons: void 0,
179
- //Leave until table.js is typed
180
- buttons: void 0
181
- });
182
- const categoryDiv = div.append("div").style("margin-top", "15px");
183
- const values = Object.assign({}, ...self.tw.term.termlst?.map((t) => t.values || {}) ?? []);
184
- const categoryTable = categoryDiv.append("div");
185
- const ckSource = self.tw.q.categoryKeys || self.tw.term.categoryKeys || [];
186
- renderTable({
187
- columns: [{ label: "CATEGORIES" }],
188
- rows: ckSource.map((ck) => {
189
- return [{ value: values[ck.key]?.label ?? ck.key, checked: ck.shown }];
190
- }),
191
- div: categoryTable,
192
- maxWidth: "30vw",
193
- maxHeight: "40vh",
194
- noButtonCallback: () => {
195
- },
196
- // FIXME to supply a real callback
197
- striped: false,
198
- showHeader: true,
199
- //false,
200
- selectAll: true,
201
- columnButtons: void 0,
202
- //Leave until table.js is typed
203
- buttons: void 0
204
- });
205
- return () => {
206
- const trs = div.select("table").select("tbody").node().querySelectorAll("tr");
207
- self.q.lst = getSelectedTermIds(terms, trs);
208
- const catTrs = categoryTable.select("table").select("tbody").node().querySelectorAll("tr");
209
- self.q.categoryKeys = ckSource.map((ck, i) => {
210
- const checked = catTrs[i].querySelectorAll("td")[1].querySelector("input")?.checked;
211
- return { key: ck.key, shown: !!checked };
212
- });
213
- self.api.runCallback();
214
- };
215
- }
216
- function getSelectedRows(self, terms) {
217
- const selectedIds = self.q.lst?.length > 0 ? new Set(self.q.lst) : new Set(self.term.termIds?.length > 0 ? self.term.termIds : terms.map((term) => term.id));
218
- return terms.map((term, index) => selectedIds.has(term.id) ? index : -1).filter((index) => index !== -1);
219
- }
220
- function getSelectedTermIds(terms, trs) {
221
- return terms.filter((_, i) => trs[i].querySelectorAll("td")[1].querySelector("input")?.checked === true).map((term) => term.id);
222
- }
223
- function getTermNameColumn(self, terms) {
224
- if (!terms?.[0]) throw new Error("terms[0] missing");
225
- return {
226
- label: termItemType(terms[0]),
227
- fillCell(td, index) {
228
- const term = terms[index];
229
- const color = self.term.propsByTermId?.[term.id]?.color || term.color;
230
- if (color) {
231
- td.append("span").attr("data-testid", "sjpp-term-collection-member-color").style("display", "inline-block").style("width", "10px").style("height", "10px").style("margin-right", "5px").style("background-color", color);
232
- }
233
- td.append("span").text(term.name);
234
- }
235
- };
236
- }
237
- function fillTW(tw) {
238
- if (!tw.type) tw.type = "termCollection";
239
- if (!tw.q) tw.q = { mode: "continuous", type: "compositePercentage" };
240
- else tw.q.mode = "continuous";
241
- return tw;
242
- }
243
- export {
244
- TermCollectionHandler,
245
- fillTW
246
- };
247
- //# sourceMappingURL=termCollection-DAHJGR5P.js.map
@@ -1,29 +0,0 @@
1
- import {
2
- SearchHandler
3
- } from "./chunk-TUO5I6LP.js";
4
- import "./chunk-BKW35Z4U.js";
5
- import "./chunk-HJ6L54YS.js";
6
- import "./chunk-ETXOEP4N.js";
7
- import "./chunk-CNFTQSNE.js";
8
- import "./chunk-5NI77Z3O.js";
9
- import "./chunk-TVJOSRCH.js";
10
- import "./chunk-3CIL7KH7.js";
11
- import "./chunk-T4XPCSLP.js";
12
- import "./chunk-CJHNPYFQ.js";
13
- import "./chunk-W5J3LTYS.js";
14
- import "./chunk-NR6WFCPF.js";
15
- import "./chunk-GN2A5NL5.js";
16
- import "./chunk-ME3HB3V6.js";
17
- import "./chunk-HBNB5TRH.js";
18
- import "./chunk-PF4DSFDR.js";
19
- import "./chunk-4OLM3KSB.js";
20
- import "./chunk-6XKAOSQE.js";
21
- import "./chunk-TLT4YIG3.js";
22
- import "./chunk-5R63Q5KH.js";
23
- import "./chunk-I6Y4O3RR.js";
24
- import "./chunk-Q5RDQNIT.js";
25
- import "./chunk-HS5PO5ZQ.js";
26
- export {
27
- SearchHandler
28
- };
29
- //# sourceMappingURL=termCollection-QIN53TIL.js.map