@sjcrh/proteinpaint-client 2.224.2 → 2.226.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 (976) hide show
  1. package/dist/2dmaf-CSBPMYHO.js +1362 -0
  2. package/dist/AggMatrixInput-2HST4LLJ.js +402 -0
  3. package/dist/AggregateMatrix-UPOAX44L.js +37 -0
  4. package/dist/AppHeader-H5QBVKUS.js +826 -0
  5. package/dist/BoxPlot-JTBQA6PL.js +1247 -0
  6. package/dist/CorrelationVolcano-AWBPVDMT.js +613 -0
  7. package/dist/Cuminc-3BXJVWIH.js +1217 -0
  8. package/dist/DE-237VV46D.js +85 -0
  9. package/dist/DEinput-W443UW5T.js +479 -0
  10. package/dist/DM-TIW623IR.js +86 -0
  11. package/dist/DifferentialAnalysis-PHUA2GPK.js +236 -0
  12. package/dist/Disco-WHV52SCI.js +3445 -0
  13. package/dist/Disco-WHV52SCI.js.map +7 -0
  14. package/dist/Disco.UI-UDUXNCZX.js +239 -0
  15. package/dist/DmrPlot-FZCD6FTX.js +366 -0
  16. package/dist/DmrPlot-FZCD6FTX.js.map +7 -0
  17. package/dist/GB-6UW5LOUV.js +1388 -0
  18. package/dist/GSEA-3CNHMK6M.js +870 -0
  19. package/dist/GeneExpInput-ZOVP7BFY.js +38 -0
  20. package/dist/Geomap-JREOIESM.js +80 -0
  21. package/dist/HicApp-RKAMIUXQ.js +2240 -0
  22. package/dist/IDCViewer-KXV4FU3V.js +10810 -0
  23. package/dist/NumBinaryEditor-FNVYUK2J.js +274 -0
  24. package/dist/NumBinaryEditor.unit.spec-PWR23U3J.js +308 -0
  25. package/dist/NumContEditor-YLBJW64K.js +100 -0
  26. package/dist/NumContEditor.unit.spec-6JWBCPFY.js +160 -0
  27. package/dist/NumCustomBinEditor-42AFCXRN.js +29 -0
  28. package/dist/NumCustomBinEditor.unit.spec-AFBTF2CL.js +393 -0
  29. package/dist/NumDiscreteEditor-FJIBZTBP.js +165 -0
  30. package/dist/NumDiscreteEditor.unit.spec-MC4INDCB.js +229 -0
  31. package/dist/NumRegularBinEditor-2WRE72TL.js +29 -0
  32. package/dist/NumRegularBinEditor.unit.spec-L3S6NRCM.js +274 -0
  33. package/dist/NumSplineEditor-TVMVAN7I.js +205 -0
  34. package/dist/NumSplineEditor.unit.spec-GEL36GZZ.js +220 -0
  35. package/dist/NumericDensity-BNFAVOFO.js +29 -0
  36. package/dist/NumericDensity.unit.spec-XBYUFBTQ.js +414 -0
  37. package/dist/NumericHandler-4VFFJNX6.js +30 -0
  38. package/dist/NumericHandler.unit.spec-76T2IVRS.js +225 -0
  39. package/dist/ProteomeInput-M5UIO73Q.js +610 -0
  40. package/dist/Regression-5LB5TLA6.js +1412 -0
  41. package/dist/RunChart2-HIFXOEKZ.js +744 -0
  42. package/dist/SC-SMMW5MJG.js +1290 -0
  43. package/dist/Violin-COAFYZOV.js +1105 -0
  44. package/dist/Violin-COAFYZOV.js.map +7 -0
  45. package/dist/Volcano-62II76B4.js +2748 -0
  46. package/dist/Volcano-62II76B4.js.map +7 -0
  47. package/dist/Wsi-OYW2L7FR.js +637 -0
  48. package/dist/aboutSunburst-3FYJGR6B.js +93 -0
  49. package/dist/adSandbox-4VHYWBQC.js +29 -0
  50. package/dist/animatedBubbleChart-QCCIC5IT.js +542 -0
  51. package/dist/app-IF7YPCGZ.js +28 -0
  52. package/dist/app-JZ43TSJP.js +38 -0
  53. package/dist/app.js +14 -14
  54. package/dist/bam-2VPZGSW3.js +872 -0
  55. package/dist/barchart-VYTWYYGG.js +38 -0
  56. package/dist/barchart2-XC7J4VEO.js +305 -0
  57. package/dist/block-YGQFUK5L.js +6203 -0
  58. package/dist/block.init-BVP3YZHQ.js +29 -0
  59. package/dist/block.mds.expressionrank-RKDDKY4J.js +350 -0
  60. package/dist/block.mds.geneboxplot-3FZ3EZZ6.js +819 -0
  61. package/dist/block.mds.junction-MCOG37RA.js +1534 -0
  62. package/dist/block.mds.svcnv-IEOR5IQZ.js +6325 -0
  63. package/dist/block.svg-3XHRHYCV.js +155 -0
  64. package/dist/block.tk.aicheck-TMDUGNZX.js +274 -0
  65. package/dist/block.tk.bam-73KW4QEJ.js +1906 -0
  66. package/dist/block.tk.bigwig.ui-E5W6R7DQ.js +202 -0
  67. package/dist/block.tk.hicstraw-BNNE6ZMW.js +814 -0
  68. package/dist/block.tk.junction-DMPRZRNY.js +2353 -0
  69. package/dist/block.tk.junction.textmatrixui-XS2E7MQL.js +190 -0
  70. package/dist/block.tk.ld-QD3XDLO4.js +90 -0
  71. package/dist/block.tk.menu-S6XI732E.js +1050 -0
  72. package/dist/block.tk.pgv-KH4TMR3A.js +934 -0
  73. package/dist/brainImaging-NK4JENN3.js +550 -0
  74. package/dist/brainRegions-YUEMTKYH.js +213 -0
  75. package/dist/bubbleHeatmap-LQCVS4WK.js +374 -0
  76. package/dist/cellTypeBubbleHeatmap-DFRSPWAY.js +274 -0
  77. package/dist/chunk-2N345NXD.js +5790 -0
  78. package/dist/chunk-2N345NXD.js.map +7 -0
  79. package/dist/chunk-37ZEGLVY.js +267 -0
  80. package/dist/chunk-37ZEGLVY.js.map +7 -0
  81. package/dist/chunk-3RPX4ZVV.js +2334 -0
  82. package/dist/chunk-4LK5YFHF.js +102 -0
  83. package/dist/chunk-4WFG5Y3A.js +2095 -0
  84. package/dist/chunk-4WFG5Y3A.js.map +7 -0
  85. package/dist/chunk-4WFXCUT4.js +141 -0
  86. package/dist/chunk-5LY2ASQX.js +305 -0
  87. package/dist/chunk-6PVVV3UW.js +37 -0
  88. package/dist/chunk-6V7ITU5F.js +2349 -0
  89. package/dist/chunk-7UK7CU4F.js +398 -0
  90. package/dist/chunk-AAQDXVQT.js +134 -0
  91. package/dist/chunk-ADJBQCFM.js +243 -0
  92. package/dist/chunk-ATIITEOR.js +692 -0
  93. package/dist/chunk-BWVJAFEQ.js +35 -0
  94. package/dist/chunk-CDCNBN6G.js +50 -0
  95. package/dist/chunk-CGSBIFFO.js +1339 -0
  96. package/dist/chunk-DOC3HBOV.js +119 -0
  97. package/dist/chunk-DPWSIN62.js +26787 -0
  98. package/dist/chunk-DPWSIN62.js.map +7 -0
  99. package/dist/chunk-EARMOT6Q.js +176 -0
  100. package/dist/chunk-ECCXTB5S.js +562 -0
  101. package/dist/chunk-ECTOEM7X.js +96 -0
  102. package/dist/chunk-ECTOEM7X.js.map +7 -0
  103. package/dist/chunk-EKIWZUEO.js +54 -0
  104. package/dist/chunk-FALP6GXG.js +96 -0
  105. package/dist/chunk-FIWVGOSE.js +54 -0
  106. package/dist/chunk-FRD6LQF7.js +103 -0
  107. package/dist/chunk-FRPYXYYQ.js +263 -0
  108. package/dist/chunk-FT5HOBHJ.js +31 -0
  109. package/dist/chunk-FV2GLMSI.js +397 -0
  110. package/dist/chunk-G6SP5IQT.js +626 -0
  111. package/dist/chunk-GZL6YFZJ.js +30 -0
  112. package/dist/chunk-H353EVLK.js +240 -0
  113. package/dist/chunk-HKR5R5YR.js +466 -0
  114. package/dist/chunk-HULTLO4D.js +217 -0
  115. package/dist/chunk-IIN4CG67.js +56 -0
  116. package/dist/chunk-ISWFHYEZ.js +123 -0
  117. package/dist/chunk-JBUTLI3V.js +1253 -0
  118. package/dist/chunk-JCNZJKLK.js +55 -0
  119. package/dist/chunk-JEVDRC64.js +56 -0
  120. package/dist/chunk-KBZAB2H2.js +340 -0
  121. package/dist/chunk-KDKJLITX.js +54 -0
  122. package/dist/chunk-KNFJN6CM.js +299 -0
  123. package/dist/chunk-KSYGLBZ4.js +4389 -0
  124. package/dist/chunk-KUOXZIH4.js +348 -0
  125. package/dist/chunk-KZ54E2FU.js +184 -0
  126. package/dist/chunk-L7FMBWWK.js +6375 -0
  127. package/dist/chunk-LMONIWPI.js +30 -0
  128. package/dist/chunk-LTY7WOAT.js +281 -0
  129. package/dist/chunk-LVFWXUUX.js +34 -0
  130. package/dist/chunk-LVFWXUUX.js.map +7 -0
  131. package/dist/chunk-LYDN734A.js +194 -0
  132. package/dist/chunk-LYMYO6TY.js +652 -0
  133. package/dist/chunk-MRZUZDRA.js +444 -0
  134. package/dist/chunk-NGBI4FST.js +195 -0
  135. package/dist/chunk-OKM4ACTA.js +170 -0
  136. package/dist/chunk-OUDHHMZU.js +159 -0
  137. package/dist/chunk-OVXHMJJJ.js +59 -0
  138. package/dist/chunk-OYXRYWGU.js +2932 -0
  139. package/dist/chunk-P2HMCEMM.js +5254 -0
  140. package/dist/chunk-P2HMCEMM.js.map +7 -0
  141. package/dist/chunk-P5FHYGJK.js +848 -0
  142. package/dist/chunk-P7QDNXSH.js +276 -0
  143. package/dist/chunk-PI2MCZXG.js +140 -0
  144. package/dist/chunk-Q7GK35TB.js +257 -0
  145. package/dist/chunk-QXRM5NMW.js +274 -0
  146. package/dist/chunk-RI3GAHQE.js +255 -0
  147. package/dist/chunk-RI3GAHQE.js.map +7 -0
  148. package/dist/chunk-SH7SL4I5.js +1219 -0
  149. package/dist/chunk-SJHWZZ4M.js +70 -0
  150. package/dist/chunk-T2W4JHWJ.js +472 -0
  151. package/dist/chunk-T2W4JHWJ.js.map +7 -0
  152. package/dist/chunk-TDBS3UFZ.js +379 -0
  153. package/dist/chunk-THHYPA5K.js +48 -0
  154. package/dist/chunk-THHYPA5K.js.map +7 -0
  155. package/dist/chunk-U2OB3S3M.js +14 -0
  156. package/dist/chunk-UA2ADBTO.js +42 -0
  157. package/dist/chunk-USGUVW5Q.js +182 -0
  158. package/dist/chunk-UWVDD4C2.js +480 -0
  159. package/dist/chunk-W2SBSEKT.js +550 -0
  160. package/dist/chunk-WUCIHN7D.js +382 -0
  161. package/dist/chunk-XAHZYGKW.js +468 -0
  162. package/dist/chunk-XKWLP433.js +328 -0
  163. package/dist/chunk-XKWLP433.js.map +7 -0
  164. package/dist/chunk-YWB2QHV2.js +2799 -0
  165. package/dist/chunk-Z6M77JDG.js +2008 -0
  166. package/dist/chunk-Z7RFFJXU.js +516 -0
  167. package/dist/chunk-ZG7EBTHK.js +203 -0
  168. package/dist/chunk-ZJLJHQWM.js +418 -0
  169. package/dist/chunk-ZKU6RST3.js +2685 -0
  170. package/dist/chunk-ZLWEUYPT.js +296 -0
  171. package/dist/cohort-X327AG3O.js +66 -0
  172. package/dist/cohortSunburst-GNWIVDNA.js +402 -0
  173. package/dist/condition-3M4L2HIM.js +323 -0
  174. package/dist/controls-OKNHZJOU.js +30 -0
  175. package/dist/controls.config-FUKM5LEP.js +30 -0
  176. package/dist/correlation-PC4MXCFM.js +91 -0
  177. package/dist/customdata.inputui-HCRTX56R.js +280 -0
  178. package/dist/dataDownload-HJO7UW7S.js +326 -0
  179. package/dist/databrowser.ui-EY3H6B4S.js +424 -0
  180. package/dist/dictionary-L6CTMFY7.js +109 -0
  181. package/dist/dnaMethylation-FEB5GGXK.js +29 -0
  182. package/dist/dnaMethylation.integration.spec-4DC6TJNZ.js +194 -0
  183. package/dist/dnaMethylation.unit.spec-REOHQOBC.js +95 -0
  184. package/dist/dnaMethylation.unit.spec-REOHQOBC.js.map +7 -0
  185. package/dist/dofetch-YFGOKCKV.js +49 -0
  186. package/dist/e2pca-QSAVTCPL.js +340 -0
  187. package/dist/ep-LAFLKVSW.js +1247 -0
  188. package/dist/expclust.gdc.spec-OM4J6WBL.js +298 -0
  189. package/dist/facet-WHTV2VIX.js +556 -0
  190. package/dist/gb-DLXWWBB6.js +77 -0
  191. package/dist/geneExpClustering-KB2MB2VM.js +240 -0
  192. package/dist/geneExpression-3D7PDZ2I.js +309 -0
  193. package/dist/geneExpression-3RSRGYGQ.js +29 -0
  194. package/dist/geneExpression.unit.spec-EINAWLPR.js +150 -0
  195. package/dist/geneExpression.unit.spec-EINAWLPR.js.map +7 -0
  196. package/dist/geneORA-J4KVSZT3.js +269 -0
  197. package/dist/geneRanking-HKLJ7CN6.js +544 -0
  198. package/dist/geneVariant-3BRGRFPT.js +32 -0
  199. package/dist/geneVariant-VI5DGDAB.js +289 -0
  200. package/dist/geneVariant.integration.spec-3IBX4NNE.js +672 -0
  201. package/dist/genefusion.ui-OESQL7TW.js +299 -0
  202. package/dist/geneset-3BMV3KP4.js +199 -0
  203. package/dist/genomeBrowser.spec-I3WKAITC.js +272 -0
  204. package/dist/grin2-4BBCH3H5.js +66 -0
  205. package/dist/grin2-5L2U32LY.js +945 -0
  206. package/dist/hierCluster-KM56NTN6.js +51 -0
  207. package/dist/hierCluster-XCJF5IQ6.js +55 -0
  208. package/dist/hierCluster.config-E2EYOXX6.js +32 -0
  209. package/dist/hierCluster.integration.spec-IIEJ2YEI.js +479 -0
  210. package/dist/hierCluster.interactivity-AJFEJTGX.js +45 -0
  211. package/dist/hierCluster.renderers-XKI344FM.js +18 -0
  212. package/dist/imagePlot-3B3BXI6I.js +152 -0
  213. package/dist/importPlot-JDVH7Q2Z.js +8 -0
  214. package/dist/isoformExpression-UFHY5LB2.js +31 -0
  215. package/dist/isoformExpression.unit.spec-U6GDCNQR.js +233 -0
  216. package/dist/junction-W2STW5WW.js +32 -0
  217. package/dist/junction.customTerm-LQYKCZX4.js +15 -0
  218. package/dist/junction.unit.spec-R4DIBFLB.js +178 -0
  219. package/dist/launch.adhoc-KN7HFHJH.js +33 -0
  220. package/dist/leftlabel.sample-CK2EK7J6.js +254 -0
  221. package/dist/leftlabel.sample-CK2EK7J6.js.map +7 -0
  222. package/dist/lollipop-EKIGAAK6.js +162 -0
  223. package/dist/maf-MK2MM7J4.js +451 -0
  224. package/dist/maftimeline-7RTMXWFA.js +583 -0
  225. package/dist/matrix-UM2EZODJ.js +50 -0
  226. package/dist/matrix-YBL4FZYJ.js +55 -0
  227. package/dist/matrix.cells-45ZFADK5.js +25 -0
  228. package/dist/matrix.config-QTBIRXKU.js +33 -0
  229. package/dist/matrix.data-WAMOLSKW.js +22 -0
  230. package/dist/matrix.groups-RXFXZABD.js +25 -0
  231. package/dist/matrix.integration.spec-JZDZRVOK.js +3156 -0
  232. package/dist/matrix.interactivity-P4VYGTB2.js +33 -0
  233. package/dist/matrix.layout-WWPRXXHX.js +35 -0
  234. package/dist/matrix.legend-4MCMVVKO.js +19 -0
  235. package/dist/matrix.renderers-JQTUODDS.js +30 -0
  236. package/dist/matrix.serieses-3IDRKSGO.js +18 -0
  237. package/dist/matrix.sort-EAWOB56R.js +25 -0
  238. package/dist/matrix.sort.unit.spec-FOWLULHA.js +464 -0
  239. package/dist/matrix.sorterUi-Z4JDY7VW.js +15 -0
  240. package/dist/matrix.sorterUi.unit.spec-U5CQDTMX.js +334 -0
  241. package/dist/matrix.unit.spec-VTLD4EOZ.js +146 -0
  242. package/dist/mavb-JIIXJHBK.js +726 -0
  243. package/dist/mds.samplescatterplot-PTWA2V6E.js +1545 -0
  244. package/dist/mds.survivalplot-XVZ66GP5.js +472 -0
  245. package/dist/multivalue-2H7QX7MG.js +79 -0
  246. package/dist/numericDictTermCluster-EHCDRT6J.js +62 -0
  247. package/dist/oncomatrix-RZLZUC32.js +286 -0
  248. package/dist/oncomatrix.spec-Z5UQGTW2.js +439 -0
  249. package/dist/plot.2dvaf-IRBZBJ6B.js +368 -0
  250. package/dist/plot.app-I23IAZ3Z.js +32 -0
  251. package/dist/plot.barplot-PYLRAZB7.js +93 -0
  252. package/dist/plot.boxplot-VBWU7DUG.js +142 -0
  253. package/dist/plot.brainImaging-HDJMEMTK.js +51 -0
  254. package/dist/plot.disco-5BVG3WMT.js +100 -0
  255. package/dist/plot.disco-5BVG3WMT.js.map +7 -0
  256. package/dist/plot.ssgq-S3BKXJMW.js +130 -0
  257. package/dist/plot.vaf2cov-VD7DU2XR.js +249 -0
  258. package/dist/polar2-PYLEVG7E.js +228 -0
  259. package/dist/profileForms-CI2YYD3Y.js +937 -0
  260. package/dist/profilePlot-UCC4ZVHQ.js +45 -0
  261. package/dist/proteinView-FBY6TK3S.js +1346 -0
  262. package/dist/proteomeCohortCompare-2VUSLC6I.js +866 -0
  263. package/dist/proteomeCohortCompare-2VUSLC6I.js.map +7 -0
  264. package/dist/pseudbulk.unit.spec-VPZWNTIA.js +82 -0
  265. package/dist/pseudobulk-RUXGZ7OY.js +31 -0
  266. package/dist/qualitative-3AVR4GRX.js +34 -0
  267. package/dist/qualitative-5QNBKDOZ.js +241 -0
  268. package/dist/radar2-AOYMS54Y.js +323 -0
  269. package/dist/radarFacility2-PP2MAXIP.js +331 -0
  270. package/dist/rememberedGvQ.unit.spec-Q3UZJPE2.js +210 -0
  271. package/dist/render-ASLVKYEX.js +29 -0
  272. package/dist/report-UVYKDMQC.js +213 -0
  273. package/dist/sampleView-6UHR7FSR.js +39 -0
  274. package/dist/samplelst-ABC2CCNN.js +114 -0
  275. package/dist/samplematrix-36UCHZLC.js +2188 -0
  276. package/dist/sc-XLSAM725.js +77 -0
  277. package/dist/scatter-ADOBAOW2.js +84 -0
  278. package/dist/scatter-ZNVLI627.js +919 -0
  279. package/dist/selectGenomeWithTklst-DPDBDYTR.js +125 -0
  280. package/dist/singleCellCellType-STVPYZD4.js +29 -0
  281. package/dist/singleCellCellType.unit.spec-ZLY37AXL.js +150 -0
  282. package/dist/singleCellGeneExpression-PCGLU35S.js +29 -0
  283. package/dist/singleCellGeneExpression.unit.spec-PSLKK362.js +144 -0
  284. package/dist/singleCellNumericValue-SR3SJEOB.js +29 -0
  285. package/dist/singleCellNumericValue.unit.spec-PXVXJ4HJ.js +412 -0
  286. package/dist/singleCellPlot-JXB7M6OH.js +44 -0
  287. package/dist/singlecell-EDSX56QO.js +1562 -0
  288. package/dist/singlecell-PH55NFRX.js +77 -0
  289. package/dist/snp-3VEYBTAQ.js +29 -0
  290. package/dist/snp.unit.spec-V7OB44US.js +167 -0
  291. package/dist/snplocus-HX67RBT5.js +200 -0
  292. package/dist/snplst-H5YXCY33.js +36 -0
  293. package/dist/spliceevent.a53ss.diagram-DBDEEHSK.js +142 -0
  294. package/dist/spliceevent.exonskip.diagram-EYEL6BY6.js +274 -0
  295. package/dist/spliceevent.noeventdiagram-64OEXK7U.js +451 -0
  296. package/dist/ssGSEA-3YWQH6KM.js +29 -0
  297. package/dist/ssGSEA.unit.spec-23V2IXP5.js +79 -0
  298. package/dist/stattable-GPSBCNYC.js +112 -0
  299. package/dist/studyCatalog-W5PATRNY.js +457 -0
  300. package/dist/summarizeCnvGeneexp-YGI23QH5.js +154 -0
  301. package/dist/summarizeGeneexpSurvival-KQ6OLWYR.js +101 -0
  302. package/dist/summarizeMutationCnv-XDHBNEPU.js +155 -0
  303. package/dist/summarizeMutationDiagnosis-VKIJRJ2Q.js +31 -0
  304. package/dist/summarizeMutationSurvival-57YKJGLE.js +95 -0
  305. package/dist/summary-4WQOVIUF.js +40 -0
  306. package/dist/summary.integration.spec-FRNWBU7F.js +405 -0
  307. package/dist/summaryInput-X7DS2YA7.js +238 -0
  308. package/dist/sunburst-3OEAQA3O.js +34 -0
  309. package/dist/sunburst-MSGTXYMM.js +274 -0
  310. package/dist/survival-5KC5CNZU.js +1248 -0
  311. package/dist/survival-QXDS6N46.js +49 -0
  312. package/dist/survival.integration.spec-PKENHLTZ.js +609 -0
  313. package/dist/svgraph-VJLB7BBN.js +1377 -0
  314. package/dist/svmr-6BDEZAS6.js +3834 -0
  315. package/dist/swimmer-R3DN7N36.js +993 -0
  316. package/dist/table-YF5VORU6.js +192 -0
  317. package/dist/termCollection-3KGLZFDW.js +29 -0
  318. package/dist/termCollection-KSHVOPS5.js +247 -0
  319. package/dist/termCollection.unit.spec-HTBDG5PL.js +295 -0
  320. package/dist/termCollectionFractionSelection-MK4NKWUX.js +38 -0
  321. package/dist/termCollectionFractionSelection.unit.spec-AMF32FDN.js +184 -0
  322. package/dist/tk-FDHBAKXQ.js +1198 -0
  323. package/dist/tk-FDHBAKXQ.js.map +7 -0
  324. package/dist/tk-Z54DOECH.js +38 -0
  325. package/dist/tp.ui-M4TZVT53.js +1453 -0
  326. package/dist/tvs.categorical-HY3BWCZR.js +28 -0
  327. package/dist/tvs.condition-Y36TRIX4.js +160 -0
  328. package/dist/tvs.dt-XKVJZP7Y.js +34 -0
  329. package/dist/tvs.dtcnv.categorical-OMRZR4Y7.js +31 -0
  330. package/dist/tvs.dtcnv.continuous-AGYOBI5K.js +72 -0
  331. package/dist/tvs.dtfusion-2JX5Y2IH.js +31 -0
  332. package/dist/tvs.dtitd-SDSLBBWC.js +31 -0
  333. package/dist/tvs.dtsnvindel-LI7K464K.js +31 -0
  334. package/dist/tvs.dtsv-VRCLX7QY.js +31 -0
  335. package/dist/tvs.multivalue-4OTY6J2S.js +84 -0
  336. package/dist/tvs.numeric-CDATYOR2.js +32 -0
  337. package/dist/tvs.samplelst-76JOJG2M.js +95 -0
  338. package/dist/tvs.survival-WTFJOKIZ.js +110 -0
  339. package/dist/tvs.termCollection-QQXAS7PE.js +118 -0
  340. package/dist/vocabulary-6ACAEFTL.js +32 -0
  341. package/dist/wsi.direct-OS32TQRM.js +11515 -0
  342. package/package.json +3 -3
  343. package/dist/2dmaf-OWA6REJ5.js +0 -1362
  344. package/dist/AggMatrixInput-5GC33U5A.js +0 -402
  345. package/dist/AggregateMatrix-CMJFO53B.js +0 -37
  346. package/dist/AppHeader-KJCXF35P.js +0 -826
  347. package/dist/BoxPlot-NZTO6CLZ.js +0 -1247
  348. package/dist/CorrelationVolcano-GHTPFM2V.js +0 -613
  349. package/dist/Cuminc-HHBYFFFM.js +0 -1217
  350. package/dist/DE-VVKIMVXD.js +0 -85
  351. package/dist/DEinput-F7HSM2SO.js +0 -479
  352. package/dist/DM-UBCIWZEY.js +0 -86
  353. package/dist/DifferentialAnalysis-UUXXMOQS.js +0 -236
  354. package/dist/Disco-NHXU7LG7.js +0 -3384
  355. package/dist/Disco-NHXU7LG7.js.map +0 -7
  356. package/dist/Disco.UI-GSSSK4YJ.js +0 -239
  357. package/dist/DmrPlot-QFSU62PY.js +0 -344
  358. package/dist/DmrPlot-QFSU62PY.js.map +0 -7
  359. package/dist/GB-CIQGJBJP.js +0 -1388
  360. package/dist/GSEA-3GVFEJTX.js +0 -870
  361. package/dist/GeneExpInput-CFU3Q7FM.js +0 -38
  362. package/dist/Geomap-NMVFA77Q.js +0 -80
  363. package/dist/HicApp-4FCGUUJD.js +0 -2240
  364. package/dist/IDCViewer-WFB6AXHD.js +0 -10810
  365. package/dist/NumBinaryEditor-4WUDJRSU.js +0 -274
  366. package/dist/NumBinaryEditor.unit.spec-MV53GTGQ.js +0 -308
  367. package/dist/NumContEditor-U4R6HPDM.js +0 -100
  368. package/dist/NumContEditor.unit.spec-J4ANPBSF.js +0 -160
  369. package/dist/NumCustomBinEditor-QRGDNFP4.js +0 -29
  370. package/dist/NumCustomBinEditor.unit.spec-PPF233FW.js +0 -393
  371. package/dist/NumDiscreteEditor-LNK4KHSL.js +0 -165
  372. package/dist/NumDiscreteEditor.unit.spec-QY6O62JU.js +0 -229
  373. package/dist/NumRegularBinEditor-XTINNM5L.js +0 -29
  374. package/dist/NumRegularBinEditor.unit.spec-FSLARHOC.js +0 -274
  375. package/dist/NumSplineEditor-YSQTKBFA.js +0 -205
  376. package/dist/NumSplineEditor.unit.spec-QNITPY7R.js +0 -220
  377. package/dist/NumericDensity-J5WS74JZ.js +0 -29
  378. package/dist/NumericDensity.unit.spec-4WQWLSSJ.js +0 -414
  379. package/dist/NumericHandler-ZEWC25U2.js +0 -30
  380. package/dist/NumericHandler.unit.spec-A3G5FWGV.js +0 -225
  381. package/dist/ProteomeInput-7DXGQIOO.js +0 -610
  382. package/dist/Regression-VQ5MC6KW.js +0 -1412
  383. package/dist/RunChart2-B33CQUXH.js +0 -744
  384. package/dist/SC-LEVWXS4P.js +0 -1290
  385. package/dist/Violin-L43OHY63.js +0 -1105
  386. package/dist/Violin-L43OHY63.js.map +0 -7
  387. package/dist/Volcano-NTXVM3UR.js +0 -2657
  388. package/dist/Volcano-NTXVM3UR.js.map +0 -7
  389. package/dist/Wsi-VPF6RX3B.js +0 -637
  390. package/dist/aboutSunburst-NGH3V74S.js +0 -93
  391. package/dist/adSandbox-VOAL4P5A.js +0 -29
  392. package/dist/animatedBubbleChart-HKOGYPSS.js +0 -542
  393. package/dist/app-AZLUP2BA.js +0 -28
  394. package/dist/app-JJPKGBEV.js +0 -38
  395. package/dist/bam-GIZSH2MF.js +0 -872
  396. package/dist/barchart-CVTXLIIQ.js +0 -38
  397. package/dist/barchart2-XYC6WITL.js +0 -305
  398. package/dist/block-DXRSU62C.js +0 -6203
  399. package/dist/block.init-U4Y6ROG4.js +0 -29
  400. package/dist/block.mds.expressionrank-BB26LVTM.js +0 -350
  401. package/dist/block.mds.geneboxplot-VVKEU3SL.js +0 -819
  402. package/dist/block.mds.junction-XUZX6EAQ.js +0 -1534
  403. package/dist/block.mds.svcnv-WDSACPWG.js +0 -6325
  404. package/dist/block.svg-T5BA7VLS.js +0 -155
  405. package/dist/block.tk.aicheck-3VN2RDPD.js +0 -274
  406. package/dist/block.tk.bam-5XZ3N4Y7.js +0 -1906
  407. package/dist/block.tk.bigwig.ui-JODVOS4R.js +0 -202
  408. package/dist/block.tk.hicstraw-AFNWJ2YP.js +0 -814
  409. package/dist/block.tk.junction-T2G6XEVS.js +0 -2353
  410. package/dist/block.tk.junction.textmatrixui-FL5MZH7K.js +0 -190
  411. package/dist/block.tk.ld-JKBXDOB5.js +0 -90
  412. package/dist/block.tk.menu-2X4BN7BN.js +0 -1050
  413. package/dist/block.tk.pgv-ASUVEGQF.js +0 -934
  414. package/dist/brainImaging-27442GMQ.js +0 -550
  415. package/dist/brainRegions-3367RQCU.js +0 -213
  416. package/dist/bubbleHeatmap-IOVS6SHX.js +0 -374
  417. package/dist/cellTypeBubbleHeatmap-7XJP6B5W.js +0 -274
  418. package/dist/chunk-2CTAWHGB.js +0 -56
  419. package/dist/chunk-2ESAB2PP.js +0 -848
  420. package/dist/chunk-2GP3LH7J.js +0 -194
  421. package/dist/chunk-2UGYE6EJ.js +0 -54
  422. package/dist/chunk-3TJBSAIO.js +0 -170
  423. package/dist/chunk-46KQE4DV.js +0 -418
  424. package/dist/chunk-4ICGMPPE.js +0 -56
  425. package/dist/chunk-4RQTQDHF.js +0 -5214
  426. package/dist/chunk-4RQTQDHF.js.map +0 -7
  427. package/dist/chunk-5FD6NRGE.js +0 -472
  428. package/dist/chunk-5FD6NRGE.js.map +0 -7
  429. package/dist/chunk-5JBOGNSG.js +0 -159
  430. package/dist/chunk-5OWPH4IH.js +0 -626
  431. package/dist/chunk-63TCOVAK.js +0 -30
  432. package/dist/chunk-7ONTCJWB.js +0 -1219
  433. package/dist/chunk-7Q4KAFCS.js +0 -281
  434. package/dist/chunk-7UXV4IX5.js +0 -102
  435. package/dist/chunk-7ZCYC2DQ.js +0 -70
  436. package/dist/chunk-AQSZLUDV.js +0 -184
  437. package/dist/chunk-BBA5MAFS.js +0 -240
  438. package/dist/chunk-BNJC6OX5.js +0 -2102
  439. package/dist/chunk-BNJC6OX5.js.map +0 -7
  440. package/dist/chunk-BOQYGAYA.js +0 -119
  441. package/dist/chunk-C4YACFGH.js +0 -692
  442. package/dist/chunk-CKO54XWB.js +0 -54
  443. package/dist/chunk-COWLQ74R.js +0 -82
  444. package/dist/chunk-COWLQ74R.js.map +0 -7
  445. package/dist/chunk-CU434U4N.js +0 -35
  446. package/dist/chunk-CZOJUH3C.js +0 -30
  447. package/dist/chunk-D22DJFFZ.js +0 -254
  448. package/dist/chunk-D22DJFFZ.js.map +0 -7
  449. package/dist/chunk-D2YPS46O.js +0 -266
  450. package/dist/chunk-D2YPS46O.js.map +0 -7
  451. package/dist/chunk-DVSTBGZT.js +0 -182
  452. package/dist/chunk-EIO6DMIQ.js +0 -31
  453. package/dist/chunk-EM56Y4X6.js +0 -2685
  454. package/dist/chunk-F6CYUMSM.js +0 -37
  455. package/dist/chunk-FUTHP5J4.js +0 -274
  456. package/dist/chunk-G5GFCBJT.js +0 -217
  457. package/dist/chunk-GOL6A746.js +0 -96
  458. package/dist/chunk-GVLXSPTN.js +0 -141
  459. package/dist/chunk-HNU4RYI5.js +0 -203
  460. package/dist/chunk-HTIZFNBC.js +0 -4389
  461. package/dist/chunk-HUF5BTO6.js +0 -562
  462. package/dist/chunk-HWP3U2VY.js +0 -382
  463. package/dist/chunk-JEXS72M5.js +0 -550
  464. package/dist/chunk-JNIYPQWY.js +0 -176
  465. package/dist/chunk-K5RCZIZN.js +0 -2799
  466. package/dist/chunk-KA3KYNOP.js +0 -195
  467. package/dist/chunk-KGFH5VTH.js +0 -444
  468. package/dist/chunk-KTRDLHCP.js +0 -397
  469. package/dist/chunk-L6TGKNRA.js +0 -516
  470. package/dist/chunk-LN4KNFOQ.js +0 -55
  471. package/dist/chunk-M4ML4ACA.js +0 -134
  472. package/dist/chunk-MIDVLNN3.js +0 -123
  473. package/dist/chunk-MUVXIOXM.js +0 -276
  474. package/dist/chunk-N2RAPA7D.js +0 -42
  475. package/dist/chunk-N6AHRJAM.js +0 -1339
  476. package/dist/chunk-NB4UU4DH.js +0 -54
  477. package/dist/chunk-NGG4737W.js +0 -296
  478. package/dist/chunk-O4BDFBVK.js +0 -1253
  479. package/dist/chunk-OGU7IDV7.js +0 -102
  480. package/dist/chunk-OGU7IDV7.js.map +0 -7
  481. package/dist/chunk-OT2DMA2D.js +0 -652
  482. package/dist/chunk-OVO6NYUR.js +0 -480
  483. package/dist/chunk-OXRZSZKA.js +0 -2008
  484. package/dist/chunk-QMR3QMJG.js +0 -50
  485. package/dist/chunk-QUVGLTCF.js +0 -103
  486. package/dist/chunk-R2H22S4J.js +0 -5786
  487. package/dist/chunk-R2H22S4J.js.map +0 -7
  488. package/dist/chunk-RCLCEA55.js +0 -305
  489. package/dist/chunk-RCVA2RWU.js +0 -466
  490. package/dist/chunk-RSCSTOUN.js +0 -6375
  491. package/dist/chunk-SCXWXLMR.js +0 -237
  492. package/dist/chunk-SCXWXLMR.js.map +0 -7
  493. package/dist/chunk-SQUMXZXI.js +0 -257
  494. package/dist/chunk-T2DORAV4.js +0 -398
  495. package/dist/chunk-TBXJ2CUA.js +0 -14
  496. package/dist/chunk-TQLHKDNS.js +0 -140
  497. package/dist/chunk-TTSKLWP7.js +0 -2932
  498. package/dist/chunk-VQD6GZMU.js +0 -59
  499. package/dist/chunk-VZBRG6HQ.js +0 -263
  500. package/dist/chunk-WQHL6SR3.js +0 -468
  501. package/dist/chunk-X7JGAQ5N.js +0 -340
  502. package/dist/chunk-Z6ZFRHXK.js +0 -2334
  503. package/dist/chunk-ZCY72DDM.js +0 -379
  504. package/dist/chunk-ZHY7ZHWC.js +0 -243
  505. package/dist/chunk-ZIMAIUZD.js +0 -26744
  506. package/dist/chunk-ZIMAIUZD.js.map +0 -7
  507. package/dist/chunk-ZLQ6PAI6.js +0 -299
  508. package/dist/chunk-ZUG4EY4T.js +0 -348
  509. package/dist/chunk-ZUXXBQ7D.js +0 -2349
  510. package/dist/cohort-2DQOQ5AO.js +0 -66
  511. package/dist/cohortSunburst-W6XC7VD6.js +0 -402
  512. package/dist/condition-3A7I5UQA.js +0 -323
  513. package/dist/controls-G5WYBX4P.js +0 -30
  514. package/dist/controls.config-TAFGM2S2.js +0 -30
  515. package/dist/correlation-K4EOOQJU.js +0 -91
  516. package/dist/customdata.inputui-E7RRN3KY.js +0 -280
  517. package/dist/dataDownload-OXZGAE5R.js +0 -326
  518. package/dist/databrowser.ui-IPUF6LUC.js +0 -424
  519. package/dist/dictionary-MUNAUI43.js +0 -109
  520. package/dist/dnaMethylation-SOV4HBAX.js +0 -29
  521. package/dist/dnaMethylation.integration.spec-T4KKTMRL.js +0 -194
  522. package/dist/dofetch-2CR2TVWC.js +0 -49
  523. package/dist/e2pca-EIOJCV4O.js +0 -340
  524. package/dist/ep-5QX3CW6D.js +0 -1247
  525. package/dist/expclust.gdc.spec-TNHPZLYQ.js +0 -298
  526. package/dist/facet-I3OC4DK2.js +0 -556
  527. package/dist/gb-WPIUHR3O.js +0 -77
  528. package/dist/geneExpClustering-EYGZENSP.js +0 -240
  529. package/dist/geneExpression-54L3DH32.js +0 -309
  530. package/dist/geneExpression-6S6H2EVY.js +0 -29
  531. package/dist/geneExpression.unit.spec-VVI2MXIH.js +0 -151
  532. package/dist/geneExpression.unit.spec-VVI2MXIH.js.map +0 -7
  533. package/dist/geneORA-7M64LXZC.js +0 -269
  534. package/dist/geneRanking-676CAA3B.js +0 -544
  535. package/dist/geneVariant-4UPJE6MJ.js +0 -289
  536. package/dist/geneVariant-PFVPL22U.js +0 -32
  537. package/dist/geneVariant.integration.spec-EAJ4OSFQ.js +0 -672
  538. package/dist/genefusion.ui-LP4EJUTO.js +0 -299
  539. package/dist/geneset-ANDOMTPO.js +0 -199
  540. package/dist/genomeBrowser.spec-NUXOOL5N.js +0 -272
  541. package/dist/grin2-K4LRVCES.js +0 -66
  542. package/dist/grin2-YFCWJZFR.js +0 -945
  543. package/dist/hierCluster-POD3DRO4.js +0 -55
  544. package/dist/hierCluster-QA7HXKRD.js +0 -51
  545. package/dist/hierCluster.config-HQ3SVKCE.js +0 -32
  546. package/dist/hierCluster.integration.spec-MOYDWJL3.js +0 -479
  547. package/dist/hierCluster.interactivity-OZTNHXZQ.js +0 -45
  548. package/dist/hierCluster.renderers-46E37NL4.js +0 -18
  549. package/dist/imagePlot-HNAYBWY3.js +0 -152
  550. package/dist/importPlot-XTW46VF4.js +0 -8
  551. package/dist/isoformExpression-2TMTILKG.js +0 -31
  552. package/dist/isoformExpression.unit.spec-SIJWP7TH.js +0 -233
  553. package/dist/junction-AICKHNXX.js +0 -32
  554. package/dist/junction.customTerm-5STKYZ4B.js +0 -15
  555. package/dist/junction.unit.spec-EXFN4MLW.js +0 -178
  556. package/dist/launch.adhoc-PB6PGR7Q.js +0 -33
  557. package/dist/leftlabel.sample-ISUD4A7F.js +0 -253
  558. package/dist/leftlabel.sample-ISUD4A7F.js.map +0 -7
  559. package/dist/lollipop-5UXUAFYY.js +0 -162
  560. package/dist/maf-L6YD25JK.js +0 -451
  561. package/dist/maftimeline-63YZDGJ3.js +0 -583
  562. package/dist/matrix-OPEBHZCW.js +0 -55
  563. package/dist/matrix-TLMWPG7C.js +0 -50
  564. package/dist/matrix.cells-IELMNYC6.js +0 -25
  565. package/dist/matrix.config-J7SVFXLM.js +0 -33
  566. package/dist/matrix.data-DJTJCPO4.js +0 -22
  567. package/dist/matrix.groups-2REICNZK.js +0 -25
  568. package/dist/matrix.integration.spec-ZXU2OEFU.js +0 -3156
  569. package/dist/matrix.interactivity-SX3OR6OI.js +0 -33
  570. package/dist/matrix.layout-ZJ6X5RON.js +0 -35
  571. package/dist/matrix.legend-ZOP72TIO.js +0 -19
  572. package/dist/matrix.renderers-YUSROXKN.js +0 -30
  573. package/dist/matrix.serieses-UMAZNCMR.js +0 -18
  574. package/dist/matrix.sort-2JNIZHNL.js +0 -25
  575. package/dist/matrix.sort.unit.spec-SNB643Y6.js +0 -464
  576. package/dist/matrix.sorterUi-JXEIY6UL.js +0 -15
  577. package/dist/matrix.sorterUi.unit.spec-LDAT4R3H.js +0 -334
  578. package/dist/matrix.unit.spec-QBQIMDLD.js +0 -146
  579. package/dist/mavb-EQUF3VGG.js +0 -726
  580. package/dist/mds.samplescatterplot-73E45ZT7.js +0 -1545
  581. package/dist/mds.survivalplot-DL53IRVD.js +0 -472
  582. package/dist/multivalue-PQN75ENP.js +0 -79
  583. package/dist/numericDictTermCluster-FGMIOTBO.js +0 -62
  584. package/dist/oncomatrix-CCHWOA3N.js +0 -286
  585. package/dist/oncomatrix.spec-GQT3UTCR.js +0 -439
  586. package/dist/plot.2dvaf-L6ZI5ROR.js +0 -368
  587. package/dist/plot.app-A73VXJCP.js +0 -32
  588. package/dist/plot.barplot-HSCHPOO7.js +0 -93
  589. package/dist/plot.boxplot-AXBVNTNH.js +0 -142
  590. package/dist/plot.brainImaging-PEMURKM3.js +0 -51
  591. package/dist/plot.disco-YKMYYVMV.js +0 -98
  592. package/dist/plot.disco-YKMYYVMV.js.map +0 -7
  593. package/dist/plot.ssgq-FGMQXKZU.js +0 -130
  594. package/dist/plot.vaf2cov-IBM7NQEB.js +0 -249
  595. package/dist/polar2-N7KWY36S.js +0 -228
  596. package/dist/profileForms-Q4NN7653.js +0 -937
  597. package/dist/profilePlot-SQ77M6LI.js +0 -45
  598. package/dist/proteinView-KSIZRDNP.js +0 -1346
  599. package/dist/proteomeCohortCompare-GYSBJSDY.js +0 -866
  600. package/dist/proteomeCohortCompare-GYSBJSDY.js.map +0 -7
  601. package/dist/pseudbulk.unit.spec-XELPZVXM.js +0 -82
  602. package/dist/pseudobulk-H3USXM5U.js +0 -31
  603. package/dist/qualitative-ABXENRAF.js +0 -34
  604. package/dist/qualitative-OSEJTJ4D.js +0 -241
  605. package/dist/radar2-VTDQGHWN.js +0 -323
  606. package/dist/radarFacility2-BWGEC5A2.js +0 -331
  607. package/dist/rememberedGvQ.unit.spec-TWUDSEDP.js +0 -210
  608. package/dist/render-C3XJQ2QY.js +0 -29
  609. package/dist/report-7ZZ44X4R.js +0 -213
  610. package/dist/sampleView-CUCNI65Q.js +0 -39
  611. package/dist/samplelst-S7AJQ36J.js +0 -114
  612. package/dist/samplematrix-U7WM6GNB.js +0 -2188
  613. package/dist/sc-FMJHN2SW.js +0 -77
  614. package/dist/scatter-4UMCJNEH.js +0 -919
  615. package/dist/scatter-KMAZ3ZNR.js +0 -84
  616. package/dist/selectGenomeWithTklst-5SRM45BI.js +0 -125
  617. package/dist/singleCellCellType-GIIICJK5.js +0 -29
  618. package/dist/singleCellCellType.unit.spec-MVA7BMGL.js +0 -150
  619. package/dist/singleCellGeneExpression-2QFQHJJH.js +0 -29
  620. package/dist/singleCellGeneExpression.unit.spec-SAIETYHV.js +0 -144
  621. package/dist/singleCellNumericValue-45H5EPIB.js +0 -29
  622. package/dist/singleCellNumericValue.unit.spec-FNKEJ2WC.js +0 -412
  623. package/dist/singleCellPlot-SP7OEGYQ.js +0 -44
  624. package/dist/singlecell-AVZQX4AH.js +0 -1562
  625. package/dist/singlecell-JQKUHGIH.js +0 -77
  626. package/dist/snp-4SA7VABN.js +0 -29
  627. package/dist/snp.unit.spec-YIYGR6GW.js +0 -167
  628. package/dist/snplocus-TDGQ57ZJ.js +0 -200
  629. package/dist/snplst-SWBGRYPA.js +0 -36
  630. package/dist/spliceevent.a53ss.diagram-YODOBS6U.js +0 -142
  631. package/dist/spliceevent.exonskip.diagram-PMZIQ5UG.js +0 -274
  632. package/dist/spliceevent.noeventdiagram-A4T2PNUX.js +0 -451
  633. package/dist/ssGSEA-U7D6HOIV.js +0 -29
  634. package/dist/ssGSEA.unit.spec-SMNAM5DJ.js +0 -79
  635. package/dist/stattable-DBYMPJU6.js +0 -112
  636. package/dist/studyCatalog-7RABX4W5.js +0 -457
  637. package/dist/summarizeCnvGeneexp-YVRW7LWY.js +0 -154
  638. package/dist/summarizeGeneexpSurvival-ZB7IWGPS.js +0 -101
  639. package/dist/summarizeMutationCnv-CUSYURDK.js +0 -155
  640. package/dist/summarizeMutationDiagnosis-NSPCT5WI.js +0 -31
  641. package/dist/summarizeMutationSurvival-2PZZCC4G.js +0 -95
  642. package/dist/summary-CYDZSICI.js +0 -40
  643. package/dist/summary.integration.spec-2TLKJS3X.js +0 -405
  644. package/dist/summaryInput-BRQ5JRGV.js +0 -238
  645. package/dist/sunburst-435LKL2S.js +0 -34
  646. package/dist/sunburst-D5WAGHX6.js +0 -274
  647. package/dist/survival-M63B6DY5.js +0 -1248
  648. package/dist/survival-MHESSYWF.js +0 -49
  649. package/dist/survival.integration.spec-WMS3FTNR.js +0 -609
  650. package/dist/svgraph-LYFGVTHI.js +0 -1377
  651. package/dist/svmr-UR67QZIP.js +0 -3834
  652. package/dist/swimmer-RP4SUEZS.js +0 -993
  653. package/dist/table-V4OOMF3B.js +0 -192
  654. package/dist/termCollection-VHGVBSWW.js +0 -29
  655. package/dist/termCollection-WSNM3YFK.js +0 -247
  656. package/dist/termCollection.unit.spec-NCZUZL6P.js +0 -295
  657. package/dist/termCollectionFractionSelection-XM3FJWBQ.js +0 -38
  658. package/dist/termCollectionFractionSelection.unit.spec-VO4SAV72.js +0 -184
  659. package/dist/tk-G5PKWSXJ.js +0 -1193
  660. package/dist/tk-G5PKWSXJ.js.map +0 -7
  661. package/dist/tk-KIELQHVI.js +0 -37
  662. package/dist/tp.ui-HAKSWLFB.js +0 -1453
  663. package/dist/tvs.categorical-G4DM4JY5.js +0 -28
  664. package/dist/tvs.condition-E5NUQONB.js +0 -160
  665. package/dist/tvs.dt-T4BK24VZ.js +0 -34
  666. package/dist/tvs.dtcnv.categorical-V57TZFRA.js +0 -31
  667. package/dist/tvs.dtcnv.continuous-D4YIB4PN.js +0 -72
  668. package/dist/tvs.dtfusion-6DUFLUNH.js +0 -31
  669. package/dist/tvs.dtitd-GOEPAQGR.js +0 -31
  670. package/dist/tvs.dtsnvindel-ASTXGC4O.js +0 -31
  671. package/dist/tvs.dtsv-7TGDEWXK.js +0 -31
  672. package/dist/tvs.multivalue-SEIGL2W6.js +0 -84
  673. package/dist/tvs.numeric-MLLX5L7Z.js +0 -32
  674. package/dist/tvs.samplelst-HAV7C2EA.js +0 -95
  675. package/dist/tvs.survival-3B522MT2.js +0 -110
  676. package/dist/tvs.termCollection-R5NG4VXP.js +0 -118
  677. package/dist/vocabulary-LBNHNSEN.js +0 -32
  678. package/dist/wsi.direct-ZEZO4NLR.js +0 -11515
  679. /package/dist/{2dmaf-OWA6REJ5.js.map → 2dmaf-CSBPMYHO.js.map} +0 -0
  680. /package/dist/{AggMatrixInput-5GC33U5A.js.map → AggMatrixInput-2HST4LLJ.js.map} +0 -0
  681. /package/dist/{AggregateMatrix-CMJFO53B.js.map → AggregateMatrix-UPOAX44L.js.map} +0 -0
  682. /package/dist/{AppHeader-KJCXF35P.js.map → AppHeader-H5QBVKUS.js.map} +0 -0
  683. /package/dist/{BoxPlot-NZTO6CLZ.js.map → BoxPlot-JTBQA6PL.js.map} +0 -0
  684. /package/dist/{CorrelationVolcano-GHTPFM2V.js.map → CorrelationVolcano-AWBPVDMT.js.map} +0 -0
  685. /package/dist/{Cuminc-HHBYFFFM.js.map → Cuminc-3BXJVWIH.js.map} +0 -0
  686. /package/dist/{DE-VVKIMVXD.js.map → DE-237VV46D.js.map} +0 -0
  687. /package/dist/{DEinput-F7HSM2SO.js.map → DEinput-W443UW5T.js.map} +0 -0
  688. /package/dist/{DM-UBCIWZEY.js.map → DM-TIW623IR.js.map} +0 -0
  689. /package/dist/{DifferentialAnalysis-UUXXMOQS.js.map → DifferentialAnalysis-PHUA2GPK.js.map} +0 -0
  690. /package/dist/{Disco.UI-GSSSK4YJ.js.map → Disco.UI-UDUXNCZX.js.map} +0 -0
  691. /package/dist/{GB-CIQGJBJP.js.map → GB-6UW5LOUV.js.map} +0 -0
  692. /package/dist/{GSEA-3GVFEJTX.js.map → GSEA-3CNHMK6M.js.map} +0 -0
  693. /package/dist/{GeneExpInput-CFU3Q7FM.js.map → GeneExpInput-ZOVP7BFY.js.map} +0 -0
  694. /package/dist/{Geomap-NMVFA77Q.js.map → Geomap-JREOIESM.js.map} +0 -0
  695. /package/dist/{HicApp-4FCGUUJD.js.map → HicApp-RKAMIUXQ.js.map} +0 -0
  696. /package/dist/{IDCViewer-WFB6AXHD.js.map → IDCViewer-KXV4FU3V.js.map} +0 -0
  697. /package/dist/{NumBinaryEditor-4WUDJRSU.js.map → NumBinaryEditor-FNVYUK2J.js.map} +0 -0
  698. /package/dist/{NumBinaryEditor.unit.spec-MV53GTGQ.js.map → NumBinaryEditor.unit.spec-PWR23U3J.js.map} +0 -0
  699. /package/dist/{NumContEditor-U4R6HPDM.js.map → NumContEditor-YLBJW64K.js.map} +0 -0
  700. /package/dist/{NumContEditor.unit.spec-J4ANPBSF.js.map → NumContEditor.unit.spec-6JWBCPFY.js.map} +0 -0
  701. /package/dist/{NumCustomBinEditor-QRGDNFP4.js.map → NumCustomBinEditor-42AFCXRN.js.map} +0 -0
  702. /package/dist/{NumCustomBinEditor.unit.spec-PPF233FW.js.map → NumCustomBinEditor.unit.spec-AFBTF2CL.js.map} +0 -0
  703. /package/dist/{NumDiscreteEditor-LNK4KHSL.js.map → NumDiscreteEditor-FJIBZTBP.js.map} +0 -0
  704. /package/dist/{NumDiscreteEditor.unit.spec-QY6O62JU.js.map → NumDiscreteEditor.unit.spec-MC4INDCB.js.map} +0 -0
  705. /package/dist/{NumRegularBinEditor-XTINNM5L.js.map → NumRegularBinEditor-2WRE72TL.js.map} +0 -0
  706. /package/dist/{NumRegularBinEditor.unit.spec-FSLARHOC.js.map → NumRegularBinEditor.unit.spec-L3S6NRCM.js.map} +0 -0
  707. /package/dist/{NumSplineEditor-YSQTKBFA.js.map → NumSplineEditor-TVMVAN7I.js.map} +0 -0
  708. /package/dist/{NumSplineEditor.unit.spec-QNITPY7R.js.map → NumSplineEditor.unit.spec-GEL36GZZ.js.map} +0 -0
  709. /package/dist/{NumericDensity-J5WS74JZ.js.map → NumericDensity-BNFAVOFO.js.map} +0 -0
  710. /package/dist/{NumericDensity.unit.spec-4WQWLSSJ.js.map → NumericDensity.unit.spec-XBYUFBTQ.js.map} +0 -0
  711. /package/dist/{NumericHandler-ZEWC25U2.js.map → NumericHandler-4VFFJNX6.js.map} +0 -0
  712. /package/dist/{NumericHandler.unit.spec-A3G5FWGV.js.map → NumericHandler.unit.spec-76T2IVRS.js.map} +0 -0
  713. /package/dist/{ProteomeInput-7DXGQIOO.js.map → ProteomeInput-M5UIO73Q.js.map} +0 -0
  714. /package/dist/{Regression-VQ5MC6KW.js.map → Regression-5LB5TLA6.js.map} +0 -0
  715. /package/dist/{RunChart2-B33CQUXH.js.map → RunChart2-HIFXOEKZ.js.map} +0 -0
  716. /package/dist/{SC-LEVWXS4P.js.map → SC-SMMW5MJG.js.map} +0 -0
  717. /package/dist/{Wsi-VPF6RX3B.js.map → Wsi-OYW2L7FR.js.map} +0 -0
  718. /package/dist/{aboutSunburst-NGH3V74S.js.map → aboutSunburst-3FYJGR6B.js.map} +0 -0
  719. /package/dist/{adSandbox-VOAL4P5A.js.map → adSandbox-4VHYWBQC.js.map} +0 -0
  720. /package/dist/{animatedBubbleChart-HKOGYPSS.js.map → animatedBubbleChart-QCCIC5IT.js.map} +0 -0
  721. /package/dist/{app-AZLUP2BA.js.map → app-IF7YPCGZ.js.map} +0 -0
  722. /package/dist/{app-JJPKGBEV.js.map → app-JZ43TSJP.js.map} +0 -0
  723. /package/dist/{bam-GIZSH2MF.js.map → bam-2VPZGSW3.js.map} +0 -0
  724. /package/dist/{barchart-CVTXLIIQ.js.map → barchart-VYTWYYGG.js.map} +0 -0
  725. /package/dist/{barchart2-XYC6WITL.js.map → barchart2-XC7J4VEO.js.map} +0 -0
  726. /package/dist/{block-DXRSU62C.js.map → block-YGQFUK5L.js.map} +0 -0
  727. /package/dist/{block.init-U4Y6ROG4.js.map → block.init-BVP3YZHQ.js.map} +0 -0
  728. /package/dist/{block.mds.expressionrank-BB26LVTM.js.map → block.mds.expressionrank-RKDDKY4J.js.map} +0 -0
  729. /package/dist/{block.mds.geneboxplot-VVKEU3SL.js.map → block.mds.geneboxplot-3FZ3EZZ6.js.map} +0 -0
  730. /package/dist/{block.mds.junction-XUZX6EAQ.js.map → block.mds.junction-MCOG37RA.js.map} +0 -0
  731. /package/dist/{block.mds.svcnv-WDSACPWG.js.map → block.mds.svcnv-IEOR5IQZ.js.map} +0 -0
  732. /package/dist/{block.svg-T5BA7VLS.js.map → block.svg-3XHRHYCV.js.map} +0 -0
  733. /package/dist/{block.tk.aicheck-3VN2RDPD.js.map → block.tk.aicheck-TMDUGNZX.js.map} +0 -0
  734. /package/dist/{block.tk.bam-5XZ3N4Y7.js.map → block.tk.bam-73KW4QEJ.js.map} +0 -0
  735. /package/dist/{block.tk.bigwig.ui-JODVOS4R.js.map → block.tk.bigwig.ui-E5W6R7DQ.js.map} +0 -0
  736. /package/dist/{block.tk.hicstraw-AFNWJ2YP.js.map → block.tk.hicstraw-BNNE6ZMW.js.map} +0 -0
  737. /package/dist/{block.tk.junction-T2G6XEVS.js.map → block.tk.junction-DMPRZRNY.js.map} +0 -0
  738. /package/dist/{block.tk.junction.textmatrixui-FL5MZH7K.js.map → block.tk.junction.textmatrixui-XS2E7MQL.js.map} +0 -0
  739. /package/dist/{block.tk.ld-JKBXDOB5.js.map → block.tk.ld-QD3XDLO4.js.map} +0 -0
  740. /package/dist/{block.tk.menu-2X4BN7BN.js.map → block.tk.menu-S6XI732E.js.map} +0 -0
  741. /package/dist/{block.tk.pgv-ASUVEGQF.js.map → block.tk.pgv-KH4TMR3A.js.map} +0 -0
  742. /package/dist/{brainImaging-27442GMQ.js.map → brainImaging-NK4JENN3.js.map} +0 -0
  743. /package/dist/{brainRegions-3367RQCU.js.map → brainRegions-YUEMTKYH.js.map} +0 -0
  744. /package/dist/{bubbleHeatmap-IOVS6SHX.js.map → bubbleHeatmap-LQCVS4WK.js.map} +0 -0
  745. /package/dist/{cellTypeBubbleHeatmap-7XJP6B5W.js.map → cellTypeBubbleHeatmap-DFRSPWAY.js.map} +0 -0
  746. /package/dist/{chunk-Z6ZFRHXK.js.map → chunk-3RPX4ZVV.js.map} +0 -0
  747. /package/dist/{chunk-7UXV4IX5.js.map → chunk-4LK5YFHF.js.map} +0 -0
  748. /package/dist/{chunk-GVLXSPTN.js.map → chunk-4WFXCUT4.js.map} +0 -0
  749. /package/dist/{chunk-RCLCEA55.js.map → chunk-5LY2ASQX.js.map} +0 -0
  750. /package/dist/{chunk-F6CYUMSM.js.map → chunk-6PVVV3UW.js.map} +0 -0
  751. /package/dist/{chunk-ZUXXBQ7D.js.map → chunk-6V7ITU5F.js.map} +0 -0
  752. /package/dist/{chunk-T2DORAV4.js.map → chunk-7UK7CU4F.js.map} +0 -0
  753. /package/dist/{chunk-M4ML4ACA.js.map → chunk-AAQDXVQT.js.map} +0 -0
  754. /package/dist/{chunk-ZHY7ZHWC.js.map → chunk-ADJBQCFM.js.map} +0 -0
  755. /package/dist/{chunk-C4YACFGH.js.map → chunk-ATIITEOR.js.map} +0 -0
  756. /package/dist/{chunk-CU434U4N.js.map → chunk-BWVJAFEQ.js.map} +0 -0
  757. /package/dist/{chunk-QMR3QMJG.js.map → chunk-CDCNBN6G.js.map} +0 -0
  758. /package/dist/{chunk-N6AHRJAM.js.map → chunk-CGSBIFFO.js.map} +0 -0
  759. /package/dist/{chunk-BOQYGAYA.js.map → chunk-DOC3HBOV.js.map} +0 -0
  760. /package/dist/{chunk-JNIYPQWY.js.map → chunk-EARMOT6Q.js.map} +0 -0
  761. /package/dist/{chunk-HUF5BTO6.js.map → chunk-ECCXTB5S.js.map} +0 -0
  762. /package/dist/{chunk-CKO54XWB.js.map → chunk-EKIWZUEO.js.map} +0 -0
  763. /package/dist/{chunk-GOL6A746.js.map → chunk-FALP6GXG.js.map} +0 -0
  764. /package/dist/{chunk-2UGYE6EJ.js.map → chunk-FIWVGOSE.js.map} +0 -0
  765. /package/dist/{chunk-QUVGLTCF.js.map → chunk-FRD6LQF7.js.map} +0 -0
  766. /package/dist/{chunk-VZBRG6HQ.js.map → chunk-FRPYXYYQ.js.map} +0 -0
  767. /package/dist/{chunk-EIO6DMIQ.js.map → chunk-FT5HOBHJ.js.map} +0 -0
  768. /package/dist/{chunk-KTRDLHCP.js.map → chunk-FV2GLMSI.js.map} +0 -0
  769. /package/dist/{chunk-5OWPH4IH.js.map → chunk-G6SP5IQT.js.map} +0 -0
  770. /package/dist/{chunk-CZOJUH3C.js.map → chunk-GZL6YFZJ.js.map} +0 -0
  771. /package/dist/{chunk-BBA5MAFS.js.map → chunk-H353EVLK.js.map} +0 -0
  772. /package/dist/{chunk-RCVA2RWU.js.map → chunk-HKR5R5YR.js.map} +0 -0
  773. /package/dist/{chunk-G5GFCBJT.js.map → chunk-HULTLO4D.js.map} +0 -0
  774. /package/dist/{chunk-4ICGMPPE.js.map → chunk-IIN4CG67.js.map} +0 -0
  775. /package/dist/{chunk-MIDVLNN3.js.map → chunk-ISWFHYEZ.js.map} +0 -0
  776. /package/dist/{chunk-O4BDFBVK.js.map → chunk-JBUTLI3V.js.map} +0 -0
  777. /package/dist/{chunk-LN4KNFOQ.js.map → chunk-JCNZJKLK.js.map} +0 -0
  778. /package/dist/{chunk-2CTAWHGB.js.map → chunk-JEVDRC64.js.map} +0 -0
  779. /package/dist/{chunk-X7JGAQ5N.js.map → chunk-KBZAB2H2.js.map} +0 -0
  780. /package/dist/{chunk-NB4UU4DH.js.map → chunk-KDKJLITX.js.map} +0 -0
  781. /package/dist/{chunk-ZLQ6PAI6.js.map → chunk-KNFJN6CM.js.map} +0 -0
  782. /package/dist/{chunk-HTIZFNBC.js.map → chunk-KSYGLBZ4.js.map} +0 -0
  783. /package/dist/{chunk-ZUG4EY4T.js.map → chunk-KUOXZIH4.js.map} +0 -0
  784. /package/dist/{chunk-AQSZLUDV.js.map → chunk-KZ54E2FU.js.map} +0 -0
  785. /package/dist/{chunk-RSCSTOUN.js.map → chunk-L7FMBWWK.js.map} +0 -0
  786. /package/dist/{chunk-63TCOVAK.js.map → chunk-LMONIWPI.js.map} +0 -0
  787. /package/dist/{chunk-7Q4KAFCS.js.map → chunk-LTY7WOAT.js.map} +0 -0
  788. /package/dist/{chunk-2GP3LH7J.js.map → chunk-LYDN734A.js.map} +0 -0
  789. /package/dist/{chunk-OT2DMA2D.js.map → chunk-LYMYO6TY.js.map} +0 -0
  790. /package/dist/{chunk-KGFH5VTH.js.map → chunk-MRZUZDRA.js.map} +0 -0
  791. /package/dist/{chunk-KA3KYNOP.js.map → chunk-NGBI4FST.js.map} +0 -0
  792. /package/dist/{chunk-3TJBSAIO.js.map → chunk-OKM4ACTA.js.map} +0 -0
  793. /package/dist/{chunk-5JBOGNSG.js.map → chunk-OUDHHMZU.js.map} +0 -0
  794. /package/dist/{chunk-VQD6GZMU.js.map → chunk-OVXHMJJJ.js.map} +0 -0
  795. /package/dist/{chunk-TTSKLWP7.js.map → chunk-OYXRYWGU.js.map} +0 -0
  796. /package/dist/{chunk-2ESAB2PP.js.map → chunk-P5FHYGJK.js.map} +0 -0
  797. /package/dist/{chunk-MUVXIOXM.js.map → chunk-P7QDNXSH.js.map} +0 -0
  798. /package/dist/{chunk-TQLHKDNS.js.map → chunk-PI2MCZXG.js.map} +0 -0
  799. /package/dist/{chunk-SQUMXZXI.js.map → chunk-Q7GK35TB.js.map} +0 -0
  800. /package/dist/{chunk-FUTHP5J4.js.map → chunk-QXRM5NMW.js.map} +0 -0
  801. /package/dist/{chunk-7ONTCJWB.js.map → chunk-SH7SL4I5.js.map} +0 -0
  802. /package/dist/{chunk-7ZCYC2DQ.js.map → chunk-SJHWZZ4M.js.map} +0 -0
  803. /package/dist/{chunk-ZCY72DDM.js.map → chunk-TDBS3UFZ.js.map} +0 -0
  804. /package/dist/{chunk-TBXJ2CUA.js.map → chunk-U2OB3S3M.js.map} +0 -0
  805. /package/dist/{chunk-N2RAPA7D.js.map → chunk-UA2ADBTO.js.map} +0 -0
  806. /package/dist/{chunk-DVSTBGZT.js.map → chunk-USGUVW5Q.js.map} +0 -0
  807. /package/dist/{chunk-OVO6NYUR.js.map → chunk-UWVDD4C2.js.map} +0 -0
  808. /package/dist/{chunk-JEXS72M5.js.map → chunk-W2SBSEKT.js.map} +0 -0
  809. /package/dist/{chunk-HWP3U2VY.js.map → chunk-WUCIHN7D.js.map} +0 -0
  810. /package/dist/{chunk-WQHL6SR3.js.map → chunk-XAHZYGKW.js.map} +0 -0
  811. /package/dist/{chunk-K5RCZIZN.js.map → chunk-YWB2QHV2.js.map} +0 -0
  812. /package/dist/{chunk-OXRZSZKA.js.map → chunk-Z6M77JDG.js.map} +0 -0
  813. /package/dist/{chunk-L6TGKNRA.js.map → chunk-Z7RFFJXU.js.map} +0 -0
  814. /package/dist/{chunk-HNU4RYI5.js.map → chunk-ZG7EBTHK.js.map} +0 -0
  815. /package/dist/{chunk-46KQE4DV.js.map → chunk-ZJLJHQWM.js.map} +0 -0
  816. /package/dist/{chunk-EM56Y4X6.js.map → chunk-ZKU6RST3.js.map} +0 -0
  817. /package/dist/{chunk-NGG4737W.js.map → chunk-ZLWEUYPT.js.map} +0 -0
  818. /package/dist/{cohort-2DQOQ5AO.js.map → cohort-X327AG3O.js.map} +0 -0
  819. /package/dist/{cohortSunburst-W6XC7VD6.js.map → cohortSunburst-GNWIVDNA.js.map} +0 -0
  820. /package/dist/{condition-3A7I5UQA.js.map → condition-3M4L2HIM.js.map} +0 -0
  821. /package/dist/{controls-G5WYBX4P.js.map → controls-OKNHZJOU.js.map} +0 -0
  822. /package/dist/{controls.config-TAFGM2S2.js.map → controls.config-FUKM5LEP.js.map} +0 -0
  823. /package/dist/{correlation-K4EOOQJU.js.map → correlation-PC4MXCFM.js.map} +0 -0
  824. /package/dist/{customdata.inputui-E7RRN3KY.js.map → customdata.inputui-HCRTX56R.js.map} +0 -0
  825. /package/dist/{dataDownload-OXZGAE5R.js.map → dataDownload-HJO7UW7S.js.map} +0 -0
  826. /package/dist/{databrowser.ui-IPUF6LUC.js.map → databrowser.ui-EY3H6B4S.js.map} +0 -0
  827. /package/dist/{dictionary-MUNAUI43.js.map → dictionary-L6CTMFY7.js.map} +0 -0
  828. /package/dist/{dnaMethylation-SOV4HBAX.js.map → dnaMethylation-FEB5GGXK.js.map} +0 -0
  829. /package/dist/{dnaMethylation.integration.spec-T4KKTMRL.js.map → dnaMethylation.integration.spec-4DC6TJNZ.js.map} +0 -0
  830. /package/dist/{dofetch-2CR2TVWC.js.map → dofetch-YFGOKCKV.js.map} +0 -0
  831. /package/dist/{e2pca-EIOJCV4O.js.map → e2pca-QSAVTCPL.js.map} +0 -0
  832. /package/dist/{ep-5QX3CW6D.js.map → ep-LAFLKVSW.js.map} +0 -0
  833. /package/dist/{expclust.gdc.spec-TNHPZLYQ.js.map → expclust.gdc.spec-OM4J6WBL.js.map} +0 -0
  834. /package/dist/{facet-I3OC4DK2.js.map → facet-WHTV2VIX.js.map} +0 -0
  835. /package/dist/{gb-WPIUHR3O.js.map → gb-DLXWWBB6.js.map} +0 -0
  836. /package/dist/{geneExpClustering-EYGZENSP.js.map → geneExpClustering-KB2MB2VM.js.map} +0 -0
  837. /package/dist/{geneExpression-54L3DH32.js.map → geneExpression-3D7PDZ2I.js.map} +0 -0
  838. /package/dist/{geneExpression-6S6H2EVY.js.map → geneExpression-3RSRGYGQ.js.map} +0 -0
  839. /package/dist/{geneORA-7M64LXZC.js.map → geneORA-J4KVSZT3.js.map} +0 -0
  840. /package/dist/{geneRanking-676CAA3B.js.map → geneRanking-HKLJ7CN6.js.map} +0 -0
  841. /package/dist/{geneVariant-PFVPL22U.js.map → geneVariant-3BRGRFPT.js.map} +0 -0
  842. /package/dist/{geneVariant-4UPJE6MJ.js.map → geneVariant-VI5DGDAB.js.map} +0 -0
  843. /package/dist/{geneVariant.integration.spec-EAJ4OSFQ.js.map → geneVariant.integration.spec-3IBX4NNE.js.map} +0 -0
  844. /package/dist/{genefusion.ui-LP4EJUTO.js.map → genefusion.ui-OESQL7TW.js.map} +0 -0
  845. /package/dist/{geneset-ANDOMTPO.js.map → geneset-3BMV3KP4.js.map} +0 -0
  846. /package/dist/{genomeBrowser.spec-NUXOOL5N.js.map → genomeBrowser.spec-I3WKAITC.js.map} +0 -0
  847. /package/dist/{grin2-K4LRVCES.js.map → grin2-4BBCH3H5.js.map} +0 -0
  848. /package/dist/{grin2-YFCWJZFR.js.map → grin2-5L2U32LY.js.map} +0 -0
  849. /package/dist/{hierCluster-POD3DRO4.js.map → hierCluster-KM56NTN6.js.map} +0 -0
  850. /package/dist/{hierCluster-QA7HXKRD.js.map → hierCluster-XCJF5IQ6.js.map} +0 -0
  851. /package/dist/{hierCluster.config-HQ3SVKCE.js.map → hierCluster.config-E2EYOXX6.js.map} +0 -0
  852. /package/dist/{hierCluster.integration.spec-MOYDWJL3.js.map → hierCluster.integration.spec-IIEJ2YEI.js.map} +0 -0
  853. /package/dist/{hierCluster.interactivity-OZTNHXZQ.js.map → hierCluster.interactivity-AJFEJTGX.js.map} +0 -0
  854. /package/dist/{hierCluster.renderers-46E37NL4.js.map → hierCluster.renderers-XKI344FM.js.map} +0 -0
  855. /package/dist/{imagePlot-HNAYBWY3.js.map → imagePlot-3B3BXI6I.js.map} +0 -0
  856. /package/dist/{importPlot-XTW46VF4.js.map → importPlot-JDVH7Q2Z.js.map} +0 -0
  857. /package/dist/{isoformExpression-2TMTILKG.js.map → isoformExpression-UFHY5LB2.js.map} +0 -0
  858. /package/dist/{isoformExpression.unit.spec-SIJWP7TH.js.map → isoformExpression.unit.spec-U6GDCNQR.js.map} +0 -0
  859. /package/dist/{junction-AICKHNXX.js.map → junction-W2STW5WW.js.map} +0 -0
  860. /package/dist/{junction.customTerm-5STKYZ4B.js.map → junction.customTerm-LQYKCZX4.js.map} +0 -0
  861. /package/dist/{junction.unit.spec-EXFN4MLW.js.map → junction.unit.spec-R4DIBFLB.js.map} +0 -0
  862. /package/dist/{launch.adhoc-PB6PGR7Q.js.map → launch.adhoc-KN7HFHJH.js.map} +0 -0
  863. /package/dist/{lollipop-5UXUAFYY.js.map → lollipop-EKIGAAK6.js.map} +0 -0
  864. /package/dist/{maf-L6YD25JK.js.map → maf-MK2MM7J4.js.map} +0 -0
  865. /package/dist/{maftimeline-63YZDGJ3.js.map → maftimeline-7RTMXWFA.js.map} +0 -0
  866. /package/dist/{matrix-OPEBHZCW.js.map → matrix-UM2EZODJ.js.map} +0 -0
  867. /package/dist/{matrix-TLMWPG7C.js.map → matrix-YBL4FZYJ.js.map} +0 -0
  868. /package/dist/{matrix.cells-IELMNYC6.js.map → matrix.cells-45ZFADK5.js.map} +0 -0
  869. /package/dist/{matrix.config-J7SVFXLM.js.map → matrix.config-QTBIRXKU.js.map} +0 -0
  870. /package/dist/{matrix.data-DJTJCPO4.js.map → matrix.data-WAMOLSKW.js.map} +0 -0
  871. /package/dist/{matrix.groups-2REICNZK.js.map → matrix.groups-RXFXZABD.js.map} +0 -0
  872. /package/dist/{matrix.integration.spec-ZXU2OEFU.js.map → matrix.integration.spec-JZDZRVOK.js.map} +0 -0
  873. /package/dist/{matrix.interactivity-SX3OR6OI.js.map → matrix.interactivity-P4VYGTB2.js.map} +0 -0
  874. /package/dist/{matrix.layout-ZJ6X5RON.js.map → matrix.layout-WWPRXXHX.js.map} +0 -0
  875. /package/dist/{matrix.legend-ZOP72TIO.js.map → matrix.legend-4MCMVVKO.js.map} +0 -0
  876. /package/dist/{matrix.renderers-YUSROXKN.js.map → matrix.renderers-JQTUODDS.js.map} +0 -0
  877. /package/dist/{matrix.serieses-UMAZNCMR.js.map → matrix.serieses-3IDRKSGO.js.map} +0 -0
  878. /package/dist/{matrix.sort-2JNIZHNL.js.map → matrix.sort-EAWOB56R.js.map} +0 -0
  879. /package/dist/{matrix.sort.unit.spec-SNB643Y6.js.map → matrix.sort.unit.spec-FOWLULHA.js.map} +0 -0
  880. /package/dist/{matrix.sorterUi-JXEIY6UL.js.map → matrix.sorterUi-Z4JDY7VW.js.map} +0 -0
  881. /package/dist/{matrix.sorterUi.unit.spec-LDAT4R3H.js.map → matrix.sorterUi.unit.spec-U5CQDTMX.js.map} +0 -0
  882. /package/dist/{matrix.unit.spec-QBQIMDLD.js.map → matrix.unit.spec-VTLD4EOZ.js.map} +0 -0
  883. /package/dist/{mavb-EQUF3VGG.js.map → mavb-JIIXJHBK.js.map} +0 -0
  884. /package/dist/{mds.samplescatterplot-73E45ZT7.js.map → mds.samplescatterplot-PTWA2V6E.js.map} +0 -0
  885. /package/dist/{mds.survivalplot-DL53IRVD.js.map → mds.survivalplot-XVZ66GP5.js.map} +0 -0
  886. /package/dist/{multivalue-PQN75ENP.js.map → multivalue-2H7QX7MG.js.map} +0 -0
  887. /package/dist/{numericDictTermCluster-FGMIOTBO.js.map → numericDictTermCluster-EHCDRT6J.js.map} +0 -0
  888. /package/dist/{oncomatrix-CCHWOA3N.js.map → oncomatrix-RZLZUC32.js.map} +0 -0
  889. /package/dist/{oncomatrix.spec-GQT3UTCR.js.map → oncomatrix.spec-Z5UQGTW2.js.map} +0 -0
  890. /package/dist/{plot.2dvaf-L6ZI5ROR.js.map → plot.2dvaf-IRBZBJ6B.js.map} +0 -0
  891. /package/dist/{plot.app-A73VXJCP.js.map → plot.app-I23IAZ3Z.js.map} +0 -0
  892. /package/dist/{plot.barplot-HSCHPOO7.js.map → plot.barplot-PYLRAZB7.js.map} +0 -0
  893. /package/dist/{plot.boxplot-AXBVNTNH.js.map → plot.boxplot-VBWU7DUG.js.map} +0 -0
  894. /package/dist/{plot.brainImaging-PEMURKM3.js.map → plot.brainImaging-HDJMEMTK.js.map} +0 -0
  895. /package/dist/{plot.ssgq-FGMQXKZU.js.map → plot.ssgq-S3BKXJMW.js.map} +0 -0
  896. /package/dist/{plot.vaf2cov-IBM7NQEB.js.map → plot.vaf2cov-VD7DU2XR.js.map} +0 -0
  897. /package/dist/{polar2-N7KWY36S.js.map → polar2-PYLEVG7E.js.map} +0 -0
  898. /package/dist/{profileForms-Q4NN7653.js.map → profileForms-CI2YYD3Y.js.map} +0 -0
  899. /package/dist/{profilePlot-SQ77M6LI.js.map → profilePlot-UCC4ZVHQ.js.map} +0 -0
  900. /package/dist/{proteinView-KSIZRDNP.js.map → proteinView-FBY6TK3S.js.map} +0 -0
  901. /package/dist/{pseudbulk.unit.spec-XELPZVXM.js.map → pseudbulk.unit.spec-VPZWNTIA.js.map} +0 -0
  902. /package/dist/{pseudobulk-H3USXM5U.js.map → pseudobulk-RUXGZ7OY.js.map} +0 -0
  903. /package/dist/{qualitative-ABXENRAF.js.map → qualitative-3AVR4GRX.js.map} +0 -0
  904. /package/dist/{qualitative-OSEJTJ4D.js.map → qualitative-5QNBKDOZ.js.map} +0 -0
  905. /package/dist/{radar2-VTDQGHWN.js.map → radar2-AOYMS54Y.js.map} +0 -0
  906. /package/dist/{radarFacility2-BWGEC5A2.js.map → radarFacility2-PP2MAXIP.js.map} +0 -0
  907. /package/dist/{rememberedGvQ.unit.spec-TWUDSEDP.js.map → rememberedGvQ.unit.spec-Q3UZJPE2.js.map} +0 -0
  908. /package/dist/{render-C3XJQ2QY.js.map → render-ASLVKYEX.js.map} +0 -0
  909. /package/dist/{report-7ZZ44X4R.js.map → report-UVYKDMQC.js.map} +0 -0
  910. /package/dist/{sampleView-CUCNI65Q.js.map → sampleView-6UHR7FSR.js.map} +0 -0
  911. /package/dist/{samplelst-S7AJQ36J.js.map → samplelst-ABC2CCNN.js.map} +0 -0
  912. /package/dist/{samplematrix-U7WM6GNB.js.map → samplematrix-36UCHZLC.js.map} +0 -0
  913. /package/dist/{sc-FMJHN2SW.js.map → sc-XLSAM725.js.map} +0 -0
  914. /package/dist/{scatter-KMAZ3ZNR.js.map → scatter-ADOBAOW2.js.map} +0 -0
  915. /package/dist/{scatter-4UMCJNEH.js.map → scatter-ZNVLI627.js.map} +0 -0
  916. /package/dist/{selectGenomeWithTklst-5SRM45BI.js.map → selectGenomeWithTklst-DPDBDYTR.js.map} +0 -0
  917. /package/dist/{singleCellCellType-GIIICJK5.js.map → singleCellCellType-STVPYZD4.js.map} +0 -0
  918. /package/dist/{singleCellCellType.unit.spec-MVA7BMGL.js.map → singleCellCellType.unit.spec-ZLY37AXL.js.map} +0 -0
  919. /package/dist/{singleCellGeneExpression-2QFQHJJH.js.map → singleCellGeneExpression-PCGLU35S.js.map} +0 -0
  920. /package/dist/{singleCellGeneExpression.unit.spec-SAIETYHV.js.map → singleCellGeneExpression.unit.spec-PSLKK362.js.map} +0 -0
  921. /package/dist/{singleCellNumericValue-45H5EPIB.js.map → singleCellNumericValue-SR3SJEOB.js.map} +0 -0
  922. /package/dist/{singleCellNumericValue.unit.spec-FNKEJ2WC.js.map → singleCellNumericValue.unit.spec-PXVXJ4HJ.js.map} +0 -0
  923. /package/dist/{singleCellPlot-SP7OEGYQ.js.map → singleCellPlot-JXB7M6OH.js.map} +0 -0
  924. /package/dist/{singlecell-AVZQX4AH.js.map → singlecell-EDSX56QO.js.map} +0 -0
  925. /package/dist/{singlecell-JQKUHGIH.js.map → singlecell-PH55NFRX.js.map} +0 -0
  926. /package/dist/{snp-4SA7VABN.js.map → snp-3VEYBTAQ.js.map} +0 -0
  927. /package/dist/{snp.unit.spec-YIYGR6GW.js.map → snp.unit.spec-V7OB44US.js.map} +0 -0
  928. /package/dist/{snplocus-TDGQ57ZJ.js.map → snplocus-HX67RBT5.js.map} +0 -0
  929. /package/dist/{snplst-SWBGRYPA.js.map → snplst-H5YXCY33.js.map} +0 -0
  930. /package/dist/{spliceevent.a53ss.diagram-YODOBS6U.js.map → spliceevent.a53ss.diagram-DBDEEHSK.js.map} +0 -0
  931. /package/dist/{spliceevent.exonskip.diagram-PMZIQ5UG.js.map → spliceevent.exonskip.diagram-EYEL6BY6.js.map} +0 -0
  932. /package/dist/{spliceevent.noeventdiagram-A4T2PNUX.js.map → spliceevent.noeventdiagram-64OEXK7U.js.map} +0 -0
  933. /package/dist/{ssGSEA-U7D6HOIV.js.map → ssGSEA-3YWQH6KM.js.map} +0 -0
  934. /package/dist/{ssGSEA.unit.spec-SMNAM5DJ.js.map → ssGSEA.unit.spec-23V2IXP5.js.map} +0 -0
  935. /package/dist/{stattable-DBYMPJU6.js.map → stattable-GPSBCNYC.js.map} +0 -0
  936. /package/dist/{studyCatalog-7RABX4W5.js.map → studyCatalog-W5PATRNY.js.map} +0 -0
  937. /package/dist/{summarizeCnvGeneexp-YVRW7LWY.js.map → summarizeCnvGeneexp-YGI23QH5.js.map} +0 -0
  938. /package/dist/{summarizeGeneexpSurvival-ZB7IWGPS.js.map → summarizeGeneexpSurvival-KQ6OLWYR.js.map} +0 -0
  939. /package/dist/{summarizeMutationCnv-CUSYURDK.js.map → summarizeMutationCnv-XDHBNEPU.js.map} +0 -0
  940. /package/dist/{summarizeMutationDiagnosis-NSPCT5WI.js.map → summarizeMutationDiagnosis-VKIJRJ2Q.js.map} +0 -0
  941. /package/dist/{summarizeMutationSurvival-2PZZCC4G.js.map → summarizeMutationSurvival-57YKJGLE.js.map} +0 -0
  942. /package/dist/{summary-CYDZSICI.js.map → summary-4WQOVIUF.js.map} +0 -0
  943. /package/dist/{summary.integration.spec-2TLKJS3X.js.map → summary.integration.spec-FRNWBU7F.js.map} +0 -0
  944. /package/dist/{summaryInput-BRQ5JRGV.js.map → summaryInput-X7DS2YA7.js.map} +0 -0
  945. /package/dist/{sunburst-435LKL2S.js.map → sunburst-3OEAQA3O.js.map} +0 -0
  946. /package/dist/{sunburst-D5WAGHX6.js.map → sunburst-MSGTXYMM.js.map} +0 -0
  947. /package/dist/{survival-M63B6DY5.js.map → survival-5KC5CNZU.js.map} +0 -0
  948. /package/dist/{survival-MHESSYWF.js.map → survival-QXDS6N46.js.map} +0 -0
  949. /package/dist/{survival.integration.spec-WMS3FTNR.js.map → survival.integration.spec-PKENHLTZ.js.map} +0 -0
  950. /package/dist/{svgraph-LYFGVTHI.js.map → svgraph-VJLB7BBN.js.map} +0 -0
  951. /package/dist/{svmr-UR67QZIP.js.map → svmr-6BDEZAS6.js.map} +0 -0
  952. /package/dist/{swimmer-RP4SUEZS.js.map → swimmer-R3DN7N36.js.map} +0 -0
  953. /package/dist/{table-V4OOMF3B.js.map → table-YF5VORU6.js.map} +0 -0
  954. /package/dist/{termCollection-VHGVBSWW.js.map → termCollection-3KGLZFDW.js.map} +0 -0
  955. /package/dist/{termCollection-WSNM3YFK.js.map → termCollection-KSHVOPS5.js.map} +0 -0
  956. /package/dist/{termCollection.unit.spec-NCZUZL6P.js.map → termCollection.unit.spec-HTBDG5PL.js.map} +0 -0
  957. /package/dist/{termCollectionFractionSelection-XM3FJWBQ.js.map → termCollectionFractionSelection-MK4NKWUX.js.map} +0 -0
  958. /package/dist/{termCollectionFractionSelection.unit.spec-VO4SAV72.js.map → termCollectionFractionSelection.unit.spec-AMF32FDN.js.map} +0 -0
  959. /package/dist/{tk-KIELQHVI.js.map → tk-Z54DOECH.js.map} +0 -0
  960. /package/dist/{tp.ui-HAKSWLFB.js.map → tp.ui-M4TZVT53.js.map} +0 -0
  961. /package/dist/{tvs.categorical-G4DM4JY5.js.map → tvs.categorical-HY3BWCZR.js.map} +0 -0
  962. /package/dist/{tvs.condition-E5NUQONB.js.map → tvs.condition-Y36TRIX4.js.map} +0 -0
  963. /package/dist/{tvs.dt-T4BK24VZ.js.map → tvs.dt-XKVJZP7Y.js.map} +0 -0
  964. /package/dist/{tvs.dtcnv.categorical-V57TZFRA.js.map → tvs.dtcnv.categorical-OMRZR4Y7.js.map} +0 -0
  965. /package/dist/{tvs.dtcnv.continuous-D4YIB4PN.js.map → tvs.dtcnv.continuous-AGYOBI5K.js.map} +0 -0
  966. /package/dist/{tvs.dtfusion-6DUFLUNH.js.map → tvs.dtfusion-2JX5Y2IH.js.map} +0 -0
  967. /package/dist/{tvs.dtitd-GOEPAQGR.js.map → tvs.dtitd-SDSLBBWC.js.map} +0 -0
  968. /package/dist/{tvs.dtsnvindel-ASTXGC4O.js.map → tvs.dtsnvindel-LI7K464K.js.map} +0 -0
  969. /package/dist/{tvs.dtsv-7TGDEWXK.js.map → tvs.dtsv-VRCLX7QY.js.map} +0 -0
  970. /package/dist/{tvs.multivalue-SEIGL2W6.js.map → tvs.multivalue-4OTY6J2S.js.map} +0 -0
  971. /package/dist/{tvs.numeric-MLLX5L7Z.js.map → tvs.numeric-CDATYOR2.js.map} +0 -0
  972. /package/dist/{tvs.samplelst-HAV7C2EA.js.map → tvs.samplelst-76JOJG2M.js.map} +0 -0
  973. /package/dist/{tvs.survival-3B522MT2.js.map → tvs.survival-WTFJOKIZ.js.map} +0 -0
  974. /package/dist/{tvs.termCollection-R5NG4VXP.js.map → tvs.termCollection-QQXAS7PE.js.map} +0 -0
  975. /package/dist/{vocabulary-LBNHNSEN.js.map → vocabulary-6ACAEFTL.js.map} +0 -0
  976. /package/dist/{wsi.direct-ZEZO4NLR.js.map → wsi.direct-OS32TQRM.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../node_modules/d3-axis/src/identity.js", "../../node_modules/d3-axis/src/axis.js", "../../node_modules/d3-fetch/src/json.js", "../../node_modules/d3-quadtree/src/add.js", "../../node_modules/d3-quadtree/src/cover.js", "../../node_modules/d3-quadtree/src/data.js", "../../node_modules/d3-quadtree/src/extent.js", "../../node_modules/d3-quadtree/src/quad.js", "../../node_modules/d3-quadtree/src/find.js", "../../node_modules/d3-quadtree/src/remove.js", "../../node_modules/d3-quadtree/src/root.js", "../../node_modules/d3-quadtree/src/size.js", "../../node_modules/d3-quadtree/src/visit.js", "../../node_modules/d3-quadtree/src/visitAfter.js", "../../node_modules/d3-quadtree/src/x.js", "../../node_modules/d3-quadtree/src/y.js", "../../node_modules/d3-quadtree/src/quadtree.js", "../../node_modules/d3-force/src/constant.js", "../../node_modules/d3-force/src/jiggle.js", "../../node_modules/d3-force/src/collide.js", "../../node_modules/d3-force/src/link.js", "../../node_modules/d3-force/src/lcg.js", "../../node_modules/d3-force/src/simulation.js", "../../node_modules/d3-force/src/x.js", "../../node_modules/d3-force/src/y.js", "../../node_modules/d3-geo/src/math.js", "../../node_modules/d3-geo/src/graticule.js", "../../node_modules/d3-geo/src/identity.js", "../../node_modules/d3-geo/src/stream.js", "../../node_modules/d3-geo/src/noop.js", "../../node_modules/d3-geo/src/path/area.js", "../../node_modules/d3-geo/src/path/bounds.js", "../../node_modules/d3-geo/src/path/centroid.js", "../../node_modules/d3-geo/src/path/context.js", "../../node_modules/d3-geo/src/path/measure.js", "../../node_modules/d3-geo/src/path/string.js", "../../node_modules/d3-geo/src/path/index.js", "../../node_modules/d3-geo/src/cartesian.js", "../../node_modules/d3-geo/src/compose.js", "../../node_modules/d3-geo/src/rotation.js", "../../node_modules/d3-geo/src/circle.js", "../../node_modules/d3-geo/src/clip/buffer.js", "../../node_modules/d3-geo/src/pointEqual.js", "../../node_modules/d3-geo/src/clip/rejoin.js", "../../node_modules/d3-geo/src/polygonContains.js", "../../node_modules/d3-geo/src/clip/index.js", "../../node_modules/d3-geo/src/clip/antimeridian.js", "../../node_modules/d3-geo/src/clip/circle.js", "../../node_modules/d3-geo/src/clip/line.js", "../../node_modules/d3-geo/src/clip/rectangle.js", "../../node_modules/d3-geo/src/length.js", "../../node_modules/d3-geo/src/distance.js", "../../node_modules/d3-geo/src/contains.js", "../../node_modules/d3-geo/src/transform.js", "../../node_modules/d3-geo/src/projection/fit.js", "../../node_modules/d3-geo/src/projection/resample.js", "../../node_modules/d3-geo/src/projection/index.js", "../../node_modules/d3-geo/src/projection/naturalEarth1.js", "../../node_modules/d3-scale-chromatic/src/colors.js", "../../node_modules/d3-scale-chromatic/src/categorical/category10.js", "../../node_modules/d3-scale-chromatic/src/ramp.js", "../../node_modules/d3-scale-chromatic/src/sequential-single/Blues.js", "../../node_modules/d3-scale-chromatic/src/sequential-single/Reds.js", "../../node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js", "../../node_modules/d3-scale-chromatic/src/categorical/Dark2.js", "../../node_modules/d3-scale-chromatic/src/categorical/Paired.js", "../../node_modules/d3-scale-chromatic/src/categorical/Tableau10.js", "../../node_modules/d3-scale-chromatic/src/sequential-single/Greys.js", "../../node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js", "../../node_modules/d3-shape/src/constant.js", "../../node_modules/d3-shape/src/math.js", "../../node_modules/d3-path/src/path.js", "../../node_modules/d3-shape/src/path.js", "../../node_modules/d3-shape/src/arc.js", "../../node_modules/d3-shape/src/array.js", "../../node_modules/d3-shape/src/curve/linear.js", "../../node_modules/d3-shape/src/point.js", "../../node_modules/d3-shape/src/line.js", "../../node_modules/d3-shape/src/area.js", "../../node_modules/d3-shape/src/symbol/circle.js", "../../node_modules/d3-shape/src/symbol/cross.js", "../../node_modules/d3-shape/src/symbol/diamond.js", "../../node_modules/d3-shape/src/symbol/square.js", "../../node_modules/d3-shape/src/symbol/star.js", "../../node_modules/d3-shape/src/symbol/triangle.js", "../../node_modules/d3-shape/src/symbol/wye.js", "../../node_modules/d3-shape/src/symbol.js", "../../node_modules/d3-shape/src/curve/monotone.js", "../../node_modules/d3-shape/src/curve/step.js", "../../node_modules/d3-shape/src/descending.js", "../../node_modules/d3-shape/src/identity.js", "../../node_modules/d3-shape/src/pie.js", "../../node_modules/d3-shape/src/curve/basis.js", "../../node_modules/d3-zoom/src/transform.js", "../../node_modules/d3-zoom/src/constant.js", "../../node_modules/d3-zoom/src/event.js", "../../node_modules/d3-zoom/src/noevent.js", "../../node_modules/d3-zoom/src/zoom.js", "../../node_modules/d3-chord/src/math.js", "../../node_modules/d3-chord/src/array.js", "../../node_modules/d3-chord/src/constant.js", "../../node_modules/d3-chord/src/ribbon.js", "../../node_modules/d3-contour/src/array.js", "../../node_modules/d3-contour/src/ascending.js", "../../node_modules/d3-contour/src/area.js", "../../node_modules/d3-contour/src/constant.js", "../../node_modules/d3-contour/src/contains.js", "../../node_modules/d3-contour/src/noop.js", "../../node_modules/d3-contour/src/contours.js", "../../node_modules/d3-contour/src/density.js", "../../shared/types/src/routes/hicgenome.ts", "../../shared/types/src/routes/termdb.bubbleHeatmap.ts", "../../shared/types/src/routes/termdb.categories.ts", "../../shared/types/src/routes/termdb.chat.ts", "../../shared/types/src/routes/termdb.descrstats.ts", "../../shared/types/src/routes/termdb.diffMeth.ts", "../../shared/types/src/routes/termdb.dmrBatch.ts", "../../shared/types/src/routes/termdb.percentile.ts", "../../shared/types/src/routes/termdb.runChart.ts", "../../shared/types/src/routes/termdb.singleCellPlots.ts", "../../shared/types/src/routes/termdb.termchildren.ts", "../../shared/types/src/routes/termdb.violinBox.ts", "../../shared/types/src/terms/constants.ts", "../../shared/types/src/terms/pseudobulk.ts", "../../shared/utils/src/common.ts"],
4
+ "sourcesContent": ["export default function(x) {\n return x;\n}\n", "import identity from \"./identity.js\";\n\nvar top = 1,\n right = 2,\n bottom = 3,\n left = 4,\n epsilon = 1e-6;\n\nfunction translateX(x) {\n return \"translate(\" + x + \",0)\";\n}\n\nfunction translateY(y) {\n return \"translate(0,\" + y + \")\";\n}\n\nfunction number(scale) {\n return d => +scale(d);\n}\n\nfunction center(scale, offset) {\n offset = Math.max(0, scale.bandwidth() - offset * 2) / 2;\n if (scale.round()) offset = Math.round(offset);\n return d => +scale(d) + offset;\n}\n\nfunction entering() {\n return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n var tickArguments = [],\n tickValues = null,\n tickFormat = null,\n tickSizeInner = 6,\n tickSizeOuter = 6,\n tickPadding = 3,\n offset = typeof window !== \"undefined\" && window.devicePixelRatio > 1 ? 0 : 0.5,\n k = orient === top || orient === left ? -1 : 1,\n x = orient === left || orient === right ? \"x\" : \"y\",\n transform = orient === top || orient === bottom ? translateX : translateY;\n\n function axis(context) {\n var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n spacing = Math.max(tickSizeInner, 0) + tickPadding,\n range = scale.range(),\n range0 = +range[0] + offset,\n range1 = +range[range.length - 1] + offset,\n position = (scale.bandwidth ? center : number)(scale.copy(), offset),\n selection = context.selection ? context.selection() : context,\n path = selection.selectAll(\".domain\").data([null]),\n tick = selection.selectAll(\".tick\").data(values, scale).order(),\n tickExit = tick.exit(),\n tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n line = tick.select(\"line\"),\n text = tick.select(\"text\");\n\n path = path.merge(path.enter().insert(\"path\", \".tick\")\n .attr(\"class\", \"domain\")\n .attr(\"stroke\", \"currentColor\"));\n\n tick = tick.merge(tickEnter);\n\n line = line.merge(tickEnter.append(\"line\")\n .attr(\"stroke\", \"currentColor\")\n .attr(x + \"2\", k * tickSizeInner));\n\n text = text.merge(tickEnter.append(\"text\")\n .attr(\"fill\", \"currentColor\")\n .attr(x, k * spacing)\n .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n if (context !== selection) {\n path = path.transition(context);\n tick = tick.transition(context);\n line = line.transition(context);\n text = text.transition(context);\n\n tickExit = tickExit.transition(context)\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d + offset) : this.getAttribute(\"transform\"); });\n\n tickEnter\n .attr(\"opacity\", epsilon)\n .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform((p && isFinite(p = p(d)) ? p : position(d)) + offset); });\n }\n\n tickExit.remove();\n\n path\n .attr(\"d\", orient === left || orient === right\n ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H\" + offset + \"V\" + range1 + \"H\" + k * tickSizeOuter : \"M\" + offset + \",\" + range0 + \"V\" + range1)\n : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V\" + offset + \"H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",\" + offset + \"H\" + range1));\n\n tick\n .attr(\"opacity\", 1)\n .attr(\"transform\", function(d) { return transform(position(d) + offset); });\n\n line\n .attr(x + \"2\", k * tickSizeInner);\n\n text\n .attr(x, k * spacing)\n .text(format);\n\n selection.filter(entering)\n .attr(\"fill\", \"none\")\n .attr(\"font-size\", 10)\n .attr(\"font-family\", \"sans-serif\")\n .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n selection\n .each(function() { this.__axis = position; });\n }\n\n axis.scale = function(_) {\n return arguments.length ? (scale = _, axis) : scale;\n };\n\n axis.ticks = function() {\n return tickArguments = Array.from(arguments), axis;\n };\n\n axis.tickArguments = function(_) {\n return arguments.length ? (tickArguments = _ == null ? [] : Array.from(_), axis) : tickArguments.slice();\n };\n\n axis.tickValues = function(_) {\n return arguments.length ? (tickValues = _ == null ? null : Array.from(_), axis) : tickValues && tickValues.slice();\n };\n\n axis.tickFormat = function(_) {\n return arguments.length ? (tickFormat = _, axis) : tickFormat;\n };\n\n axis.tickSize = function(_) {\n return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeInner = function(_) {\n return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n };\n\n axis.tickSizeOuter = function(_) {\n return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n };\n\n axis.tickPadding = function(_) {\n return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n };\n\n axis.offset = function(_) {\n return arguments.length ? (offset = +_, axis) : offset;\n };\n\n return axis;\n}\n\nexport function axisTop(scale) {\n return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n return axis(left, scale);\n}\n", "function responseJson(response) {\n if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n if (response.status === 204 || response.status === 205) return;\n return response.json();\n}\n\nexport default function(input, init) {\n return fetch(input, init).then(responseJson);\n}\n", "export default function(d) {\n const x = +this._x.call(null, d),\n y = +this._y.call(null, d);\n return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n var parent,\n node = tree._root,\n leaf = {data: d},\n x0 = tree._x0,\n y0 = tree._y0,\n x1 = tree._x1,\n y1 = tree._y1,\n xm,\n ym,\n xp,\n yp,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return tree._root = leaf, tree;\n\n // Find the existing leaf for the new point, or add it.\n while (node.length) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n }\n\n // Is the new point is exactly coincident with the existing point?\n xp = +tree._x.call(null, node.data);\n yp = +tree._y.call(null, node.data);\n if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n // Otherwise, split the leaf node until the old and new point are separated.\n do {\n parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n var d, i, n = data.length,\n x,\n y,\n xz = new Array(n),\n yz = new Array(n),\n x0 = Infinity,\n y0 = Infinity,\n x1 = -Infinity,\n y1 = -Infinity;\n\n // Compute the points and their extent.\n for (i = 0; i < n; ++i) {\n if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n xz[i] = x;\n yz[i] = y;\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n }\n\n // If there were no (valid) points, abort.\n if (x0 > x1 || y0 > y1) return this;\n\n // Expand the tree to cover the new points.\n this.cover(x0, y0).cover(x1, y1);\n\n // Add the new points.\n for (i = 0; i < n; ++i) {\n add(this, xz[i], yz[i], data[i]);\n }\n\n return this;\n}\n", "export default function(x, y) {\n if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n var x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1;\n\n // If the quadtree has no extent, initialize them.\n // Integer extent are necessary so that if we later double the extent,\n // the existing quadrant boundaries don\u2019t change due to floating point error!\n if (isNaN(x0)) {\n x1 = (x0 = Math.floor(x)) + 1;\n y1 = (y0 = Math.floor(y)) + 1;\n }\n\n // Otherwise, double repeatedly to cover.\n else {\n var z = x1 - x0 || 1,\n node = this._root,\n parent,\n i;\n\n while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n i = (y < y0) << 1 | (x < x0);\n parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n switch (i) {\n case 0: x1 = x0 + z, y1 = y0 + z; break;\n case 1: x0 = x1 - z, y1 = y0 + z; break;\n case 2: x1 = x0 + z, y0 = y1 - z; break;\n case 3: x0 = x1 - z, y0 = y1 - z; break;\n }\n }\n\n if (this._root && this._root.length) this._root = node;\n }\n\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n return this;\n}\n", "export default function() {\n var data = [];\n this.visit(function(node) {\n if (!node.length) do data.push(node.data); while (node = node.next)\n });\n return data;\n}\n", "export default function(_) {\n return arguments.length\n ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n", "export default function(node, x0, y0, x1, y1) {\n this.node = node;\n this.x0 = x0;\n this.y0 = y0;\n this.x1 = x1;\n this.y1 = y1;\n}\n", "import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n var data,\n x0 = this._x0,\n y0 = this._y0,\n x1,\n y1,\n x2,\n y2,\n x3 = this._x1,\n y3 = this._y1,\n quads = [],\n node = this._root,\n q,\n i;\n\n if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n if (radius == null) radius = Infinity;\n else {\n x0 = x - radius, y0 = y - radius;\n x3 = x + radius, y3 = y + radius;\n radius *= radius;\n }\n\n while (q = quads.pop()) {\n\n // Stop searching if this quadrant can\u2019t contain a closer node.\n if (!(node = q.node)\n || (x1 = q.x0) > x3\n || (y1 = q.y0) > y3\n || (x2 = q.x1) < x0\n || (y2 = q.y1) < y0) continue;\n\n // Bisect the current quadrant.\n if (node.length) {\n var xm = (x1 + x2) / 2,\n ym = (y1 + y2) / 2;\n\n quads.push(\n new Quad(node[3], xm, ym, x2, y2),\n new Quad(node[2], x1, ym, xm, y2),\n new Quad(node[1], xm, y1, x2, ym),\n new Quad(node[0], x1, y1, xm, ym)\n );\n\n // Visit the closest quadrant first.\n if (i = (y >= ym) << 1 | (x >= xm)) {\n q = quads[quads.length - 1];\n quads[quads.length - 1] = quads[quads.length - 1 - i];\n quads[quads.length - 1 - i] = q;\n }\n }\n\n // Visit this point. (Visiting coincident points isn\u2019t necessary!)\n else {\n var dx = x - +this._x.call(null, node.data),\n dy = y - +this._y.call(null, node.data),\n d2 = dx * dx + dy * dy;\n if (d2 < radius) {\n var d = Math.sqrt(radius = d2);\n x0 = x - d, y0 = y - d;\n x3 = x + d, y3 = y + d;\n data = node.data;\n }\n }\n }\n\n return data;\n}\n", "export default function(d) {\n if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n var parent,\n node = this._root,\n retainer,\n previous,\n next,\n x0 = this._x0,\n y0 = this._y0,\n x1 = this._x1,\n y1 = this._y1,\n x,\n y,\n xm,\n ym,\n right,\n bottom,\n i,\n j;\n\n // If the tree is empty, initialize the root as a leaf.\n if (!node) return this;\n\n // Find the leaf node for the point.\n // While descending, also retain the deepest parent with a non-removed sibling.\n if (node.length) while (true) {\n if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n if (!node.length) break;\n if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n }\n\n // Find the point to remove.\n while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n if (next = node.next) delete node.next;\n\n // If there are multiple coincident points, remove just the point.\n if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n // If this is the root point, remove it.\n if (!parent) return this._root = next, this;\n\n // Remove this leaf.\n next ? parent[i] = next : delete parent[i];\n\n // If the parent now contains exactly one leaf, collapse superfluous parents.\n if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n && node === (parent[3] || parent[2] || parent[1] || parent[0])\n && !node.length) {\n if (retainer) retainer[j] = node;\n else this._root = node;\n }\n\n return this;\n}\n\nexport function removeAll(data) {\n for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n return this;\n}\n", "export default function() {\n return this._root;\n}\n", "export default function() {\n var size = 0;\n this.visit(function(node) {\n if (!node.length) do ++size; while (node = node.next)\n });\n return size;\n}\n", "import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n }\n }\n return this;\n}\n", "import Quad from \"./quad.js\";\n\nexport default function(callback) {\n var quads = [], next = [], q;\n if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n while (q = quads.pop()) {\n var node = q.node;\n if (node.length) {\n var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n }\n next.push(q);\n }\n while (q = next.pop()) {\n callback(q.node, q.x0, q.y0, q.x1, q.y1);\n }\n return this;\n}\n", "export function defaultX(d) {\n return d[0];\n}\n\nexport default function(_) {\n return arguments.length ? (this._x = _, this) : this._x;\n}\n", "export function defaultY(d) {\n return d[1];\n}\n\nexport default function(_) {\n return arguments.length ? (this._y = _, this) : this._y;\n}\n", "import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n this._x = x;\n this._y = y;\n this._x0 = x0;\n this._y0 = y0;\n this._x1 = x1;\n this._y1 = y1;\n this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n var copy = {data: leaf.data}, next = copy;\n while (leaf = leaf.next) next = next.next = {data: leaf.data};\n return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n node = this._root,\n nodes,\n child;\n\n if (!node) return copy;\n\n if (!node.length) return copy._root = leaf_copy(node), copy;\n\n nodes = [{source: node, target: copy._root = new Array(4)}];\n while (node = nodes.pop()) {\n for (var i = 0; i < 4; ++i) {\n if (child = node.source[i]) {\n if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n else node.target[i] = leaf_copy(child);\n }\n }\n }\n\n return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n", "export default function(x) {\n return function() {\n return x;\n };\n}\n", "export default function(random) {\n return (random() - 0.5) * 1e-6;\n}\n", "import {quadtree} from \"d3-quadtree\";\nimport constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction x(d) {\n return d.x + d.vx;\n}\n\nfunction y(d) {\n return d.y + d.vy;\n}\n\nexport default function(radius) {\n var nodes,\n radii,\n random,\n strength = 1,\n iterations = 1;\n\n if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n function force() {\n var i, n = nodes.length,\n tree,\n node,\n xi,\n yi,\n ri,\n ri2;\n\n for (var k = 0; k < iterations; ++k) {\n tree = quadtree(nodes, x, y).visitAfter(prepare);\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n ri = radii[node.index], ri2 = ri * ri;\n xi = node.x + node.vx;\n yi = node.y + node.vy;\n tree.visit(apply);\n }\n }\n\n function apply(quad, x0, y0, x1, y1) {\n var data = quad.data, rj = quad.r, r = ri + rj;\n if (data) {\n if (data.index > node.index) {\n var x = xi - data.x - data.vx,\n y = yi - data.y - data.vy,\n l = x * x + y * y;\n if (l < r * r) {\n if (x === 0) x = jiggle(random), l += x * x;\n if (y === 0) y = jiggle(random), l += y * y;\n l = (r - (l = Math.sqrt(l))) / l * strength;\n node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n node.vy += (y *= l) * r;\n data.vx -= x * (r = 1 - r);\n data.vy -= y * r;\n }\n }\n return;\n }\n return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n }\n }\n\n function prepare(quad) {\n if (quad.data) return quad.r = radii[quad.data.index];\n for (var i = quad.r = 0; i < 4; ++i) {\n if (quad[i] && quad[i].r > quad.r) {\n quad.r = quad[i].r;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length, node;\n radii = new Array(n);\n for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = +_, force) : strength;\n };\n\n force.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n };\n\n return force;\n}\n", "import constant from \"./constant.js\";\nimport jiggle from \"./jiggle.js\";\n\nfunction index(d) {\n return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n var node = nodeById.get(nodeId);\n if (!node) throw new Error(\"node not found: \" + nodeId);\n return node;\n}\n\nexport default function(links) {\n var id = index,\n strength = defaultStrength,\n strengths,\n distance = constant(30),\n distances,\n nodes,\n count,\n bias,\n random,\n iterations = 1;\n\n if (links == null) links = [];\n\n function defaultStrength(link) {\n return 1 / Math.min(count[link.source.index], count[link.target.index]);\n }\n\n function force(alpha) {\n for (var k = 0, n = links.length; k < iterations; ++k) {\n for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n link = links[i], source = link.source, target = link.target;\n x = target.x + target.vx - source.x - source.vx || jiggle(random);\n y = target.y + target.vy - source.y - source.vy || jiggle(random);\n l = Math.sqrt(x * x + y * y);\n l = (l - distances[i]) / l * alpha * strengths[i];\n x *= l, y *= l;\n target.vx -= x * (b = bias[i]);\n target.vy -= y * b;\n source.vx += x * (b = 1 - b);\n source.vy += y * b;\n }\n }\n }\n\n function initialize() {\n if (!nodes) return;\n\n var i,\n n = nodes.length,\n m = links.length,\n nodeById = new Map(nodes.map((d, i) => [id(d, i, nodes), d])),\n link;\n\n for (i = 0, count = new Array(n); i < m; ++i) {\n link = links[i], link.index = i;\n if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n count[link.source.index] = (count[link.source.index] || 0) + 1;\n count[link.target.index] = (count[link.target.index] || 0) + 1;\n }\n\n for (i = 0, bias = new Array(m); i < m; ++i) {\n link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n }\n\n strengths = new Array(m), initializeStrength();\n distances = new Array(m), initializeDistance();\n }\n\n function initializeStrength() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n strengths[i] = +strength(links[i], i, links);\n }\n }\n\n function initializeDistance() {\n if (!nodes) return;\n\n for (var i = 0, n = links.length; i < n; ++i) {\n distances[i] = +distance(links[i], i, links);\n }\n }\n\n force.initialize = function(_nodes, _random) {\n nodes = _nodes;\n random = _random;\n initialize();\n };\n\n force.links = function(_) {\n return arguments.length ? (links = _, initialize(), force) : links;\n };\n\n force.id = function(_) {\n return arguments.length ? (id = _, force) : id;\n };\n\n force.iterations = function(_) {\n return arguments.length ? (iterations = +_, force) : iterations;\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n };\n\n force.distance = function(_) {\n return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n };\n\n return force;\n}\n", "// https://en.wikipedia.org/wiki/Linear_congruential_generator#Parameters_in_common_use\nconst a = 1664525;\nconst c = 1013904223;\nconst m = 4294967296; // 2^32\n\nexport default function() {\n let s = 1;\n return () => (s = (a * s + c) % m) / m;\n}\n", "import {dispatch} from \"d3-dispatch\";\nimport {timer} from \"d3-timer\";\nimport lcg from \"./lcg.js\";\n\nexport function x(d) {\n return d.x;\n}\n\nexport function y(d) {\n return d.y;\n}\n\nvar initialRadius = 10,\n initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n var simulation,\n alpha = 1,\n alphaMin = 0.001,\n alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n alphaTarget = 0,\n velocityDecay = 0.6,\n forces = new Map(),\n stepper = timer(step),\n event = dispatch(\"tick\", \"end\"),\n random = lcg();\n\n if (nodes == null) nodes = [];\n\n function step() {\n tick();\n event.call(\"tick\", simulation);\n if (alpha < alphaMin) {\n stepper.stop();\n event.call(\"end\", simulation);\n }\n }\n\n function tick(iterations) {\n var i, n = nodes.length, node;\n\n if (iterations === undefined) iterations = 1;\n\n for (var k = 0; k < iterations; ++k) {\n alpha += (alphaTarget - alpha) * alphaDecay;\n\n forces.forEach(function(force) {\n force(alpha);\n });\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (node.fx == null) node.x += node.vx *= velocityDecay;\n else node.x = node.fx, node.vx = 0;\n if (node.fy == null) node.y += node.vy *= velocityDecay;\n else node.y = node.fy, node.vy = 0;\n }\n }\n\n return simulation;\n }\n\n function initializeNodes() {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.index = i;\n if (node.fx != null) node.x = node.fx;\n if (node.fy != null) node.y = node.fy;\n if (isNaN(node.x) || isNaN(node.y)) {\n var radius = initialRadius * Math.sqrt(0.5 + i), angle = i * initialAngle;\n node.x = radius * Math.cos(angle);\n node.y = radius * Math.sin(angle);\n }\n if (isNaN(node.vx) || isNaN(node.vy)) {\n node.vx = node.vy = 0;\n }\n }\n }\n\n function initializeForce(force) {\n if (force.initialize) force.initialize(nodes, random);\n return force;\n }\n\n initializeNodes();\n\n return simulation = {\n tick: tick,\n\n restart: function() {\n return stepper.restart(step), simulation;\n },\n\n stop: function() {\n return stepper.stop(), simulation;\n },\n\n nodes: function(_) {\n return arguments.length ? (nodes = _, initializeNodes(), forces.forEach(initializeForce), simulation) : nodes;\n },\n\n alpha: function(_) {\n return arguments.length ? (alpha = +_, simulation) : alpha;\n },\n\n alphaMin: function(_) {\n return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n },\n\n alphaDecay: function(_) {\n return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n },\n\n alphaTarget: function(_) {\n return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n },\n\n velocityDecay: function(_) {\n return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n },\n\n randomSource: function(_) {\n return arguments.length ? (random = _, forces.forEach(initializeForce), simulation) : random;\n },\n\n force: function(name, _) {\n return arguments.length > 1 ? ((_ == null ? forces.delete(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n },\n\n find: function(x, y, radius) {\n var i = 0,\n n = nodes.length,\n dx,\n dy,\n d2,\n node,\n closest;\n\n if (radius == null) radius = Infinity;\n else radius *= radius;\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n dx = x - node.x;\n dy = y - node.y;\n d2 = dx * dx + dy * dy;\n if (d2 < radius) closest = node, radius = d2;\n }\n\n return closest;\n },\n\n on: function(name, _) {\n return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n }\n };\n}\n", "import constant from \"./constant.js\";\n\nexport default function(x) {\n var strength = constant(0.1),\n nodes,\n strengths,\n xz;\n\n if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n xz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n };\n\n return force;\n}\n", "import constant from \"./constant.js\";\n\nexport default function(y) {\n var strength = constant(0.1),\n nodes,\n strengths,\n yz;\n\n if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n function force(alpha) {\n for (var i = 0, n = nodes.length, node; i < n; ++i) {\n node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n }\n }\n\n function initialize() {\n if (!nodes) return;\n var i, n = nodes.length;\n strengths = new Array(n);\n yz = new Array(n);\n for (i = 0; i < n; ++i) {\n strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n }\n }\n\n force.initialize = function(_) {\n nodes = _;\n initialize();\n };\n\n force.strength = function(_) {\n return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n };\n\n force.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n };\n\n return force;\n}\n", "export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var hypot = Math.hypot;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n return (x = sin(x / 2)) * x;\n}\n", "import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n var y = range(y0, y1 - epsilon, dy).concat(y1);\n return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n var x = range(x0, x1 - epsilon, dx).concat(x1);\n return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n var x1, x0, X1, X0,\n y1, y0, Y1, Y0,\n dx = 10, dy = dx, DX = 90, DY = 360,\n x, y, X, Y,\n precision = 2.5;\n\n function graticule() {\n return {type: \"MultiLineString\", coordinates: lines()};\n }\n\n function lines() {\n return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n }\n\n graticule.lines = function() {\n return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n };\n\n graticule.outline = function() {\n return {\n type: \"Polygon\",\n coordinates: [\n X(X0).concat(\n Y(Y1).slice(1),\n X(X1).reverse().slice(1),\n Y(Y0).reverse().slice(1))\n ]\n };\n };\n\n graticule.extent = function(_) {\n if (!arguments.length) return graticule.extentMinor();\n return graticule.extentMajor(_).extentMinor(_);\n };\n\n graticule.extentMajor = function(_) {\n if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n X0 = +_[0][0], X1 = +_[1][0];\n Y0 = +_[0][1], Y1 = +_[1][1];\n if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.extentMinor = function(_) {\n if (!arguments.length) return [[x0, y0], [x1, y1]];\n x0 = +_[0][0], x1 = +_[1][0];\n y0 = +_[0][1], y1 = +_[1][1];\n if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n return graticule.precision(precision);\n };\n\n graticule.step = function(_) {\n if (!arguments.length) return graticule.stepMinor();\n return graticule.stepMajor(_).stepMinor(_);\n };\n\n graticule.stepMajor = function(_) {\n if (!arguments.length) return [DX, DY];\n DX = +_[0], DY = +_[1];\n return graticule;\n };\n\n graticule.stepMinor = function(_) {\n if (!arguments.length) return [dx, dy];\n dx = +_[0], dy = +_[1];\n return graticule;\n };\n\n graticule.precision = function(_) {\n if (!arguments.length) return precision;\n precision = +_;\n x = graticuleX(y0, y1, 90);\n y = graticuleY(x0, x1, precision);\n X = graticuleX(Y0, Y1, 90);\n Y = graticuleY(X0, X1, precision);\n return graticule;\n };\n\n return graticule\n .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n return graticule()();\n}\n", "export default x => x;\n", "function streamGeometry(geometry, stream) {\n if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n streamGeometryType[geometry.type](geometry, stream);\n }\n}\n\nvar streamObjectType = {\n Feature: function(object, stream) {\n streamGeometry(object.geometry, stream);\n },\n FeatureCollection: function(object, stream) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) streamGeometry(features[i].geometry, stream);\n }\n};\n\nvar streamGeometryType = {\n Sphere: function(object, stream) {\n stream.sphere();\n },\n Point: function(object, stream) {\n object = object.coordinates;\n stream.point(object[0], object[1], object[2]);\n },\n MultiPoint: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n },\n LineString: function(object, stream) {\n streamLine(object.coordinates, stream, 0);\n },\n MultiLineString: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamLine(coordinates[i], stream, 0);\n },\n Polygon: function(object, stream) {\n streamPolygon(object.coordinates, stream);\n },\n MultiPolygon: function(object, stream) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) streamPolygon(coordinates[i], stream);\n },\n GeometryCollection: function(object, stream) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) streamGeometry(geometries[i], stream);\n }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n var i = -1, n = coordinates.length - closed, coordinate;\n stream.lineStart();\n while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n var i = -1, n = coordinates.length;\n stream.polygonStart();\n while (++i < n) streamLine(coordinates[i], stream, 1);\n stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n if (object && streamObjectType.hasOwnProperty(object.type)) {\n streamObjectType[object.type](object, stream);\n } else {\n streamGeometry(object, stream);\n }\n}\n", "export default function noop() {}\n", "import {Adder} from \"d3-array\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = new Adder(),\n areaRingSum = new Adder(),\n x00,\n y00,\n x0,\n y0;\n\nvar areaStream = {\n point: noop,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: function() {\n areaStream.lineStart = areaRingStart;\n areaStream.lineEnd = areaRingEnd;\n },\n polygonEnd: function() {\n areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n areaSum.add(abs(areaRingSum));\n areaRingSum = new Adder();\n },\n result: function() {\n var area = areaSum / 2;\n areaSum = new Adder();\n return area;\n }\n};\n\nfunction areaRingStart() {\n areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n areaStream.point = areaPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n areaRingSum.add(y0 * x - x0 * y);\n x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n areaPoint(x00, y00);\n}\n\nexport default areaStream;\n", "import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n y0 = x0,\n x1 = -x0,\n y1 = x1;\n\nvar boundsStream = {\n point: boundsPoint,\n lineStart: noop,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop,\n result: function() {\n var bounds = [[x0, y0], [x1, y1]];\n x1 = y1 = -(y0 = x0 = Infinity);\n return bounds;\n }\n};\n\nfunction boundsPoint(x, y) {\n if (x < x0) x0 = x;\n if (x > x1) x1 = x;\n if (y < y0) y0 = y;\n if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n", "import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n Y0 = 0,\n Z0 = 0,\n X1 = 0,\n Y1 = 0,\n Z1 = 0,\n X2 = 0,\n Y2 = 0,\n Z2 = 0,\n x00,\n y00,\n x0,\n y0;\n\nvar centroidStream = {\n point: centroidPoint,\n lineStart: centroidLineStart,\n lineEnd: centroidLineEnd,\n polygonStart: function() {\n centroidStream.lineStart = centroidRingStart;\n centroidStream.lineEnd = centroidRingEnd;\n },\n polygonEnd: function() {\n centroidStream.point = centroidPoint;\n centroidStream.lineStart = centroidLineStart;\n centroidStream.lineEnd = centroidLineEnd;\n },\n result: function() {\n var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n : Z1 ? [X1 / Z1, Y1 / Z1]\n : Z0 ? [X0 / Z0, Y0 / Z0]\n : [NaN, NaN];\n X0 = Y0 = Z0 =\n X1 = Y1 = Z1 =\n X2 = Y2 = Z2 = 0;\n return centroid;\n }\n};\n\nfunction centroidPoint(x, y) {\n X0 += x;\n Y0 += y;\n ++Z0;\n}\n\nfunction centroidLineStart() {\n centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n centroidStream.point = centroidPointLine;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n centroidStream.point = centroidPointRing;\n centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n var dx = x - x0,\n dy = y - y0,\n z = sqrt(dx * dx + dy * dy);\n\n X1 += z * (x0 + x) / 2;\n Y1 += z * (y0 + y) / 2;\n Z1 += z;\n\n z = y0 * x - x0 * y;\n X2 += z * (x0 + x);\n Y2 += z * (y0 + y);\n Z2 += z * 3;\n centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n", "import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n this._context = context;\n}\n\nPathContext.prototype = {\n _radius: 4.5,\n pointRadius: function(_) {\n return this._radius = _, this;\n },\n polygonStart: function() {\n this._line = 0;\n },\n polygonEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line === 0) this._context.closePath();\n this._point = NaN;\n },\n point: function(x, y) {\n switch (this._point) {\n case 0: {\n this._context.moveTo(x, y);\n this._point = 1;\n break;\n }\n case 1: {\n this._context.lineTo(x, y);\n break;\n }\n default: {\n this._context.moveTo(x + this._radius, y);\n this._context.arc(x, y, this._radius, 0, tau);\n break;\n }\n }\n },\n result: noop\n};\n", "import {Adder} from \"d3-array\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = new Adder(),\n lengthRing,\n x00,\n y00,\n x0,\n y0;\n\nvar lengthStream = {\n point: noop,\n lineStart: function() {\n lengthStream.point = lengthPointFirst;\n },\n lineEnd: function() {\n if (lengthRing) lengthPoint(x00, y00);\n lengthStream.point = noop;\n },\n polygonStart: function() {\n lengthRing = true;\n },\n polygonEnd: function() {\n lengthRing = null;\n },\n result: function() {\n var length = +lengthSum;\n lengthSum = new Adder();\n return length;\n }\n};\n\nfunction lengthPointFirst(x, y) {\n lengthStream.point = lengthPoint;\n x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n x0 -= x, y0 -= y;\n lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n", "// Simple caching for constant-radius points.\nlet cacheDigits, cacheAppend, cacheRadius, cacheCircle;\n\nexport default class PathString {\n constructor(digits) {\n this._append = digits == null ? append : appendRound(digits);\n this._radius = 4.5;\n this._ = \"\";\n }\n pointRadius(_) {\n this._radius = +_;\n return this;\n }\n polygonStart() {\n this._line = 0;\n }\n polygonEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line === 0) this._ += \"Z\";\n this._point = NaN;\n }\n point(x, y) {\n switch (this._point) {\n case 0: {\n this._append`M${x},${y}`;\n this._point = 1;\n break;\n }\n case 1: {\n this._append`L${x},${y}`;\n break;\n }\n default: {\n this._append`M${x},${y}`;\n if (this._radius !== cacheRadius || this._append !== cacheAppend) {\n const r = this._radius;\n const s = this._;\n this._ = \"\"; // stash the old string so we can cache the circle path fragment\n this._append`m0,${r}a${r},${r} 0 1,1 0,${-2 * r}a${r},${r} 0 1,1 0,${2 * r}z`;\n cacheRadius = r;\n cacheAppend = this._append;\n cacheCircle = this._;\n this._ = s;\n }\n this._ += cacheCircle;\n break;\n }\n }\n }\n result() {\n const result = this._;\n this._ = \"\";\n return result.length ? result : null;\n }\n}\n\nfunction append(strings) {\n let i = 1;\n this._ += strings[0];\n for (const j = strings.length; i < j; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n const d = Math.floor(digits);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${digits}`);\n if (d > 15) return append;\n if (d !== cacheDigits) {\n const k = 10 ** d;\n cacheDigits = d;\n cacheAppend = function append(strings) {\n let i = 1;\n this._ += strings[0];\n for (const j = strings.length; i < j; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n }\n return cacheAppend;\n}\n", "import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n let digits = 3,\n pointRadius = 4.5,\n projectionStream,\n contextStream;\n\n function path(object) {\n if (object) {\n if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n stream(object, projectionStream(contextStream));\n }\n return contextStream.result();\n }\n\n path.area = function(object) {\n stream(object, projectionStream(pathArea));\n return pathArea.result();\n };\n\n path.measure = function(object) {\n stream(object, projectionStream(pathMeasure));\n return pathMeasure.result();\n };\n\n path.bounds = function(object) {\n stream(object, projectionStream(pathBounds));\n return pathBounds.result();\n };\n\n path.centroid = function(object) {\n stream(object, projectionStream(pathCentroid));\n return pathCentroid.result();\n };\n\n path.projection = function(_) {\n if (!arguments.length) return projection;\n projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream;\n return path;\n };\n\n path.context = function(_) {\n if (!arguments.length) return context;\n contextStream = _ == null ? (context = null, new PathString(digits)) : new PathContext(context = _);\n if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n return path;\n };\n\n path.pointRadius = function(_) {\n if (!arguments.length) return pointRadius;\n pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n return path;\n };\n\n path.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) digits = null;\n else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n if (context === null) contextStream = new PathString(digits);\n return path;\n };\n\n return path.projection(projection).digits(digits).context(context);\n}\n", "import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n d[0] /= l, d[1] /= l, d[2] /= l;\n}\n", "export default function(a, b) {\n\n function compose(x, y) {\n return x = a(x, y), b(x[0], x[1]);\n }\n\n if (a.invert && b.invert) compose.invert = function(x, y) {\n return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n };\n\n return compose;\n}\n", "import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n return [lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n : rotationLambda(deltaLambda))\n : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n return function(lambda, phi) {\n lambda += deltaLambda;\n if (abs(lambda) > pi) lambda -= Math.round(lambda / tau) * tau;\n return [lambda, phi];\n };\n}\n\nfunction rotationLambda(deltaLambda) {\n var rotation = forwardRotationLambda(deltaLambda);\n rotation.invert = forwardRotationLambda(-deltaLambda);\n return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n var cosDeltaPhi = cos(deltaPhi),\n sinDeltaPhi = sin(deltaPhi),\n cosDeltaGamma = cos(deltaGamma),\n sinDeltaGamma = sin(deltaGamma);\n\n function rotation(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaPhi + x * sinDeltaPhi;\n return [\n atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n asin(k * cosDeltaGamma + y * sinDeltaGamma)\n ];\n }\n\n rotation.invert = function(lambda, phi) {\n var cosPhi = cos(phi),\n x = cos(lambda) * cosPhi,\n y = sin(lambda) * cosPhi,\n z = sin(phi),\n k = z * cosDeltaGamma - y * sinDeltaGamma;\n return [\n atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n asin(k * cosDeltaPhi - x * sinDeltaPhi)\n ];\n };\n\n return rotation;\n}\n\nexport default function(rotate) {\n rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n function forward(coordinates) {\n coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n }\n\n forward.invert = function(coordinates) {\n coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n };\n\n return forward;\n}\n", "import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0\u00B0, 0\u00B0], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n if (!delta) return;\n var cosRadius = cos(radius),\n sinRadius = sin(radius),\n step = direction * delta;\n if (t0 == null) {\n t0 = radius + direction * tau;\n t1 = radius - step / 2;\n } else {\n t0 = circleRadius(cosRadius, t0);\n t1 = circleRadius(cosRadius, t1);\n if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n }\n for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n stream.point(point[0], point[1]);\n }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n point = cartesian(point), point[0] -= cosRadius;\n cartesianNormalizeInPlace(point);\n var radius = acos(-point[1]);\n return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n var center = constant([0, 0]),\n radius = constant(90),\n precision = constant(2),\n ring,\n rotate,\n stream = {point: point};\n\n function point(x, y) {\n ring.push(x = rotate(x, y));\n x[0] *= degrees, x[1] *= degrees;\n }\n\n function circle() {\n var c = center.apply(this, arguments),\n r = radius.apply(this, arguments) * radians,\n p = precision.apply(this, arguments) * radians;\n ring = [];\n rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n circleStream(stream, r, p, 1);\n c = {type: \"Polygon\", coordinates: [ring]};\n ring = rotate = null;\n return c;\n }\n\n circle.center = function(_) {\n return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n };\n\n circle.radius = function(_) {\n return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n };\n\n circle.precision = function(_) {\n return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n };\n\n return circle;\n}\n", "import noop from \"../noop.js\";\n\nexport default function() {\n var lines = [],\n line;\n return {\n point: function(x, y, m) {\n line.push([x, y, m]);\n },\n lineStart: function() {\n lines.push(line = []);\n },\n lineEnd: noop,\n rejoin: function() {\n if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n },\n result: function() {\n var result = lines;\n lines = [];\n line = null;\n return result;\n }\n };\n}\n", "import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n", "import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n this.x = point;\n this.z = points;\n this.o = other; // another intersection\n this.e = entry; // is an entry?\n this.v = false; // visited\n this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n var subject = [],\n clip = [],\n i,\n n;\n\n segments.forEach(function(segment) {\n if ((n = segment.length - 1) <= 0) return;\n var n, p0 = segment[0], p1 = segment[n], x;\n\n if (pointEqual(p0, p1)) {\n if (!p0[2] && !p1[2]) {\n stream.lineStart();\n for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n stream.lineEnd();\n return;\n }\n // handle degenerate cases by moving the point\n p1[0] += 2 * epsilon;\n }\n\n subject.push(x = new Intersection(p0, segment, null, true));\n clip.push(x.o = new Intersection(p0, null, x, false));\n subject.push(x = new Intersection(p1, segment, null, false));\n clip.push(x.o = new Intersection(p1, null, x, true));\n });\n\n if (!subject.length) return;\n\n clip.sort(compareIntersection);\n link(subject);\n link(clip);\n\n for (i = 0, n = clip.length; i < n; ++i) {\n clip[i].e = startInside = !startInside;\n }\n\n var start = subject[0],\n points,\n point;\n\n while (1) {\n // Find first unvisited intersection.\n var current = start,\n isSubject = true;\n while (current.v) if ((current = current.n) === start) return;\n points = current.z;\n stream.lineStart();\n do {\n current.v = current.o.v = true;\n if (current.e) {\n if (isSubject) {\n for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.n.x, 1, stream);\n }\n current = current.n;\n } else {\n if (isSubject) {\n points = current.p.z;\n for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n } else {\n interpolate(current.x, current.p.x, -1, stream);\n }\n current = current.p;\n }\n current = current.o;\n points = current.z;\n isSubject = !isSubject;\n } while (!current.v);\n stream.lineEnd();\n }\n}\n\nfunction link(array) {\n if (!(n = array.length)) return;\n var n,\n i = 0,\n a = array[0],\n b;\n while (++i < n) {\n a.n = b = array[i];\n b.p = a;\n a = b;\n }\n a.n = b = array[0];\n b.p = a;\n}\n", "import {Adder} from \"d3-array\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, epsilon2, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nfunction longitude(point) {\n return abs(point[0]) <= pi ? point[0] : sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n var lambda = longitude(point),\n phi = point[1],\n sinPhi = sin(phi),\n normal = [sin(lambda), -cos(lambda), 0],\n angle = 0,\n winding = 0;\n\n var sum = new Adder();\n\n if (sinPhi === 1) phi = halfPi + epsilon;\n else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n if (!(m = (ring = polygon[i]).length)) continue;\n var ring,\n m,\n point0 = ring[m - 1],\n lambda0 = longitude(point0),\n phi0 = point0[1] / 2 + quarterPi,\n sinPhi0 = sin(phi0),\n cosPhi0 = cos(phi0);\n\n for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n var point1 = ring[j],\n lambda1 = longitude(point1),\n phi1 = point1[1] / 2 + quarterPi,\n sinPhi1 = sin(phi1),\n cosPhi1 = cos(phi1),\n delta = lambda1 - lambda0,\n sign = delta >= 0 ? 1 : -1,\n absDelta = sign * delta,\n antimeridian = absDelta > pi,\n k = sinPhi0 * sinPhi1;\n\n sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n angle += antimeridian ? delta + sign * tau : delta;\n\n // Are the longitudes either side of the point\u2019s meridian (lambda),\n // and are the latitudes smaller than the parallel (phi)?\n if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n var arc = cartesianCross(cartesian(point0), cartesian(point1));\n cartesianNormalizeInPlace(arc);\n var intersection = cartesianCross(normal, arc);\n cartesianNormalizeInPlace(intersection);\n var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n winding += antimeridian ^ delta >= 0 ? 1 : -1;\n }\n }\n }\n }\n\n // First, determine whether the South pole is inside or outside:\n //\n // It is inside if:\n // * the polygon winds around it in a clockwise direction.\n // * the polygon does not (cumulatively) wind around it, but has a negative\n // (counter-clockwise) area.\n //\n // Second, count the (signed) number of times a segment crosses a lambda\n // from the point to the South pole. If it is zero, then the point is the\n // same side as the South pole.\n\n return (angle < -epsilon || angle < epsilon && sum < -epsilon2) ^ (winding & 1);\n}\n", "import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n return function(sink) {\n var line = clipLine(sink),\n ringBuffer = clipBuffer(),\n ringSink = clipLine(ringBuffer),\n polygonStarted = false,\n polygon,\n segments,\n ring;\n\n var clip = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() {\n clip.point = pointRing;\n clip.lineStart = ringStart;\n clip.lineEnd = ringEnd;\n segments = [];\n polygon = [];\n },\n polygonEnd: function() {\n clip.point = point;\n clip.lineStart = lineStart;\n clip.lineEnd = lineEnd;\n segments = merge(segments);\n var startInside = polygonContains(polygon, start);\n if (segments.length) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n } else if (startInside) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n }\n if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n segments = polygon = null;\n },\n sphere: function() {\n sink.polygonStart();\n sink.lineStart();\n interpolate(null, null, 1, sink);\n sink.lineEnd();\n sink.polygonEnd();\n }\n };\n\n function point(lambda, phi) {\n if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n }\n\n function pointLine(lambda, phi) {\n line.point(lambda, phi);\n }\n\n function lineStart() {\n clip.point = pointLine;\n line.lineStart();\n }\n\n function lineEnd() {\n clip.point = point;\n line.lineEnd();\n }\n\n function pointRing(lambda, phi) {\n ring.push([lambda, phi]);\n ringSink.point(lambda, phi);\n }\n\n function ringStart() {\n ringSink.lineStart();\n ring = [];\n }\n\n function ringEnd() {\n pointRing(ring[0][0], ring[0][1]);\n ringSink.lineEnd();\n\n var clean = ringSink.clean(),\n ringSegments = ringBuffer.result(),\n i, n = ringSegments.length, m,\n segment,\n point;\n\n ring.pop();\n polygon.push(ring);\n ring = null;\n\n if (!n) return;\n\n // No intersections.\n if (clean & 1) {\n segment = ringSegments[0];\n if ((m = segment.length - 1) > 0) {\n if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n sink.lineStart();\n for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n sink.lineEnd();\n }\n return;\n }\n\n // Rejoin connected segments.\n // TODO reuse ringBuffer.rejoin()?\n if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n segments.push(ringSegments.filter(validSegment));\n }\n\n return clip;\n };\n}\n\nfunction validSegment(segment) {\n return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n", "import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n function() { return true; },\n clipAntimeridianLine,\n clipAntimeridianInterpolate,\n [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n var lambda0 = NaN,\n phi0 = NaN,\n sign0 = NaN,\n clean; // no intersections\n\n return {\n lineStart: function() {\n stream.lineStart();\n clean = 1;\n },\n point: function(lambda1, phi1) {\n var sign1 = lambda1 > 0 ? pi : -pi,\n delta = abs(lambda1 - lambda0);\n if (abs(delta - pi) < epsilon) { // line crosses a pole\n stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n stream.point(lambda1, phi0);\n clean = 0;\n } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n stream.point(sign0, phi0);\n stream.lineEnd();\n stream.lineStart();\n stream.point(sign1, phi0);\n clean = 0;\n }\n stream.point(lambda0 = lambda1, phi0 = phi1);\n sign0 = sign1;\n },\n lineEnd: function() {\n stream.lineEnd();\n lambda0 = phi0 = NaN;\n },\n clean: function() {\n return 2 - clean; // if intersections, rejoin first and last segments\n }\n };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n var cosPhi0,\n cosPhi1,\n sinLambda0Lambda1 = sin(lambda0 - lambda1);\n return abs(sinLambda0Lambda1) > epsilon\n ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n var phi;\n if (from == null) {\n phi = direction * halfPi;\n stream.point(-pi, phi);\n stream.point(0, phi);\n stream.point(pi, phi);\n stream.point(pi, 0);\n stream.point(pi, -phi);\n stream.point(0, -phi);\n stream.point(-pi, -phi);\n stream.point(-pi, 0);\n stream.point(-pi, phi);\n } else if (abs(from[0] - to[0]) > epsilon) {\n var lambda = from[0] < to[0] ? pi : -pi;\n phi = direction * lambda / 2;\n stream.point(-lambda, phi);\n stream.point(0, phi);\n stream.point(lambda, phi);\n } else {\n stream.point(to[0], to[1]);\n }\n}\n", "import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n var cr = cos(radius),\n delta = 2 * radians,\n smallRadius = cr > 0,\n notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n function interpolate(from, to, direction, stream) {\n circleStream(stream, radius, delta, direction, from, to);\n }\n\n function visible(lambda, phi) {\n return cos(lambda) * cos(phi) > cr;\n }\n\n // Takes a line and cuts into visible segments. Return values used for polygon\n // clipping: 0 - there were intersections or the line was empty; 1 - no\n // intersections 2 - there were intersections, and the first and last segments\n // should be rejoined.\n function clipLine(stream) {\n var point0, // previous point\n c0, // code for previous point\n v0, // visibility of previous point\n v00, // visibility of first point\n clean; // no intersections\n return {\n lineStart: function() {\n v00 = v0 = false;\n clean = 1;\n },\n point: function(lambda, phi) {\n var point1 = [lambda, phi],\n point2,\n v = visible(lambda, phi),\n c = smallRadius\n ? v ? 0 : code(lambda, phi)\n : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n if (!point0 && (v00 = v0 = v)) stream.lineStart();\n if (v !== v0) {\n point2 = intersect(point0, point1);\n if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n point1[2] = 1;\n }\n if (v !== v0) {\n clean = 0;\n if (v) {\n // outside going in\n stream.lineStart();\n point2 = intersect(point1, point0);\n stream.point(point2[0], point2[1]);\n } else {\n // inside going out\n point2 = intersect(point0, point1);\n stream.point(point2[0], point2[1], 2);\n stream.lineEnd();\n }\n point0 = point2;\n } else if (notHemisphere && point0 && smallRadius ^ v) {\n var t;\n // If the codes for two points are different, or are both zero,\n // and there this segment intersects with the small circle.\n if (!(c & c0) && (t = intersect(point1, point0, true))) {\n clean = 0;\n if (smallRadius) {\n stream.lineStart();\n stream.point(t[0][0], t[0][1]);\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n } else {\n stream.point(t[1][0], t[1][1]);\n stream.lineEnd();\n stream.lineStart();\n stream.point(t[0][0], t[0][1], 3);\n }\n }\n }\n if (v && (!point0 || !pointEqual(point0, point1))) {\n stream.point(point1[0], point1[1]);\n }\n point0 = point1, v0 = v, c0 = c;\n },\n lineEnd: function() {\n if (v0) stream.lineEnd();\n point0 = null;\n },\n // Rejoin first and last segments if there were intersections and the first\n // and last points were visible.\n clean: function() {\n return clean | ((v00 && v0) << 1);\n }\n };\n }\n\n // Intersects the great circle between a and b with the clip circle.\n function intersect(a, b, two) {\n var pa = cartesian(a),\n pb = cartesian(b);\n\n // We have two planes, n1.p = d1 and n2.p = d2.\n // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 \u2A2F n2).\n var n1 = [1, 0, 0], // normal\n n2 = cartesianCross(pa, pb),\n n2n2 = cartesianDot(n2, n2),\n n1n2 = n2[0], // cartesianDot(n1, n2),\n determinant = n2n2 - n1n2 * n1n2;\n\n // Two polar points.\n if (!determinant) return !two && a;\n\n var c1 = cr * n2n2 / determinant,\n c2 = -cr * n1n2 / determinant,\n n1xn2 = cartesianCross(n1, n2),\n A = cartesianScale(n1, c1),\n B = cartesianScale(n2, c2);\n cartesianAddInPlace(A, B);\n\n // Solve |p(t)|^2 = 1.\n var u = n1xn2,\n w = cartesianDot(A, u),\n uu = cartesianDot(u, u),\n t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n if (t2 < 0) return;\n\n var t = sqrt(t2),\n q = cartesianScale(u, (-w - t) / uu);\n cartesianAddInPlace(q, A);\n q = spherical(q);\n\n if (!two) return q;\n\n // Two intersection points.\n var lambda0 = a[0],\n lambda1 = b[0],\n phi0 = a[1],\n phi1 = b[1],\n z;\n\n if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n var delta = lambda1 - lambda0,\n polar = abs(delta - pi) < epsilon,\n meridian = polar || delta < epsilon;\n\n if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n // Check that the first point is between a and b.\n if (meridian\n ? polar\n ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n : phi0 <= q[1] && q[1] <= phi1\n : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n var q1 = cartesianScale(u, (-w + t) / uu);\n cartesianAddInPlace(q1, A);\n return [q, spherical(q1)];\n }\n }\n\n // Generates a 4-bit vector representing the location of a point relative to\n // the small circle's bounding box.\n function code(lambda, phi) {\n var r = smallRadius ? radius : pi - radius,\n code = 0;\n if (lambda < -r) code |= 1; // left\n else if (lambda > r) code |= 2; // right\n if (phi < -r) code |= 4; // below\n else if (phi > r) code |= 8; // above\n return code;\n }\n\n return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n", "export default function(a, b, x0, y0, x1, y1) {\n var ax = a[0],\n ay = a[1],\n bx = b[0],\n by = b[1],\n t0 = 0,\n t1 = 1,\n dx = bx - ax,\n dy = by - ay,\n r;\n\n r = x0 - ax;\n if (!dx && r > 0) return;\n r /= dx;\n if (dx < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dx > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = x1 - ax;\n if (!dx && r < 0) return;\n r /= dx;\n if (dx < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dx > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n r = y0 - ay;\n if (!dy && r > 0) return;\n r /= dy;\n if (dy < 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n } else if (dy > 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n }\n\n r = y1 - ay;\n if (!dy && r < 0) return;\n r /= dy;\n if (dy < 0) {\n if (r > t1) return;\n if (r > t0) t0 = r;\n } else if (dy > 0) {\n if (r < t0) return;\n if (r < t1) t1 = r;\n }\n\n if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n return true;\n}\n", "import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon\u2019s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n function visible(x, y) {\n return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n }\n\n function interpolate(from, to, direction, stream) {\n var a = 0, a1 = 0;\n if (from == null\n || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n || comparePoint(from, to) < 0 ^ direction > 0) {\n do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n while ((a = (a + direction + 4) % 4) !== a1);\n } else {\n stream.point(to[0], to[1]);\n }\n }\n\n function corner(p, direction) {\n return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n }\n\n function compareIntersection(a, b) {\n return comparePoint(a.x, b.x);\n }\n\n function comparePoint(a, b) {\n var ca = corner(a, 1),\n cb = corner(b, 1);\n return ca !== cb ? ca - cb\n : ca === 0 ? b[1] - a[1]\n : ca === 1 ? a[0] - b[0]\n : ca === 2 ? a[1] - b[1]\n : b[0] - a[0];\n }\n\n return function(stream) {\n var activeStream = stream,\n bufferStream = clipBuffer(),\n segments,\n polygon,\n ring,\n x__, y__, v__, // first point\n x_, y_, v_, // previous point\n first,\n clean;\n\n var clipStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: polygonStart,\n polygonEnd: polygonEnd\n };\n\n function point(x, y) {\n if (visible(x, y)) activeStream.point(x, y);\n }\n\n function polygonInside() {\n var winding = 0;\n\n for (var i = 0, n = polygon.length; i < n; ++i) {\n for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n }\n }\n\n return winding;\n }\n\n // Buffer geometry within a polygon and then clip it en masse.\n function polygonStart() {\n activeStream = bufferStream, segments = [], polygon = [], clean = true;\n }\n\n function polygonEnd() {\n var startInside = polygonInside(),\n cleanInside = clean && startInside,\n visible = (segments = merge(segments)).length;\n if (cleanInside || visible) {\n stream.polygonStart();\n if (cleanInside) {\n stream.lineStart();\n interpolate(null, null, 1, stream);\n stream.lineEnd();\n }\n if (visible) {\n clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n }\n stream.polygonEnd();\n }\n activeStream = stream, segments = polygon = ring = null;\n }\n\n function lineStart() {\n clipStream.point = linePoint;\n if (polygon) polygon.push(ring = []);\n first = true;\n v_ = false;\n x_ = y_ = NaN;\n }\n\n // TODO rather than special-case polygons, simply handle them separately.\n // Ideally, coincident intersection points should be jittered to avoid\n // clipping issues.\n function lineEnd() {\n if (segments) {\n linePoint(x__, y__);\n if (v__ && v_) bufferStream.rejoin();\n segments.push(bufferStream.result());\n }\n clipStream.point = point;\n if (v_) activeStream.lineEnd();\n }\n\n function linePoint(x, y) {\n var v = visible(x, y);\n if (polygon) ring.push([x, y]);\n if (first) {\n x__ = x, y__ = y, v__ = v;\n first = false;\n if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n }\n } else {\n if (v && v_) activeStream.point(x, y);\n else {\n var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n if (clipLine(a, b, x0, y0, x1, y1)) {\n if (!v_) {\n activeStream.lineStart();\n activeStream.point(a[0], a[1]);\n }\n activeStream.point(b[0], b[1]);\n if (!v) activeStream.lineEnd();\n clean = false;\n } else if (v) {\n activeStream.lineStart();\n activeStream.point(x, y);\n clean = false;\n }\n }\n }\n x_ = x, y_ = y, v_ = v;\n }\n\n return clipStream;\n };\n}\n", "import {Adder} from \"d3-array\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar lengthSum,\n lambda0,\n sinPhi0,\n cosPhi0;\n\nvar lengthStream = {\n sphere: noop,\n point: noop,\n lineStart: lengthLineStart,\n lineEnd: noop,\n polygonStart: noop,\n polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n lengthStream.point = lengthPointFirst;\n lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n lambda *= radians, phi *= radians;\n lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n lambda *= radians, phi *= radians;\n var sinPhi = sin(phi),\n cosPhi = cos(phi),\n delta = abs(lambda - lambda0),\n cosDelta = cos(delta),\n sinDelta = sin(delta),\n x = cosPhi * sinDelta,\n y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n lengthSum.add(atan2(sqrt(x * x + y * y), z));\n lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n lengthSum = new Adder();\n stream(object, lengthStream);\n return +lengthSum;\n}\n", "import length from \"./length.js\";\n\nvar coordinates = [null, null],\n object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n coordinates[0] = a;\n coordinates[1] = b;\n return length(object);\n}\n", "import {default as polygonContains} from \"./polygonContains.js\";\nimport {default as distance} from \"./distance.js\";\nimport {epsilon2, radians} from \"./math.js\";\n\nvar containsObjectType = {\n Feature: function(object, point) {\n return containsGeometry(object.geometry, point);\n },\n FeatureCollection: function(object, point) {\n var features = object.features, i = -1, n = features.length;\n while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n return false;\n }\n};\n\nvar containsGeometryType = {\n Sphere: function() {\n return true;\n },\n Point: function(object, point) {\n return containsPoint(object.coordinates, point);\n },\n MultiPoint: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n return false;\n },\n LineString: function(object, point) {\n return containsLine(object.coordinates, point);\n },\n MultiLineString: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsLine(coordinates[i], point)) return true;\n return false;\n },\n Polygon: function(object, point) {\n return containsPolygon(object.coordinates, point);\n },\n MultiPolygon: function(object, point) {\n var coordinates = object.coordinates, i = -1, n = coordinates.length;\n while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n return false;\n },\n GeometryCollection: function(object, point) {\n var geometries = object.geometries, i = -1, n = geometries.length;\n while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n return false;\n }\n};\n\nfunction containsGeometry(geometry, point) {\n return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n ? containsGeometryType[geometry.type](geometry, point)\n : false;\n}\n\nfunction containsPoint(coordinates, point) {\n return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n var ao, bo, ab;\n for (var i = 0, n = coordinates.length; i < n; i++) {\n bo = distance(coordinates[i], point);\n if (bo === 0) return true;\n if (i > 0) {\n ab = distance(coordinates[i], coordinates[i - 1]);\n if (\n ab > 0 &&\n ao <= ab &&\n bo <= ab &&\n (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n )\n return true;\n }\n ao = bo;\n }\n return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n return (object && containsObjectType.hasOwnProperty(object.type)\n ? containsObjectType[object.type]\n : containsGeometry)(object, point);\n}\n", "export default function(methods) {\n return {\n stream: transformer(methods)\n };\n}\n\nexport function transformer(methods) {\n return function(stream) {\n var s = new TransformStream;\n for (var key in methods) s[key] = methods[key];\n s.stream = stream;\n return s;\n };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n constructor: TransformStream,\n point: function(x, y) { this.stream.point(x, y); },\n sphere: function() { this.stream.sphere(); },\n lineStart: function() { this.stream.lineStart(); },\n lineEnd: function() { this.stream.lineEnd(); },\n polygonStart: function() { this.stream.polygonStart(); },\n polygonEnd: function() { this.stream.polygonEnd(); }\n};\n", "import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n var clip = projection.clipExtent && projection.clipExtent();\n projection.scale(150).translate([0, 0]);\n if (clip != null) projection.clipExtent(null);\n geoStream(object, projection.stream(boundsStream));\n fitBounds(boundsStream.result());\n if (clip != null) projection.clipExtent(clip);\n return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n return fit(projection, function(b) {\n var w = extent[1][0] - extent[0][0],\n h = extent[1][1] - extent[0][1],\n k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitSize(projection, size, object) {\n return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n return fit(projection, function(b) {\n var w = +width,\n k = w / (b[1][0] - b[0][0]),\n x = (w - k * (b[1][0] + b[0][0])) / 2,\n y = -k * b[0][1];\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n return fit(projection, function(b) {\n var h = +height,\n k = h / (b[1][1] - b[0][1]),\n x = -k * b[0][0],\n y = (h - k * (b[1][1] + b[0][1])) / 2;\n projection.scale(150 * k).translate([x, y]);\n }, object);\n}\n", "import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n return transformer({\n point: function(x, y) {\n x = project(x, y);\n this.stream.point(x[0], x[1]);\n }\n });\n}\n\nfunction resample(project, delta2) {\n\n function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n var dx = x1 - x0,\n dy = y1 - y0,\n d2 = dx * dx + dy * dy;\n if (d2 > 4 * delta2 && depth--) {\n var a = a0 + a1,\n b = b0 + b1,\n c = c0 + c1,\n m = sqrt(a * a + b * b + c * c),\n phi2 = asin(c /= m),\n lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n p = project(lambda2, phi2),\n x2 = p[0],\n y2 = p[1],\n dx2 = x2 - x0,\n dy2 = y2 - y0,\n dz = dy * dx2 - dx * dy2;\n if (dz * dz / d2 > delta2 // perpendicular projected distance\n || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n stream.point(x2, y2);\n resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n }\n }\n }\n return function(stream) {\n var lambda00, x00, y00, a00, b00, c00, // first point\n lambda0, x0, y0, a0, b0, c0; // previous point\n\n var resampleStream = {\n point: point,\n lineStart: lineStart,\n lineEnd: lineEnd,\n polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n };\n\n function point(x, y) {\n x = project(x, y);\n stream.point(x[0], x[1]);\n }\n\n function lineStart() {\n x0 = NaN;\n resampleStream.point = linePoint;\n stream.lineStart();\n }\n\n function linePoint(lambda, phi) {\n var c = cartesian([lambda, phi]), p = project(lambda, phi);\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n stream.point(x0, y0);\n }\n\n function lineEnd() {\n resampleStream.point = point;\n stream.lineEnd();\n }\n\n function ringStart() {\n lineStart();\n resampleStream.point = ringPoint;\n resampleStream.lineEnd = ringEnd;\n }\n\n function ringPoint(lambda, phi) {\n linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n resampleStream.point = linePoint;\n }\n\n function ringEnd() {\n resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n resampleStream.lineEnd = lineEnd;\n lineEnd();\n }\n\n return resampleStream;\n };\n}\n", "import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n point: function(x, y) {\n this.stream.point(x * radians, y * radians);\n }\n});\n\nfunction transformRotate(rotate) {\n return transformer({\n point: function(x, y) {\n var r = rotate(x, y);\n return this.stream.point(r[0], r[1]);\n }\n });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n function transform(x, y) {\n x *= sx; y *= sy;\n return [dx + k * x, dy - k * y];\n }\n transform.invert = function(x, y) {\n return [(x - dx) / k * sx, (dy - y) / k * sy];\n };\n return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n if (!alpha) return scaleTranslate(k, dx, dy, sx, sy);\n var cosAlpha = cos(alpha),\n sinAlpha = sin(alpha),\n a = cosAlpha * k,\n b = sinAlpha * k,\n ai = cosAlpha / k,\n bi = sinAlpha / k,\n ci = (sinAlpha * dy - cosAlpha * dx) / k,\n fi = (sinAlpha * dx + cosAlpha * dy) / k;\n function transform(x, y) {\n x *= sx; y *= sy;\n return [a * x - b * y + dx, dy - b * x - a * y];\n }\n transform.invert = function(x, y) {\n return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n };\n return transform;\n}\n\nexport default function projection(project) {\n return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n var project,\n k = 150, // scale\n x = 480, y = 250, // translate\n lambda = 0, phi = 0, // center\n deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n alpha = 0, // post-rotate angle\n sx = 1, // reflectX\n sy = 1, // reflectX\n theta = null, preclip = clipAntimeridian, // pre-clip angle\n x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n delta2 = 0.5, // precision\n projectResample,\n projectTransform,\n projectRotateTransform,\n cache,\n cacheStream;\n\n function projection(point) {\n return projectRotateTransform(point[0] * radians, point[1] * radians);\n }\n\n function invert(point) {\n point = projectRotateTransform.invert(point[0], point[1]);\n return point && [point[0] * degrees, point[1] * degrees];\n }\n\n projection.stream = function(stream) {\n return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n };\n\n projection.preclip = function(_) {\n return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n };\n\n projection.postclip = function(_) {\n return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n };\n\n projection.clipAngle = function(_) {\n return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n };\n\n projection.clipExtent = function(_) {\n return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n };\n\n projection.scale = function(_) {\n return arguments.length ? (k = +_, recenter()) : k;\n };\n\n projection.translate = function(_) {\n return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n };\n\n projection.center = function(_) {\n return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n };\n\n projection.rotate = function(_) {\n return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n };\n\n projection.angle = function(_) {\n return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n };\n\n projection.reflectX = function(_) {\n return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n };\n\n projection.reflectY = function(_) {\n return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n };\n\n projection.precision = function(_) {\n return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n };\n\n projection.fitExtent = function(extent, object) {\n return fitExtent(projection, extent, object);\n };\n\n projection.fitSize = function(size, object) {\n return fitSize(projection, size, object);\n };\n\n projection.fitWidth = function(width, object) {\n return fitWidth(projection, width, object);\n };\n\n projection.fitHeight = function(height, object) {\n return fitHeight(projection, height, object);\n };\n\n function recenter() {\n var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n transform = scaleTranslateRotate(k, x - center[0], y - center[1], sx, sy, alpha);\n rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n projectTransform = compose(project, transform);\n projectRotateTransform = compose(rotate, projectTransform);\n projectResample = resample(projectTransform, delta2);\n return reset();\n }\n\n function reset() {\n cache = cacheStream = null;\n return projection;\n }\n\n return function() {\n project = projectAt.apply(this, arguments);\n projection.invert = project.invert && invert;\n return recenter();\n };\n}\n", "import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n return [\n lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n var phi = y, i = 25, delta;\n do {\n var phi2 = phi * phi, phi4 = phi2 * phi2;\n phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n } while (abs(delta) > epsilon && --i > 0);\n return [\n x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n phi\n ];\n};\n\nexport default function() {\n return projection(naturalEarth1Raw)\n .scale(175.295);\n}\n", "export default function(specifier) {\n var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n return colors;\n}\n", "import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n", "import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default scheme => interpolateRgbBasis(scheme[scheme.length - 1]);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"deebf79ecae13182bd\",\n \"eff3ffbdd7e76baed62171b5\",\n \"eff3ffbdd7e76baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"fee0d2fc9272de2d26\",\n \"fee5d9fcae91fb6a4acb181d\",\n \"fee5d9fcae91fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import colors from \"../colors.js\";\n\nfunction ramp(range) {\n var n = range.length;\n return function(t) {\n return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n", "import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n", "import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n", "import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n", "import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n \"f0f0f0bdbdbd636363\",\n \"f7f7f7cccccc969696525252\",\n \"f7f7f7cccccc969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n", "import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n if (t < 0 || t > 1) t -= Math.floor(t);\n var ts = Math.abs(t - 0.5);\n c.h = 360 * t - 100;\n c.s = 1.5 - 1.5 * ts;\n c.l = 0.8 - 0.9 * ts;\n return c + \"\";\n}\n", "export default function(x) {\n return function constant() {\n return x;\n };\n}\n", "export const abs = Math.abs;\nexport const atan2 = Math.atan2;\nexport const cos = Math.cos;\nexport const max = Math.max;\nexport const min = Math.min;\nexport const sin = Math.sin;\nexport const sqrt = Math.sqrt;\n\nexport const epsilon = 1e-12;\nexport const pi = Math.PI;\nexport const halfPi = pi / 2;\nexport const tau = 2 * pi;\n\nexport function acos(x) {\n return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n", "const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We\u2019re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n", "import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n", "import constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\nimport {withPath} from \"./path.js\";\n\nfunction arcInnerRadius(d) {\n return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n var x10 = x1 - x0, y10 = y1 - y0,\n x32 = x3 - x2, y32 = y3 - y2,\n t = y32 * x10 - x32 * y10;\n if (t * t < epsilon) return;\n t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n var x01 = x0 - x1,\n y01 = y0 - y1,\n lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n ox = lo * y01,\n oy = -lo * x01,\n x11 = x0 + ox,\n y11 = y0 + oy,\n x10 = x1 + ox,\n y10 = y1 + oy,\n x00 = (x11 + x10) / 2,\n y00 = (y11 + y10) / 2,\n dx = x10 - x11,\n dy = y10 - y11,\n d2 = dx * dx + dy * dy,\n r = r1 - rc,\n D = x11 * y10 - x10 * y11,\n d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n cx0 = (D * dy - dx * d) / d2,\n cy0 = (-D * dx - dy * d) / d2,\n cx1 = (D * dy + dx * d) / d2,\n cy1 = (-D * dx + dy * d) / d2,\n dx0 = cx0 - x00,\n dy0 = cy0 - y00,\n dx1 = cx1 - x00,\n dy1 = cy1 - y00;\n\n // Pick the closer of the two intersection points.\n // TODO Is there a faster way to determine which intersection to use?\n if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n return {\n cx: cx0,\n cy: cy0,\n x01: -ox,\n y01: -oy,\n x11: cx0 * (r1 / r - 1),\n y11: cy0 * (r1 / r - 1)\n };\n}\n\nexport default function() {\n var innerRadius = arcInnerRadius,\n outerRadius = arcOuterRadius,\n cornerRadius = constant(0),\n padRadius = null,\n startAngle = arcStartAngle,\n endAngle = arcEndAngle,\n padAngle = arcPadAngle,\n context = null,\n path = withPath(arc);\n\n function arc() {\n var buffer,\n r,\n r0 = +innerRadius.apply(this, arguments),\n r1 = +outerRadius.apply(this, arguments),\n a0 = startAngle.apply(this, arguments) - halfPi,\n a1 = endAngle.apply(this, arguments) - halfPi,\n da = abs(a1 - a0),\n cw = a1 > a0;\n\n if (!context) context = buffer = path();\n\n // Ensure that the outer radius is always larger than the inner radius.\n if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n // Is it a point?\n if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n // Or is it a circle or annulus?\n else if (da > tau - epsilon) {\n context.moveTo(r1 * cos(a0), r1 * sin(a0));\n context.arc(0, 0, r1, a0, a1, !cw);\n if (r0 > epsilon) {\n context.moveTo(r0 * cos(a1), r0 * sin(a1));\n context.arc(0, 0, r0, a1, a0, cw);\n }\n }\n\n // Or is it a circular or annular sector?\n else {\n var a01 = a0,\n a11 = a1,\n a00 = a0,\n a10 = a1,\n da0 = da,\n da1 = da,\n ap = padAngle.apply(this, arguments) / 2,\n rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n rc0 = rc,\n rc1 = rc,\n t0,\n t1;\n\n // Apply padding? Note that since r1 \u2265 r0, da1 \u2265 da0.\n if (rp > epsilon) {\n var p0 = asin(rp / r0 * sin(ap)),\n p1 = asin(rp / r1 * sin(ap));\n if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n }\n\n var x01 = r1 * cos(a01),\n y01 = r1 * sin(a01),\n x10 = r0 * cos(a10),\n y10 = r0 * sin(a10);\n\n // Apply rounded corners?\n if (rc > epsilon) {\n var x11 = r1 * cos(a11),\n y11 = r1 * sin(a11),\n x00 = r0 * cos(a00),\n y00 = r0 * sin(a00),\n oc;\n\n // Restrict the corner radius according to the sector angle. If this\n // intersection fails, it\u2019s probably because the arc is too small, so\n // disable the corner radius entirely.\n if (da < pi) {\n if (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10)) {\n var ax = x01 - oc[0],\n ay = y01 - oc[1],\n bx = x11 - oc[0],\n by = y11 - oc[1],\n kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n rc0 = min(rc, (r0 - lc) / (kc - 1));\n rc1 = min(rc, (r1 - lc) / (kc + 1));\n } else {\n rc0 = rc1 = 0;\n }\n }\n }\n\n // Is the sector collapsed to a line?\n if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n // Does the sector\u2019s outer ring have rounded corners?\n else if (rc1 > epsilon) {\n t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the outer ring just a circular arc?\n else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n // Is there no inner ring, and it\u2019s a circular sector?\n // Or perhaps it\u2019s an annular sector collapsed due to padding?\n if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n // Does the sector\u2019s inner ring (or point) have rounded corners?\n else if (rc0 > epsilon) {\n t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n // Have the corners merged?\n if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n // Otherwise, draw the two corners and the ring.\n else {\n context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n }\n }\n\n // Or is the inner ring just a circular arc?\n else context.arc(0, 0, r0, a10, a00, cw);\n }\n\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n arc.centroid = function() {\n var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n return [cos(a) * r, sin(a) * r];\n };\n\n arc.innerRadius = function(_) {\n return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n };\n\n arc.outerRadius = function(_) {\n return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n };\n\n arc.cornerRadius = function(_) {\n return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n };\n\n arc.padRadius = function(_) {\n return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n };\n\n arc.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n };\n\n arc.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n };\n\n arc.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n };\n\n arc.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n };\n\n return arc;\n}\n", "export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n", "function Linear(context) {\n this._context = context;\n}\n\nLinear.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._point = 0;\n },\n lineEnd: function() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: this._context.lineTo(x, y); break;\n }\n }\n};\n\nexport default function(context) {\n return new Linear(context);\n}\n", "export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x, y) {\n var defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(line);\n\n x = typeof x === \"function\" ? x : (x === undefined) ? pointX : constant(x);\n y = typeof y === \"function\" ? y : (y === undefined) ? pointY : constant(y);\n\n function line(data) {\n var i,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer;\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) output.lineStart();\n else output.lineEnd();\n }\n if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n line.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n };\n\n line.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n };\n\n line.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n };\n\n line.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n };\n\n line.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n };\n\n return line;\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function(x0, y0, y1) {\n var x1 = null,\n defined = constant(true),\n context = null,\n curve = curveLinear,\n output = null,\n path = withPath(area);\n\n x0 = typeof x0 === \"function\" ? x0 : (x0 === undefined) ? pointX : constant(+x0);\n y0 = typeof y0 === \"function\" ? y0 : (y0 === undefined) ? constant(0) : constant(+y0);\n y1 = typeof y1 === \"function\" ? y1 : (y1 === undefined) ? pointY : constant(+y1);\n\n function area(data) {\n var i,\n j,\n k,\n n = (data = array(data)).length,\n d,\n defined0 = false,\n buffer,\n x0z = new Array(n),\n y0z = new Array(n);\n\n if (context == null) output = curve(buffer = path());\n\n for (i = 0; i <= n; ++i) {\n if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n if (defined0 = !defined0) {\n j = i;\n output.areaStart();\n output.lineStart();\n } else {\n output.lineEnd();\n output.lineStart();\n for (k = i - 1; k >= j; --k) {\n output.point(x0z[k], y0z[k]);\n }\n output.lineEnd();\n output.areaEnd();\n }\n }\n if (defined0) {\n x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n }\n }\n\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n function arealine() {\n return line().defined(defined).curve(curve).context(context);\n }\n\n area.x = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n };\n\n area.x0 = function(_) {\n return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n };\n\n area.x1 = function(_) {\n return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n };\n\n area.y = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n };\n\n area.y0 = function(_) {\n return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n };\n\n area.y1 = function(_) {\n return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n };\n\n area.lineX0 =\n area.lineY0 = function() {\n return arealine().x(x0).y(y0);\n };\n\n area.lineY1 = function() {\n return arealine().x(x0).y(y1);\n };\n\n area.lineX1 = function() {\n return arealine().x(x1).y(y0);\n };\n\n area.defined = function(_) {\n return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n };\n\n area.curve = function(_) {\n return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n };\n\n area.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n };\n\n return area;\n}\n", "import {pi, sqrt, tau} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / pi);\n context.moveTo(r, 0);\n context.arc(0, 0, r, 0, tau);\n }\n};\n", "import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / 5) / 2;\n context.moveTo(-3 * r, -r);\n context.lineTo(-r, -r);\n context.lineTo(-r, -3 * r);\n context.lineTo(r, -3 * r);\n context.lineTo(r, -r);\n context.lineTo(3 * r, -r);\n context.lineTo(3 * r, r);\n context.lineTo(r, r);\n context.lineTo(r, 3 * r);\n context.lineTo(-r, 3 * r);\n context.lineTo(-r, r);\n context.lineTo(-3 * r, r);\n context.closePath();\n }\n};\n", "import {sqrt} from \"../math.js\";\n\nconst tan30 = sqrt(1 / 3);\nconst tan30_2 = tan30 * 2;\n\nexport default {\n draw(context, size) {\n const y = sqrt(size / tan30_2);\n const x = y * tan30;\n context.moveTo(0, -y);\n context.lineTo(x, 0);\n context.lineTo(0, y);\n context.lineTo(-x, 0);\n context.closePath();\n }\n};\n", "import {sqrt} from \"../math.js\";\n\nexport default {\n draw(context, size) {\n const w = sqrt(size);\n const x = -w / 2;\n context.rect(x, x, w, w);\n }\n};\n", "import {sin, cos, sqrt, pi, tau} from \"../math.js\";\n\nconst ka = 0.89081309152928522810;\nconst kr = sin(pi / 10) / sin(7 * pi / 10);\nconst kx = sin(tau / 10) * kr;\nconst ky = -cos(tau / 10) * kr;\n\nexport default {\n draw(context, size) {\n const r = sqrt(size * ka);\n const x = kx * r;\n const y = ky * r;\n context.moveTo(0, -r);\n context.lineTo(x, y);\n for (let i = 1; i < 5; ++i) {\n const a = tau * i / 5;\n const c = cos(a);\n const s = sin(a);\n context.lineTo(s * r, -c * r);\n context.lineTo(c * x - s * y, s * x + c * y);\n }\n context.closePath();\n }\n};\n", "import {sqrt} from \"../math.js\";\n\nconst sqrt3 = sqrt(3);\n\nexport default {\n draw(context, size) {\n const y = -sqrt(size / (sqrt3 * 3));\n context.moveTo(0, y * 2);\n context.lineTo(-sqrt3 * y, -y);\n context.lineTo(sqrt3 * y, -y);\n context.closePath();\n }\n};\n", "import {sqrt} from \"../math.js\";\n\nconst c = -0.5;\nconst s = sqrt(3) / 2;\nconst k = 1 / sqrt(12);\nconst a = (k / 2 + 1) * 3;\n\nexport default {\n draw(context, size) {\n const r = sqrt(size / a);\n const x0 = r / 2, y0 = r * k;\n const x1 = x0, y1 = r * k + r;\n const x2 = -x1, y2 = y1;\n context.moveTo(x0, y0);\n context.lineTo(x1, y1);\n context.lineTo(x2, y2);\n context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n context.closePath();\n }\n};\n", "import constant from \"./constant.js\";\nimport {withPath} from \"./path.js\";\nimport asterisk from \"./symbol/asterisk.js\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport diamond2 from \"./symbol/diamond2.js\";\nimport plus from \"./symbol/plus.js\";\nimport square from \"./symbol/square.js\";\nimport square2 from \"./symbol/square2.js\";\nimport star from \"./symbol/star.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport triangle2 from \"./symbol/triangle2.js\";\nimport wye from \"./symbol/wye.js\";\nimport times from \"./symbol/times.js\";\n\n// These symbols are designed to be filled.\nexport const symbolsFill = [\n circle,\n cross,\n diamond,\n square,\n star,\n triangle,\n wye\n];\n\n// These symbols are designed to be stroked (with a width of 1.5px and round caps).\nexport const symbolsStroke = [\n circle,\n plus,\n times,\n triangle2,\n asterisk,\n square2,\n diamond2\n];\n\nexport default function Symbol(type, size) {\n let context = null,\n path = withPath(symbol);\n\n type = typeof type === \"function\" ? type : constant(type || circle);\n size = typeof size === \"function\" ? size : constant(size === undefined ? 64 : +size);\n\n function symbol() {\n let buffer;\n if (!context) context = buffer = path();\n type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n symbol.type = function(_) {\n return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n };\n\n symbol.size = function(_) {\n return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n };\n\n symbol.context = function(_) {\n return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n };\n\n return symbol;\n}\n", "function sign(x) {\n return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n var h0 = that._x1 - that._x0,\n h1 = x2 - that._x1,\n s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n p = (s0 * h1 + s1 * h0) / (h0 + h1);\n return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n var h = that._x1 - that._x0;\n return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic B\u00E9zier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n var x0 = that._x0,\n y0 = that._y0,\n x1 = that._x1,\n y1 = that._y1,\n dx = (x1 - x0) / 3;\n that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n this._context = context;\n}\n\nMonotoneX.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 =\n this._t0 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 2: this._context.lineTo(this._x1, this._y1); break;\n case 3: point(this, this._t0, slope2(this, this._t0)); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n var t1 = NaN;\n\n x = +x, y = +y;\n if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n }\n\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n this._t0 = t1;\n }\n}\n\nfunction MonotoneY(context) {\n this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n this._context = context;\n}\n\nReflectContext.prototype = {\n moveTo: function(x, y) { this._context.moveTo(y, x); },\n closePath: function() { this._context.closePath(); },\n lineTo: function(x, y) { this._context.lineTo(y, x); },\n bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n return new MonotoneY(context);\n}\n", "function Step(context, t) {\n this._context = context;\n this._t = t;\n}\n\nStep.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x = this._y = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; // falls through\n default: {\n if (this._t <= 0) {\n this._context.lineTo(this._x, y);\n this._context.lineTo(x, y);\n } else {\n var x1 = this._x * (1 - this._t) + x * this._t;\n this._context.lineTo(x1, this._y);\n this._context.lineTo(x1, y);\n }\n break;\n }\n }\n this._x = x, this._y = y;\n }\n};\n\nexport default function(context) {\n return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n return new Step(context, 1);\n}\n", "export default function(a, b) {\n return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n", "export default function(d) {\n return d;\n}\n", "import array from \"./array.js\";\nimport constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n var value = identity,\n sortValues = descending,\n sort = null,\n startAngle = constant(0),\n endAngle = constant(tau),\n padAngle = constant(0);\n\n function pie(data) {\n var i,\n n = (data = array(data)).length,\n j,\n k,\n sum = 0,\n index = new Array(n),\n arcs = new Array(n),\n a0 = +startAngle.apply(this, arguments),\n da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n a1,\n p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n pa = p * (da < 0 ? -1 : 1),\n v;\n\n for (i = 0; i < n; ++i) {\n if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n sum += v;\n }\n }\n\n // Optionally sort the arcs by previously-computed values or by data.\n if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n // Compute the arcs! They are stored in the original data's order.\n for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n data: data[j],\n index: i,\n value: v,\n startAngle: a0,\n endAngle: a1,\n padAngle: p\n };\n }\n\n return arcs;\n }\n\n pie.value = function(_) {\n return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n };\n\n pie.sortValues = function(_) {\n return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n };\n\n pie.sort = function(_) {\n return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n };\n\n pie.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n };\n\n pie.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n };\n\n pie.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n };\n\n return pie;\n}\n", "export function point(that, x, y) {\n that._context.bezierCurveTo(\n (2 * that._x0 + that._x1) / 3,\n (2 * that._y0 + that._y1) / 3,\n (that._x0 + 2 * that._x1) / 3,\n (that._y0 + 2 * that._y1) / 3,\n (that._x0 + 4 * that._x1 + x) / 6,\n (that._y0 + 4 * that._y1 + y) / 6\n );\n}\n\nexport function Basis(context) {\n this._context = context;\n}\n\nBasis.prototype = {\n areaStart: function() {\n this._line = 0;\n },\n areaEnd: function() {\n this._line = NaN;\n },\n lineStart: function() {\n this._x0 = this._x1 =\n this._y0 = this._y1 = NaN;\n this._point = 0;\n },\n lineEnd: function() {\n switch (this._point) {\n case 3: point(this, this._x1, this._y1); // falls through\n case 2: this._context.lineTo(this._x1, this._y1); break;\n }\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n },\n point: function(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n case 1: this._point = 2; break;\n case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // falls through\n default: point(this, x, y); break;\n }\n this._x0 = this._x1, this._x1 = x;\n this._y0 = this._y1, this._y1 = y;\n }\n};\n\nexport default function(context) {\n return new Basis(context);\n}\n", "export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n", "export default x => () => x;\n", "export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n", "export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n", "import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won\u2019t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n", "export var abs = Math.abs;\nexport var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\nexport var epsilon = 1e-12;\n", "export var slice = Array.prototype.slice;\n", "export default function(x) {\n return function() {\n return x;\n };\n}\n", "import {path} from \"d3-path\";\nimport {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport {abs, cos, epsilon, halfPi, sin} from \"./math.js\";\n\nfunction defaultSource(d) {\n return d.source;\n}\n\nfunction defaultTarget(d) {\n return d.target;\n}\n\nfunction defaultRadius(d) {\n return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n return d.endAngle;\n}\n\nfunction defaultPadAngle() {\n return 0;\n}\n\nfunction defaultArrowheadRadius() {\n return 10;\n}\n\nfunction ribbon(headRadius) {\n var source = defaultSource,\n target = defaultTarget,\n sourceRadius = defaultRadius,\n targetRadius = defaultRadius,\n startAngle = defaultStartAngle,\n endAngle = defaultEndAngle,\n padAngle = defaultPadAngle,\n context = null;\n\n function ribbon() {\n var buffer,\n s = source.apply(this, arguments),\n t = target.apply(this, arguments),\n ap = padAngle.apply(this, arguments) / 2,\n argv = slice.call(arguments),\n sr = +sourceRadius.apply(this, (argv[0] = s, argv)),\n sa0 = startAngle.apply(this, argv) - halfPi,\n sa1 = endAngle.apply(this, argv) - halfPi,\n tr = +targetRadius.apply(this, (argv[0] = t, argv)),\n ta0 = startAngle.apply(this, argv) - halfPi,\n ta1 = endAngle.apply(this, argv) - halfPi;\n\n if (!context) context = buffer = path();\n\n if (ap > epsilon) {\n if (abs(sa1 - sa0) > ap * 2 + epsilon) sa1 > sa0 ? (sa0 += ap, sa1 -= ap) : (sa0 -= ap, sa1 += ap);\n else sa0 = sa1 = (sa0 + sa1) / 2;\n if (abs(ta1 - ta0) > ap * 2 + epsilon) ta1 > ta0 ? (ta0 += ap, ta1 -= ap) : (ta0 -= ap, ta1 += ap);\n else ta0 = ta1 = (ta0 + ta1) / 2;\n }\n\n context.moveTo(sr * cos(sa0), sr * sin(sa0));\n context.arc(0, 0, sr, sa0, sa1);\n if (sa0 !== ta0 || sa1 !== ta1) {\n if (headRadius) {\n var hr = +headRadius.apply(this, arguments), tr2 = tr - hr, ta2 = (ta0 + ta1) / 2;\n context.quadraticCurveTo(0, 0, tr2 * cos(ta0), tr2 * sin(ta0));\n context.lineTo(tr * cos(ta2), tr * sin(ta2));\n context.lineTo(tr2 * cos(ta1), tr2 * sin(ta1));\n } else {\n context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n context.arc(0, 0, tr, ta0, ta1);\n }\n }\n context.quadraticCurveTo(0, 0, sr * cos(sa0), sr * sin(sa0));\n context.closePath();\n\n if (buffer) return context = null, buffer + \"\" || null;\n }\n\n if (headRadius) ribbon.headRadius = function(_) {\n return arguments.length ? (headRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : headRadius;\n };\n\n ribbon.radius = function(_) {\n return arguments.length ? (sourceRadius = targetRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : sourceRadius;\n };\n\n ribbon.sourceRadius = function(_) {\n return arguments.length ? (sourceRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : sourceRadius;\n };\n\n ribbon.targetRadius = function(_) {\n return arguments.length ? (targetRadius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : targetRadius;\n };\n\n ribbon.startAngle = function(_) {\n return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n };\n\n ribbon.endAngle = function(_) {\n return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n };\n\n ribbon.padAngle = function(_) {\n return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : padAngle;\n };\n\n ribbon.source = function(_) {\n return arguments.length ? (source = _, ribbon) : source;\n };\n\n ribbon.target = function(_) {\n return arguments.length ? (target = _, ribbon) : target;\n };\n\n ribbon.context = function(_) {\n return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n };\n\n return ribbon;\n}\n\nexport default function() {\n return ribbon();\n}\n\nexport function ribbonArrow() {\n return ribbon(defaultArrowheadRadius);\n}\n", "var array = Array.prototype;\n\nexport var slice = array.slice;\n", "export default function(a, b) {\n return a - b;\n}\n", "export default function(ring) {\n var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n return area;\n}\n", "export default x => () => x;\n", "export default function(ring, hole) {\n var i = -1, n = hole.length, c;\n while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n return 0;\n}\n\nfunction ringContains(ring, point) {\n var x = point[0], y = point[1], contains = -1;\n for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n if (segmentContains(pi, pj, point)) return 0;\n if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n }\n return contains;\n}\n\nfunction segmentContains(a, b, c) {\n var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n return p <= q && q <= r || r <= q && q <= p;\n}\n", "export default function() {}\n", "import {extent, nice, thresholdSturges, ticks} from \"d3-array\";\nimport {slice} from \"./array.js\";\nimport ascending from \"./ascending.js\";\nimport area from \"./area.js\";\nimport constant from \"./constant.js\";\nimport contains from \"./contains.js\";\nimport noop from \"./noop.js\";\n\nvar cases = [\n [],\n [[[1.0, 1.5], [0.5, 1.0]]],\n [[[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [0.5, 1.0]]],\n [[[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n [[[1.0, 0.5], [1.0, 1.5]]],\n [[[1.0, 0.5], [0.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 0.5]]],\n [[[1.0, 1.5], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n [[[1.5, 1.0], [1.0, 0.5]]],\n [[[0.5, 1.0], [1.5, 1.0]]],\n [[[1.0, 1.5], [1.5, 1.0]]],\n [[[0.5, 1.0], [1.0, 1.5]]],\n []\n];\n\nexport default function() {\n var dx = 1,\n dy = 1,\n threshold = thresholdSturges,\n smooth = smoothLinear;\n\n function contours(values) {\n var tz = threshold(values);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n const e = extent(values, finite);\n tz = ticks(...nice(e[0], e[1], tz), tz);\n while (tz[tz.length - 1] >= e[1]) tz.pop();\n while (tz[1] < e[0]) tz.shift();\n } else {\n tz = tz.slice().sort(ascending);\n }\n\n return tz.map(value => contour(values, value));\n }\n\n // Accumulate, smooth contour rings, assign holes to exterior rings.\n // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n function contour(values, value) {\n const v = value == null ? NaN : +value;\n if (isNaN(v)) throw new Error(`invalid value: ${value}`);\n\n var polygons = [],\n holes = [];\n\n isorings(values, v, function(ring) {\n smooth(ring, values, v);\n if (area(ring) > 0) polygons.push([ring]);\n else holes.push(ring);\n });\n\n holes.forEach(function(hole) {\n for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n if (contains((polygon = polygons[i])[0], hole) !== -1) {\n polygon.push(hole);\n return;\n }\n }\n });\n\n return {\n type: \"MultiPolygon\",\n value: value,\n coordinates: polygons\n };\n }\n\n // Marching squares with isolines stitched into rings.\n // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n function isorings(values, value, callback) {\n var fragmentByStart = new Array,\n fragmentByEnd = new Array,\n x, y, t0, t1, t2, t3;\n\n // Special case for the first row (y = -1, t2 = t3 = 0).\n x = y = -1;\n t1 = above(values[0], value);\n cases[t1 << 1].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = above(values[x + 1], value);\n cases[t0 | t1 << 1].forEach(stitch);\n }\n cases[t1 << 0].forEach(stitch);\n\n // General case for the intermediate rows.\n while (++y < dy - 1) {\n x = -1;\n t1 = above(values[y * dx + dx], value);\n t2 = above(values[y * dx], value);\n cases[t1 << 1 | t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t0 = t1, t1 = above(values[y * dx + dx + x + 1], value);\n t3 = t2, t2 = above(values[y * dx + x + 1], value);\n cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t1 | t2 << 3].forEach(stitch);\n }\n\n // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n x = -1;\n t2 = values[y * dx] >= value;\n cases[t2 << 2].forEach(stitch);\n while (++x < dx - 1) {\n t3 = t2, t2 = above(values[y * dx + x + 1], value);\n cases[t2 << 2 | t3 << 3].forEach(stitch);\n }\n cases[t2 << 3].forEach(stitch);\n\n function stitch(line) {\n var start = [line[0][0] + x, line[0][1] + y],\n end = [line[1][0] + x, line[1][1] + y],\n startIndex = index(start),\n endIndex = index(end),\n f, g;\n if (f = fragmentByEnd[startIndex]) {\n if (g = fragmentByStart[endIndex]) {\n delete fragmentByEnd[f.end];\n delete fragmentByStart[g.start];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n }\n } else {\n delete fragmentByEnd[f.end];\n f.ring.push(end);\n fragmentByEnd[f.end = endIndex] = f;\n }\n } else if (f = fragmentByStart[endIndex]) {\n if (g = fragmentByEnd[startIndex]) {\n delete fragmentByStart[f.start];\n delete fragmentByEnd[g.end];\n if (f === g) {\n f.ring.push(end);\n callback(f.ring);\n } else {\n fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n }\n } else {\n delete fragmentByStart[f.start];\n f.ring.unshift(start);\n fragmentByStart[f.start = startIndex] = f;\n }\n } else {\n fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n }\n }\n }\n\n function index(point) {\n return point[0] * 2 + point[1] * (dx + 1) * 4;\n }\n\n function smoothLinear(ring, values, value) {\n ring.forEach(function(point) {\n var x = point[0],\n y = point[1],\n xt = x | 0,\n yt = y | 0,\n v1 = valid(values[yt * dx + xt]);\n if (x > 0 && x < dx && xt === x) {\n point[0] = smooth1(x, valid(values[yt * dx + xt - 1]), v1, value);\n }\n if (y > 0 && y < dy && yt === y) {\n point[1] = smooth1(y, valid(values[(yt - 1) * dx + xt]), v1, value);\n }\n });\n }\n\n contours.contour = contour;\n\n contours.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = Math.floor(_[0]), _1 = Math.floor(_[1]);\n if (!(_0 >= 0 && _1 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, contours;\n };\n\n contours.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n };\n\n contours.smooth = function(_) {\n return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n };\n\n return contours;\n}\n\n// When computing the extent, ignore infinite values (as well as invalid ones).\nfunction finite(x) {\n return isFinite(x) ? x : NaN;\n}\n\n// Is the (possibly invalid) x greater than or equal to the (known valid) value?\n// Treat any invalid value as below negative infinity.\nfunction above(x, value) {\n return x == null ? false : +x >= value;\n}\n\n// During smoothing, treat any invalid value as negative infinity.\nfunction valid(v) {\n return v == null || isNaN(v = +v) ? -Infinity : v;\n}\n\nfunction smooth1(x, v0, v1, value) {\n const a = value - v0;\n const b = v1 - v0;\n const d = isFinite(a) || isFinite(b) ? a / b : Math.sign(a) / Math.sign(b);\n return isNaN(d) ? x : x + d - 0.5;\n}\n", "import {blur2, max, ticks} from \"d3-array\";\nimport {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport Contours from \"./contours.js\";\n\nfunction defaultX(d) {\n return d[0];\n}\n\nfunction defaultY(d) {\n return d[1];\n}\n\nfunction defaultWeight() {\n return 1;\n}\n\nexport default function() {\n var x = defaultX,\n y = defaultY,\n weight = defaultWeight,\n dx = 960,\n dy = 500,\n r = 20, // blur radius\n k = 2, // log2(grid cell size)\n o = r * 3, // grid offset, to pad for blur\n n = (dx + o * 2) >> k, // grid width\n m = (dy + o * 2) >> k, // grid height\n threshold = constant(20);\n\n function grid(data) {\n var values = new Float32Array(n * m),\n pow2k = Math.pow(2, -k),\n i = -1;\n\n for (const d of data) {\n var xi = (x(d, ++i, data) + o) * pow2k,\n yi = (y(d, i, data) + o) * pow2k,\n wi = +weight(d, i, data);\n if (wi && xi >= 0 && xi < n && yi >= 0 && yi < m) {\n var x0 = Math.floor(xi),\n y0 = Math.floor(yi),\n xt = xi - x0 - 0.5,\n yt = yi - y0 - 0.5;\n values[x0 + y0 * n] += (1 - xt) * (1 - yt) * wi;\n values[x0 + 1 + y0 * n] += xt * (1 - yt) * wi;\n values[x0 + 1 + (y0 + 1) * n] += xt * yt * wi;\n values[x0 + (y0 + 1) * n] += (1 - xt) * yt * wi;\n }\n }\n\n blur2({data: values, width: n, height: m}, r * pow2k);\n return values;\n }\n\n function density(data) {\n var values = grid(data),\n tz = threshold(values),\n pow4k = Math.pow(2, 2 * k);\n\n // Convert number of thresholds into uniform thresholds.\n if (!Array.isArray(tz)) {\n tz = ticks(Number.MIN_VALUE, max(values) / pow4k, tz);\n }\n\n return Contours()\n .size([n, m])\n .thresholds(tz.map(d => d * pow4k))\n (values)\n .map((c, i) => (c.value = +tz[i], transform(c)));\n }\n\n density.contours = function(data) {\n var values = grid(data),\n contours = Contours().size([n, m]),\n pow4k = Math.pow(2, 2 * k),\n contour = value => {\n value = +value;\n var c = transform(contours.contour(values, value * pow4k));\n c.value = value; // preserve exact threshold value\n return c;\n };\n Object.defineProperty(contour, \"max\", {get: () => max(values) / pow4k});\n return contour;\n };\n\n function transform(geometry) {\n geometry.coordinates.forEach(transformPolygon);\n return geometry;\n }\n\n function transformPolygon(coordinates) {\n coordinates.forEach(transformRing);\n }\n\n function transformRing(coordinates) {\n coordinates.forEach(transformPoint);\n }\n\n // TODO Optimize.\n function transformPoint(coordinates) {\n coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n }\n\n function resize() {\n o = r * 3;\n n = (dx + o * 2) >> k;\n m = (dy + o * 2) >> k;\n return density;\n }\n\n density.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n };\n\n density.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n };\n\n density.weight = function(_) {\n return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n };\n\n density.size = function(_) {\n if (!arguments.length) return [dx, dy];\n var _0 = +_[0], _1 = +_[1];\n if (!(_0 >= 0 && _1 >= 0)) throw new Error(\"invalid size\");\n return dx = _0, dy = _1, resize();\n };\n\n density.cellSize = function(_) {\n if (!arguments.length) return 1 << k;\n if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n return k = Math.floor(Math.log(_) / Math.LN2), resize();\n };\n\n density.thresholds = function(_) {\n return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n };\n\n density.bandwidth = function(_) {\n if (!arguments.length) return Math.sqrt(r * (r + 1));\n if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n return r = (Math.sqrt(4 * _ * _ + 1) - 1) / 2, resize();\n };\n\n return density;\n}\n", "import type { BaseHicRequest, XYZCoord } from './hicdata.ts'\n\nexport type HicGenomeRequest = BaseHicRequest & {\n\t/** Entire chromosome list read from the file (see hicstate) */\n\tchrlst: string[]\n\t/** window location */\n\tembedder: string\n\t/** whether or not the file contains 'chr' for the chromosomes */\n\tnochr: boolean\n}\n\nexport type HicGenomeResponse = {\n\tdata: {\n\t\t/** First chromosome */\n\t\tlead: string\n\t\t/** Second chromosome */\n\t\tfollow: string\n\t\titems: XYZCoord[]\n\t}[]\n\t/** Error message to display on the client, if applicable */\n\terror?: string\n}\n\n// TODO: write payload examples to help with automated testing and documentation, for non-prod use only\n// The example below will not work in github CI where only termdb test\nexport const hicGenomePayloadExample = {\n\texamples: [\n\t\t{\n\t\t\trequest: {\n\t\t\t\tbody: {\n\t\t\t\t\tembedder: 'localhost',\n\t\t\t\t\turl: 'https://proteinpaint.stjude.org/ppdemo/hg19/hic/hic_demo.hic',\n\t\t\t\t\tmatrixType: 'observed',\n\t\t\t\t\tnmeth: 'NONE',\n\t\t\t\t\tpos1: '3',\n\t\t\t\t\tpos2: '2',\n\t\t\t\t\tresolution: 1000000\n\t\t\t\t} // satisfies HicGenomeRequest // TODO: fix the type or example\n\t\t\t},\n\t\t\tresponse: {\n\t\t\t\theader: { status: 200 }\n\t\t\t}\n\t\t}\n\t]\n}\n", "import type { ErrorResponse } from './errorResponse.ts'\n\nexport type BubbleHeatmapRequest = {\n\tgenome: string\n\tdslabel: string\n\tgene: string\n}\n\n/** One modification site (PTM) or one protein-level measurement (whole/insoluble\n * proteome). PTM cells carry many of these; protein-level cells carry exactly one. */\nexport type BubbleSite = {\n\t/** site identifier \u2014 the DAPfile `identifier` column (modified peptide for PTM,\n\t * e.g. `K.VAVVRT%PPKSPSS*AK.S`; protein id for protein-level rows) */\n\tid: string\n\t/** raw per-site log2 fold change from the DAPfile */\n\tlog2FC: number\n\t/** per-site FDR (adjusted p-value) from the DAPfile */\n\tfdr: number\n\t/** true when fdr < the response's fdrThreshold; non-significant sites\n\t * are still returned (the client draws non-significant protein-level dots faded\n\t * and hides non-significant PTM sites) */\n\tsignificant: boolean\n\t/** matched reference-assay (total protein) log2FC for this protein (base UniProt\n\t * acc) + cohort, if available */\n\tproteinLog2FC?: number\n\t/** protein-abundance-adjusted change = log2FC \u2212 proteinLog2FC (point estimate),\n\t * present only when proteinLog2FC is available */\n\tadjustedLog2FC?: number\n\t/** true when a matched protein value existed and adjustedLog2FC was computed */\n\tadjustedAvailable: boolean\n}\n\nexport type BubbleCell = {\n\t/** all sites for this (acc, assay, cohort); one entry for protein-level assays */\n\tsites: BubbleSite[]\n}\n\nexport type BubbleHeatmapIsoform = {\n\tgene_name: string\n\t/** data[assay][cohort] \u2192 cell (omitted when the cohort doesn't exist under the\n\t * assay or the gene has no row in that DAPfile) */\n\tdata: {\n\t\t[assay: string]: {\n\t\t\t[cohort: string]: BubbleCell\n\t\t}\n\t}\n}\n\nexport type BubbleHeatmapResponse =\n\t| ErrorResponse\n\t| {\n\t\t\tisoforms: { [isoformId: string]: BubbleHeatmapIsoform }\n\t\t\t/** subset of `assays` that are PTM assays \u2014 rendered as multiple small\n\t\t\t * per-site dots; the rest render as a single big dot per cell */\n\t\t\tptmAssays: string[]\n\t\t\t/** Row order */\n\t\t\tassays: string[]\n\t\t\t/** Column order */\n\t\t\tcohorts: string[]\n\t\t\t/** FDR threshold below which a site is significant. Sites with\n\t\t\t * fdr \u2265 threshold are still returned with `significant: false`; the client\n\t\t\t * draws non-significant protein-level dots faded and omits non-significant\n\t\t\t * PTM sites. */\n\t\t\tfdrThreshold: number\n\t\t\t/** assay used as the total-protein baseline for protein-abundance\n\t\t\t * adjustment, or null when adjustment is not configured for this dataset */\n\t\t\tproteinReferenceAssay: string | null\n\t }\n\nexport const bubbleHeatmapPayload = {\n\trequest: { typeId: 'BubbleHeatmapRequest' },\n\tresponse: { typeId: 'BubbleHeatmapResponse' }\n}\n", "import type { Filter } from '../filter.ts'\nimport type { TermWrapper } from '../terms/tw.ts'\n\nexport type CategoriesRequest = {\n\tgenome: string\n\tdslabel: string\n\tembedder: string\n\t/** termwrapper object */\n\ttw: TermWrapper\n\tfilter?: Filter\n\tfilter0?: any\n\t/** quick fix only for gdc */\n\tcurrentGeneNames?: string[]\n\t/** optional property added by mds3 tk, to limit to cases mutated in this region */\n\trglst?: any\n}\n\ninterface Entries {\n\tsamplecount: number\n\tkey: string\n\tlabel: string\n}\n\n/** number of samples per mutation class, k: mclass key (e.g. \"M\") */\ntype DtClasses = { [mclass: string]: number }\n\n/** a distinct pair of breakpoints of the sv/fusion events of a MnameEntry: one on the\n * queried gene and one on the partner gene named by that entry's mname. lets the\n * term-editing UIs chart the breakpoints of either gene, and select a range of them */\nexport type BreakpointEntry = {\n\t/** breakpoint on the queried gene */\n\tpos: number\n\t/** chr of the partner gene, may differ from that of the queried gene */\n\tpartnerChr: string\n\t/** breakpoint on the partner gene */\n\tpartnerPos: number\n\t/** samples having a sv/fusion of both these breakpoints. NOTE these counts are per\n\t * pair, so summing them across the breakpoints of one .pos (e.g. to chart the\n\t * breakpoints of the queried gene alone) may count a sample with two events at\n\t * that position, to different partners, more than once */\n\tsamplecount: number\n}\n\n/** an amino acid change (e.g. \"G12D\") and its sample count, within a mutation class.\n * for a sv/fusion, .mname is the partner gene (or its chr when unannotated) */\nexport type MnameEntry = {\n\tmname: string\n\tclass: string\n\tsamplecount: number\n\t/** gene of this variant, only present when annotated on the mutation data;\n\t * distinguishes variants of a geneVariant term with multiple genes */\n\tgene?: string\n\t/** breakpoints of the sv/fusion events of this entry, sorted by ascending position.\n\t * only present for a sv/fusion dt, and only for events carrying coordinates */\n\tbreakpoints?: BreakpointEntry[]\n\t/** number of samples whose sv/fusion events of this entry lack a breakpoint\n\t * coordinate, and so are absent from .breakpoints and cannot satisfy a breakpoint\n\t * range. only present when non-zero, so that the ui may caveat the chart */\n\tnoPositionCount?: number\n}\n\n/** per-dt entry returned for a geneVariant term without groupsetting */\nexport type GvCategoryEntry = {\n\tdt: number\n\tclasses: DtClasses | { byOrigin: { [origin: string]: DtClasses } }\n\t/** amino acid changes present for this dt, sorted by descending sample count.\n\t * only served by the termdb/categories route, and only when the mutation data\n\t * carries mname; the same entries returned within a data request (see\n\t * mayGetCategories() in termdb.matrix.js) omit this field */\n\tmnames?: MnameEntry[] | { byOrigin: { [origin: string]: MnameEntry[] } }\n}\n\nexport type CategoriesResponse = {\n\tlst: Entries[] | GvCategoryEntry[]\n\torderedLabels?: []\n}\n\n// TODO: write more payload examples to help with automated testing and documentation, for non-prod use only\n\nexport const termdbCategoriesPayloadExamples = {\n\trequest: {\n\t\ttypeId: 'CategoriesRequest'\n\t},\n\tresponse: {\n\t\ttypeId: 'CategoriesResponse'\n\t},\n\texamples: [\n\t\t{\n\t\t\trequest: {\n\t\t\t\tbody: {\n\t\t\t\t\tgenome: 'hg38-test',\n\t\t\t\t\tdslabel: 'TermdbTest',\n\t\t\t\t\tembedder: 'localhost',\n\t\t\t\t\ttw: { id: 'diaggrp' },\n\t\t\t\t\tfilter: {\n\t\t\t\t\t\ttype: 'tvslst',\n\t\t\t\t\t\tin: true,\n\t\t\t\t\t\tjoin: '',\n\t\t\t\t\t\tlst: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t//tag: 'cohortFilter',\n\t\t\t\t\t\t\t\ttype: 'tvs',\n\t\t\t\t\t\t\t\ttvs: {\n\t\t\t\t\t\t\t\t\tterm: {\n\t\t\t\t\t\t\t\t\t\tname: 'Cohort',\n\t\t\t\t\t\t\t\t\t\ttype: 'categorical',\n\t\t\t\t\t\t\t\t\t\tvalues: { ABC: { label: 'ABC' }, XYZ: { label: 'XYZ' } },\n\t\t\t\t\t\t\t\t\t\tid: 'subcohort',\n\t\t\t\t\t\t\t\t\t\tisleaf: false,\n\t\t\t\t\t\t\t\t\t\tgroupsetting: { disabled: true }\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tvalues: [{ key: 'ABC', label: 'ABC' }]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t} // satisfies CategoriesRequest // TODO: use the type definition\n\t\t\t},\n\t\t\tresponse: {\n\t\t\t\theader: { status: 200 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t// geneVariant term without groupsetting, returns per-dt entries\n\t\t\t// with classes and mnames (amino acid changes), see GvCategoryEntry\n\t\t\trequest: {\n\t\t\t\tbody: {\n\t\t\t\t\tgenome: 'hg38-test',\n\t\t\t\t\tdslabel: 'TermdbTest',\n\t\t\t\t\tembedder: 'localhost',\n\t\t\t\t\ttw: {\n\t\t\t\t\t\tterm: { type: 'geneVariant', name: 'TP53', genes: [{ kind: 'gene', gene: 'TP53' }] },\n\t\t\t\t\t\tq: { type: 'values' }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tresponse: {\n\t\t\t\theader: { status: 200 }\n\t\t\t}\n\t\t}\n\t]\n}\n", "import type { TermTypes } from '../terms/constants.ts'\nimport type { Filter } from '../filter.ts'\n\n/** */\n// Helps track ambiguous points in the LLM reasoning process for debugging and improvement purposes.\n// Create a fresh array per request/pipeline run to avoid sharing mutable state across module consumers.\nexport const createAmbiguousPoints = (): string[] => []\n\nexport type ChatRequest = {\n\tgenome: string\n\tdslabel: string\n\tfilter?: Filter\n\t/** user prompt */\n\tprompt: string\n\t__protected__?: any\n}\n\nexport type TextResponse = {\n\ttype: 'text'\n\t/** Plain text message to display in the chat */\n\ttext: string\n}\nexport type HtmlResponse = {\n\ttype: 'html'\n\t/** Pre-approved HTML from the dataset JSON resources array */\n\thtml: string\n}\nexport type PlotResponse = {\n\ttype: 'plot'\n\tplot: object\n\tmsg?: string\n\t/** Specifies what action to take e.g. Summary plot or no action. Will add more chart types later */\n}\n\nexport interface GeneDataTypeResult {\n\tgene: string\n\tdataType: string\n}\n\n/** Gene data types a dataset supports, for the mass omnisearch to decide which gene-search actions\n * (expression / variant sub-types / methylation / genome browser) to offer. */\nexport interface GeneDataTypeAvailability {\n\tgeneExpression: boolean\n\tdnaMethylation: boolean\n\tsnvindel: boolean\n\tcnv: boolean\n\tsvfusion: boolean\n\t/** True when any genomic-alteration data type (snvindel/cnv/svfusion) is available, meaning a\n\t * genome browser can be seeded for the gene. Derived from the three flags above. */\n\tgenomeBrowser: boolean\n}\n\n/** One matched gene together with the data types available for that specific gene. */\nexport interface GeneMatch {\n\tgene: string\n\tdataTypes: GeneDataTypeAvailability\n\t/** Default genomic coordinate for the gene, used to seed a genome browser track (e.g. the DNA\n\t * methylation region picker) so the client needs no separate genelookup request. Null when the\n\t * gene is not resolved to a coordinate (only resolved for genes that need a genome browser). */\n\tcoord: { chr: string; start: number; stop: number } | null\n}\n\n/** One matched sample. Only sent when the dataset allows displaying sample ids\n * (authApi.canDisplaySampleIds); a dataset that does not permit it yields no samples at all, so the\n * client needs no permission check of its own. */\nexport interface SampleMatch {\n\tid: number | string\n\tname: string\n\t/** Sample selection for the single-cell viewer, when this sample has single-cell data. */\n\tsingleCell?: { sID: string; eID?: string }\n\t/** Facet-table assays available for this sample, when track-list facet data exists. */\n\tassays?: { facet: string; names: string[] }[]\n\t/** true when the sample has plain whole-slide images on disk\n\t (ds.queries.w2.wsiFolder); shows the \"Whole Slide Images\" action */\n\twsimages?: boolean\n}\n\n/** Result of the mass omnisearch: matched dictionary terms and matched genes, each carrying its own\n * available gene data types so the client can offer the appropriate per-gene action buttons. */\nexport interface OmnisearchResult {\n\tdictionaryTerms: any[]\n\tgenes: GeneMatch[]\n\t/** Matched samples. Always [] for a dataset that does not allow displaying sample ids. */\n\tsamples: SampleMatch[]\n\t/** Total match count per result type BEFORE the per-type display cap. Lets the client show a\n\t * \"Displaying N out of M\" note when a type's matches were truncated (total > the returned array length). */\n\ttotals?: { dictionaryTerms: number; genes: number; samples: number }\n\t/** Parsed genomic coordinate when the prompt is a valid \"chr:start-stop\" range AND the dataset\n\t * supports the genome browser genomic view (has snvindel/cnv/svfusion and gbRestrictMode !== 'protein').\n\t * Null/absent otherwise. Resolved server-side (via string2pos) so the client needs no genome object. */\n\tcoord?: { chr: string; start: number; stop: number } | null\n\terror?: any\n}\n\nexport type LlmConfig = {\n\tprovider: 'SJ' | 'ollama' | 'huggingface' | 'azure'\n\tEmbeddingProvider: 'SJ' | 'ollama' | 'huggingface'\n\tEmbeddingProviderApi: string\n\tapi: string\n\tapiToken?: string\n\tEmbeddingProviderApiToken?: string\n\tmodel: ModelConfig\n\tembeddingModelName: string\n\t/** Whether to load the embedding model locally (via transformers.js) or call a remote API. Defaults to 'api'. */\n\tembeddingModelAccess?: 'local' | 'api'\n\t/** Smaller model to use for LLM classification fallback. Defaults to `model` if not set. */\n\tclassifierModelConfig?: ModelConfig\n\t/** Log verbose debug output (e.g. raw embedding arrays) to the terminal. Defaults to false. */\n\tverbose?: boolean\n}\n\nexport type ModelConfig = {\n\tmodelName: string\n\tmaxTokens: number\n}\n\nexport interface GeneSetDataTypeResult {\n\tgeneSet: string\n\tdataType: typeof TermTypes.SSGSEA | typeof TermTypes.GENE_VARIANT | 'ambiguous' | typeof TermTypes.GENE_EXPRESSION\n}\n\nexport type ChatResponse = TextResponse | HtmlResponse | PlotResponse\n\nexport type SummaryType = {\n\t/** Name of 1st term */\n\tterm: string\n\t/** Name of 2nd term */\n\tterm2?: string\n\t/** Optional simple filter terms */\n\tsimpleFilter: FilterTerm[]\n\t/** Optional explicit child type requested by the user. If omitted, the logic of the data types picks the child type. */\n\tchildType?: 'violin' | 'boxplot' | 'sampleScatter' | 'barchart'\n}\n\nexport type FilterTerm =\n\t| CategoricalFilterTerm\n\t| NumericFilterTerm /** FilterTerm can either be numeric or categorical */\n\nexport type CategoricalFilterTerm = {\n\t/** Name of categorical term */\n\tterm: string\n\t/** The category of the term */\n\tcategory: string\n\t/** join term to be used only when there is more than one filter term and should be placed from the 2nd filter term onwards describing how it connects to the previous term */\n\tjoin?: 'and' | 'or'\n}\n\nexport type NumericFilterTerm = {\n\t/** Name of numeric term */\n\tterm: string\n\t/** start position (or lower limit) of numeric term */\n\tstart?: number\n\t/** stop position (or upper limit) of numeric term */\n\tstop?: number\n\t/** join term to be used only when there is more than one filter term and should be placed from the 2nd filter term onwards describing how it connects to the previous term */\n\tjoin?: 'and' | 'or'\n}\n\nexport type DbRows = {\n\t/** Name of the term */\n\tname: string\n\t/** Description of the term in plain language */\n\tdescription: string\n\t/** The type of variable stored in the DB (e.g. categorical, float) */\n\tterm_type: string\n\t/** Array of {key,value} terms storing the possible categories for a categorical variable */\n\tvalues: DbValue[]\n}\n\nexport type DbValue = {\n\t/** Name of the key */\n\tkey: string\n\t/** Object of values corresponding to the key */\n\tvalue: any\n}\n\nexport type ClassificationType =\n\t| plot_type\n\t| resource_type\n\t| none_type /** Variable containing the type of action the UI needs to take */\n\nexport type plot_type = {\n\t/** When type == plot, show the corresponding plot in the plot field */\n\ttype: 'plot'\n\t/** The type of plot to be displayed on the UI.\n\t * Standard categories are listed; datasets may define additional custom categories. */\n\tplot: 'summary' | 'dge' | 'survival' | 'matrix' | 'sampleScatter' | 'hierCluster' | 'genomeBrowser'\n}\n\nexport type resource_type = {\n\t/** When type == resource, invoke the resource agent to return a matching resource link */\n\ttype: 'resource'\n}\n\nexport type none_type = {\n\t/** When type == none, the query did not match any known category */\n\ttype: 'none'\n}\n\n/** Top-level classification returned by classifyQuery: plot or notplot (subtype determined separately by plot.ts) */\nexport type QueryClassification = { type: 'plot' } | { type: 'notplot' } | { type: 'binaryQuery' }\n\n/** Specific plot type returned by classifyPlotType in plot.ts */\nexport type PlotType =\n\t| 'summary'\n\t| 'dge'\n\t| 'survival'\n\t| 'cox'\n\t| 'matrix'\n\t| 'prebuiltscatter'\n\t| 'hiercluster'\n\t| 'genomeBrowser'\n\nexport type DEType = {\n\t/** Name of group1 which is an array of filter terms */\n\tgroup1: FilterTerm[]\n\t/** Name of group2 which is an array of filter terms */\n\tgroup2: FilterTerm[]\n\t/** Method used for carrying out differential gene expression analysis */\n\tmethod?: 'edgeR' | 'limma' | 'wilcoxon'\n}\n\nexport type MatrixType = {\n\t/** Names of dictionary terms to include as rows in the matrix (e.g. \"Diagnosis\", \"Gender\", \"Race\") */\n\tterms?: string[]\n\t/** Names of genes to include as gene variant rows in the matrix (e.g. \"TP53\", \"KRAS\", \"NRAS\") */\n\tgeneNames?: string[]\n\t/** Names of gene sets containing ssGSEA enrichment scores */\n\tgenesetNames?: string[]\n\t/** Optional simple filter terms to restrict the sample set */\n\tsimpleFilter?: FilterTerm[]\n}\n\nexport type HierClusterType = {\n\t/** Names of genes to include in the hierarchical clustering (e.g. \"TP53\", \"KRAS\", \"BCR\") */\n\tgeneNames?: string[]\n\t/** Names of gene sets containing list of genes to be used for hierarchical clustering */\n\tgenesetNames?: string[]\n\t/** Optional simple filter terms to restrict the sample set */\n\tsimpleFilter?: FilterTerm[]\n}\n\nexport type SampleScatterType = {\n\t/** Name of the pre-built plot (e.g. \"Transcriptome t-SNE\", \"Transcriptome UMAP\") */\n\tplotName: string\n\t/** Term or gene name to overlay as color, or null to remove color overlay */\n\tcolorTW?: string | null\n\t/** Term or gene name to overlay as shape, or null to remove shape overlay */\n\tshapeTW?: string | null\n\t/** Term or gene name to overlay as Z-divide, or null to remove divide overlay */\n\tterm0?: string | null\n\t/** Optional simple filter terms */\n\tsimpleFilter?: FilterTerm[]\n}\n", "import type { Filter } from '../filter.ts'\nimport type { TermWrapper } from '../terms/tw.ts'\n\nexport type DescrStatsRequest = {\n\t/** genome label in the serverconfig.json */\n\tgenome: string\n\t/** dataset label for the given genome */\n\tdslabel: string\n\t// embedder: string\n\t/** wrapper of a numeric term, q.mode can be any as getData() will always pull sample-level values for summarizing */\n\ttw: TermWrapper\n\t/** if true, the (violin) plot is in log scale and must exclude 0-values from the stat */\n\tlogScale?: boolean\n\t/** optional pp filter */\n\tfilter?: Filter\n\t/** optional gdc filter */\n\tfilter0?: any\n}\n\nexport type DescrStats = {\n\t[key: string]: {\n\t\tkey: string\n\t\tlabel: string\n\t\tvalue: number\n\t}\n}\n\nexport type DescrStatsResponse = DescrStats\n\n// TODO: write more payload examples to help with automated testing and documentation, for non-prod use only\n\nexport const descrStatsPayloadExamples = {\n\trequest: {\n\t\ttypeId: 'DescrStatsRequest'\n\t},\n\tresponse: {\n\t\ttypeId: 'DescrStatsResponse'\n\t},\n\texamples: [\n\t\t{\n\t\t\trequest: {\n\t\t\t\tbody: {\n\t\t\t\t\tgenome: 'hg38-test',\n\t\t\t\t\tdslabel: 'TermdbTest',\n\t\t\t\t\tembedder: 'localhost',\n\t\t\t\t\ttw: { term: { id: 'hrtavg' }, q: { mode: 'continuous' } },\n\t\t\t\t\tfilter: {\n\t\t\t\t\t\ttype: 'tvslst',\n\t\t\t\t\t\tin: true,\n\t\t\t\t\t\tjoin: '',\n\t\t\t\t\t\tlst: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttag: 'cohortFilter',\n\t\t\t\t\t\t\t\ttype: 'tvs',\n\t\t\t\t\t\t\t\ttvs: {\n\t\t\t\t\t\t\t\t\tterm: {\n\t\t\t\t\t\t\t\t\t\tname: 'Cohort',\n\t\t\t\t\t\t\t\t\t\ttype: 'categorical',\n\t\t\t\t\t\t\t\t\t\tvalues: { ABC: { label: 'ABC' }, XYZ: { label: 'XYZ' } },\n\t\t\t\t\t\t\t\t\t\tid: 'subcohort',\n\t\t\t\t\t\t\t\t\t\tisleaf: false,\n\t\t\t\t\t\t\t\t\t\tgroupsetting: { disabled: true }\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tvalues: [{ key: 'ABC', label: 'ABC' }]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t} // satisfies DescrStatsRequest // TODO: enable type check\n\t\t\t},\n\t\t\tresponse: {\n\t\t\t\theader: { status: 200 }\n\t\t\t}\n\t\t}\n\t]\n}\n", "import type { DataEntry, VolcanoData, VolcanoRenderRequest } from './termdb.DE.js'\nimport type { DmrRunResources, TermdbDmrBatchSuccessResponse } from './termdb.dmrBatch.js'\n\n/** The element_type that asks the differential-methylation volcano to call DMRs de novo across\n * the genome (termdb/dmrBatch scan mode) instead of testing a pre-annotated element class. Not a\n * key into ds.queries.dnaMethylation.elements; termdb.config.ts lists it among elementTypes when\n * the dataset has a matrix the region analysis can run on. */\n/** DMRcate's region-level statistics, each BH-adjusted across regions: the smallest smoothed FDR of the\n * region's CpGs (what DMRcate calls regions by), and three combinations of the region's raw per-CpG\n * p-values -- harmonic mean, Stouffer and Fisher. */\nexport const DMR_SCAN_Y_AXES = ['min_smoothed_fdr', 'HMFDR', 'Stouffer', 'Fisher'] as const\nexport type DmrScanYAxis = (typeof DMR_SCAN_Y_AXES)[number]\n\nexport const DMR_SCAN_ELEMENT_TYPE = 'dmr_scan'\n\n/** Default CpG floor, shared because the client seeds its control with it and the server falls\n * back to it for a request that omits one -- two readings of \"an untouched scan\" that must agree.\n * Two-CpG calls carry the LARGEST effect sizes and split 51.5% / 48.5% hyper / hypo on MMRF chr1\n * -- a coin flip -- where 10+ CpG calls run 58% hyper. Five keeps 86% of calls and all of the\n * structure. Not part of any cache key: the floor is applied to a cached scan's DMRs. */\nexport const DEFAULT_MIN_CPGS = 5\n\n/** Whether a DMR's \u0394\u03B2 clears the volcano's Min \u0394\u03B2, the one test behind the scan's counts, Manhattan, browser track\n * and gene links and the region view's gray DMRs: strictly above the floor, as the volcano renderer classifies\n * |x| > cutoff, so a DMR exactly at it is counted nowhere -- at a floor of 0 (or none) too, where a \u0394\u03B2 of exactly 0\n * is not counted. One with no \u0394\u03B2 (no covered cell in a group) has no measured effect and clears no floor. */\nexport function clearsMinDeltaBeta(deltaBeta: number | null | undefined, minDeltaBeta: number | undefined): boolean {\n\treturn deltaBeta != null && Math.abs(deltaBeta) > (minDeltaBeta || 0)\n}\n\nexport type DiffMethRequest = {\n\t/** Discriminator tag. Matches the `kind` field on `DmCacheResult` and\n\t * lets the GSEA route tell a snapshot DM request apart from a snapshot\n\t * DE request without structural-shape probing. */\n\tkind: 'DM'\n\t/** Genome build name */\n\tgenome: string\n\t/** Dataset label */\n\tdslabel: string\n\t/** Object containing two arrays of samples for differential methylation analysis */\n\tsamplelst: any\n\t/** Minimum non-NA samples required per group (default 3) */\n\tmin_samples_per_group?: number\n\t/** Drop chrX/chrY elements before testing (default false). X-inactivation makes\n\t * chrX methylation strongly sex-dependent, so a sex-imbalanced comparison produces\n\t * chrX hits that are sex rather than the grouping variable. */\n\texclude_sex_chr?: boolean\n\t/** Which regulatory-element class to test, keying into\n\t * ds.queries.dnaMethylation.elements. Absent means 'promoter', which keeps every\n\t * existing client request and cache entry valid. The available keys and their\n\t * display labels come from the dataset config, so the picker is data-driven rather\n\t * than a hardcoded list. */\n\telement_type?: string\n\t/** Only read when element_type is DMR_SCAN_ELEMENT_TYPE. Every field has a default, so a bare\n\t * scan request scans the whole genome uncorrected and keeps DMRs of 5+ CpGs. */\n\tscan?: {\n\t\t/** one chromosome to scan; absent = every major chromosome except the mitochondrion */\n\t\tchromosome?: string\n\t\t/** score each DMR against matched intergenic background (termdb/dmrBatch\n\t\t * backgroundCorrection); the volcano's p then becomes that empirical p and DMRs whose\n\t\t * stratum held too little background are left out of the rows */\n\t\tbackgroundCorrection?: boolean\n\t\t/** the region statistic the volcano's y (and the scan Manhattan's) plots; ignored with\n\t\t * backgroundCorrection, whose empirical p is the y then. Absent = min_smoothed_fdr */\n\t\tyAxis?: DmrScanYAxis\n\t\t/** the volcano's Min \u0394\u03B2: DMRs with a |\u0394\u03B2| no larger stay on the volcano, as not significant, but are\n\t\t * not counted, nor drawn on the Manhattan or the browser track. Absent = 0 */\n\t\tminDeltaBeta?: number\n\t\t/** drop DMRs called from fewer CpGs than this before rendering; absent = DEFAULT_MIN_CPGS */\n\t\tminCpgs?: number\n\t\t/** display width of the methylome-wide profile's bins, in bp. Several native bins are\n\t\t * averaged into one at render time; absent or at/below the native width draws them as\n\t\t * computed. Not part of any cache key -- changing it redraws a cached scan. */\n\t\tprofileBinBp?: number\n\t\t/** DMRcate lambda, C and per-CpG FDR cutoff, passed to termdb/dmrBatch; absent = its defaults.\n\t\t * Part of the scan's cache key, so changing one refits. */\n\t\tlambda?: number\n\t\tC?: number\n\t\tfdrCutoff?: number\n\t}\n\t/** Term for confounding variable 1 (if present) */\n\ttw?: any\n\t/** Term for confounding variable 2 (if present) */\n\ttw2?: any\n\t/** Option to return early with actual number of samples with methylation values */\n\tpreAnalysis?: boolean\n\t/** Parameters for the server-side `da` Rust renderer. Always required \u2014 the\n\t * server always returns a rendered PNG plus the threshold-passing rows. */\n\tvolcanoRender: VolcanoRenderRequest\n\t__protected__?: any\n}\n\n/** Response when DiffMethRequest.preAnalysis === true. Returns per-group\n * sample counts (keyed by group name) plus an optional validation alert. */\nexport type DiffMethPreAnalysisResponse = {\n\t/** number of samples with methylation data, keyed by group name. a group name is\n\t * user-supplied, so it must not share this object with any other property */\n\tdata: Record<string, number>\n\t/** validation message; the client hides the run button while it is present */\n\talert?: string\n}\n\n/** Response for a full differential methylation run (preAnalysis absent/false). */\nexport type DiffMethFullResponse = {\n\t/** The volcano payload \u2014 per-element interactive dots + PNG + extents +\n\t * totals. See VolcanoData for details. */\n\tdata: VolcanoData<DiffMethEntry>\n\t/** Effective sample size for group 1 */\n\tsample_size1: number\n\t/** Effective sample size for group 2 */\n\tsample_size2: number\n\t/** Present only for a DMR scan: what the scan did and found, beyond the rows themselves. */\n\tscan?: DmrScanSummary\n}\n\n/** Whole-scan facts the volcano's Statistics panel and genome map are drawn from. Every count here\n * is over the scan as returned by termdb/dmrBatch, before the volcano's own thresholds, so the\n * panel can state what the rows were selected from. */\nexport type DmrScanSummary = {\n\t/** chromosomes scanned, in genome order */\n\tchromosomes: string[]\n\t/** the chromosomes DMRcate ran over: the whole genome (less the sex chromosomes when excluded),\n\t * of which `chromosomes` is the view. A region view opened from the scan windows this run. */\n\trunChromosomes: string[]\n\t/** the DMRcate parameters that run used, defaults filled in, which a region view must match */\n\tdmrcate?: { lambda: number; C: number; fdr_cutoff: number }\n\ttotalProbesAnalyzed: number\n\t/** DMRs the scan called, before any filtering here */\n\tcalled: number\n\t/** the minCpgs that was applied, and how many DMRs met it */\n\tminCpgs: number\n\tkept: number\n\t/** the |\u0394\u03B2| floor applied, and how many kept DMRs met it: what the counts below, the Manhattan, the\n\t * browser track and the gene-body set are over */\n\tminDeltaBeta: number\n\tshown: number\n\t/** the region statistic the rows' p is, when not the background p; what the client labels the y axis */\n\tyAxis: DmrScanYAxis\n\t/** kept DMRs left out of the rows because the run could not compute their yAxis statistic; absent when none */\n\twithoutStatistic?: number\n\t/** kept DMRs left out of the rows, counts, track and gene set because they have no \u0394\u03B2 (no covered cell in a\n\t * group), so no effect to plot or a direction to count them by; absent when none */\n\twithoutDeltaBeta?: number\n\t/** direction split of the shown DMRs: kept, and at or above minDeltaBeta */\n\thyper: number\n\thypo: number\n\t/** width quantiles (bp) of the shown DMRs; absent when none were shown */\n\twidth?: { median: number; q1: number; q3: number }\n\tglobalMethylation?: TermdbDmrBatchSuccessResponse['globalMethylation']\n\tregionMask?: { sources: string[]; overlapFrac: number; dmrsDropped: number }\n\t/** present when the correction ran. `scored` and `significant` count the shown DMRs; `unscored`\n\t * shown DMRs had no background in their stratum and are not among the rows. `windows` is over the\n\t * whole run, also when `chromosomes` is one chromosome of it */\n\tbackgroundCorrection?: { windows: number; scored: number; unscored: number; significant: number; matchedOn: string[] }\n\t/** genes under shown hypomethylated gene-body DMRs -- the set the expression test\n\t * (termdb/dmrGeneDE) runs on. With the background correction on, a region must also beat its\n\t * matched background (p<0.05), which makes this the stricter of two readings rather than the\n\t * only one. Absent when no DMR qualifies. */\n\tgeneBodyLoss?: { regions: number; genes: string[] }\n\t/** The two groups cut to the samples with methylation data, as sample ids: the cohort any\n\t * expression step after a scan should run on, so both readings come from the same patients.\n\t * A group that the request defined by a filter comes back as that filter, with `sampleCount`\n\t * for the number of its samples with methylation data and no sample listed; `matchMethylation`\n\t * then asks the differential expression route to keep to those samples. */\n\tmatchedSamplelst?: {\n\t\tgroups: { name: string; values?: { sampleId: number | string }[]; [k: string]: any }[]\n\t\tmatchMethylation?: boolean\n\t}\n\t/** what the scan cost when it was computed; see DmrRunResources */\n\tresources?: DmrRunResources\n\t/** Mean methylation per group in fixed-width bins along the genome: the profile methylome\n\t * papers plot for a genome-wide comparison, covering every bin with probes rather than only\n\t * the called DMRs. See TermdbDmrBatchSuccessResponse.binMethylation. */\n\tbinMethylation?: NonNullable<TermdbDmrBatchSuccessResponse['binMethylation']>\n\t/** The rendered genome-wide methylation profile: the per-bin group difference along the genome.\n\t * Rendered per request, after the cache, like the DMR Manhattan. `interactive` is how many bins\n\t * per direction carry pixel coordinates; `dotRadius` is the radius the PNG was drawn at, which\n\t * the client's hover layer must match to land on the dots. */\n\tprofile?: {\n\t\tpng: string\n\t\tplotData: any\n\t\t/** the width actually drawn, which is the requested display width when one was asked for */\n\t\tbinBp: number\n\t\tplotWidth: number\n\t\tplotHeight: number\n\t\tdotRadius: number\n\t\t/** bins drawn at that width */\n\t\tbins: number\n\t\t/** how many of them are hoverable: the top N per direction by |delta beta|, so at a coarse\n\t\t * width where the rule reaches every bin this equals `bins` */\n\t\tinteractive: number\n\t}\n\t/** Quantiles of the per-bin difference and the fraction of bins that moved beyond a threshold:\n\t * how much of the measured methylome changed, which the DMR counts alone do not say. */\n\tprofileSummary?: {\n\t\tbins: number\n\t\tmedian: number\n\t\tq1: number\n\t\tq3: number\n\t\tfractionBeyond05: number\n\t\tfractionBeyond10: number\n\t\tfractionHyper: number\n\t}\n\t/** the cached scan the rows came from, so anything ranked off the same scan (e.g.\n\t * termdb/dmrGeneLink) can reach it without recomputing anything */\n\tcacheId?: string\n\t/** The kept DMRs written as a bedj track file under the \"bedj\" cache subdir, as its file name.\n\t * A genome browser opened on the scan loads it with isCache:true, so the track is an ordinary\n\t * bedj file tk rather than items the browser has to fetch and swap per chromosome. */\n\tbedjFile?: string\n\t/** Every kept DMR drawn along the genome, hyper above the line and hypo below, y = signed\n\t * -log10 of the q the volcano plots; the N most significant per direction carry pixel\n\t * coordinates and are interactive. Rendered per request, after the cache, because it depends\n\t * on the client's pixel ratio. */\n\tmanhattan?: {\n\t\tpng: string\n\t\tplotData: any\n\t\tinteractive: number\n\t\tplotWidth: number\n\t\tplotHeight: number\n\t\t/** the radius the PNG was drawn at, which the hover layer must match */\n\t\tdotRadius: number\n\t\t/** filled rather than open circles: a one-chromosome scan, where dots are few enough to fill */\n\t\tfilled: boolean\n\t}\n}\n\nexport type DiffMethResponse = DiffMethPreAnalysisResponse | DiffMethFullResponse\n\n/** One tested regulatory element. Despite the field names, this is NOT promoter-specific:\n * the same shape describes promoters, cCRE classes, eQTM blocks and promoter sub-window tiles.\n * `promoter_id` keeps its name only for backward compatibility with existing clients \u2014 read\n * `element_class` to know what a row actually is. */\nexport type DiffMethEntry = DataEntry & {\n\t/** Row key, unique within a result. For an untiled run this equals `element_id`; for a\n\t * tiled run it is the composite \"<element_id>::tile<N>\", so rows stay unique while\n\t * `element_id` remains groupable. Named `promoter_id` for backward compatibility from when\n\t * the analysis was promoter-only. */\n\tpromoter_id: string\n\t/** The bare element identifier, without any tile suffix \u2014 e.g. an ENCODE cCRE accession\n\t * (EH38E3756858) for cCRE builds, or the builder's own id for eQTM blocks. Resolved from\n\t * meta/element/elementID, meta/element_id, or legacy meta/promoter/promoterID. */\n\telement_id: string\n\t/** Which class this row belongs to: 'promoter', 'enhancer_distal', 'eqtm_block', etc.\n\t * Present per row because one matrix may hold several classes, in which case the run-level\n\t * label is 'mixed' while each row still names its own. */\n\telement_class: string\n\t/** Sub-window index within the element, 5'->3'. Only present when the input was a tile\n\t * matrix (build_element_matrix.py --tiles N); absent otherwise, so a non-tiled run's shape\n\t * is unchanged. */\n\ttile_index?: number\n\t/** Gene symbol(s) associated with the element (comma-separated if multiple, may be empty) */\n\tgene_name: string\n\t/** Chromosome (e.g. \"chr1\") */\n\tchr: string\n\t/** Element start coordinate (0-based). For a tile row this is the tile's own span, not the\n\t * parent element's. */\n\tstart: number\n\t/** Element end coordinate (exclusive) */\n\tstop: number\n\t/** Group 1 (control) mean beta, over observed cells only. Absent on a DMR-scan row, which\n\t * carries the difference but not the two means. */\n\tmean_beta_control?: number\n\t/** Group 2 (case) mean beta, over observed cells only */\n\tmean_beta_case?: number\n\t/** mean_beta_case - mean_beta_control. The interpretable effect size: fold_change is a\n\t * difference of M-values (a logit), so it does not say how much methylation changed.\n\t * Same sign as fold_change, since both are case - control. Derived by back-transforming\n\t * the stored M-values, which yields the alpha-smoothed beta and so shrinks the difference\n\t * toward zero by 2/(depth+2) \u2014 under 1% at this cohort's typical promoter depth. */\n\tdelta_beta: number\n\t/** DMR-scan rows only (element_class 'dmr'): CpGs the region was called from, and when the\n\t * background correction ran, the observed delta-beta minus the matched drift. */\n\tno_cpgs?: number\n\texcess?: number\n\t/** DMR-scan rows only: the least kernel-smoothed FDR in the region, which DMRcate called it by */\n\tmin_smoothed_fdr?: number\n}\n\n/** What diffMeth.R actually tested, as opposed to what was asked for. Emitted by the R script\n * alongside the rows; NOT currently forwarded to the client by termdb.diffMeth.ts, which passes\n * only `promoter_data` through. Documented here because the R output is a shared contract and a\n * caller reading it directly (or a future route that does forward it) needs the shape.\n *\n * It exists because promoter, enhancer and tile runs all use identical column names, so without\n * it a result is indistinguishable from any other. */\nexport type DiffMethElementMeta = {\n\t/** The class tested, or 'mixed' when the retained rows span more than one. Computed over the\n\t * rows that survived filtering, not over the whole matrix. */\n\telement_class: string\n\t/** Which h5 path supplied the row ids \u2014 meta/element/elementID, meta/element_id, or\n\t * meta/promoter/promoterID. Distinguishes a new build from a legacy promoter-only one. */\n\tid_source: string\n\t/** Whether the input was a tile matrix, i.e. whether rows carry tile_index. */\n\tis_tiled: boolean\n\t/** Elements that passed filtering and entered the model. */\n\tn_elements_tested: number\n}\n\n// TODO: write payload examples to help with automated testing and documentation, for non-prod use only\n", "import type { Filter } from '../filter.ts'\nimport type { SampleFilterGroup } from '../terms/samplelst.ts'\n\n/** The range of each DMRcate tuning parameter that a request may set: the volcano's controls\n * (client/plots/volcano/VolcanoControlInputs.ts) stay within these, and C >= 0.2 is DMRcate's own\n * requirement. The server refuses a value outside them. */\nexport const DMRCATE_PARAM_RANGES = {\n\tlambda: { min: 50, max: 100_000 },\n\tC: { min: 0.2, max: 50 },\n\tfdr_cutoff: { min: 0.0001, max: 0.5 }\n} as const\n\n/** Call DMRs across many regions in one request \u2014 a whole differential-methylation hit list\n * rather than one clicked element. See server/src/routes/termdb.dmrBatch.ts for why this is a\n * route and not a client loop. */\nexport type TermdbDmrBatchRequest = {\n\tgenome: string\n\tdslabel: string\n\t/** each group as the list of its samples, or defined by a filter that the server resolves;\n\t * sample ids are resolved server-side to matrix names */\n\tgroup1: { sampleId: number | string }[] | SampleFilterGroup\n\tgroup2: { sampleId: number | string }[] | SampleFilterGroup\n\tfilter0?: any\n\t/** Windows to report DMRs in, from a run over the chromosomes they are on. Overlapping windows\n\t * are merged first. Ignored when scanChromosomes is given. */\n\tregions?: { chr: string; start: number; stop: number }[]\n\t/** Scan these chromosomes end to end instead of supplying windows \u2014 an unbiased DMR scan\n\t * rather than a drill-down of a hit list.\n\t *\n\t * Either way the request is one DMRcate run over every CpG of the chromosomes it names (see\n\t * rust/src/dmrcate.rs), so a scan costs little more than drilling windows on the same\n\t * chromosomes. Measured 2026-10-28: DISCOVER chr17 (1.1M CpGs) in ~3s and its whole genome\n\t * (26.6M CpGs, 214,978 DMRs) in ~65s; MMRF's genome (16.4M CpGs) in ~50s.\n\t *\n\t * One chromosome is comfortably interactive; a whole genome is a background job. The\n\t * per-region size cap does not apply to these, by construction. */\n\tscanChromosomes?: string[]\n\t/** Ask for the genome-wide binned methylation profile alongside the DMRs. Only a scan wants it:\n\t * a drill-down of a few windows would be describing regions the caller did not ask about. */\n\tbinMethylation?: boolean\n\t/** DMRCate lambda: Gaussian kernel bandwidth in nucleotides (default 1000). Also the distance\n\t * within which significant probes are chained into one DMR, so it partly determines the widths\n\t * reported \u2014 record it alongside any width distribution. */\n\tlambda?: number\n\t/** DMRCate C: scaling factor for kernel width (default 2) */\n\tC?: number\n\t/** FDR cutoff for per-probe significance (default 0.05) */\n\tfdr_cutoff?: number\n\t/** Which element matrix to use on a dataset with no CpG matrix. Ignored where a CpG matrix\n\t * exists, which is always finer. */\n\telement_type?: string\n\t/** Artifact-region exclude mask applied to the called DMRs: a DMR whose span lies >= overlapFrac\n\t * inside the selected blacklist regions is dropped. Sources are declared per genome\n\t * (Genome.blacklists) and selected here by name, the same way GRIN2 selects them.\n\t *\n\t * Omitted = the methylation default (ENCODE blacklist + segmental duplications), which is NOT\n\t * all declared sources: see DM_DEFAULT_BLACKLISTS in server/src/utils/regionMask.ts for why DGV\n\t * common germline CNVs and assembly gaps are excluded from a methylation mask. An empty\n\t * blacklists array disables masking. */\n\texcludeOptions?: {\n\t\t/** names matching Genome.blacklists[].name; omitted = methylation default, [] = no masking */\n\t\tblacklists?: string[]\n\t\t/** drop a DMR when >= this fraction of its span is masked (default 0.5) */\n\t\toverlapFrac?: number\n\t}\n\t/** Score each called DMR against matched intergenic background, answering \"did this region move\n\t * more than a region like it would have drifted anyway?\" rather than \"did it move at all\". On a\n\t * cohort with a large global shift the second question is answered yes almost everywhere.\n\t * Costs a second rust invocation per chromosome. */\n\tbackgroundCorrection?: boolean\n\tfilter?: Filter\n\t__protected__?: any\n}\n\nexport type TermdbDmrBatchSuccessResponse = {\n\tstatus: 'ok'\n\t/** The genome and dataset the result was computed for. A cached scan is later read back by\n\t * cacheId alone (termdb/dmrGeneLink), which must check these against the dataset the caller is\n\t * authorized for. Absent on results cached before they were recorded. */\n\tgenome?: string\n\tdslabel?: string\n\t/** The cacheScope the result was computed with (sampleFilterScope() in the server), which\n\t * termdb/dmrGeneLink compares with the scope of its own request. Empty for a dataset without\n\t * a sample filter, and absent on results cached before it was recorded. */\n\tscope?: string\n\tregions: {\n\t\tchr: string\n\t\t/** the merged window actually analysed, which may be wider than any single input region */\n\t\tstart: number\n\t\tstop: number\n\t\t/** indices into the request's `regions` that merged into this window */\n\t\tmembers: number[]\n\t\t/** probes with usable data in the window */\n\t\tn_probes: number\n\t\t/** of those, how many passed the per-probe FDR cutoff */\n\t\tn_sig_probes: number\n\t\tdmrs: {\n\t\t\tchr: string\n\t\t\tstart: number\n\t\t\tstop: number\n\t\t\tno_cpgs: number\n\t\t\t/** DMRcate's region-wise statistics (dmrcate() in the Bioconductor package): the least\n\t\t\t * kernel-smoothed FDR in the region, then the Stouffer, harmonic-mean and Fisher combinations\n\t\t\t * of its raw per-CpG p-values, each BH-adjusted across every region the run built */\n\t\t\tmin_smoothed_fdr: number\n\t\t\tStouffer: number | null\n\t\t\tHMFDR: number | null\n\t\t\tFisher: number | null\n\t\t\t/** DMRcate's largest and mean per-CpG difference, in its own units: the limma logFC of the\n\t\t\t * log2 methylated/unmethylated read ratio for WGBS (logit2), of the M-value for an element matrix */\n\t\t\tmaxdiff: number\n\t\t\tmeandiff: number\n\t\t\t/** The same two on the beta scale -- case minus control group mean beta, over the CpGs of the\n\t\t\t * region. Not DMRcate's: carried for display, as the effect a reader interprets. */\n\t\t\tdelta_beta_max: number | null\n\t\t\tdelta_beta_mean: number | null\n\t\t\t/** the sign of delta_beta_mean, which every figure plots; meandiff's when no cell is covered.\n\t\t\t * Not meandiff's otherwise: its pseudocount log-ratio follows read depth where groups differ in it */\n\t\t\tdirection: 'hyper' | 'hypo'\n\t\t\t/** Genes whose span overlaps the DMR, in genomic order. Absent when none overlap or the\n\t\t\t * genome has no gene2coord table. Capped -- see genesTruncated. */\n\t\t\t/** Observed delta-beta minus the mean drift of matched background in the same stratum.\n\t\t\t * Present only when backgroundCorrection was requested and the DMR's stratum had enough\n\t\t\t * background to estimate from. */\n\t\t\texcess?: number\n\t\t\t/** Fraction of that background drifting at least this far in the same direction, with a\n\t\t\t * +1 pseudocount -- so the resolution floor is 1/(n+1) and never zero. */\n\t\t\tbgP?: number\n\t\t\t/** The region overlaps the body of at least one gene -- its span with 2kb trimmed from both\n\t\t\t * ends. Separate from `genes` because promoter and gene-body methylation relate to\n\t\t\t * transcription in opposite directions. */\n\t\t\tinGeneBody?: boolean\n\t\t\t/** Every gene whose body (span less 2kb at each end) the DMR overlaps, uncapped. The set a\n\t\t\t * gene-body analysis should use: `genes` also holds promoter-only neighbours and is capped. */\n\t\t\tbodyGenes?: string[]\n\t\t\tgenes?: string[]\n\t\t\t/** Total overlapping genes when more than the cap were found, so a truncated list is\n\t\t\t * never mistaken for the whole set. */\n\t\t\tgenesTruncated?: number\n\t\t}[]\n\t\t/** DMRs the artifact mask dropped from dmrs, each with the mask sources that cover it. Not\n\t\t * counted or plotted by the scan; the region view draws them as masked. */\n\t\tmasked?: (TermdbDmrBatchSuccessResponse['regions'][number]['dmrs'][number] & { maskedBy: string[] })[]\n\t\t/** true when this chromosome fell back to the element matrix, so one \"probe\" is a\n\t\t * regulatory element rather than a CpG and the widths are not base-resolution */\n\t\telementResolution: boolean\n\t}[]\n\t/** Cohort-wide methylation level of each group and the difference between them, measured over\n\t * every value the model fits read \u2014 NOT over the requested regions, so it is an unbiased\n\t * backdrop rather than a restatement of the result.\n\t *\n\t * Read every region result against this: where the whole genome shifts, part of each region's\n\t * difference is this number rather than anything local to the region. Absent when no\n\t * chromosome reported one. */\n\tglobalMethylation?: {\n\t\tcontrolMeanBeta: number\n\t\tcaseMeanBeta: number\n\t\t/** case - control, on the beta scale */\n\t\tshift: number\n\t\tvaluesCounted: number\n\t\t/** mean reads per CpG of each group, over every cell of the CpGs the model read; absent for an\n\t\t * element matrix. Where they differ, DMRcate's pseudocount log-ratio differs with no change in\n\t\t * methylation, so DMRs with little beta change may be depth rather than biology. */\n\t\tcontrolMeanDepth?: number\n\t\tcaseMeanDepth?: number\n\t}\n\t/** chromosomes in the run */\n\tchromosomes: number\n\t/** What a region view needs to recompute any region of this run exactly as the run saw it\n\t * (termdb/dmr, rust/src/dmrcate.rs): the eBayes prior, the raw-p cuts that BH and the adaptive\n\t * cutoff amount to, and the parameters the run used, which a region view must match. Absent on\n\t * results cached before runs were genome-wide. */\n\tconstants?: DmrRunConstants\n\ttotalProbesAnalyzed: number\n\t/** Matched-background outcome. Present whenever the correction ran. `unscored` is the count\n\t * whose stratum held too little background to estimate from -- reported so a survival rate is\n\t * never read against the wrong denominator. */\n\tbackgroundCorrection?: {\n\t\twindows: number\n\t\tscored: number\n\t\tunscored: number\n\t\tsignificant: number\n\t\t/** The covariates actually matched on. The full method also matches solo-WCGW, replication\n\t\t * timing and lamina association, which need normal-B-cell reference tracks; where those are\n\t\t * absent the correction is weaker and must be described by what it did match. */\n\t\tmatchedOn: string[]\n\t}\n\t/** Artifact-region mask outcome. Present whenever the mask ran, including when it dropped\n\t * nothing, so a reader can tell \"no artifacts here\" from \"the mask never ran\". The dropped DMRs\n\t * are gone from `regions[].dmrs` \u2014 this is the count needed to report the denominator. */\n\tregionMask?: {\n\t\t/** blacklist source names actually applied */\n\t\tsources: string[]\n\t\toverlapFrac: number\n\t\t/** DMRs removed because >= overlapFrac of their span was masked */\n\t\tdmrsDropped: number\n\t}\n\tresources?: DmrRunResources\n\t/** Mean methylation per group in fixed-width bins along the genome, present when the request\n\t * asked for it. This is the metric methylome papers plot for a genome-wide comparison; unlike\n\t * the DMR list it covers every bin with probes, so an unchanged stretch is visible as measured\n\t * and unchanged rather than as absence. Computed from the group means the fit already holds. */\n\tbinMethylation?: {\n\t\tbinBp: number\n\t\tbins: { chr: string; start: number; n_probes: number; control: number; case: number }[]\n\t}\n}\n\nexport type DmrRunConstants = {\n\ts20: number | null\n\t/** null is an infinite prior df */\n\tdf0: number | null\n\tdf_cap: number\n\t/** largest raw p among individually significant CpGs; null when there were none */\n\tind_p_cut: number | null\n\t/** largest smoothed raw p, and the smoothed FDR, that the adaptive cutoff kept; null when nothing was */\n\tsmoothed_raw_cut: number | null\n\tsmoothed_fdr_cut: number | null\n\t/** individually significant CpGs, the number the adaptive cutoff matches */\n\tnsig: number\n\tlambda: number\n\tC: number\n\tfdr_cutoff: number\n}\n\n/** What one run of the route cost, measured while it ran. Stored with the cached result, so a\n * cached answer reports the cost of the run that produced it, not of serving it. Read this to size\n * a deployment: memory is per worker and scales with the chromosome, CPU is one core per worker. */\nexport type DmrRunResources = {\n\t/** dmrcate processes run at once: one, which reads every chromosome of the run */\n\tworkers: number\n\t/** threads that process uses; the dmrcate binary is single-threaded */\n\tthreadsPerWorker: number\n\twallMs: number\n\t/** largest resident set any one worker reached, MB */\n\tpeakWorkerMemoryMb: number\n\t/** sum of the `workers` largest worker peaks: the most the pool can have held at once, MB */\n\tpeakPoolMemoryMb: number\n\t/** user + system CPU seconds over every worker */\n\tworkerCpuSeconds: number\n\t/** the Node process: resident growth over the run and CPU it spent itself, mask reads and\n\t * background sampling included */\n\tnodeRssDeltaMb: number\n\tnodeCpuSeconds: number\n\t/** one row per worker invocation, largest first */\n\tperChromosome: { chr: string; probes: number; peakMemoryMb: number; cpuSeconds: number; elapsedMs: number }[]\n}\n\nexport type TermdbDmrBatchErrorResponse = { error: string }\n\nexport type TermdbDmrBatchResponse = TermdbDmrBatchSuccessResponse | TermdbDmrBatchErrorResponse\n", "import type { Filter } from '../filter.ts'\nimport type { Term } from '../terms/term.ts'\n\nexport type PercentileRequest = {\n\t/** a user-defined genome label in the serverconfig.json, hg38, hg19, mm10, etc */\n\tgenome: string\n\t/** a user-defined dataset label in the serverconfig.json, such as ClinVar, SJLife, GDC, etc */\n\tdslabel: string\n\tembedder: string\n\tgetpercentile: number[]\n\t/** term id string */\n\tterm: Term\n\tfilter?: Filter\n\tfilter0?: any\n}\n\nexport type PercentileResponse = {\n\tvalues: number[]\n}\n\n// TODO: write more payload examples to help with automated testing and documentation, for non-prod use only\n\nexport const percentilePayloadExamples = {\n\trequest: {\n\t\ttypeId: 'PercentileRequest'\n\t},\n\tresponse: {\n\t\ttypeId: 'PercentileResponse'\n\t},\n\texamples: [\n\t\t{\n\t\t\trequest: {\n\t\t\t\tbody: {\n\t\t\t\t\tgenome: 'hg38-test',\n\t\t\t\t\tdslabel: 'TermdbTest',\n\t\t\t\t\tembedder: 'localhost',\n\t\t\t\t\tgetpercentile: [50],\n\t\t\t\t\tterm: { id: 'agedx' },\n\t\t\t\t\tfilter: {\n\t\t\t\t\t\ttype: 'tvslst',\n\t\t\t\t\t\tin: true,\n\t\t\t\t\t\tjoin: '',\n\t\t\t\t\t\tlst: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttag: 'cohortFilter',\n\t\t\t\t\t\t\t\ttype: 'tvs',\n\t\t\t\t\t\t\t\ttvs: {\n\t\t\t\t\t\t\t\t\tterm: {\n\t\t\t\t\t\t\t\t\t\tname: 'Cohort',\n\t\t\t\t\t\t\t\t\t\ttype: 'categorical',\n\t\t\t\t\t\t\t\t\t\tvalues: { ABC: { label: 'ABC' }, XYZ: { label: 'XYZ' } },\n\t\t\t\t\t\t\t\t\t\tid: 'subcohort',\n\t\t\t\t\t\t\t\t\t\tisleaf: false,\n\t\t\t\t\t\t\t\t\t\tgroupsetting: { disabled: true }\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tvalues: [{ key: 'ABC', label: 'ABC' }]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t} // satisfies PercentileRequest // TODO: enable type check\n\t\t\t},\n\t\t\tresponse: {\n\t\t\t\theader: { status: 200 }\n\t\t\t}\n\t\t}\n\t]\n}\n", "export type RunChartRequest = {\n\tgenome: string\n\tdslabel: string\n\t/**\n\t * term wrapper for x axis: { term, q }.\n\t * runChart2: q.mode='continuous' \u2192 1 series.\n\t * runChart2Period: q.mode='discrete' (with bins) \u2192 multiple series by period.\n\t */\n\txtw: { term: { id: string }; q?: { mode?: 'continuous' | 'discrete' }; $id?: string }\n\t/** term wrapper for y axis: { term, q }. When omitted, chart renders as frequency (count per time bucket). */\n\tytw?: { term: { id: string }; q?: { mode?: string }; $id?: string }\n\taggregation?: 'median'\n\t/** When true (frequency mode only), series Y values are cumulative counts. */\n\tshowCumulativeFrequency?: boolean\n\tfilter?: any\n\t__protected__?: any // auth token for accessing protected data\n}\n\nexport type RunChartSeries = {\n\t/** period/series identifier */\n\tseriesId?: string\n\t/** calculated Y median value for this curve */\n\tmedian: number\n\tpoints: Point[]\n}\n\nexport type RunChartSuccessResponse = {\n\tstatus: 'ok'\n\t/** each series is one curve, with a median. a runchart may show 1 or multiple curves */\n\tseries: RunChartSeries[]\n}\n\nexport type RunChartErrorResponse = {\n\terror: string\n\t/** Always empty on error; present so response shape is consistent for clients/checkers. */\n\tseries: RunChartSeries[]\n}\n\n/** Discriminated union: server returns success shape on 200 or error shape with series: []. */\nexport type RunChartResponse = RunChartSuccessResponse | RunChartErrorResponse\n\nexport function isRunChartSuccess(r: RunChartResponse): r is RunChartSuccessResponse {\n\treturn 'status' in r && r.status === 'ok'\n}\n\ntype Point = {\n\t/** decimal year, e.g. 2024.21321321 */\n\tx: number\n\t/** text of human-readable x value, e.g. \"Jan 2024\" which may be by the months, depends on dataset customization */\n\txName: string\n\t/** timeline, e.g. number of days */\n\ty: number\n\t/** number of samples with this timeline at this time point */\n\tsampleCount: number\n}\n\n// TODO: write payload examples to help with automated testing and documentation, for non-prod use only\n", "import type { Filter } from '../filter.ts'\nimport type { ErrorResponse } from './errorResponse.ts'\nimport type { ColorLegendEntry, ShapeLegendEntry } from './termdb.sampleScatter.ts'\nimport type { TermWrapper } from '../terms/tw.ts'\n\n/** Test sample ID for single cell plots.\n * Recreated here from utils/src/test/testData.ts so\n * es-lint doesn't complain. */\nconst scTestSample = '2646'\n\nexport type TermdbSingleCellPlotsRequest = {\n\t/** Genome id */\n\tgenome: string\n\t/** Dataset label */\n\tdslabel: string\n\tsingleCellPlot: {\n\t\t/** Name of the single cell plot type, e.g. 'umap', 'tsne' */\n\t\tname: string\n\t\tsample?: { eID?: string; sID: string }\n\t\tisMetaResult?: boolean\n\t}\n\tfilter?: Filter\n\tfilter0?: any //ds specific filter, specifically for api requests\n\t/** When sample size is too large, canvas rendering uses\n\t * these settings to control how the plot is rendered. */\n\tcanvasSettings: {\n\t\t/** Maximum number of samples to render on the client side.\n\t\t * If over the cutoff, will return an image instead of sample array.\n\t\t * Matches the maxSvgSamplesCutoff in scatter settings.*/\n\t\tcutoff: number\n\t\t/** Width of the scatter canvas */\n\t\twidth: number\n\t\t/** Height of the scatter canvas */\n\t\theight: number\n\t\t/** Radius of the points in the scatter plot. In scatter,\n\t\t * this is the setting size. */\n\t\tradius: number\n\t\t/** Default or user defined lower limit cutoff for x scale */\n\t\tminXScale: number | null\n\t\t/** Default or user defined upper limit cutoff for x scale */\n\t\tmaxXScale: number | null\n\t\t/** Default or user defined lower limit cutoff for y scale */\n\t\tminYScale: number | null\n\t\t/** Default or user defined upper limit cutoff for y scale */\n\t\tmaxYScale: number | null\n\t\t/** Default or user defined opacity for the scatter plot points */\n\t\topacity: number\n\t\t/** Required non expression color for scge plots. 'startColor' is the\n\t\t * settings key in the scatter. */\n\t\tstartColor: string\n\t\t/** Required non expression color for scge plots. 'stopColor' is the\n\t\t * settings key in the scatter. */\n\t\tstopColor: string\n\t\t/** Device pixel ratio from the client for HiDPI rendering */\n\t\tdevicePixelRatio?: number\n\t\tcolorScaleMode?: 'auto' | 'fixed' | 'percentile'\n\t\tcolorScaleMinFixed?: number | null\n\t\tcolorScaleMaxFixed?: number | null\n\t\tcolorScalePercentile?: number\n\t}\n\t/** Term wrapper for coloring the single cell plot */\n\tcolorTW?: TermWrapper\n\t/** Term wrappers for gene expression */\n\tcoordTWs?: TermWrapper[]\n}\n\nexport type TermdbSingleCellPlotsResponse = ErrorResponse | ValidSingleCellPlotsResponse\n\n/** The computed coordinate and gene expression range for cells\n * returned in a single request. Scoped to the specific plot type\n * (e.g. 'umap', 'tsne') and optional sample filter \u2014 not a global\n * range across all plots or samples. Used to define axis domains\n * and color scale domains for rendering. */\nexport type SingleCellRange = {\n\t/** Minimum x coordinate across all cells in this plot response */\n\txMin: number\n\t/** Maximum x coordinate across all cells in this plot response */\n\txMax: number\n\t/** Minimum y coordinate across all cells in this plot response */\n\tyMin: number\n\t/** Maximum y coordinate across all cells in this plot response */\n\tyMax: number\n\t/** Minimum gene expression value (Infinity when no expression data) */\n\tgeMin: number\n\t/** Maximum gene expression value (-Infinity when no expression data) */\n\tgeMax: number\n}\n\n/** Returns cell data formatted in samples array for the sampleScatter */\nexport type FormattedCell2Sample = {\n\t/** Cell identifier used as the sample id */\n\tsampleId: string\n\t/** X coordinate of the cell in the plot */\n\tx: number\n\t/** Y coordinate of the cell in the plot */\n\ty: number\n\t/** Z coordinate, always 0 (2D plots only) */\n\tz: number\n\t/** Cell type or group assignment for coloring */\n\tcategory: string\n\t/** Shape key for the legend, always 'Ref' */\n\tshape: string\n\t/** Visibility state based on user-hidden categories */\n\thidden: { category: boolean }\n\t/** Gene expression value for this cell, undefined when not applicable */\n\tgeneExp: number | undefined\n}\n\nexport type SingleCellPlotDataResult = {\n\t/** Resolved numeric color domain shared by the canvas and its legend. */\n\tcolorDomain?: [number, number]\n\tcolorLegend: ColorLegendEntry[]\n\tshapeLegend: ShapeLegendEntry[]\n\tsamples?: FormattedCell2Sample[]\n\t/** If over the cutoff, will return image instead of sample array */\n\tsrc?: string\n\t/** css dimensions of the canvas image, used to display at\n\t * the correct size when devicePixelRatio > 1 */\n\tcanvasWidth?: number\n\tcanvasHeight?: number\n\t/** When no sample array is returned, send the total sample count for\n\t * the legend. */\n\ttotalSampleCount?: number\n}\n\nexport type ValidSingleCellPlotsResponse = {\n\trange: SingleCellRange\n\tresult: { Default: SingleCellPlotDataResult }\n}\n\nconst TermdbSingleCellPlotsRequestExample = {\n\tgenome: 'hg38-test',\n\tdslabel: 'TermdbTest',\n\tsingleCellPlot: {\n\t\tname: 'umap',\n\t\tsample: { sID: scTestSample }\n\t},\n\tfilter: {\n\t\ttype: 'tvslst',\n\t\tin: true,\n\t\tjoin: '',\n\t\tlst: [\n\t\t\t{\n\t\t\t\ttag: 'cohortFilter',\n\t\t\t\ttype: 'tvs',\n\t\t\t\ttvs: {\n\t\t\t\t\tterm: { id: 'subcohort', type: 'multivalue' },\n\t\t\t\t\tvalues: [{ key: 'ABC', label: 'ABC' }]\n\t\t\t\t}\n\t\t\t}\n\t\t]\n\t},\n\tfilter0: undefined,\n\tcanvasSettings: {\n\t\tcutoff: 10000,\n\t\twidth: 800,\n\t\theight: 600,\n\t\tradius: 3,\n\t\tminXScale: null,\n\t\tmaxXScale: null,\n\t\tminYScale: null,\n\t\tmaxYScale: null,\n\t\topacity: 0.8,\n\t\tstartColor: '#0000ff',\n\t\tstopColor: '#ff0000',\n\t\tdevicePixelRatio: 2\n\t},\n\tcolorTW: {\n\t\tterm: {\n\t\t\tname: 'Cell Type',\n\t\t\tplot: 'UMAP',\n\t\t\ttype: 'singleCellCellType',\n\t\t\tsample: { sID: scTestSample },\n\t\t\tgroupsetting: { disabled: false },\n\t\t\tvalues: {}\n\t\t},\n\t\tq: { mode: 'discrete', type: 'values', hiddenValues: {} }\n\t}\n}\n\nconst TermdbSingleCellPlotsResponseExample = {\n\trange: {\n\t\txMin: -2.45230826499861,\n\t\txMax: 2.02116419939392,\n\t\tyMin: -2.670907125487,\n\t\tyMax: 2.97596441655721,\n\t\tgeMin: null,\n\t\tgeMax: null\n\t},\n\tresult: {\n\t\tDefault: {\n\t\t\tcolorLegend: [\n\t\t\t\t[\n\t\t\t\t\t'T_NK',\n\t\t\t\t\t{\n\t\t\t\t\t\tsampleCount: 20,\n\t\t\t\t\t\tcolor: '#1b9e77',\n\t\t\t\t\t\tkey: 'T_NK'\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t'Blast',\n\t\t\t\t\t{\n\t\t\t\t\t\tsampleCount: 54,\n\t\t\t\t\t\tcolor: '#030303',\n\t\t\t\t\t\tkey: 'Blast'\n\t\t\t\t\t}\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t'Monocyte',\n\t\t\t\t\t{\n\t\t\t\t\t\tsampleCount: 26,\n\t\t\t\t\t\tcolor: '#7570b3',\n\t\t\t\t\t\tkey: 'Monocyte'\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t],\n\t\t\tshapeLegend: [\n\t\t\t\t[\n\t\t\t\t\t'Ref',\n\t\t\t\t\t{\n\t\t\t\t\t\tsampleCount: 100,\n\t\t\t\t\t\tshape: 0,\n\t\t\t\t\t\tkey: 'Ref'\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t],\n\t\t\tsamples: [\n\t\t\t\t{\n\t\t\t\t\tsampleId: 'cell1',\n\t\t\t\t\tx: 0.958429213345285,\n\t\t\t\t\ty: 1.94008987552318,\n\t\t\t\t\tz: 0,\n\t\t\t\t\tcategory: 'T_NK',\n\t\t\t\t\tshape: 'Ref',\n\t\t\t\t\thidden: {\n\t\t\t\t\t\tcategory: false\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsampleId: 'cell2',\n\t\t\t\t\tx: 0.678836078621254,\n\t\t\t\t\ty: -1.13854914348622,\n\t\t\t\t\tz: 0,\n\t\t\t\t\tcategory: 'T_NK',\n\t\t\t\t\tshape: 'Ref',\n\t\t\t\t\thidden: {\n\t\t\t\t\t\tcategory: false\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsampleId: 'cell3',\n\t\t\t\t\tx: -2.11135267144421,\n\t\t\t\t\ty: -2.33519450621652,\n\t\t\t\t\tz: 0,\n\t\t\t\t\tcategory: 'T_NK',\n\t\t\t\t\tshape: 'Ref',\n\t\t\t\t\thidden: {\n\t\t\t\t\t\tcategory: false\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsampleId: 'cell4',\n\t\t\t\t\tx: 0.551783876521269,\n\t\t\t\t\ty: -1.24685552943596,\n\t\t\t\t\tz: 0,\n\t\t\t\t\tcategory: 'T_NK',\n\t\t\t\t\tshape: 'Ref',\n\t\t\t\t\thidden: {\n\t\t\t\t\t\tcategory: false\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tsampleId: 'cell5',\n\t\t\t\t\tx: 1.84959385901015,\n\t\t\t\t\ty: 2.68311790617899,\n\t\t\t\t\tz: 0,\n\t\t\t\t\tcategory: 'T_NK',\n\t\t\t\t\tshape: 'Ref',\n\t\t\t\t\thidden: {\n\t\t\t\t\t\tcategory: false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t}\n}\n\nexport const TermdbSingleCellPlotsExample = {\n\trequest: {\n\t\tbody: TermdbSingleCellPlotsRequestExample\n\t},\n\tresponse: {\n\t\tbody: TermdbSingleCellPlotsResponseExample\n\t}\n}\n", "export type TermChildrenRequest = {\n\t/** a user-defined genome label in the serverconfig.json, hg38, hg19, mm10, etc */\n\tgenome: string\n\t/** a user-defined dataset label in the serverconfig.json, such as ClinVar, SJLife, GDC, etc */\n\tdslabel: string\n\tembedder?: string\n\t/** parent term id; when missing, the dataset's root terms are returned */\n\ttid?: string\n\tcohortValues?: string\n\ttreeFilter?: string\n}\n\ninterface Entries {\n\tname: string\n\tid: string\n\tisleaf: boolean\n\tincluded_types: string[]\n\tchild_types: string[]\n\tchild_sample_types?: number[]\n}\n\nexport type TermChildrenResponse = {\n\tlst: Entries[]\n}\n\nexport const termChildrenPayloadExamples = {\n\trequest: {\n\t\ttypeId: 'TermChildrenRequest'\n\t},\n\tresponse: {\n\t\ttypeId: 'TermChildrenResponse'\n\t},\n\texamples: [\n\t\t{\n\t\t\trequest: {\n\t\t\t\tbody: {\n\t\t\t\t\tgenome: 'hg38-test',\n\t\t\t\t\tdslabel: 'TermdbTest',\n\t\t\t\t\tembedder: 'localhost',\n\t\t\t\t\tcohortValues: 'ABC',\n\t\t\t\t\ttid: 'GO:0000001'\n\t\t\t\t} satisfies TermChildrenRequest\n\t\t\t},\n\t\t\tresponse: {\n\t\t\t\theader: { status: 200 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t// root terms\n\t\t\trequest: {\n\t\t\t\tbody: {\n\t\t\t\t\tgenome: 'hg38-test',\n\t\t\t\t\tdslabel: 'TermdbTest',\n\t\t\t\t\tembedder: 'localhost',\n\t\t\t\t\tcohortValues: 'ABC'\n\t\t\t\t} satisfies TermChildrenRequest\n\t\t\t},\n\t\t\tresponse: {\n\t\t\t\theader: { status: 200 }\n\t\t\t}\n\t\t}\n\t]\n}\n", "import type { TermWrapper } from '../terms/tw.ts'\nimport type { Filter } from '../filter.ts'\nimport type { ErrorResponse } from './errorResponse.ts'\nimport type { DescrStats } from './termdb.descrstats.ts'\n\n/** Common properties shared by both violin and box plots */\ntype CommonProps = {\n\t/** numeric tw to fetch numeric data. tw.q.mode must be continuous */\n\ttw: TermWrapper\n\tdslabel: string\n\tgenome: string\n\t/** overlay tw for multiple violins/boxplots */\n\toverlayTw?: TermWrapper\n\t/** tw to divide to multiple charts */\n\tdivideTw?: TermWrapper\n\t/** mass filter */\n\tfilter?: Filter\n\t/** read-only invisible filter */\n\tfilter0?: any\n\t/** TODO: Needs description FIXME delete */\n\tcurrentGeneNames?: string[]\n\t/** if true, use log scale; if false or undefined, use linear scale */\n\tisLogScale?: boolean\n\t/** the most plots of a chart that get the pairwise Wilcoxon tests, its largest ones; an integer from 2 to 30,\n\t * see shared/utils/src/pairwiseTests.ts. Default is serverconfig.features.maxPairwiseTestGroups, or else 8. */\n\tmaxPairwiseTestGroups?: number\n}\n\n/** Request type for violin plots with required violin-specific parameters */\nexport type ViolinRequest = CommonProps & {\n\t/** Indicates the type of chart to render */\n\tplotType: 'violin'\n\t/** A number representing the dimension perpendicular to the violin spread */\n\taxisHeight?: number\n\t/** A string representing the type of symbol used on the plot */\n\tdatasymbol?: string\n\t/** A number representing the device's pixel ratio */\n\tdevicePixelRatio: number\n\t/** If true, uses KDE method to build plot */\n\tisKDE?: boolean\n\t/** A string with two possible values: 'horizontal' or 'vertical' */\n\torientation: string\n\t/** A number representing the radius of the data symbols */\n\tradius: number\n\t/** A number representing the right margin */\n\trightMargin?: number\n\t/** Term may be scaled from regression analysis */\n\tscale?: any\n\t/** A number representing the width of the stroke */\n\tstrokeWidth?: number\n\t/** A number representing the width of the SVG box */\n\tsvgw: number\n\t/** Number of bins to build the plot. Default is 20. */\n\tticks?: number\n}\n\n/** Request type for box plots with required box-specific parameters */\nexport type BoxRequest = CommonProps & {\n\t/** Indicates the type of chart to render */\n\tplotType: 'box'\n\t/** sort plots by median value */\n\torderByMedian?: boolean\n\t/** Remove outliers from the plot */\n\tremoveOutliers?: boolean\n\t/** If true, show association tests table */\n\tshowAssocTests?: boolean\n}\n\n/**Unified request type for violin and boxplot - union of ViolinRequest and BoxRequest */\nexport type ViolinBoxRequest = ViolinRequest | BoxRequest\n\nexport type ViolinBoxResponse = ViolinResponse | BoxPlotResponse | ErrorResponse\n\n/** Type guard to check if response is an ErrorResponse */\nexport function isErrorResponse(response: ViolinBoxResponse): response is ErrorResponse {\n\treturn 'error' in response && 'status' in response\n}\n\n/** Type guard to check if response is a BoxPlotResponse */\nexport function isBoxPlotResponse(response: ViolinBoxResponse): response is BoxPlotResponse {\n\treturn !isErrorResponse(response) && 'charts' in response && 'descrStats' in response\n}\n\n/** Type guard to check if response is a ViolinResponse */\nexport function isViolinResponse(response: ViolinBoxResponse): response is ViolinResponse {\n\treturn !isErrorResponse(response) && 'min' in response && 'max' in response\n}\n\n/** Violin response types */\ninterface BinsEntries {\n\tx0: number\n\tx1: number\n\tdensity: number\n}\n\ninterface PValueEntries {\n\tvalue?: string\n\thtml?: string\n}\n\ntype ViolinDensity = {\n\tbins: BinsEntries[]\n\tdensityMax: number\n\tdensityMin: number\n}\n\nexport type ViolinPlotEntry = {\n\tcolor: string\n\tchartId: string\n\tdensity: ViolinDensity\n\tlabel: string\n\tplotValueCount: number\n\tseriesId: string\n\tsrc: string\n\tsummaryStats: DescrStats\n\tvalues?: number[]\n}\n\nexport type ViolinResponseChart = {\n\tchartId: string\n\tplots: ViolinPlotEntry[]\n\tpvalues?: PValueEntries[][]\n\t/** set when pvalues are of the largest plots only */\n\tpairwiseTestMessage?: string\n}\n\nexport type ViolinResponse = {\n\tbins: { [index: string]: any }\n\tcharts: {\n\t\t[index: string]: ViolinResponseChart\n\t}\n\tmin: number\n\tmax: number\n\tuncomputableValues: { [index: string]: number }[] | null\n\tdescrStats: Record<string, DescrStats>\n}\n\n/** Boxplot response types */\nexport type BoxPlotData = {\n\tw1: number | undefined\n\tw2: number | undefined\n\tp05: number\n\tp25: number\n\tp50: number\n\tp75: number\n\tp95: number\n\tiqr: number\n\tout: { value: number }[]\n}\n\nexport type BoxPlotEntry = {\n\tboxplot: BoxPlotData & { label: string }\n\tcolor?: string\n\tdescrStats: DescrStats\n\tisHidden?: boolean\n\tkey: string\n\tseriesId?: string\n}\n\nexport type BoxPlotChartEntry = {\n\tchartId: string\n\tplots: BoxPlotEntry[]\n\tsampleCount: number\n\twilcoxon?: [{ value: string }, { value: string }, { html: string }][]\n\t/** set when wilcoxon is of the largest plots only */\n\tpairwiseTestMessage?: string\n}\n\nexport type BoxPlotResponse = {\n\tabsMin?: number\n\tabsMax?: number\n\tbins?: {\n\t\t[index: string]: any\n\t}\n\tcharts: {\n\t\t[chartId: string]: BoxPlotChartEntry\n\t}\n\tdescrStats: Record<string, DescrStats>\n\tuncomputableValues: { label: string; value: number }[] | null\n}\n\n// TODO: write more payload examples to help with automated testing and documentation, for non-prod use only\n\nexport const violinBoxPayload = {\n\trequest: {\n\t\ttypeId: 'ViolinBoxRequest'\n\t},\n\tresponse: {\n\t\ttypeId: 'ViolinBoxResponse'\n\t},\n\texamples: [\n\t\t{\n\t\t\trequest: {\n\t\t\t\tbody: {\n\t\t\t\t\tplotType: 'violin',\n\t\t\t\t\tgenome: 'hg38-test',\n\t\t\t\t\tdslabel: 'TermdbTest',\n\t\t\t\t\ttw: {\n\t\t\t\t\t\tterm: { id: 'aaclassic_5', type: 'float' },\n\t\t\t\t\t\tq: { mode: 'continuous' }\n\t\t\t\t\t},\n\t\t\t\t\tdevicePixelRatio: 2,\n\t\t\t\t\tsvgw: 200,\n\t\t\t\t\torientation: 'horizontal',\n\t\t\t\t\tdatasymbol: 'rug',\n\t\t\t\t\tradius: 5,\n\t\t\t\t\tisLogScale: false\n\t\t\t\t} // satisfies ViolinBoxRequest // TODO: enable type check\n\t\t\t},\n\t\t\tresponse: {\n\t\t\t\theader: { status: 200 }\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\trequest: {\n\t\t\t\tbody: {\n\t\t\t\t\tplotType: 'box',\n\t\t\t\t\tgenome: 'hg38-test',\n\t\t\t\t\tdslabel: 'TermdbTest',\n\t\t\t\t\ttw: {\n\t\t\t\t\t\tterm: { id: 'agedx', type: 'float' },\n\t\t\t\t\t\tq: { mode: 'continuous' }\n\t\t\t\t\t},\n\t\t\t\t\toverlayTw: {\n\t\t\t\t\t\tterm: { id: 'sex', type: 'categorical' }\n\t\t\t\t\t},\n\t\t\t\t\torderByMedian: true\n\t\t\t\t} // satisfies ViolinBoxRequest // TODO: enable type check\n\t\t\t},\n\t\t\tresponse: {\n\t\t\t\theader: { status: 200 }\n\t\t\t}\n\t\t}\n\t]\n}\n", "export const CATEGORICAL = 'categorical'\nexport const CONDITION = 'condition'\nexport const DATE = 'date'\nexport const DNA_METHYLATION = 'dnaMethylation'\n// dt term types, used for filtering variants of a geneVariant term;\n// the matching dt term entries are declared in `#shared/common.js` dtTerms[]\nexport const DTCNV = 'dtcnv'\nexport const DTFUSION = 'dtfusion'\nexport const DTITD = 'dtitd'\nexport const DTSNVINDEL = 'dtsnvindel'\nexport const DTSV = 'dtsv'\nexport const FLOAT = 'float'\nexport const GENE_VARIANT = 'geneVariant'\nexport const GENE_EXPRESSION = 'geneExpression'\nexport const ISOFORM_EXPRESSION = 'isoformExpression'\nexport const INTEGER = 'integer'\nexport const JUNCTION = 'junction'\nexport const METABOLITE_INTENSITY = 'metaboliteIntensity'\nexport const MULTIVALUE = 'multivalue'\nexport const PROTEOME_ABUNDANCE = 'proteomeAbundance'\nexport const PROTEOME_DAP = 'proteomeDAP'\nexport const PSEUDOBULK = 'pseudobulk'\nexport const SAMPLELST = 'samplelst'\nexport const SINGLECELL_CELLTYPE = 'singleCellCellType'\nexport const SINGLECELL_GENE_EXPRESSION = 'singleCellGeneExpression'\nexport const SINGLECELL_NUMERIC_VALUE = 'singleCellNumericValue'\nexport const SNP = 'snp'\nexport const SNP_LIST = 'snplst'\nexport const SNP_LOCUS = 'snplocus'\nexport const SSGSEA = 'ssGSEA'\nexport const SURVIVAL = 'survival'\nexport const TERM_COLLECTION = 'termCollection'\nexport const COHORT = 'cohort'\n\n//Term types should be used gradually using these constants instead of hardcoding the values,\n// eg: type == CATEGORICAL instead of type == 'categorical'\n// NOTE: keep this list complete at declaration, do not add entries to it at runtime,\n// so that consumers see the same keys regardless of module load order\nexport const TermTypes = {\n\tGENE_VARIANT,\n\tGENE_EXPRESSION,\n\tISOFORM_EXPRESSION,\n\tSSGSEA,\n\tDNA_METHYLATION,\n\tCATEGORICAL,\n\tINTEGER,\n\tJUNCTION,\n\tFLOAT,\n\tSNP,\n\tSNP_LIST,\n\tSNP_LOCUS,\n\tCONDITION,\n\tSURVIVAL,\n\tSAMPLELST,\n\tMETABOLITE_INTENSITY,\n\tPROTEOME_ABUNDANCE,\n\tPSEUDOBULK,\n\tSINGLECELL_CELLTYPE,\n\tSINGLECELL_GENE_EXPRESSION,\n\tSINGLECELL_NUMERIC_VALUE,\n\tMULTIVALUE,\n\tDATE,\n\tTERM_COLLECTION,\n\tCOHORT,\n\tDTCNV,\n\tDTFUSION,\n\tDTITD,\n\tDTSNVINDEL,\n\tDTSV\n}\n", "import type { NumericBaseTerm, NumTW, PresetNumericBins, RawNumTW } from '../index.ts'\n\nexport const PseudobulkAssay = ['geneExpression'] as const //Add more assays here\n\nexport type PseudobulkTerm = NumericBaseTerm & {\n\ttype: 'pseudobulk'\n\t/** Corresponds to the singleCell.pseudobulk[assay] */\n\tassay: (typeof PseudobulkAssay)[number]\n\t/** Corresponds to the singleCell.pseudobulk[assay][memberId] */\n\tmemberId: string\n\t/** Corresponds to one key in singleCell.pseudobulk[assay][memberId].categories{} */\n\tcategory: string\n\t/** gene symbol */\n\tgene: string\n\tbins?: PresetNumericBins\n}\n\nexport type PseudobulkTW = NumTW & { term: PseudobulkTerm }\n\nexport type RawPseudobulkTerm = PseudobulkTerm & { name?: string }\n\nexport type RawPseudobulkTW = RawNumTW & { term: RawPseudobulkTerm }\n", "/*\nshared between client and server\n\nexported functions\n- bplen()\n- mclasstester()\n- basecompliment()\n\n\n*/\nimport { rgb } from 'd3-color'\nimport * as d3scale from 'd3-scale'\nimport * as d3 from 'd3'\nimport { DTCNV, DTFUSION, DTITD, DTSNVINDEL, DTSV } from '#types'\n\n// moved from `#shared/terms` to here, so that this can be passed as\n// part of 'common' argument to exported dataset js function, at server runtime\n// 3/30/2026 - changed from literal object to a class with static properties\n// to make it easier for IDEs and tsc compiler to catch typos in consumer code\nexport class TermTypeGroups {\n\tstatic DICTIONARY_VARIABLES = 'Dictionary Variables'\n\tstatic DNA_METHYLATION = 'DNA Methylation'\n\tstatic GENE_DEPENDENCY = 'Gene Dependency'\n\tstatic GENE_EXPRESSION = 'Gene Expression'\n\tstatic ISOFORM_EXPRESSION = 'Isoform Expression'\n\tstatic GSEA = 'GSEA'\n\tstatic METABOLITE_INTENSITY = 'Metabolite Intensity'\n\tstatic PROTEOME_ABUNDANCE = 'Proteome Abundance'\n\tstatic MUTATION_CNV_FUSION = 'Mutation/CNV/Fusion'\n\tstatic MUTATION_SIGNATURE = 'Mutation Signature'\n\tstatic PROTEIN_EXPRESSION = 'Protein Expression'\n\tstatic PSEUDOBULK = 'Pseudobulk'\n\tstatic SINGLECELL_CELLTYPE = 'Single-cell Cell Type'\n\tstatic SINGLECELL_GENE_EXPRESSION = 'Single-cell Gene Expression'\n\tstatic SINGLECELL_NUMERIC_VALUE = 'Single-cell Numeric Value'\n\tstatic SNP = 'SNP Genotype'\n\tstatic SNP_LIST = 'SNP List'\n\tstatic SNP_LOCUS = 'SNP Locus'\n\tstatic SPLICE_JUNCTION = 'Splice Junction'\n\tstatic SSGSEA = 'Geneset Expression'\n\tstatic TERM_COLLECTION = 'Term Collection'\n\tstatic VARIANT_GENOTYPE = 'Variant Genotype'\n\tstatic COHORT = 'Cohort'\n}\n// freeze so that mutating any of the static properties above will throw at runtime\nObject.freeze(TermTypeGroups)\n\nexport const defaultcolor = rgb('#8AB1D4').darker()\nexport const default_text_color = rgb('#aaa').darker().darker()\n\nexport const exoncolor = '#4F8053'\nexport const plotColor = '#ce768e'\n\n// something that has something to do with coding gene reading frame\nexport const IN_frame = true\nexport const OUT_frame = false\n\n/********************************\n* on dt usage *\n*********************************\n- once a dt value is decided and used with actual dataset,\n the value must not be altered, since dataset file may hardcode such value and reassigning to a new integer will break!\n- never test dt value by range e.g. if(dt>10), it breaks! only test equality!\n- in code import variable from here and DO NOT use literal values, to make code tractable\n*/\nexport const dtsnvindel = 1\nexport const dtfusionrna = 2\nexport const dtgeneexpression = 3\nexport const dtcnv = 4\nexport const dtsv = 5\nexport const dtitd = 6\nexport const dtdel = 7\nexport const dtnloss = 8\nexport const dtcloss = 9\nexport const dtloh = 10\nexport const dtmetaboliteintensity = 11\nexport const dtssgsea = 12\nexport const dtdnamethylation = 13\nexport const dtproteomeabundance = 14\n// add new dt value here. !!!DO NOT change value of existing dt!!!\n\nexport const dt2label = {\n\t[dtsnvindel]: 'SNV/indel',\n\t[dtfusionrna]: 'Fusion RNA',\n\t[dtcnv]: 'CNV',\n\t[dtsv]: 'SV',\n\t[dtitd]: 'ITD',\n\t[dtdel]: 'Deletion',\n\t[dtnloss]: 'N-loss',\n\t[dtcloss]: 'C-loss',\n\t[dtloh]: 'LOH',\n\t[dtgeneexpression]: 'Gene Expression',\n\t[dtmetaboliteintensity]: 'Metabolite Intensity',\n\t[dtproteomeabundance]: 'Proteome Abundance'\n}\n\n// Maps dt types to UI labels and lesion types for GRIN2\n// All dt types use lesionTypes array for consistency\nexport const dt2lesion = {\n\t[dtsnvindel]: {\n\t\tuilabel: 'SNV/INDEL (Mutation)',\n\t\tlesionTypes: [{ name: 'Mutation', lesionType: 'mutation', color: '#44AA44' }]\n\t},\n\t[dtcnv]: {\n\t\tuilabel: 'CNV (Copy Number Variation)',\n\t\tlesionTypes: [\n\t\t\t{ name: 'Loss', lesionType: 'loss', color: '#4444FF' },\n\t\t\t{ name: 'Gain', lesionType: 'gain', color: '#FF4444' }\n\t\t]\n\t},\n\t[dtsv]: {\n\t\tuilabel: 'SV (Structural Variation)',\n\t\tlesionTypes: [{ name: 'SV', lesionType: 'sv', color: '#9932CC' }]\n\t},\n\t[dtfusionrna]: {\n\t\tuilabel: 'Fusion (RNA Fusion)',\n\t\tlesionTypes: [{ name: 'Fusion', lesionType: 'fusion', color: '#FFA500' }]\n\t},\n\t[dtitd]: {\n\t\tuilabel: 'ITD (Internal Tandem Duplication)',\n\t\tlesionTypes: [{ name: 'ITD', lesionType: 'itd', color: '#ff70ff' }]\n\t}\n}\n\n// Maps GRIN2 option types to their corresponding dt values\nexport const optionToDt = {\n\tsnvindelOptions: dtsnvindel,\n\tcnvOptions: dtcnv,\n\tfusionOptions: dtfusionrna,\n\tsvOptions: dtsv,\n\titdOptions: dtitd\n}\n\nexport const mclass = {\n\tM: {\n\t\tlabel: 'MISSENSE',\n\t\tcolor: '#3987CC',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'A sequence variant, that changes one or more bases, resulting in a different amino acid sequence but where the length is preserved',\n\t\tkey: 'M'\n\t},\n\tE: { label: 'EXON', color: '#bcbd22', dt: dtsnvindel, desc: 'A variant in the exon of a non-coding RNA.', key: 'E' },\n\tF: {\n\t\tlabel: 'FRAMESHIFT',\n\t\tcolor: 'rgb(200, 61, 61)',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'A sequence variant which causes a disruption of the translational reading frame, because the number of nucleotides inserted or deleted is not a multiple of three',\n\t\tkey: 'F'\n\t},\n\tN: {\n\t\tlabel: 'NONSENSE',\n\t\tcolor: '#ff7f0e',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'A sequence variant whereby at least one base of a codon is changed, resulting in a premature stop codon, leading to a shortened transcript',\n\t\tkey: 'N'\n\t},\n\tS: {\n\t\tlabel: 'SILENT',\n\t\tcolor: '#2ca02c',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'A sequence variant where there is no resulting change to the encoded amino acid',\n\t\tkey: 'S'\n\t},\n\tD: {\n\t\tlabel: 'PROTEINDEL',\n\t\tcolor: 'rgb(100, 100, 100)',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'An inframe non synonymous variant that deletes bases from the coding sequence',\n\t\tkey: 'D'\n\t},\n\tI: {\n\t\tlabel: 'PROTEININS',\n\t\tcolor: '#8c564b',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'An inframe non synonymous variant that inserts bases into in the coding sequence',\n\t\tkey: 'I'\n\t},\n\tProteinAltering: {\n\t\tlabel: 'PROTEINALTERING',\n\t\tcolor: '#5a0034',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'An inframe complex change to the coding sequence',\n\t\tkey: 'ProteinAltering'\n\t},\n\tP: {\n\t\tlabel: 'SPLICE_REGION',\n\t\tcolor: '#9467bd',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'A sequence variant in which a change has occurred within the region of the splice site, either within 1-3 bases of the exon or 3-8 bases of the intron',\n\t\tkey: 'P'\n\t},\n\tL: {\n\t\tlabel: 'SPLICE',\n\t\tcolor: '#6633FF',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'A variant near an exon edge that may affect splicing functionality',\n\t\tkey: 'L'\n\t},\n\tIntron: { label: 'INTRON', color: '#656565', dt: dtsnvindel, desc: 'An intronic variant.', key: 'Intron' },\n\n\tStopLost: {\n\t\tlabel: 'Stop lost',\n\t\tcolor: '#ff7f0e',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'A sequence variant where at least one base of the terminator codon (stop) is changed, resulting in an elongated transcript',\n\t\tkey: 'StopLost'\n\t},\n\tStartLost: {\n\t\tlabel: 'Start lost',\n\t\tcolor: '#ff7f0e',\n\t\tdt: dtsnvindel,\n\t\tdesc: 'A codon variant that changes at least one base of the canonical start codon',\n\t\tkey: 'StartLost'\n\t},\n\n\t// quick fix!! for showing genes that are not tested in samples (e.g. gene panels) in the heatmap\n\tBlank: { label: 'Not tested', color: '#fff', dt: dtsnvindel, desc: 'This gene is not tested.', key: 'Blank' },\n\n\tWT: { label: 'Wildtype', color: '#D3D3D3', dt: dtsnvindel, desc: 'Wildtype', key: 'WT' }\n}\nexport const mclassitd = 'ITD'\nmclass[mclassitd] = {\n\tlabel: 'ITD',\n\tcolor: '#ff70ff',\n\tdt: dtitd,\n\tdesc: 'In-frame internal tandem duplication',\n\tkey: mclassitd\n}\n\nexport const mclassdel = 'DEL'\nmclass[mclassdel] = {\n\tlabel: 'DELETION, intragenic',\n\tcolor: '#858585',\n\tdt: dtdel,\n\tdesc: 'Intragenic deletion',\n\tkey: mclassdel\n}\n\nexport const mclassnloss = 'NLOSS'\nmclass[mclassnloss] = {\n\tlabel: 'N-terminus loss',\n\tcolor: '#545454',\n\tdt: dtnloss,\n\tdesc: 'N-terminus loss due to translocation',\n\tkey: mclassnloss\n}\n\nexport const mclasscloss = 'CLOSS'\nmclass[mclasscloss] = {\n\tlabel: 'C-terminus loss',\n\tcolor: '#545454',\n\tdt: dtcloss,\n\tdesc: 'C-terminus loss due to translocation',\n\tkey: mclasscloss\n}\n\nexport const mclassutr3 = 'Utr3'\nmclass[mclassutr3] = {\n\tlabel: 'UTR_3',\n\tcolor: '#998199',\n\tdt: dtsnvindel,\n\tdesc: \"A variant in the 3' untranslated region\",\n\tkey: mclassutr3\n}\n\nexport const mclassutr5 = 'Utr5'\nmclass[mclassutr5] = {\n\tlabel: 'UTR_5',\n\tcolor: '#819981',\n\tdt: dtsnvindel,\n\tdesc: \"A variant in the 5' untranslated region\",\n\tkey: mclassutr5\n}\n\nexport const mclassnonstandard = 'X'\nmclass[mclassnonstandard] = {\n\tlabel: 'NONSTANDARD',\n\tcolor: 'black',\n\tdt: dtsnvindel,\n\tdesc: 'A mutation class that either does not match our notation, or is unspecified',\n\tkey: mclassnonstandard\n}\n\nexport const mclassnoncoding = 'noncoding'\nmclass[mclassnoncoding] = {\n\tlabel: 'NONCODING',\n\tcolor: 'black',\n\tdt: dtsnvindel,\n\tdesc: 'Noncoding mutation',\n\tkey: mclassnoncoding\n}\n\n/*\nincludes full list of consequences from\nhttps://www.ensembl.org/info/genome/variation/prediction/predicted_data.html\neach entry is SO term with matching pp class\nentries that cannot be mapped to dtsnvindel classes are commented off\norder of entries is severity\n\n* since source of data! *\nfrom this array derives multiple types of lookup tables to perform mapping on both ways\n*/\nconst SOterms = [\n\t//transcript_ablation // not supported: 1) do not expect this in maf/vcf 2) should be represented as cnv deletion but not the legacy unused value \"dtdel\"; if needed can reenable\n\t['splice_acceptor_variant', 'L'],\n\t['splice_donor_variant', 'L'],\n\t['stop_gained', 'N'],\n\t['frameshift_variant', 'F'],\n\t['stop_lost', 'StopLost'],\n\t['start_lost', 'StartLost'],\n\t//transcript_amplification // not supported, should be represented by cnv instead\n\t['feature_elongation', mclassnoncoding],\n\t['feature_truncation', mclassnoncoding],\n\t['inframe_insertion', 'I'],\n\t['inframe_deletion', 'D'],\n\t['missense_variant', 'M'],\n\t['protein_altering_variant', 'ProteinAltering'],\n\t['splice_donor_5th_base_variant', 'P'],\n\t['splice_region_variant', 'P'],\n\t['splice_donor_region_variant', 'P'],\n\t['splice_polypyrimidine_tract_variant', 'P'],\n\t['incomplete_terminal_codon_variant', 'N'],\n\t['start_retained_variant', 'S'],\n\t['stop_retained_variant', 'S'],\n\t['synonymous_variant', 'S'],\n\t['coding_sequence_variant', 'E'],\n\t['mature_miRNA_variant', 'E'],\n\t['5_prime_UTR_variant', mclassutr5],\n\t['3_prime_UTR_variant', mclassutr3],\n\t['non_coding_transcript_exon_variant', 'E'],\n\t['intron_variant', 'Intron'],\n\t['NMD_transcript_variant', 'F'],\n\t['non_coding_transcript_variant', 'E'],\n\t['coding_transcript_variant', 'E'],\n\t['upstream_gene_variant', mclassnoncoding],\n\t['downstream_gene_variant', mclassnoncoding],\n\t['TFBS_ablation', mclassnoncoding],\n\t['TFBS_amplification', mclassnoncoding],\n\t['TF_binding_site_variant', mclassnoncoding],\n\t['regulatory_region_ablation', mclassnoncoding],\n\t['regulatory_region_amplification', mclassnoncoding],\n\t['regulatory_region_variant', mclassnoncoding],\n\t['intergenic_variant', mclassnoncoding],\n\t['sequence_variant', mclassnonstandard]\n]\n\n// maps a pp class to an array of consequences\n// k: pp class, v: array of consequences. case sensitive\nexport const class2SOterm = new Map()\nfor (const [csq, cls] of SOterms) {\n\tif (!class2SOterm.has(cls)) class2SOterm.set(cls, [])\n\tclass2SOterm.get(cls).push(csq)\n}\n\n// maps a consequence to a pp class. no severity info. use vepinfo() if needs severity\n// k: consequence, v: pp class. case sensitive.\nexport const SOterm2class = new Map()\nfor (const [csq, cls] of SOterms) {\n\tSOterm2class.set(csq, cls)\n}\n\n// outdated function to match with adhoc nonstandard notations, only used in legacy code utils/src/bulk.snv.js\n// DO NOT USE to map vep consequences\nexport function mclasstester(s) {\n\tswitch (s.toLowerCase()) {\n\t\tcase 'missense_mutation':\n\t\t\treturn 'M'\n\t\tcase 'nonsense_mutation':\n\t\t\treturn 'N'\n\t\tcase 'splice_site':\n\t\t\treturn 'L'\n\t\tcase 'splice_region':\n\t\t\treturn 'P'\n\t\tcase 'rna':\n\t\t\treturn mclassnoncoding\n\t\tcase 'frame_shift_del':\n\t\t\treturn 'F'\n\t\tcase 'frame_shift_ins':\n\t\t\treturn 'F'\n\t\tcase 'in_frame_del':\n\t\t\treturn 'D'\n\t\tcase 'in_frame_ins':\n\t\t\treturn 'I'\n\t\tcase 'protein_altering_variant':\n\t\t\treturn 'ProteinAltering'\n\t\tcase 'translation_start_site':\n\t\t\treturn mclassnonstandard\n\t\tcase 'nonstop_mutation':\n\t\t\treturn 'N'\n\t\tcase \"3'utr\":\n\t\t\treturn mclassutr3\n\t\tcase \"3'flank\":\n\t\t\treturn mclassnoncoding\n\t\tcase \"5'utr\":\n\t\t\treturn mclassutr5\n\t\tcase \"5'flank\":\n\t\t\treturn mclassnoncoding\n\t\tcase 'silent':\n\t\t\treturn 'S'\n\t\tcase 'blank':\n\t\t\treturn 'Blank'\n\t\tdefault:\n\t\t\treturn null\n\t}\n}\n\nexport const mclassfusionrna = 'Fuserna'\nmclass[mclassfusionrna] = {\n\tlabel: 'Fusion transcript',\n\tcolor: '#545454',\n\tdt: dtfusionrna,\n\tdesc:\n\t\t'Marks the break points leading to fusion transcripts.<br>' +\n\t\t'<span style=\"font-size:150%\">&#9680;</span> - 3\\' end of the break point is fused to the 5\\' end of another break point in a different gene.<br>' +\n\t\t'<span style=\"font-size:150%\">&#9681;</span> - 5\\' end of the break point is fused to the 3\\' end of another break point in a different gene.',\n\tkey: mclassfusionrna\n}\nexport const mclasssv = 'SV'\nmclass[mclasssv] = {\n\tlabel: 'Structural variation',\n\tcolor: '#858585',\n\tdt: dtsv,\n\tdesc:\n\t\t'<span style=\"font-size:150%\">&#9680;</span> - 3\\' end of the break point is fused to the 5\\' end of another break point in a different gene.<br>' +\n\t\t'<span style=\"font-size:150%\">&#9681;</span> - 5\\' end of the break point is fused to the 3\\' end of another break point in a different gene.',\n\tkey: mclasssv\n}\n\n// \"CNV_amp\" represents \"CNV Gain\" and is used in both 2-category and 5-category CNV data representation\n// \"CNV_amplification\" represents CNV amplification and is used in 5-category CNV\n// \"CNV_amp\" have to stay as-is since it may be hardcoded in lots of data beyond portal code.\nexport const mclasscnvgain = 'CNV_amp'\nmclass[mclasscnvgain] = {\n\tlabel: 'Copy number gain', // TODO change to 'Gain'\n\tcolor: '#e9a3c9',\n\tdt: dtcnv,\n\tdesc: 'Copy number gain',\n\tkey: mclasscnvgain\n}\n\nexport const mclasscnvloss = 'CNV_loss'\nmclass[mclasscnvloss] = {\n\tlabel: 'Copy number loss',\n\tcolor: '#a1d76a',\n\tdt: dtcnv,\n\tdesc: 'Copy number loss',\n\tkey: mclasscnvloss\n}\n\n// mclasscnvAmp is next level above mclasscnvgain and is used in 5-category CNV data\nexport const mclasscnvAmp = 'CNV_amplification'\nmclass[mclasscnvAmp] = {\n\tlabel: 'Copy number amplification',\n\tcolor: '#ff0000',\n\tdt: dtcnv,\n\tdesc: 'Copy number amplification',\n\tkey: mclasscnvAmp\n}\n\nexport const mclasscnvHomozygousDel = 'CNV_homozygous_deletion'\nmclass[mclasscnvHomozygousDel] = {\n\tlabel: 'Copy number homozygous deletion',\n\tcolor: '#0000ff',\n\tdt: dtcnv,\n\tdesc: 'Copy number homozygous deletion',\n\tkey: mclasscnvHomozygousDel\n}\n\nexport const mclasscnvloh = 'CNV_loh'\nmclass[mclasscnvloh] = { label: 'LOH', color: '#12EDFC', dt: dtcnv, desc: 'Loss of heterozygosity', key: mclasscnvloh }\n\n// for VCF\nexport const mclasssnv = 'snv'\nmclass[mclasssnv] = {\n\tlabel: 'SNV',\n\tcolor: '#92a2d4',\n\tdt: dtsnvindel,\n\tdesc: 'Single nucleotide variation',\n\tkey: mclasssnv\n}\n\nexport const mclassmnv = 'mnv'\nmclass[mclassmnv] = {\n\tlabel: 'MNV',\n\tcolor: '#92a2d4',\n\tdt: dtsnvindel,\n\tdesc: 'Multiple nucleotide variation',\n\tkey: mclassmnv\n}\n\nexport const mclassinsertion = 'insertion'\nmclass[mclassinsertion] = {\n\tlabel: 'Sequence insertion',\n\tcolor: '#bd8e91',\n\tdt: dtsnvindel,\n\tdesc: 'Sequence insertion',\n\tkey: mclassinsertion\n}\n\nexport const mclassdeletion = 'deletion'\nmclass[mclassdeletion] = {\n\tlabel: 'Sequence deletion',\n\tcolor: '#b5a174',\n\tdt: dtsnvindel,\n\tdesc: 'Sequence deletion',\n\tkey: mclassdeletion\n}\n// TODO complex indel\n\n/* tricky\nwhen a mds3 tk uses numeric cnv, data points from tk.cnv.cnvLst[] has .class=dtcnv but no class!\na \"cnv\" entry needs to be present in mclass legend, and thus this wrapper function over mclass{} to allow dtcnv as key\nthe tricky case doesn't apply to other plots\n*/\nexport function mds3tkMclass(k) {\n\tif (k == dtcnv) {\n\t\treturn {\n\t\t\tcolor: '#858585',\n\t\t\tlabel: 'CNV',\n\t\t\tdesc: 'Copy number variation'\n\t\t}\n\t}\n\treturn mclass[k]\n}\n\nexport const dt2color = {\n\t[dtsnvindel]: mclass.M.color // general color for snvindel irrespective of class (when class is not available)\n\t// add new dt as needed\n}\n\n// option to override mutation class attribute values\nexport function applyOverrides(overrides: Record<string, any> = {}) {\n\tif (overrides.mclass) {\n\t\tfor (const key in overrides.mclass) {\n\t\t\t// allow to fill-in mutation class that are missing from mclass;\n\t\t\t// may be useful for things like 'Not tested', etc, that may not be in mclass by default\n\t\t\t// but are used by a customer with its own PP server instance\n\t\t\tif (!mclass[key]) mclass[key] = {}\n\t\t\tfor (const subkey in overrides.mclass[key]) {\n\t\t\t\tmclass[key][subkey] = overrides.mclass[key][subkey]\n\t\t\t}\n\t\t}\n\t}\n}\n\n/* legacy function. input is comma-joined multiple consequences\nperforms case insensitive match and returns severity rank\nTODO share data with SOterms\n*/\nexport const vepinfo = function (s) {\n\tconst l = s.toLowerCase().split(',')\n\tlet rank = 1\n\tif (l.indexOf('transcript_ablation') != -1) {\n\t\t// FIXME no class for whole gene deletion\n\t\treturn [dtdel, mclassdel, rank]\n\t}\n\trank++\n\tif (l.indexOf('splice_acceptor_variant') != -1) return [dtsnvindel, 'L', rank]\n\trank++\n\tif (l.indexOf('splice_donor_variant') != -1) return [dtsnvindel, 'L', rank]\n\trank++\n\tif (l.indexOf('stop_gained') != -1) return [dtsnvindel, 'N', rank]\n\trank++\n\tif (l.indexOf('frameshift_variant') != -1) return [dtsnvindel, 'F', rank]\n\trank++\n\tif (l.indexOf('stop_lost') != -1) return [dtsnvindel, 'N', rank]\n\trank++\n\tif (l.indexOf('start_lost') != -1) return [dtsnvindel, 'N', rank]\n\trank++\n\tif (l.indexOf('transcript_amplification') != -1) {\n\t\t// FIXME no class for whole gene amp\n\t\treturn [dtsnvindel, mclassnonstandard, rank]\n\t}\n\trank++\n\tif (\n\t\tl.indexOf('inframe_insertion') != -1 ||\n\t\tl.indexOf('conservative_inframe_insertion') != -1 ||\n\t\tl.indexOf('disruptive_inframe_insertion') != -1\n\t)\n\t\treturn [dtsnvindel, 'I', rank]\n\trank++\n\tif (\n\t\tl.indexOf('inframe_deletion') != -1 ||\n\t\tl.indexOf('conservative_inframe_deletion') != -1 ||\n\t\tl.indexOf('disruptive_inframe_deletion') != -1\n\t)\n\t\treturn [dtsnvindel, 'D', rank]\n\trank++\n\tif (l.indexOf('missense_variant') != -1) return [dtsnvindel, 'M', rank]\n\trank++\n\tif (l.indexOf('protein_altering_variant') != -1) return [dtsnvindel, 'ProteinAltering', rank]\n\trank++\n\tif (l.indexOf('splice_region_variant') != -1) return [dtsnvindel, 'P', rank]\n\trank++\n\tif (l.indexOf('incomplete_terminal_codon_variant') != -1) return [dtsnvindel, 'N', rank]\n\trank++\n\tif (l.indexOf('stop_retained_variant') != -1) return [dtsnvindel, 'S', rank]\n\trank++\n\tif (l.indexOf('synonymous_variant') != -1) return [dtsnvindel, 'S', rank]\n\trank++\n\tif (l.indexOf('coding_sequence_variant') != -1) return [dtsnvindel, mclassnonstandard, rank]\n\trank++\n\tif (l.indexOf('mature_mirna_variant') != -1) return [dtsnvindel, 'E', rank]\n\trank++\n\tif (l.indexOf('5_prime_utr_variant') != -1) return [dtsnvindel, mclassutr5, rank]\n\trank++\n\tif (l.indexOf('3_prime_utr_variant') != -1) return [dtsnvindel, mclassutr3, rank]\n\trank++\n\tif (l.indexOf('non_coding_transcript_exon_variant') != -1) return [dtsnvindel, 'E', rank]\n\trank++\n\tif (l.indexOf('intron_variant') != -1) return [dtsnvindel, 'Intron', rank]\n\trank++\n\tif (l.indexOf('nmd_transcript_variant') != -1) return [dtsnvindel, 'S', rank]\n\trank++\n\tif (l.indexOf('non_coding_transcript_variant') != -1) return [dtsnvindel, 'E', rank]\n\trank++\n\tif (l.indexOf('upstream_gene_variant') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\tif (l.indexOf('downstream_gene_variant') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\tif (l.indexOf('tfbs_ablation') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\tif (l.indexOf('tfbs_amplification') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\tif (l.indexOf('tf_binding_site_variant') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\tif (l.indexOf('regulatory_region_ablation') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\tif (l.indexOf('regulatory_region_amplification') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\tif (l.indexOf('feature_elongation') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\tif (l.indexOf('regulatory_region_variant') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\tif (l.indexOf('feature_truncation') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\tif (l.indexOf('intergenic_variant') != -1) return [dtsnvindel, mclassnoncoding, rank]\n\trank++\n\treturn [dtsnvindel, mclassnonstandard, rank]\n}\n\n// m orgin\nexport const germlinelegend =\n\t'<circle cx=\"7\" cy=\"12\" r=\"7\" fill=\"#b1b1b1\"></circle><path d=\"M6.735557395310443e-16,-11A11,11 0 0,1 11,0L9,0A9,9 0 0,0 5.51091059616309e-16,-9Z\" transform=\"translate(7,12)\" fill=\"#858585\" stroke=\"none\"></path>'\n\nexport const morigin: Record<string, any> = {}\n\nexport const moriginsomatic = 'S'\nmorigin[moriginsomatic] = {\n\tlabel: 'Somatic',\n\tdesc: 'A variant found only in a tumor sample. The proportion is indicated by lack of any arc.',\n\tlegend: '<circle cx=\"7\" cy=\"12\" r=\"7\" fill=\"#b1b1b1\"></circle>',\n\torder: 1\n}\nexport const morigingermline = 'G'\nmorigin[morigingermline] = {\n\tlabel: 'Germline',\n\tdesc: 'A constitutional variant found in a normal sample. The proportion is indicated by the span of the solid arc within the whole circle.',\n\tlegend: germlinelegend,\n\torder: 2\n}\n\nmorigin.germline = morigin[morigingermline]\nmorigin.somatic = morigin[moriginsomatic]\n\nexport const moriginrelapse = 'R'\nmorigin[moriginrelapse] = {\n\tlabel: 'Relapse',\n\tdesc: 'A somatic variant found only in a relapse sample. The proportion is indicated by the span of the hollow arc within the whole circle.',\n\tlegend:\n\t\t'<circle cx=\"7\" cy=\"12\" r=\"7\" fill=\"#b1b1b1\"></circle><path d=\"M6.735557395310443e-16,-11A11,11 0 0,1 11,0L9,0A9,9 0 0,0 5.51091059616309e-16,-9Z\" transform=\"translate(7,12)\" fill=\"none\" stroke=\"#858585\"></path>'\n}\nexport const morigingermlinepathogenic = 'GP'\nmorigin[morigingermlinepathogenic] = {\n\tlabel: 'Germline pathogenic',\n\tdesc: 'A constitutional variant with pathogenic allele.',\n\tlegend: germlinelegend\n}\nexport const morigingermlinenonpathogenic = 'GNP'\nmorigin[morigingermlinenonpathogenic] = {\n\tlabel: 'Germline non-pathogenic',\n\tdesc: 'A constitutional variant with non-pathogenic allele.',\n\tlegend: germlinelegend,\n\thidden: true\n}\n\nexport const tkt = {\n\tusegm: 'usegm',\n\tds: 'dataset',\n\tbigwig: 'bigwig',\n\tbigwigstranded: 'bigwigstranded',\n\tjunction: 'junction',\n\tmdsjunction: 'mdsjunction',\n\tmdssvcnv: 'mdssvcnv', // replaced by mds3\n\tmdsexpressionrank: 'mdsexpressionrank',\n\tmdsvcf: 'mdsvcf', // for snv/indels, currently vcf, may include MAF\n\t//mdsgeneral:'mdsgeneral', // replaces mdssvcnv ****** not ready yet\n\tbedj: 'bedj',\n\tpgv: 'profilegenevalue',\n\tbampile: 'bampile',\n\thicstraw: 'hicstraw',\n\texpressionrank: 'expressionrank',\n\taicheck: 'aicheck',\n\tmds3: 'mds3', //\n\tbam: 'bam',\n\tld: 'ld',\n\tj2: 'j2' // mds3 cohort junction\n}\n\nexport function validtkt(what) {\n\tfor (const k in tkt) {\n\t\tif (what == tkt[k]) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n/*\nmember track types from mdsvcf\nto get rid of hardcoded strings\nin future may include MAF format files\n*/\nexport const mdsvcftype = {\n\tvcf: 'vcf'\n}\n\n/*\nfor custom mdssvcnv track\nor general track\nto avoid using hard-coded string\n*/\nexport const custommdstktype = {\n\tvcf: 'vcf',\n\tsvcnvitd: 'svcnvitd',\n\tgeneexpression: 'geneexpression'\n}\n\n// codons that are not here are stop codon!!\nexport const codon = {\n\tGCT: 'A',\n\tGCC: 'A',\n\tGCA: 'A',\n\tGCG: 'A',\n\tCGT: 'R',\n\tCGC: 'R',\n\tCGA: 'R',\n\tCGG: 'R',\n\tAGA: 'R',\n\tAGG: 'R',\n\tAAT: 'N',\n\tAAC: 'N',\n\tGAT: 'D',\n\tGAC: 'D',\n\tTGT: 'C',\n\tTGC: 'C',\n\tCAA: 'Q',\n\tCAG: 'Q',\n\tGAA: 'E',\n\tGAG: 'E',\n\tGGT: 'G',\n\tGGC: 'G',\n\tGGA: 'G',\n\tGGG: 'G',\n\tCAT: 'H',\n\tCAC: 'H',\n\tATT: 'I',\n\tATC: 'I',\n\tATA: 'I',\n\tTTA: 'L',\n\tTTG: 'L',\n\tCTT: 'L',\n\tCTC: 'L',\n\tCTA: 'L',\n\tCTG: 'L',\n\tAAA: 'K',\n\tAAG: 'K',\n\tATG: 'M',\n\tTTT: 'F',\n\tTTC: 'F',\n\tCCT: 'P',\n\tCCC: 'P',\n\tCCA: 'P',\n\tCCG: 'P',\n\tTCT: 'S',\n\tTCC: 'S',\n\tTCA: 'S',\n\tTCG: 'S',\n\tAGT: 'S',\n\tAGC: 'S',\n\tACT: 'T',\n\tACC: 'T',\n\tACA: 'T',\n\tACG: 'T',\n\tTGG: 'W',\n\tTAT: 'Y',\n\tTAC: 'Y',\n\tGTT: 'V',\n\tGTC: 'V',\n\tGTA: 'V',\n\tGTG: 'V'\n}\n\nexport const codon_stop = '*'\n\nexport function nt2aa(gm) {\n\t// must convert genome seq to upper case!!!\n\tif (!gm.genomicseq) return undefined\n\tconst enlst: string[] = []\n\tif (gm.coding) {\n\t\tfor (const e of gm.coding.values()) {\n\t\t\tconst s = gm.genomicseq.substr(e[0] - gm.start, e[1] - e[0])\n\t\t\tif (gm.strand == '-') {\n\t\t\t\tenlst.push(reversecompliment(s))\n\t\t\t} else {\n\t\t\t\tenlst.push(s)\n\t\t\t}\n\t\t}\n\t}\n\tconst nt = enlst.join('')\n\tconst pep: string[] = []\n\n\t/*\n\tif startCodonFrame is set, will not begin translation from first nt, but will skip 1 or 2 nt at the beginning\n\tin case of IGKC, frame=1 means it will borrow 1 nt from the previous IGKJ exons\n\tso the first two nucleotides from the current exon will have to be skipped when translating IGKC alone\n\t*/\n\tconst startntidx = gm.startCodonFrame ? 3 - gm.startCodonFrame : 0\n\tfor (let i = startntidx; i < nt.length; i += 3) {\n\t\tconst a = codon[nt.substr(i, 3)]\n\t\tpep.push(a || codon_stop)\n\t}\n\tgm.cdseq = nt\n\treturn pep.join('')\n}\n\nexport function bplen(len, isfile?: boolean) {\n\t// if \"isfile\" is true, to measure file size instead of basepair len\n\tif (len >= 1000000000) return (len / 1000000000).toFixed(1) + ' Gb'\n\tif (len >= 10000000) return Math.ceil(len / 1000000) + ' Mb'\n\tif (len >= 1000000) return (len / 1000000).toFixed(1) + ' Mb'\n\tif (len >= 10000) return Math.ceil(len / 1000) + ' Kb'\n\tif (len >= 1000) return (len / 1000).toFixed(1) + ' Kb'\n\treturn len + (isfile ? 'bytes' : ' bp')\n}\n\nexport const basecolor = {\n\tA: '#ca0020',\n\tT: '#f4a582',\n\tC: '#92c5de',\n\tG: '#0571b0'\n}\n\nexport function basecompliment(nt) {\n\tswitch (nt) {\n\t\tcase 'A':\n\t\t\treturn 'T'\n\t\tcase 'T':\n\t\t\treturn 'A'\n\t\tcase 'C':\n\t\t\treturn 'G'\n\t\tcase 'G':\n\t\t\treturn 'C'\n\t\tcase 'a':\n\t\t\treturn 't'\n\t\tcase 't':\n\t\t\treturn 'a'\n\t\tcase 'c':\n\t\t\treturn 'g'\n\t\tcase 'g':\n\t\t\treturn 'c'\n\t\tdefault:\n\t\t\treturn nt\n\t}\n}\n\nexport function reversecompliment(s) {\n\tconst tmp: string[] = []\n\tfor (let i = s.length - 1; i >= 0; i--) {\n\t\ttmp.push(basecompliment(s[i]))\n\t}\n\treturn tmp.join('')\n}\n\nexport function spliceeventchangegmexon(gm, evt) {\n\t/*\n\talter gm.coding[], by exon-skip/alt events\n\tfor frame checking\n\tgm must have coding\n\t*/\n\tconst gm2 = {\n\t\tchr: gm.chr,\n\t\tstart: gm.start,\n\t\tstop: gm.stop,\n\t\tstrand: gm.strand,\n\t\tcoding: [] as number[][]\n\t}\n\tif (evt.isskipexon || evt.isaltexon) {\n\t\tfor (let i = 0; i < gm.exon.length; i++) {\n\t\t\tconst codingstart = Math.max(gm.codingstart, gm.exon[i][0])\n\t\t\tconst codingstop = Math.min(gm.codingstop, gm.exon[i][1])\n\t\t\tif (codingstart > codingstop) {\n\t\t\t\t// not coding exon\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (evt.skippedexon.indexOf(i) == -1) {\n\t\t\t\t// not skipped\n\t\t\t\tgm2.coding.push([codingstart, codingstop])\n\t\t\t} else {\n\t\t\t\t// skipped\n\t\t\t}\n\t\t}\n\t} else if (evt.a5ss || evt.a3ss) {\n\t\t// still equal number of exons\n\t\t// adjust the affected exon first, then figure out coding[]\n\t\tconst exons = gm.exon.map(e => [e[0], e[1]])\n\t\tconst forward = gm.strand == '+'\n\t\tif (evt.a5ss) {\n\t\t\tif (forward) {\n\t\t\t\texons[evt.exon5idx][1] = evt.junctionB.start\n\t\t\t} else {\n\t\t\t\texons[evt.exon5idx + 1][0] = evt.junctionB.stop\n\t\t\t}\n\t\t} else {\n\t\t\tif (forward) {\n\t\t\t\texons[evt.exon5idx + 1][0] = evt.junctionB.stop\n\t\t\t} else {\n\t\t\t\texons[evt.exon5idx][1] = evt.junctionB.start\n\t\t\t}\n\t\t}\n\t\t// from new exons, figure out coding exons\n\t\tfor (const e of exons) {\n\t\t\tconst codingstart = Math.max(gm.codingstart, e[0])\n\t\t\tconst codingstop = Math.min(gm.codingstop, e[1])\n\t\t\tif (codingstart > codingstop) {\n\t\t\t\t// not coding exon\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tgm2.coding.push([codingstart, codingstop])\n\t\t}\n\t}\n\treturn gm2\n}\n\nexport function fasta2gmframecheck(gm, str) {\n\t/*\n\tgm{}\n\t\t.chr\n\t\t.start\n\t\t.stop\n\t\t\tstart/stop is transcript position\n\t\t.strand\n\t\t.coding[]\n\tstr\n\t\tsamtools faidx output\n\t*/\n\tconst lines = str.split('\\n')\n\t// remove fasta header\n\tlines.shift()\n\tgm.genomicseq = lines.join('').toUpperCase()\n\n\tconst aaseq = nt2aa(gm)\n\tif (!aaseq) return OUT_frame\n\n\tlet thisframe = OUT_frame\n\tconst stopcodonidx = aaseq.indexOf(codon_stop)\n\tif (stopcodonidx == aaseq.length - 1) {\n\t\t// the first appearance of stop codon is at the last of translation\n\t\tthisframe = IN_frame\n\t}\n\treturn thisframe\n}\n\nexport function validate_vcfinfofilter(obj) {\n\t/*\n\tvalidate vcfinfofilter as from embedding api or dataset\n\t*/\n\n\tif (!obj.lst) return '.lst missing'\n\n\tif (!Array.isArray(obj.lst)) return 'input is not an array'\n\n\tfor (const set of obj.lst) {\n\t\tif (!set.name) return 'name missing from a set of .vcfinfofilter.lst'\n\n\t\tif (set.autocategory || set.categories) {\n\t\t\t// categorical info, auto or defined\n\n\t\t\tif (!set.autocategory) {\n\t\t\t\tfor (const k in set.categories) {\n\t\t\t\t\tconst v = set.categories[k]\n\t\t\t\t\tif (!set.autocolor && !v.color)\n\t\t\t\t\t\treturn '.color missing for class ' + k + ' from .categories of set ' + set.name\n\t\t\t\t\tif (!v.label) {\n\t\t\t\t\t\tv.label = k\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (set.categoryhidden) {\n\t\t\t\tfor (const k in set.categoryhidden) {\n\t\t\t\t\tif (!set.categories[k]) return 'unknown hidden-by-default category ' + k + ' from set ' + set.name\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tset.categoryhidden = {}\n\t\t\t}\n\t\t} else if (set.numericfilter) {\n\t\t\t// otherwise, numerical value, the style of population frequency filter\n\t\t\tconst lst: any[] = []\n\t\t\tfor (const v of set.numericfilter) {\n\t\t\t\tif (typeof v == 'number') {\n\t\t\t\t\t/*\n\t\t\t\t\tjust a number, defaults to 'lower-than'\n\t\t\t\t\t*/\n\t\t\t\t\tlst.push({ side: '<', value: v })\n\t\t\t\t} else {\n\t\t\t\t\tlst.push({\n\t\t\t\t\t\tside: v.side || '<',\n\t\t\t\t\t\tvalue: v.value\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\tset.numericfilter = lst\n\n\t\t\t//return 'no .categories or .numericfilter from set '+set.name\n\t\t}\n\n\t\tif (set.altalleleinfo) {\n\t\t\tif (!set.altalleleinfo.key) {\n\t\t\t\treturn '.key missing from .altalleleinfo from set ' + set.name\n\t\t\t}\n\t\t} else if (set.locusinfo) {\n\t\t\tif (!set.locusinfo.key) {\n\t\t\t\treturn '.key missing from .locusinfo from set ' + set.name\n\t\t\t}\n\t\t} else {\n\t\t\treturn 'neither .altalleleinfo or .locusinfo is available from set ' + set.name\n\t\t}\n\t}\n}\n\nexport function contigNameNoChr(genome, chrlst) {\n\t/*\n\tFIXME hard-coded for human genome styled chromosome names\n\t*/\n\tfor (const n in genome.majorchr) {\n\t\tif (chrlst.indexOf(n.replace('chr', '')) != -1) {\n\t\t\treturn true\n\t\t}\n\t}\n\tif (genome.minorchr) {\n\t\tfor (const n in genome.minorchr) {\n\t\t\tif (chrlst.indexOf(n.replace('chr', '')) != -1) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\nexport function contigNameNoChr2(genome, chrlst) {\n\t// returns number of matching chr names that either includes \"chr\" or not\n\t// for detecting if chrlst entirely mismatch with what's in the genome build\n\t// TODO replace contigNameNoChr\n\tlet nochrcount = 0,\n\t\thaschrcount = 0\n\tfor (const n in genome.majorchr) {\n\t\tif (chrlst.includes(n)) {\n\t\t\thaschrcount++\n\t\t} else if (chrlst.includes(n.replace('chr', ''))) {\n\t\t\tnochrcount++\n\t\t}\n\t}\n\tif (genome.minorchr) {\n\t\tfor (const n in genome.minorchr) {\n\t\t\tif (chrlst.includes(n)) {\n\t\t\t\thaschrcount++\n\t\t\t} else if (chrlst.includes(n.replace('chr', ''))) {\n\t\t\t\tnochrcount++\n\t\t\t}\n\t\t}\n\t}\n\treturn [nochrcount, haschrcount]\n}\n\nexport function getMax_byiqr(lst, novaluemax) {\n\t/*\n\tlst: array of numbers\n\tnovaluemax: when lst is empty, return this value\n\tcutoff value based on IQR to exclude outlier values\n\t*/\n\tif (lst.length == 0) return novaluemax\n\tlst.sort((i, j) => i - j)\n\tconst max = lst[lst.length - 1]\n\tif (lst.length <= 5) return max\n\tconst q1 = lst[Math.floor(lst.length / 4)]\n\tconst q2 = lst[Math.floor((lst.length * 3) / 4)]\n\treturn Math.min(q2 + (q2 - q1) * 1.5, max)\n}\n\nexport function alleleInGenotypeStr(genotype, allele) {\n\tif (!genotype) return false\n\tif (genotype.indexOf('/') != -1) {\n\t\treturn genotype.split('/').indexOf(allele) != -1\n\t}\n\treturn genotype.split('|').indexOf(allele) != -1\n}\n\nexport const gmmode = {\n\tgenomic: 'genomic',\n\tsplicingrna: 'splicing RNA', // if just 1 exon, use \"RNA\" as label\n\texononly: 'exon only',\n\tprotein: 'protein',\n\tgmsum: 'aggregated exons'\n}\n\n/*\ninput:\n\nm={}\n\tm.csq=[]\n\t\telement: {\n\t\t\tAllele: str,\n\t\t\tConsequence: str,\n\t\t\tCANONICAL: str, // true if _isoform is canonical\n\t\t\t...\n\t\t\t_isoform: str,\n\t\t\t_class: str,\n\t\t\t_csqrank: int\n\t\t}\n\tm.ann=[]\n\t\tannovar output. may be derelict\nblock={}\n\tblock.usegm={ isoform }\n\tcan be a mock object when running this function in node!\n\ndoes:\n\tfind an annotation from m.csq[] that's fitting the circumstance\n\t- current gm isoform displayed in block gene mode\n\t- any canonical isoform from m.csq[] (can be missing if vep is not instructed to do it)\n\t- one with highest _csqrank\n\tthen, copy its class/mname to m{}\n\thas many fall-back and always try to assign class/mname\n\nno return\n*/\nexport function vcfcopymclass(m, block) {\n\tif (m.csq) {\n\t\tlet useone // point to the element of m.csq[], from this class/mname is copied to m{}\n\n\t\tif (block.usegm) {\n\t\t\t// block is in gm mode, find a csq matching with the genemodel isoform\n\t\t\tuseone = m.csq.find(i => i._isoform == block.usegm.isoform)\n\t\t\tif (!useone) {\n\t\t\t\t// no match to usegm isoform\n\t\t\t\tif (block.gmmode == 'genomic') {\n\t\t\t\t\t// in genomic mode and zoomed out, where this variant is from a neighboring gene near block.usegm and is expected not to match\n\t\t\t\t} else {\n\t\t\t\t\t// not in genomic mode and all variants must be within range of this isoform, the csq may mismatch with the isoform. set this flag to alert on client\n\t\t\t\t\tm.__cim = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!useone) {\n\t\t\t// find one using canonical isoform\n\t\t\tuseone = m.csq.find(i => i.CANONICAL)\n\n\t\t\tif (!useone) {\n\t\t\t\t// none of the elements in m.csq[] is using a canonical isoform, as that's a vep optional output\n\t\t\t\t// last method: choose *colorful* annotation based on if is canonical, _csqrank\n\t\t\t\tuseone = m.csq[0]\n\t\t\t\tfor (const q of m.csq) {\n\t\t\t\t\tif (q._csqrank < useone._csqrank) {\n\t\t\t\t\t\tuseone = q\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (useone) {\n\t\t\tm.gene = useone._gene\n\t\t\tm.isoform = useone._isoform\n\t\t\tm.class = useone._class\n\t\t\tm.dt = useone._dt\n\t\t\tm.mname = useone._mname\n\n\t\t\tif (m.class == mclassnoncoding) {\n\t\t\t\t// noncoding converted from csq is not a meaningful, drab color, has no mname label, delete so later will be converted to non-protein class\n\t\t\t\tdelete m.class\n\t\t\t}\n\t\t}\n\t} else if (m.ann) {\n\t\t// there could be many applicable annotations, the first one not always desirable\n\t\t// choose *colorful* annotation based on _csqrank\n\t\tlet useone: any = null\n\t\tif (block.usegm) {\n\t\t\tfor (const q of m.ann) {\n\t\t\t\tif (q._isoform != block.usegm.isoform) continue\n\t\t\t\tif (useone) {\n\t\t\t\t\tif (q._csqrank < useone._csqrank) {\n\t\t\t\t\t\tuseone = q\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tuseone = q\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!useone && block.gmmode == gmmode.genomic) {\n\t\t\t\t// no match to this gene, but in genomic mode, maybe from other genes?\n\t\t\t\tuseone = m.ann[0]\n\t\t\t}\n\t\t} else {\n\t\t\tuseone = m.ann[0]\n\t\t\tfor (const q of m.ann) {\n\t\t\t\tif (q._csqrank < useone._csqrank) {\n\t\t\t\t\tuseone = q\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (useone) {\n\t\t\tm.gene = useone._gene\n\t\t\tm.isoform = useone._isoform\n\t\t\tm.class = useone._class\n\t\t\tm.dt = useone._dt\n\t\t\tm.mname = useone._mname\n\n\t\t\tif (m.class == mclassnoncoding) {\n\t\t\t\tdelete m.class\n\t\t\t}\n\t\t}\n\t}\n\n\tif (m.class == undefined) {\n\t\t// infer class from m.type, which was assigned by vcf.js\n\t\tif (mclass[m.type]) {\n\t\t\tm.class = m.type\n\t\t\tm.dt = mclass[m.type].dt\n\t\t\tm.mname = m.id && m.id != '.' ? m.id : m.ref + '>' + m.alt\n\t\t\tif (m.mname.length > 15) {\n\t\t\t\t// avoid long indel\n\t\t\t\tm.mname = m.type\n\t\t\t}\n\t\t} else {\n\t\t\tm.class = mclassnonstandard\n\t\t\tm.dt = dtsnvindel\n\t\t\tm.mname = m.type\n\t\t}\n\t}\n\n\tdelete m.type\n}\n\n/*\nused in:\n\tmdssvcnv track, mutation attributes, items that are not annotated by an attribute for showing in legend, and server-side filtering\n*/\nexport const not_annotated = 'Unannotated'\n\n// kernal density estimator as from https://www.d3-graph-gallery.com/graph/density_basic.html\n\nexport function kernelDensityEstimator(kernel, X) {\n\treturn function (V) {\n\t\treturn X.map(x => {\n\t\t\treturn [x, V.map(v => kernel(x - v)).reduce((i, j) => i + j, 0) / V.length]\n\t\t})\n\t}\n}\n\nexport function kernelEpanechnikov(k) {\n\treturn function (v) {\n\t\treturn Math.abs((v /= k)) <= 1 ? (0.75 * (1 - v * v)) / k : 0\n\t}\n}\n\n/////////////////////// color sets /////////////////////////\n\nexport const schemeCategory20 = [\n\t'#1f77b4',\n\t'#aec7e8',\n\t'#ff7f0e',\n\t'#ffbb78',\n\t'#2ca02c',\n\t'#98df8a',\n\t'#d62728',\n\t'#ff9896',\n\t'#9467bd',\n\t'#c5b0d5',\n\t'#8c564b',\n\t'#c49c94',\n\t'#e377c2',\n\t'#f7b6d2',\n\t'#7f7f7f',\n\t'#c7c7c7',\n\t'#bcbd22',\n\t'#dbdb8d',\n\t'#17becf',\n\t'#9edae5'\n]\nexport const schemeCategory2 = ['#e75480', 'blue']\n\nexport function getColorScheme(number) {\n\tif (number > 20) {\n\t\tconst scheme: string[] = []\n\t\tfor (let i = 0; i < number; i++) scheme.push(d3.interpolateRainbow(i / number))\n\t\treturn scheme\n\t}\n\tif (number > 12) return schemeCategory20\n\telse if (number > 8) return d3.schemePaired\n\telse if (number > 2) return d3.schemeDark2\n\telse return schemeCategory2\n}\nexport function getColors(number) {\n\tconst scheme = getColorScheme(number)\n\treturn d3scale.scaleOrdinal(scheme)\n}\n\n// for now not using getColorScheme() for protein domains, because this color list have been in use since 2015...\nconst proteinDomainColors = [\n\t'#8dd3c7',\n\t'#bebada',\n\t'#fb8072',\n\t'#80b1d3',\n\t'#E8E89E',\n\t'#a6d854',\n\t'#fdb462',\n\t'#ffd92f',\n\t'#e5c494',\n\t'#b3b3b3'\n]\nexport function proteinDomainColorScale() {\n\treturn d3scale.scaleOrdinal().range(proteinDomainColors)\n}\n\n/////////////////////// end of color sets /////////////////////////\n\nexport const truncatingMutations = ['F', 'N', 'L', 'P']\nexport const proteinChangingMutations = ['F', 'N', 'L', 'P', 'D', 'I', 'ProteinAltering', 'M']\nexport const synonymousMutations = ['S', 'Intron', 'Utr3', 'Utr5', 'noncoding', 'E']\nexport const mutationClasses = Object.values(mclass)\n\t.filter(m => m.dt == dtsnvindel)\n\t.map(m => m.key)\nexport const CNVClasses = Object.values(mclass)\n\t.filter(m => m.dt == dtcnv)\n\t.map(m => m.key)\n\n// dt terms used for filtering variants for geneVariant term\nexport const dtTerms = [\n\t{\n\t\tid: 'snvindel',\n\t\tquery: 'snvindel',\n\t\tname: dt2label[dtsnvindel],\n\t\tparent_id: null,\n\t\tisleaf: true,\n\t\ttype: DTSNVINDEL,\n\t\tdt: dtsnvindel,\n\t\tvalues: {}\n\t},\n\t{\n\t\tid: 'cnv',\n\t\tquery: 'cnv',\n\t\tname: dt2label[dtcnv],\n\t\tparent_id: null,\n\t\tisleaf: true,\n\t\ttype: DTCNV,\n\t\tdt: dtcnv,\n\t\tvalues: {}\n\t},\n\t{\n\t\tid: 'fusion',\n\t\tquery: 'svfusion',\n\t\tname: dt2label[dtfusionrna],\n\t\tparent_id: null,\n\t\tisleaf: true,\n\t\ttype: DTFUSION,\n\t\tdt: dtfusionrna,\n\t\tvalues: {}\n\t},\n\t{\n\t\tid: 'sv',\n\t\tquery: 'svfusion',\n\t\tname: dt2label[dtsv],\n\t\tparent_id: null,\n\t\tisleaf: true,\n\t\ttype: DTSV,\n\t\tdt: dtsv,\n\t\tvalues: {}\n\t},\n\t{\n\t\tid: 'itd',\n\t\tquery: 'itd',\n\t\tname: dt2label[dtitd],\n\t\tparent_id: null,\n\t\tisleaf: true,\n\t\ttype: DTITD,\n\t\tdt: dtitd,\n\t\tvalues: {}\n\t}\n]\n\nexport const colorScaleMap = {\n\tblueWhiteRed: { domain: [0, 0.5, 1], range: ['blue', 'white', 'red'] },\n\tgreenWhiteRed: { domain: [0, 0.5, 1], range: ['green', 'white', 'red'] },\n\tblueYellowRed: {\n\t\tdomain: [0, 0.17, 0.33, 0.5, 0.67, 0.83, 1],\n\t\trange: ['#313695', '#649AC7', '#BCE1ED', '#FFFFBF', '#FDBE70', '#EA5839', '#A50026']\n\t},\n\tgreenBlackRed: {\n\t\tdomain: [0, 0.17, 0.33, 0.5, 0.67, 0.83, 1],\n\t\trange: ['#00FF00', '#14E10C', '#1AAF10', '#000000', '#B01205', '#E20E03', '#FF0000']\n\t},\n\tblueBlackYellow: {\n\t\tdomain: [0, 0.17, 0.33, 0.5, 0.67, 0.83, 1],\n\t\trange: ['#0000FF', '#0000CC', '#000099', '#202020', '#999900', '#CCCC00', '#FFFF00']\n\t},\n\t// when hierCluster z-score transformation is not performed, should use two-color scale\n\twhiteRed: { domain: [0, 1], range: ['white', 'red'] }\n}\n\nexport function invalidcoord(thisgenome, chrom, start, stop) {\n\tif (!thisgenome) return 'no genome'\n\tif (!chrom) return 'no chr name'\n\tconst chr = thisgenome.chrlookup[chrom.toUpperCase()]\n\tif (!chr) return 'Invalid chromosome name: ' + chr\n\tif (!Number.isInteger(start)) return 'Non-numerical position: ' + start\n\tif (start < 0 || start >= chr.len) return 'Position out of range: ' + start\n\tif (!Number.isInteger(stop)) return 'Non-numerical position: ' + stop\n\tif (stop < 0 || stop > chr.len) return 'Position out of range: ' + stop\n\tif (start > stop) return 'Start position is greater than stop'\n\treturn false\n}\n\nexport function string2pos(s, genome, donotextend) {\n\ts = s.replace(/,/g, '')\n\tconst chr = genome.chrlookup[s.toUpperCase()]\n\tif (chr) {\n\t\t// chr name only, to middle\n\t\treturn {\n\t\t\tchr: chr.name,\n\t\t\tchrlen: chr.len,\n\t\t\tstart: Math.max(0, Math.ceil(chr.len / 2) - 10000),\n\t\t\tstop: Math.min(chr.len, Math.ceil(chr.len / 2) + 10000)\n\t\t}\n\t}\n\t{\n\t\t// special handling for snv4\n\t\tconst tmp = s.split('.')\n\t\tif (tmp.length >= 2) {\n\t\t\tconst chr = genome.chrlookup[tmp[0].toUpperCase()]\n\t\t\tconst pos = Number.parseInt(tmp[1])\n\t\t\tconst e = invalidcoord(genome, tmp[0], pos, pos + 1)\n\t\t\tif (!e) {\n\t\t\t\t// valid snv4\n\t\t\t\tconst bpspan = 400\n\t\t\t\treturn {\n\t\t\t\t\tchr: chr.name,\n\t\t\t\t\tchrlen: chr.len,\n\t\t\t\t\tstart: Math.max(0, pos - Math.ceil(bpspan / 2)),\n\t\t\t\t\tstop: Math.min(chr.len, pos + Math.ceil(bpspan / 2)),\n\t\t\t\t\tactualposition: { position: pos, len: 1 }\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// a \"-\" right after a delimiter is a minus sign, e.g. \"chr1:-5-10\"; reject it rather than letting the split below drop it\n\tif (/[-:\\s]-\\d/.test(s)) return null\n\tconst tmp = s.split(/[-:\\s]+/)\n\tif (tmp.length == 2) {\n\t\t// must be chr - pos\n\t\tconst pos = Number.parseInt(tmp[1])\n\t\tconst e = invalidcoord(genome, tmp[0], pos, pos + 1)\n\t\tif (e) {\n\t\t\treturn null\n\t\t}\n\t\tconst chr = genome.chrlookup[tmp[0].toUpperCase()]\n\t\tconst bpspan = 400\n\t\treturn {\n\t\t\tchr: chr.name,\n\t\t\tchrlen: chr.len,\n\t\t\tstart: Math.max(0, pos - Math.ceil(bpspan / 2)),\n\t\t\tstop: Math.min(chr.len, pos + Math.ceil(bpspan / 2)),\n\t\t\tactualposition: { position: pos, len: 1 }\n\t\t}\n\t}\n\tif (tmp.length == 3) {\n\t\t// must be chr - start - stop\n\t\tlet start = Number.parseInt(tmp[1]),\n\t\t\tstop = Number.parseInt(tmp[2])\n\t\tconst e = invalidcoord(genome, tmp[0], start, stop)\n\t\tif (e) {\n\t\t\treturn null\n\t\t}\n\t\tconst actualposition = { position: start, len: stop - start }\n\t\tconst chr = genome.chrlookup[tmp[0].toUpperCase()]\n\n\t\tif (!donotextend) {\n\t\t\tconst minspan = 400\n\t\t\tif (stop - start < minspan) {\n\t\t\t\tlet center = Math.ceil((start + stop) / 2)\n\t\t\t\tif (center + minspan / 2 >= chr.len) {\n\t\t\t\t\tcenter = chr.len - Math.ceil(minspan / 2)\n\t\t\t\t}\n\t\t\t\tstart = Math.max(0, center - Math.ceil(minspan / 2))\n\t\t\t\tstop = start + minspan\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tchr: chr.name,\n\t\t\tchrlen: chr.len,\n\t\t\tstart,\n\t\t\tstop,\n\t\t\tactualposition\n\t\t}\n\t}\n\treturn null\n}\n\n/////////////// splice junction event types\nexport const JT_na = 'na'\nexport const JT_canonical = 'canonical'\nexport const JT_exonskip = 'exonskip'\nexport const JT_exonaltuse = 'exonaltuse'\nexport const JT_a5ss = 'a5ss'\nexport const JT_a3ss = 'a3ss'\nexport const JTypes = {\n\t[JT_canonical]: {\n\t\tcolor: '#0C72A8',\n\t\tname: 'Canonical'\n\t},\n\t[JT_exonskip]: {\n\t\tcolor: '#D14747',\n\t\tname: 'ExonSkip'\n\t},\n\t[JT_a5ss]: {\n\t\tcolor: '#476CD1',\n\t\tname: \"Alt 5'SS\"\n\t},\n\t[JT_a3ss]: {\n\t\tcolor: '#47B582',\n\t\tname: \"Alt 3'SS\"\n\t},\n\t[JT_exonaltuse]: {\n\t\tcolor: '#E69525',\n\t\tname: 'Alternative exon'\n\t},\n\t[JT_na]: {\n\t\tcolor: '#787854',\n\t\tname: 'Unannotated'\n\t}\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["x", "x", "y", "k", "transform", "axis", "range", "path", "x", "y", "x0", "y0", "x1", "y1", "right", "bottom", "x", "y", "x0", "y0", "x1", "y1", "x0", "y0", "x1", "y1", "x", "y", "x0", "y0", "x1", "y1", "x2", "y2", "x3", "y3", "x", "y", "x0", "y0", "x1", "y1", "right", "bottom", "x0", "y0", "x1", "y1", "x0", "y0", "x1", "y1", "x", "y", "x0", "y0", "x1", "y1", "x", "k", "x0", "y0", "x1", "y1", "x", "y", "link", "k", "x", "y", "m", "i", "s", "k", "x", "y", "x_default", "x", "y_default", "y", "epsilon", "epsilon2", "x", "x", "y0", "y1", "y", "epsilon", "x", "x0", "x1", "X1", "X0", "Y1", "Y0", "graticule", "coordinates", "identity_default", "x", "object", "coordinates", "x", "y", "x0", "y0", "x", "y", "x00", "y00", "x0", "y0", "x", "y", "x", "y", "x00", "y00", "x0", "y0", "x", "y", "x", "y", "s", "k", "append", "projection", "path", "object", "identity_default", "cartesian", "spherical", "a", "k", "a", "x", "y", "x", "y", "k", "point", "epsilon", "x", "y", "m", "a", "epsilon", "point", "compareIntersection", "n", "x", "epsilon", "array", "a", "point", "epsilon", "m", "lambda0", "sinPhi0", "cosPhi0", "sign", "k", "epsilon2", "point", "m", "a", "epsilon", "lambda0", "epsilon", "cosPhi0", "epsilon", "point2", "c", "intersect", "a", "c2", "lambda0", "delta", "code", "a", "x0", "y0", "x1", "y1", "x0", "y0", "x1", "y1", "x", "y", "a", "epsilon", "compareIntersection", "point", "ring", "m", "visible", "lengthSum", "lengthStream", "lengthPointFirst", "lengthPoint", "x", "y", "object", "a", "object", "point", "coordinates", "epsilon2", "s", "x", "y", "projection", "object", "extent", "k", "x", "y", "x", "y", "x0", "y0", "lambda0", "x1", "y1", "a", "c", "m", "epsilon", "x2", "y2", "x00", "y00", "point", "x", "y", "k", "transform", "a", "x0", "y0", "x1", "y1", "identity_default", "projection", "point", "extent", "object", "center", "x", "y", "epsilon", "scheme", "scheme", "range", "scheme", "c", "constant_default", "x", "abs", "atan2", "cos", "max", "sin", "sqrt", "epsilon", "pi", "halfPi", "tau", "acos", "x", "asin", "pi", "tau", "epsilon", "append", "appendRound", "k", "x", "y", "x1", "y1", "x2", "y2", "x0", "y0", "x0", "y0", "x1", "y1", "x2", "y2", "epsilon", "sqrt", "x00", "y00", "max", "constant_default", "path", "halfPi", "abs", "tau", "cos", "sin", "asin", "pi", "acos", "atan2", "a", "x", "x", "y", "x", "y", "line_default", "x", "y", "constant_default", "path", "area_default", "x0", "y0", "y1", "x1", "constant_default", "path", "x", "y", "k", "line_default", "circle_default", "sqrt", "pi", "tau", "sqrt", "sqrt", "y", "x", "sqrt", "x", "sin", "pi", "tau", "cos", "sqrt", "x", "y", "a", "c", "s", "sqrt", "y", "c", "sqrt", "a", "x0", "y0", "x1", "y1", "x2", "y2", "path", "constant_default", "circle_default", "sign", "x", "x2", "y2", "x0", "y0", "x1", "y1", "y", "x", "y", "x1", "a", "identity_default", "identity_default", "constant_default", "tau", "k", "index", "i", "j", "point", "x", "y", "k", "x", "y", "point", "constant_default", "x", "transform", "transform", "extent", "zoom_default", "point", "k", "x", "y", "a", "x0", "y0", "event", "constant_default", "abs", "cos", "sin", "pi", "halfPi", "tau", "epsilon", "slice", "constant_default", "x", "ribbon", "s", "slice", "halfPi", "epsilon", "abs", "cos", "sin", "constant_default", "slice", "a", "area_default", "constant_default", "x", "contains_default", "c", "point", "x", "y", "pi", "a", "area_default", "contains_default", "x", "y", "index", "point", "constant_default", "slice", "a", "defaultX", "defaultY", "x", "y", "k", "m", "constant_default", "x0", "y0", "c", "transform", "coordinates", "slice", "s", "k", "a", "max", "m", "x", "number", "scheme", "tmp", "chr", "center"]
7
+ }