@weng-lab/visualization 2.4.0-beta.8 → 2.4.1

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 (1180) hide show
  1. package/dist/src/components/Heatmap/HeatmapCanvasCells.d.ts.map +1 -1
  2. package/dist/src/components/Heatmap/scrollable/HeatmapMiniMap.d.ts +4 -1
  3. package/dist/src/components/Heatmap/scrollable/HeatmapMiniMap.d.ts.map +1 -1
  4. package/dist/src/components/Heatmap/scrollable/HeatmapMiniMapPopup.d.ts +1 -1
  5. package/dist/src/components/Heatmap/scrollable/HeatmapMiniMapPopup.d.ts.map +1 -1
  6. package/dist/visualization.es10.js +11 -11
  7. package/dist/visualization.es100.js +148 -95
  8. package/dist/visualization.es100.js.map +1 -1
  9. package/dist/visualization.es101.js +82 -128
  10. package/dist/visualization.es101.js.map +1 -1
  11. package/dist/visualization.es102.js +36 -81
  12. package/dist/visualization.es102.js.map +1 -1
  13. package/dist/visualization.es103.js +45 -36
  14. package/dist/visualization.es103.js.map +1 -1
  15. package/dist/visualization.es104.js +73 -46
  16. package/dist/visualization.es104.js.map +1 -1
  17. package/dist/visualization.es105.js +30 -55
  18. package/dist/visualization.es105.js.map +1 -1
  19. package/dist/visualization.es106.js +13 -32
  20. package/dist/visualization.es106.js.map +1 -1
  21. package/dist/visualization.es107.js +26 -18
  22. package/dist/visualization.es107.js.map +1 -1
  23. package/dist/visualization.es108.js +70 -14
  24. package/dist/visualization.es108.js.map +1 -1
  25. package/dist/visualization.es109.js +222 -26
  26. package/dist/visualization.es109.js.map +1 -1
  27. package/dist/visualization.es11.js +10 -10
  28. package/dist/visualization.es110.js +2 -222
  29. package/dist/visualization.es110.js.map +1 -1
  30. package/dist/visualization.es111.js +557 -2
  31. package/dist/visualization.es111.js.map +1 -1
  32. package/dist/visualization.es112.js +153 -496
  33. package/dist/visualization.es112.js.map +1 -1
  34. package/dist/visualization.es113.js +2 -214
  35. package/dist/visualization.es113.js.map +1 -1
  36. package/dist/visualization.es114.js +4800 -2
  37. package/dist/visualization.es114.js.map +1 -1
  38. package/dist/visualization.es115.js +25 -4800
  39. package/dist/visualization.es115.js.map +1 -1
  40. package/dist/visualization.es116.js +45 -25
  41. package/dist/visualization.es116.js.map +1 -1
  42. package/dist/visualization.es117.js +143 -44
  43. package/dist/visualization.es117.js.map +1 -1
  44. package/dist/visualization.es118.js +141 -138
  45. package/dist/visualization.es118.js.map +1 -1
  46. package/dist/visualization.es119.js +56 -145
  47. package/dist/visualization.es119.js.map +1 -1
  48. package/dist/visualization.es12.js +2 -2
  49. package/dist/visualization.es120.js +30 -30
  50. package/dist/visualization.es120.js.map +1 -1
  51. package/dist/visualization.es121.js +18 -45
  52. package/dist/visualization.es121.js.map +1 -1
  53. package/dist/visualization.es122.js +14 -76
  54. package/dist/visualization.es122.js.map +1 -1
  55. package/dist/visualization.es123.js +25 -24
  56. package/dist/visualization.es123.js.map +1 -1
  57. package/dist/visualization.es124.js +29 -82
  58. package/dist/visualization.es124.js.map +1 -1
  59. package/dist/visualization.es125.js +44 -35
  60. package/dist/visualization.es125.js.map +1 -1
  61. package/dist/visualization.es126.js +76 -13
  62. package/dist/visualization.es126.js.map +1 -1
  63. package/dist/visualization.es127.js +24 -73
  64. package/dist/visualization.es127.js.map +1 -1
  65. package/dist/visualization.es128.js +84 -32
  66. package/dist/visualization.es128.js.map +1 -1
  67. package/dist/visualization.es129.js +35 -12
  68. package/dist/visualization.es129.js.map +1 -1
  69. package/dist/visualization.es13.js +7 -7
  70. package/dist/visualization.es130.js +84 -17
  71. package/dist/visualization.es130.js.map +1 -1
  72. package/dist/visualization.es131.js +5 -64
  73. package/dist/visualization.es131.js.map +1 -1
  74. package/dist/visualization.es132.js +90 -7
  75. package/dist/visualization.es132.js.map +1 -1
  76. package/dist/visualization.es133.js +13 -5
  77. package/dist/visualization.es133.js.map +1 -1
  78. package/dist/visualization.es134.js +5 -42
  79. package/dist/visualization.es134.js.map +1 -1
  80. package/dist/visualization.es135.js +12 -28
  81. package/dist/visualization.es135.js.map +1 -1
  82. package/dist/visualization.es136.js +7 -8
  83. package/dist/visualization.es136.js.map +1 -1
  84. package/dist/visualization.es137.js +13 -6
  85. package/dist/visualization.es137.js.map +1 -1
  86. package/dist/visualization.es138.js +4 -3
  87. package/dist/visualization.es138.js.map +1 -1
  88. package/dist/visualization.es139.js +6 -15
  89. package/dist/visualization.es139.js.map +1 -1
  90. package/dist/visualization.es140.js +59 -15
  91. package/dist/visualization.es140.js.map +1 -1
  92. package/dist/visualization.es141.js +37 -31
  93. package/dist/visualization.es141.js.map +1 -1
  94. package/dist/visualization.es142.js +35 -15
  95. package/dist/visualization.es142.js.map +1 -1
  96. package/dist/visualization.es143.js +82 -9
  97. package/dist/visualization.es143.js.map +1 -1
  98. package/dist/visualization.es144.js +28 -6
  99. package/dist/visualization.es144.js.map +1 -1
  100. package/dist/visualization.es145.js +3 -6
  101. package/dist/visualization.es145.js.map +1 -1
  102. package/dist/visualization.es146.js +70 -9
  103. package/dist/visualization.es146.js.map +1 -1
  104. package/dist/visualization.es147.js +15 -3
  105. package/dist/visualization.es147.js.map +1 -1
  106. package/dist/visualization.es148.js +11 -4
  107. package/dist/visualization.es148.js.map +1 -1
  108. package/dist/visualization.es149.js +5 -9
  109. package/dist/visualization.es149.js.map +1 -1
  110. package/dist/visualization.es15.js +8 -8
  111. package/dist/visualization.es150.js +30 -4
  112. package/dist/visualization.es150.js.map +1 -1
  113. package/dist/visualization.es151.js +6 -11
  114. package/dist/visualization.es151.js.map +1 -1
  115. package/dist/visualization.es152.js +6 -26
  116. package/dist/visualization.es152.js.map +1 -1
  117. package/dist/visualization.es153.js +3 -60
  118. package/dist/visualization.es153.js.map +1 -1
  119. package/dist/visualization.es154.js +16 -38
  120. package/dist/visualization.es154.js.map +1 -1
  121. package/dist/visualization.es155.js +16 -36
  122. package/dist/visualization.es155.js.map +1 -1
  123. package/dist/visualization.es156.js +31 -82
  124. package/dist/visualization.es156.js.map +1 -1
  125. package/dist/visualization.es157.js +14 -26
  126. package/dist/visualization.es157.js.map +1 -1
  127. package/dist/visualization.es158.js +9 -6
  128. package/dist/visualization.es158.js.map +1 -1
  129. package/dist/visualization.es159.js +6 -4
  130. package/dist/visualization.es159.js.map +1 -1
  131. package/dist/visualization.es160.js +6 -3
  132. package/dist/visualization.es160.js.map +1 -1
  133. package/dist/visualization.es161.js +9 -18
  134. package/dist/visualization.es161.js.map +1 -1
  135. package/dist/visualization.es162.js +4 -27
  136. package/dist/visualization.es162.js.map +1 -1
  137. package/dist/visualization.es163.js +5 -2
  138. package/dist/visualization.es163.js.map +1 -1
  139. package/dist/visualization.es164.js +8 -1605
  140. package/dist/visualization.es164.js.map +1 -1
  141. package/dist/visualization.es165.js +4 -84
  142. package/dist/visualization.es165.js.map +1 -1
  143. package/dist/visualization.es166.js +11 -88
  144. package/dist/visualization.es166.js.map +1 -1
  145. package/dist/visualization.es167.js +25 -11
  146. package/dist/visualization.es167.js.map +1 -1
  147. package/dist/visualization.es168.js +2 -6
  148. package/dist/visualization.es168.js.map +1 -1
  149. package/dist/visualization.es169.js +1605 -14
  150. package/dist/visualization.es169.js.map +1 -1
  151. package/dist/visualization.es170.js +75 -7
  152. package/dist/visualization.es170.js.map +1 -1
  153. package/dist/visualization.es171.js +2 -14
  154. package/dist/visualization.es171.js.map +1 -1
  155. package/dist/visualization.es172.js +482 -18
  156. package/dist/visualization.es172.js.map +1 -1
  157. package/dist/visualization.es173.js +2 -4
  158. package/dist/visualization.es173.js.map +1 -1
  159. package/dist/visualization.es174.js +63 -35
  160. package/dist/visualization.es174.js.map +1 -1
  161. package/dist/visualization.es175.js +61 -8
  162. package/dist/visualization.es175.js.map +1 -1
  163. package/dist/visualization.es176.js +123 -15
  164. package/dist/visualization.es176.js.map +1 -1
  165. package/dist/visualization.es177.js +8 -11
  166. package/dist/visualization.es177.js.map +1 -1
  167. package/dist/visualization.es178.js +15 -5
  168. package/dist/visualization.es178.js.map +1 -1
  169. package/dist/visualization.es179.js +11 -12
  170. package/dist/visualization.es179.js.map +1 -1
  171. package/dist/visualization.es18.js +1 -1
  172. package/dist/visualization.es180.js +5 -3
  173. package/dist/visualization.es180.js.map +1 -1
  174. package/dist/visualization.es181.js +12 -2
  175. package/dist/visualization.es181.js.map +1 -1
  176. package/dist/visualization.es182.js +4 -11
  177. package/dist/visualization.es182.js.map +1 -1
  178. package/dist/visualization.es183.js +2 -31
  179. package/dist/visualization.es183.js.map +1 -1
  180. package/dist/visualization.es184.js +10 -42
  181. package/dist/visualization.es184.js.map +1 -1
  182. package/dist/visualization.es185.js +29 -48
  183. package/dist/visualization.es185.js.map +1 -1
  184. package/dist/visualization.es186.js +43 -3
  185. package/dist/visualization.es186.js.map +1 -1
  186. package/dist/visualization.es187.js +50 -3
  187. package/dist/visualization.es187.js.map +1 -1
  188. package/dist/visualization.es188.js +3 -6
  189. package/dist/visualization.es188.js.map +1 -1
  190. package/dist/visualization.es189.js +3 -5
  191. package/dist/visualization.es189.js.map +1 -1
  192. package/dist/visualization.es190.js +5 -10
  193. package/dist/visualization.es190.js.map +1 -1
  194. package/dist/visualization.es191.js +4 -3
  195. package/dist/visualization.es191.js.map +1 -1
  196. package/dist/visualization.es192.js +9 -16
  197. package/dist/visualization.es192.js.map +1 -1
  198. package/dist/visualization.es193.js +3 -18
  199. package/dist/visualization.es193.js.map +1 -1
  200. package/dist/visualization.es194.js +17 -36
  201. package/dist/visualization.es194.js.map +1 -1
  202. package/dist/visualization.es195.js +19 -2
  203. package/dist/visualization.es195.js.map +1 -1
  204. package/dist/visualization.es196.js +37 -2
  205. package/dist/visualization.es196.js.map +1 -1
  206. package/dist/visualization.es197.js +2 -4
  207. package/dist/visualization.es197.js.map +1 -1
  208. package/dist/visualization.es198.js +2 -15
  209. package/dist/visualization.es198.js.map +1 -1
  210. package/dist/visualization.es199.js +4 -3
  211. package/dist/visualization.es199.js.map +1 -1
  212. package/dist/visualization.es2.js +8 -8
  213. package/dist/visualization.es20.js +145 -61
  214. package/dist/visualization.es20.js.map +1 -1
  215. package/dist/visualization.es200.js +15 -7
  216. package/dist/visualization.es200.js.map +1 -1
  217. package/dist/visualization.es201.js +1 -1
  218. package/dist/visualization.es201.js.map +1 -1
  219. package/dist/visualization.es202.js +7 -7
  220. package/dist/visualization.es202.js.map +1 -1
  221. package/dist/visualization.es203.js +3 -73
  222. package/dist/visualization.es203.js.map +1 -1
  223. package/dist/visualization.es204.js +6 -22
  224. package/dist/visualization.es204.js.map +1 -1
  225. package/dist/visualization.es205.js +15 -19
  226. package/dist/visualization.es205.js.map +1 -1
  227. package/dist/visualization.es206.js +3 -40
  228. package/dist/visualization.es206.js.map +1 -1
  229. package/dist/visualization.es207.js +35 -7
  230. package/dist/visualization.es207.js.map +1 -1
  231. package/dist/visualization.es208.js +63 -12
  232. package/dist/visualization.es208.js.map +1 -1
  233. package/dist/visualization.es209.js +7 -18
  234. package/dist/visualization.es209.js.map +1 -1
  235. package/dist/visualization.es21.js +66 -10
  236. package/dist/visualization.es21.js.map +1 -1
  237. package/dist/visualization.es210.js +40 -34
  238. package/dist/visualization.es210.js.map +1 -1
  239. package/dist/visualization.es211.js +18 -23
  240. package/dist/visualization.es211.js.map +1 -1
  241. package/dist/visualization.es212.js +27 -27
  242. package/dist/visualization.es212.js.map +1 -1
  243. package/dist/visualization.es213.js +3 -71
  244. package/dist/visualization.es213.js.map +1 -1
  245. package/dist/visualization.es214.js +8 -15
  246. package/dist/visualization.es214.js.map +1 -1
  247. package/dist/visualization.es215.js +5 -10
  248. package/dist/visualization.es215.js.map +1 -1
  249. package/dist/visualization.es216.js +8 -5
  250. package/dist/visualization.es216.js.map +1 -1
  251. package/dist/visualization.es217.js +9 -9
  252. package/dist/visualization.es217.js.map +1 -1
  253. package/dist/visualization.es218.js +6 -6
  254. package/dist/visualization.es218.js.map +1 -1
  255. package/dist/visualization.es219.js +6 -7
  256. package/dist/visualization.es219.js.map +1 -1
  257. package/dist/visualization.es22.js +39 -54
  258. package/dist/visualization.es22.js.map +1 -1
  259. package/dist/visualization.es220.js +5 -9
  260. package/dist/visualization.es220.js.map +1 -1
  261. package/dist/visualization.es221.js +14 -6
  262. package/dist/visualization.es221.js.map +1 -1
  263. package/dist/visualization.es222.js +5 -6
  264. package/dist/visualization.es222.js.map +1 -1
  265. package/dist/visualization.es223.js +3 -5
  266. package/dist/visualization.es223.js.map +1 -1
  267. package/dist/visualization.es224.js +6 -14
  268. package/dist/visualization.es224.js.map +1 -1
  269. package/dist/visualization.es225.js +6 -5
  270. package/dist/visualization.es225.js.map +1 -1
  271. package/dist/visualization.es226.js +9 -3
  272. package/dist/visualization.es226.js.map +1 -1
  273. package/dist/visualization.es227.js +32 -6
  274. package/dist/visualization.es227.js.map +1 -1
  275. package/dist/visualization.es228.js +114 -6
  276. package/dist/visualization.es228.js.map +1 -1
  277. package/dist/visualization.es229.js +3 -9
  278. package/dist/visualization.es229.js.map +1 -1
  279. package/dist/visualization.es23.js +78 -41
  280. package/dist/visualization.es23.js.map +1 -1
  281. package/dist/visualization.es230.js +4 -31
  282. package/dist/visualization.es230.js.map +1 -1
  283. package/dist/visualization.es231.js +31 -112
  284. package/dist/visualization.es231.js.map +1 -1
  285. package/dist/visualization.es232.js +15 -3
  286. package/dist/visualization.es232.js.map +1 -1
  287. package/dist/visualization.es233.js +7 -5
  288. package/dist/visualization.es233.js.map +1 -1
  289. package/dist/visualization.es234.js +10 -32
  290. package/dist/visualization.es234.js.map +1 -1
  291. package/dist/visualization.es235.js +17 -15
  292. package/dist/visualization.es235.js.map +1 -1
  293. package/dist/visualization.es236.js +72 -7
  294. package/dist/visualization.es236.js.map +1 -1
  295. package/dist/visualization.es237.js +21 -10
  296. package/dist/visualization.es237.js.map +1 -1
  297. package/dist/visualization.es238.js +22 -3
  298. package/dist/visualization.es238.js.map +1 -1
  299. package/dist/visualization.es239.js +40 -74
  300. package/dist/visualization.es239.js.map +1 -1
  301. package/dist/visualization.es24.js +45 -35
  302. package/dist/visualization.es24.js.map +1 -1
  303. package/dist/visualization.es240.js +8 -2
  304. package/dist/visualization.es240.js.map +1 -1
  305. package/dist/visualization.es241.js +12 -482
  306. package/dist/visualization.es241.js.map +1 -1
  307. package/dist/visualization.es242.js +18 -2
  308. package/dist/visualization.es242.js.map +1 -1
  309. package/dist/visualization.es243.js +35 -62
  310. package/dist/visualization.es243.js.map +1 -1
  311. package/dist/visualization.es244.js +22 -58
  312. package/dist/visualization.es244.js.map +1 -1
  313. package/dist/visualization.es245.js +26 -122
  314. package/dist/visualization.es245.js.map +1 -1
  315. package/dist/visualization.es246.js +33 -114
  316. package/dist/visualization.es246.js.map +1 -1
  317. package/dist/visualization.es247.js +2 -35
  318. package/dist/visualization.es247.js.map +1 -1
  319. package/dist/visualization.es248.js +124 -2
  320. package/dist/visualization.es248.js.map +1 -1
  321. package/dist/visualization.es249.js +24 -2
  322. package/dist/visualization.es249.js.map +1 -1
  323. package/dist/visualization.es25.js +55 -7
  324. package/dist/visualization.es25.js.map +1 -1
  325. package/dist/visualization.es250.js +53 -3
  326. package/dist/visualization.es250.js.map +1 -1
  327. package/dist/visualization.es251.js +20 -3
  328. package/dist/visualization.es251.js.map +1 -1
  329. package/dist/visualization.es252.js +3 -3
  330. package/dist/visualization.es252.js.map +1 -1
  331. package/dist/visualization.es253.js +3 -3
  332. package/dist/visualization.es253.js.map +1 -1
  333. package/dist/visualization.es254.js +3 -3
  334. package/dist/visualization.es254.js.map +1 -1
  335. package/dist/visualization.es255.js +3 -3
  336. package/dist/visualization.es255.js.map +1 -1
  337. package/dist/visualization.es256.js +3 -3
  338. package/dist/visualization.es256.js.map +1 -1
  339. package/dist/visualization.es257.js +3 -7
  340. package/dist/visualization.es257.js.map +1 -1
  341. package/dist/visualization.es258.js +3 -48
  342. package/dist/visualization.es258.js.map +1 -1
  343. package/dist/visualization.es259.js +7 -3
  344. package/dist/visualization.es259.js.map +1 -1
  345. package/dist/visualization.es26.js +7 -7
  346. package/dist/visualization.es26.js.map +1 -1
  347. package/dist/visualization.es260.js +47 -5
  348. package/dist/visualization.es260.js.map +1 -1
  349. package/dist/visualization.es261.js +3 -4
  350. package/dist/visualization.es261.js.map +1 -1
  351. package/dist/visualization.es262.js +6 -3
  352. package/dist/visualization.es262.js.map +1 -1
  353. package/dist/visualization.es263.js +4 -6
  354. package/dist/visualization.es263.js.map +1 -1
  355. package/dist/visualization.es264.js +3 -4
  356. package/dist/visualization.es264.js.map +1 -1
  357. package/dist/visualization.es265.js +6 -29
  358. package/dist/visualization.es265.js.map +1 -1
  359. package/dist/visualization.es266.js +4 -20
  360. package/dist/visualization.es266.js.map +1 -1
  361. package/dist/visualization.es267.js +2 -24
  362. package/dist/visualization.es267.js.map +1 -1
  363. package/dist/visualization.es268.js +53 -53
  364. package/dist/visualization.es268.js.map +1 -1
  365. package/dist/visualization.es269.js +31 -9
  366. package/dist/visualization.es269.js.map +1 -1
  367. package/dist/visualization.es27.js +5 -70
  368. package/dist/visualization.es27.js.map +1 -1
  369. package/dist/visualization.es270.js +33 -9
  370. package/dist/visualization.es270.js.map +1 -1
  371. package/dist/visualization.es271.js +12 -6
  372. package/dist/visualization.es271.js.map +1 -1
  373. package/dist/visualization.es272.js +7 -9
  374. package/dist/visualization.es272.js.map +1 -1
  375. package/dist/visualization.es273.js +34 -6
  376. package/dist/visualization.es273.js.map +1 -1
  377. package/dist/visualization.es274.js +3 -5
  378. package/dist/visualization.es274.js.map +1 -1
  379. package/dist/visualization.es275.js +3 -14
  380. package/dist/visualization.es275.js.map +1 -1
  381. package/dist/visualization.es276.js +6 -5
  382. package/dist/visualization.es276.js.map +1 -1
  383. package/dist/visualization.es277.js +12 -6
  384. package/dist/visualization.es277.js.map +1 -1
  385. package/dist/visualization.es278.js +2 -7
  386. package/dist/visualization.es278.js.map +1 -1
  387. package/dist/visualization.es279.js +3 -6
  388. package/dist/visualization.es279.js.map +1 -1
  389. package/dist/visualization.es28.js +7 -44
  390. package/dist/visualization.es28.js.map +1 -1
  391. package/dist/visualization.es280.js +3 -3
  392. package/dist/visualization.es280.js.map +1 -1
  393. package/dist/visualization.es281.js +10 -4
  394. package/dist/visualization.es281.js.map +1 -1
  395. package/dist/visualization.es282.js +24 -8
  396. package/dist/visualization.es282.js.map +1 -1
  397. package/dist/visualization.es283.js +5 -3
  398. package/dist/visualization.es283.js.map +1 -1
  399. package/dist/visualization.es284.js +32 -11
  400. package/dist/visualization.es284.js.map +1 -1
  401. package/dist/visualization.es285.js +3 -37
  402. package/dist/visualization.es285.js.map +1 -1
  403. package/dist/visualization.es286.js +10 -259
  404. package/dist/visualization.es286.js.map +1 -1
  405. package/dist/visualization.es287.js +35 -58
  406. package/dist/visualization.es287.js.map +1 -1
  407. package/dist/visualization.es288.js +260 -5
  408. package/dist/visualization.es288.js.map +1 -1
  409. package/dist/visualization.es289.js +57 -5
  410. package/dist/visualization.es289.js.map +1 -1
  411. package/dist/visualization.es29.js +47 -11
  412. package/dist/visualization.es29.js.map +1 -1
  413. package/dist/visualization.es290.js +5 -140
  414. package/dist/visualization.es290.js.map +1 -1
  415. package/dist/visualization.es291.js +21 -5
  416. package/dist/visualization.es291.js.map +1 -1
  417. package/dist/visualization.es292.js +37 -21
  418. package/dist/visualization.es292.js.map +1 -1
  419. package/dist/visualization.es293.js +27 -30
  420. package/dist/visualization.es293.js.map +1 -1
  421. package/dist/visualization.es294.js +14 -34
  422. package/dist/visualization.es294.js.map +1 -1
  423. package/dist/visualization.es295.js +15 -11
  424. package/dist/visualization.es295.js.map +1 -1
  425. package/dist/visualization.es296.js +6 -16
  426. package/dist/visualization.es296.js.map +1 -1
  427. package/dist/visualization.es297.js +7 -8
  428. package/dist/visualization.es297.js.map +1 -1
  429. package/dist/visualization.es298.js +138 -107
  430. package/dist/visualization.es298.js.map +1 -1
  431. package/dist/visualization.es299.js +5 -12
  432. package/dist/visualization.es299.js.map +1 -1
  433. package/dist/visualization.es3.js +12 -12
  434. package/dist/visualization.es30.js +32 -53
  435. package/dist/visualization.es30.js.map +1 -1
  436. package/dist/visualization.es300.js +88 -120
  437. package/dist/visualization.es300.js.map +1 -1
  438. package/dist/visualization.es301.js +12 -5
  439. package/dist/visualization.es301.js.map +1 -1
  440. package/dist/visualization.es302.js +131 -61
  441. package/dist/visualization.es302.js.map +1 -1
  442. package/dist/visualization.es303.js +5 -35
  443. package/dist/visualization.es303.js.map +1 -1
  444. package/dist/visualization.es304.js +70 -19
  445. package/dist/visualization.es304.js.map +1 -1
  446. package/dist/visualization.es305.js +35 -3
  447. package/dist/visualization.es305.js.map +1 -1
  448. package/dist/visualization.es306.js +20 -24
  449. package/dist/visualization.es306.js.map +1 -1
  450. package/dist/visualization.es307.js +3 -30
  451. package/dist/visualization.es307.js.map +1 -1
  452. package/dist/visualization.es308.js +25 -2
  453. package/dist/visualization.es308.js.map +1 -1
  454. package/dist/visualization.es309.js +31 -2
  455. package/dist/visualization.es309.js.map +1 -1
  456. package/dist/visualization.es31.js +33 -146
  457. package/dist/visualization.es31.js.map +1 -1
  458. package/dist/visualization.es310.js +2 -6
  459. package/dist/visualization.es310.js.map +1 -1
  460. package/dist/visualization.es311.js +2 -15
  461. package/dist/visualization.es311.js.map +1 -1
  462. package/dist/visualization.es312.js +5 -34
  463. package/dist/visualization.es312.js.map +1 -1
  464. package/dist/visualization.es313.js +13 -26
  465. package/dist/visualization.es313.js.map +1 -1
  466. package/dist/visualization.es314.js +34 -10
  467. package/dist/visualization.es314.js.map +1 -1
  468. package/dist/visualization.es315.js +27 -6
  469. package/dist/visualization.es315.js.map +1 -1
  470. package/dist/visualization.es316.js +10 -13
  471. package/dist/visualization.es316.js.map +1 -1
  472. package/dist/visualization.es317.js +7 -12
  473. package/dist/visualization.es317.js.map +1 -1
  474. package/dist/visualization.es318.js +14 -2
  475. package/dist/visualization.es318.js.map +1 -1
  476. package/dist/visualization.es319.js +12 -3
  477. package/dist/visualization.es319.js.map +1 -1
  478. package/dist/visualization.es32.js +21 -111
  479. package/dist/visualization.es32.js.map +1 -1
  480. package/dist/visualization.es320.js +2 -2
  481. package/dist/visualization.es320.js.map +1 -1
  482. package/dist/visualization.es321.js +3 -104
  483. package/dist/visualization.es321.js.map +1 -1
  484. package/dist/visualization.es322.js +2 -5
  485. package/dist/visualization.es322.js.map +1 -1
  486. package/dist/visualization.es323.js +104 -3
  487. package/dist/visualization.es323.js.map +1 -1
  488. package/dist/visualization.es324.js +4 -18
  489. package/dist/visualization.es324.js.map +1 -1
  490. package/dist/visualization.es325.js +3 -6
  491. package/dist/visualization.es325.js.map +1 -1
  492. package/dist/visualization.es326.js +18 -14
  493. package/dist/visualization.es326.js.map +1 -1
  494. package/dist/visualization.es327.js +5 -4
  495. package/dist/visualization.es327.js.map +1 -1
  496. package/dist/visualization.es328.js +13 -27
  497. package/dist/visualization.es328.js.map +1 -1
  498. package/dist/visualization.es329.js +4 -6
  499. package/dist/visualization.es329.js.map +1 -1
  500. package/dist/visualization.es33.js +12 -7
  501. package/dist/visualization.es33.js.map +1 -1
  502. package/dist/visualization.es330.js +29 -2
  503. package/dist/visualization.es330.js.map +1 -1
  504. package/dist/visualization.es331.js +7 -20
  505. package/dist/visualization.es331.js.map +1 -1
  506. package/dist/visualization.es332.js +2 -21
  507. package/dist/visualization.es332.js.map +1 -1
  508. package/dist/visualization.es333.js +20 -6
  509. package/dist/visualization.es333.js.map +1 -1
  510. package/dist/visualization.es334.js +21 -8
  511. package/dist/visualization.es334.js.map +1 -1
  512. package/dist/visualization.es335.js +5 -18
  513. package/dist/visualization.es335.js.map +1 -1
  514. package/dist/visualization.es336.js +7 -43
  515. package/dist/visualization.es336.js.map +1 -1
  516. package/dist/visualization.es337.js +19 -7
  517. package/dist/visualization.es337.js.map +1 -1
  518. package/dist/visualization.es338.js +43 -19
  519. package/dist/visualization.es338.js.map +1 -1
  520. package/dist/visualization.es339.js +7 -54
  521. package/dist/visualization.es339.js.map +1 -1
  522. package/dist/visualization.es34.js +57 -20
  523. package/dist/visualization.es34.js.map +1 -1
  524. package/dist/visualization.es340.js +19 -26
  525. package/dist/visualization.es340.js.map +1 -1
  526. package/dist/visualization.es341.js +54 -11
  527. package/dist/visualization.es341.js.map +1 -1
  528. package/dist/visualization.es342.js +25 -17
  529. package/dist/visualization.es342.js.map +1 -1
  530. package/dist/visualization.es343.js +11 -12
  531. package/dist/visualization.es343.js.map +1 -1
  532. package/dist/visualization.es344.js +18 -4
  533. package/dist/visualization.es344.js.map +1 -1
  534. package/dist/visualization.es345.js +12 -4
  535. package/dist/visualization.es345.js.map +1 -1
  536. package/dist/visualization.es346.js +4 -3
  537. package/dist/visualization.es346.js.map +1 -1
  538. package/dist/visualization.es347.js +4 -176
  539. package/dist/visualization.es347.js.map +1 -1
  540. package/dist/visualization.es348.js +3 -39
  541. package/dist/visualization.es348.js.map +1 -1
  542. package/dist/visualization.es349.js +175 -5
  543. package/dist/visualization.es349.js.map +1 -1
  544. package/dist/visualization.es35.js +53 -32
  545. package/dist/visualization.es35.js.map +1 -1
  546. package/dist/visualization.es350.js +39 -3
  547. package/dist/visualization.es350.js.map +1 -1
  548. package/dist/visualization.es351.js +6 -2
  549. package/dist/visualization.es351.js.map +1 -1
  550. package/dist/visualization.es352.js +4 -30
  551. package/dist/visualization.es352.js.map +1 -1
  552. package/dist/visualization.es353.js +2 -8
  553. package/dist/visualization.es353.js.map +1 -1
  554. package/dist/visualization.es354.js +30 -11
  555. package/dist/visualization.es354.js.map +1 -1
  556. package/dist/visualization.es355.js +8 -4
  557. package/dist/visualization.es355.js.map +1 -1
  558. package/dist/visualization.es356.js +10 -65
  559. package/dist/visualization.es356.js.map +1 -1
  560. package/dist/visualization.es357.js +4 -7
  561. package/dist/visualization.es357.js.map +1 -1
  562. package/dist/visualization.es358.js +65 -4
  563. package/dist/visualization.es358.js.map +1 -1
  564. package/dist/visualization.es359.js +7 -14
  565. package/dist/visualization.es359.js.map +1 -1
  566. package/dist/visualization.es36.js +110 -51
  567. package/dist/visualization.es36.js.map +1 -1
  568. package/dist/visualization.es360.js +4 -34
  569. package/dist/visualization.es360.js.map +1 -1
  570. package/dist/visualization.es361.js +13 -4
  571. package/dist/visualization.es361.js.map +1 -1
  572. package/dist/visualization.es362.js +34 -9
  573. package/dist/visualization.es362.js.map +1 -1
  574. package/dist/visualization.es363.js +5 -2
  575. package/dist/visualization.es363.js.map +1 -1
  576. package/dist/visualization.es364.js +10 -5
  577. package/dist/visualization.es364.js.map +1 -1
  578. package/dist/visualization.es365.js +2 -2
  579. package/dist/visualization.es365.js.map +1 -1
  580. package/dist/visualization.es366.js +5 -10
  581. package/dist/visualization.es366.js.map +1 -1
  582. package/dist/visualization.es367.js +2 -10
  583. package/dist/visualization.es367.js.map +1 -1
  584. package/dist/visualization.es368.js +10 -13
  585. package/dist/visualization.es368.js.map +1 -1
  586. package/dist/visualization.es369.js +10 -2
  587. package/dist/visualization.es369.js.map +1 -1
  588. package/dist/visualization.es37.js +7 -54
  589. package/dist/visualization.es37.js.map +1 -1
  590. package/dist/visualization.es370.js +13 -10
  591. package/dist/visualization.es370.js.map +1 -1
  592. package/dist/visualization.es371.js +2 -8
  593. package/dist/visualization.es371.js.map +1 -1
  594. package/dist/visualization.es372.js +10 -6
  595. package/dist/visualization.es372.js.map +1 -1
  596. package/dist/visualization.es373.js +7 -24
  597. package/dist/visualization.es373.js.map +1 -1
  598. package/dist/visualization.es374.js +6 -19
  599. package/dist/visualization.es374.js.map +1 -1
  600. package/dist/visualization.es375.js +20 -36
  601. package/dist/visualization.es375.js.map +1 -1
  602. package/dist/visualization.es376.js +19 -3
  603. package/dist/visualization.es376.js.map +1 -1
  604. package/dist/visualization.es377.js +40 -8
  605. package/dist/visualization.es377.js.map +1 -1
  606. package/dist/visualization.es378.js +3 -9
  607. package/dist/visualization.es378.js.map +1 -1
  608. package/dist/visualization.es379.js +8 -35
  609. package/dist/visualization.es379.js.map +1 -1
  610. package/dist/visualization.es38.js +7 -42
  611. package/dist/visualization.es38.js.map +1 -1
  612. package/dist/visualization.es380.js +8 -9
  613. package/dist/visualization.es380.js.map +1 -1
  614. package/dist/visualization.es381.js +32 -28
  615. package/dist/visualization.es381.js.map +1 -1
  616. package/dist/visualization.es382.js +9 -4
  617. package/dist/visualization.es382.js.map +1 -1
  618. package/dist/visualization.es383.js +32 -2
  619. package/dist/visualization.es383.js.map +1 -1
  620. package/dist/visualization.es384.js +4 -15
  621. package/dist/visualization.es384.js.map +1 -1
  622. package/dist/visualization.es385.js +2 -25
  623. package/dist/visualization.es385.js.map +1 -1
  624. package/dist/visualization.es386.js +16 -2
  625. package/dist/visualization.es386.js.map +1 -1
  626. package/dist/visualization.es387.js +22 -60
  627. package/dist/visualization.es387.js.map +1 -1
  628. package/dist/visualization.es388.js +2 -2
  629. package/dist/visualization.es388.js.map +1 -1
  630. package/dist/visualization.es389.js +63 -2
  631. package/dist/visualization.es389.js.map +1 -1
  632. package/dist/visualization.es39.js +33 -5
  633. package/dist/visualization.es39.js.map +1 -1
  634. package/dist/visualization.es390.js +2 -6
  635. package/dist/visualization.es390.js.map +1 -1
  636. package/dist/visualization.es391.js +2 -37
  637. package/dist/visualization.es391.js.map +1 -1
  638. package/dist/visualization.es392.js +5 -20
  639. package/dist/visualization.es392.js.map +1 -1
  640. package/dist/visualization.es393.js +36 -3
  641. package/dist/visualization.es393.js.map +1 -1
  642. package/dist/visualization.es394.js +20 -4
  643. package/dist/visualization.es394.js.map +1 -1
  644. package/dist/visualization.es395.js +3 -4
  645. package/dist/visualization.es395.js.map +1 -1
  646. package/dist/visualization.es396.js +4 -48
  647. package/dist/visualization.es396.js.map +1 -1
  648. package/dist/visualization.es397.js +4 -26
  649. package/dist/visualization.es397.js.map +1 -1
  650. package/dist/visualization.es398.js +46 -14
  651. package/dist/visualization.es398.js.map +1 -1
  652. package/dist/visualization.es399.js +26 -9
  653. package/dist/visualization.es399.js.map +1 -1
  654. package/dist/visualization.es4.js +6 -6
  655. package/dist/visualization.es40.js +32 -5
  656. package/dist/visualization.es40.js.map +1 -1
  657. package/dist/visualization.es400.js +15 -18
  658. package/dist/visualization.es400.js.map +1 -1
  659. package/dist/visualization.es401.js +9 -13
  660. package/dist/visualization.es401.js.map +1 -1
  661. package/dist/visualization.es402.js +19 -3
  662. package/dist/visualization.es402.js.map +1 -1
  663. package/dist/visualization.es403.js +13 -12
  664. package/dist/visualization.es403.js.map +1 -1
  665. package/dist/visualization.es404.js +3 -48
  666. package/dist/visualization.es404.js.map +1 -1
  667. package/dist/visualization.es405.js +13 -6
  668. package/dist/visualization.es405.js.map +1 -1
  669. package/dist/visualization.es406.js +48 -12
  670. package/dist/visualization.es406.js.map +1 -1
  671. package/dist/visualization.es407.js +6 -2
  672. package/dist/visualization.es407.js.map +1 -1
  673. package/dist/visualization.es408.js +12 -6
  674. package/dist/visualization.es408.js.map +1 -1
  675. package/dist/visualization.es409.js +2 -210
  676. package/dist/visualization.es409.js.map +1 -1
  677. package/dist/visualization.es41.js +169 -18
  678. package/dist/visualization.es41.js.map +1 -1
  679. package/dist/visualization.es410.js +6 -26
  680. package/dist/visualization.es410.js.map +1 -1
  681. package/dist/visualization.es411.js +209 -3
  682. package/dist/visualization.es411.js.map +1 -1
  683. package/dist/visualization.es412.js +27 -16
  684. package/dist/visualization.es412.js.map +1 -1
  685. package/dist/visualization.es413.js +4 -15
  686. package/dist/visualization.es413.js.map +1 -1
  687. package/dist/visualization.es414.js +15 -14
  688. package/dist/visualization.es414.js.map +1 -1
  689. package/dist/visualization.es415.js +15 -2
  690. package/dist/visualization.es415.js.map +1 -1
  691. package/dist/visualization.es416.js +15 -2
  692. package/dist/visualization.es416.js.map +1 -1
  693. package/dist/visualization.es417.js +2 -2
  694. package/dist/visualization.es417.js.map +1 -1
  695. package/dist/visualization.es418.js +2 -5
  696. package/dist/visualization.es418.js.map +1 -1
  697. package/dist/visualization.es419.js +2 -2
  698. package/dist/visualization.es419.js.map +1 -1
  699. package/dist/visualization.es42.js +64 -4
  700. package/dist/visualization.es42.js.map +1 -1
  701. package/dist/visualization.es420.js +5 -25
  702. package/dist/visualization.es420.js.map +1 -1
  703. package/dist/visualization.es421.js +2 -22
  704. package/dist/visualization.es421.js.map +1 -1
  705. package/dist/visualization.es422.js +25 -9
  706. package/dist/visualization.es422.js.map +1 -1
  707. package/dist/visualization.es423.js +21 -67
  708. package/dist/visualization.es423.js.map +1 -1
  709. package/dist/visualization.es424.js +8 -5
  710. package/dist/visualization.es424.js.map +1 -1
  711. package/dist/visualization.es425.js +67 -28
  712. package/dist/visualization.es425.js.map +1 -1
  713. package/dist/visualization.es426.js +6 -10
  714. package/dist/visualization.es426.js.map +1 -1
  715. package/dist/visualization.es427.js +29 -6
  716. package/dist/visualization.es427.js.map +1 -1
  717. package/dist/visualization.es428.js +10 -2
  718. package/dist/visualization.es428.js.map +1 -1
  719. package/dist/visualization.es429.js +6 -5
  720. package/dist/visualization.es429.js.map +1 -1
  721. package/dist/visualization.es43.js +175 -27
  722. package/dist/visualization.es43.js.map +1 -1
  723. package/dist/visualization.es430.js +2 -26
  724. package/dist/visualization.es430.js.map +1 -1
  725. package/dist/visualization.es431.js +4 -10
  726. package/dist/visualization.es431.js.map +1 -1
  727. package/dist/visualization.es432.js +23 -24
  728. package/dist/visualization.es432.js.map +1 -1
  729. package/dist/visualization.es433.js +10 -9
  730. package/dist/visualization.es433.js.map +1 -1
  731. package/dist/visualization.es434.js +26 -10
  732. package/dist/visualization.es434.js.map +1 -1
  733. package/dist/visualization.es435.js +10 -2
  734. package/dist/visualization.es435.js.map +1 -1
  735. package/dist/visualization.es436.js +11 -16
  736. package/dist/visualization.es436.js.map +1 -1
  737. package/dist/visualization.es437.js +2 -30
  738. package/dist/visualization.es437.js.map +1 -1
  739. package/dist/visualization.es438.js +16 -26
  740. package/dist/visualization.es438.js.map +1 -1
  741. package/dist/visualization.es439.js +30 -2
  742. package/dist/visualization.es439.js.map +1 -1
  743. package/dist/visualization.es44.js +74 -31
  744. package/dist/visualization.es44.js.map +1 -1
  745. package/dist/visualization.es440.js +26 -9
  746. package/dist/visualization.es440.js.map +1 -1
  747. package/dist/visualization.es441.js +2 -13
  748. package/dist/visualization.es441.js.map +1 -1
  749. package/dist/visualization.es442.js +8 -22
  750. package/dist/visualization.es442.js.map +1 -1
  751. package/dist/visualization.es443.js +12 -12
  752. package/dist/visualization.es443.js.map +1 -1
  753. package/dist/visualization.es444.js +23 -3
  754. package/dist/visualization.es444.js.map +1 -1
  755. package/dist/visualization.es445.js +13 -2
  756. package/dist/visualization.es445.js.map +1 -1
  757. package/dist/visualization.es446.js +3 -18
  758. package/dist/visualization.es446.js.map +1 -1
  759. package/dist/visualization.es447.js +2 -4
  760. package/dist/visualization.es447.js.map +1 -1
  761. package/dist/visualization.es448.js +17 -11
  762. package/dist/visualization.es448.js.map +1 -1
  763. package/dist/visualization.es449.js +4 -11
  764. package/dist/visualization.es449.js.map +1 -1
  765. package/dist/visualization.es45.js +113 -5
  766. package/dist/visualization.es45.js.map +1 -1
  767. package/dist/visualization.es450.js +11 -6
  768. package/dist/visualization.es450.js.map +1 -1
  769. package/dist/visualization.es451.js +11 -19
  770. package/dist/visualization.es451.js.map +1 -1
  771. package/dist/visualization.es452.js +6 -22
  772. package/dist/visualization.es452.js.map +1 -1
  773. package/dist/visualization.es453.js +19 -12
  774. package/dist/visualization.es453.js.map +1 -1
  775. package/dist/visualization.es454.js +22 -50
  776. package/dist/visualization.es454.js.map +1 -1
  777. package/dist/visualization.es455.js +9 -15
  778. package/dist/visualization.es455.js.map +1 -1
  779. package/dist/visualization.es456.js +50 -35
  780. package/dist/visualization.es456.js.map +1 -1
  781. package/dist/visualization.es457.js +14 -19
  782. package/dist/visualization.es457.js.map +1 -1
  783. package/dist/visualization.es458.js +28 -24
  784. package/dist/visualization.es458.js.map +1 -1
  785. package/dist/visualization.es459.js +22 -3
  786. package/dist/visualization.es459.js.map +1 -1
  787. package/dist/visualization.es46.js +18701 -31
  788. package/dist/visualization.es46.js.map +1 -1
  789. package/dist/visualization.es460.js +32 -19
  790. package/dist/visualization.es460.js.map +1 -1
  791. package/dist/visualization.es461.js +4 -14
  792. package/dist/visualization.es461.js.map +1 -1
  793. package/dist/visualization.es462.js +18 -10
  794. package/dist/visualization.es462.js.map +1 -1
  795. package/dist/visualization.es463.js +13 -29
  796. package/dist/visualization.es463.js.map +1 -1
  797. package/dist/visualization.es464.js +11 -6
  798. package/dist/visualization.es464.js.map +1 -1
  799. package/dist/visualization.es465.js +29 -7
  800. package/dist/visualization.es465.js.map +1 -1
  801. package/dist/visualization.es466.js +6 -2
  802. package/dist/visualization.es466.js.map +1 -1
  803. package/dist/visualization.es467.js +7 -16
  804. package/dist/visualization.es467.js.map +1 -1
  805. package/dist/visualization.es468.js +2 -9
  806. package/dist/visualization.es468.js.map +1 -1
  807. package/dist/visualization.es469.js +16 -9
  808. package/dist/visualization.es469.js.map +1 -1
  809. package/dist/visualization.es47.js +5 -169
  810. package/dist/visualization.es47.js.map +1 -1
  811. package/dist/visualization.es470.js +7 -614
  812. package/dist/visualization.es470.js.map +1 -1
  813. package/dist/visualization.es471.js +9 -50
  814. package/dist/visualization.es471.js.map +1 -1
  815. package/dist/visualization.es472.js +616 -13
  816. package/dist/visualization.es472.js.map +1 -1
  817. package/dist/visualization.es473.js +51 -11
  818. package/dist/visualization.es473.js.map +1 -1
  819. package/dist/visualization.es474.js +12 -22
  820. package/dist/visualization.es474.js.map +1 -1
  821. package/dist/visualization.es475.js +11 -35
  822. package/dist/visualization.es475.js.map +1 -1
  823. package/dist/visualization.es476.js +23 -13
  824. package/dist/visualization.es476.js.map +1 -1
  825. package/dist/visualization.es477.js +33 -17
  826. package/dist/visualization.es477.js.map +1 -1
  827. package/dist/visualization.es478.js +12 -25
  828. package/dist/visualization.es478.js.map +1 -1
  829. package/dist/visualization.es479.js +15 -22
  830. package/dist/visualization.es479.js.map +1 -1
  831. package/dist/visualization.es48.js +5 -65
  832. package/dist/visualization.es48.js.map +1 -1
  833. package/dist/visualization.es480.js +29 -31
  834. package/dist/visualization.es480.js.map +1 -1
  835. package/dist/visualization.es481.js +53 -15
  836. package/dist/visualization.es481.js.map +1 -1
  837. package/dist/visualization.es482.js +14 -36
  838. package/dist/visualization.es482.js.map +1 -1
  839. package/dist/visualization.es483.js +20 -52
  840. package/dist/visualization.es483.js.map +1 -1
  841. package/dist/visualization.es484.js +26 -3
  842. package/dist/visualization.es484.js.map +1 -1
  843. package/dist/visualization.es485.js +43 -3
  844. package/dist/visualization.es485.js.map +1 -1
  845. package/dist/visualization.es486.js +4 -7
  846. package/dist/visualization.es486.js.map +1 -1
  847. package/dist/visualization.es487.js +3 -16
  848. package/dist/visualization.es487.js.map +1 -1
  849. package/dist/visualization.es488.js +7 -2
  850. package/dist/visualization.es488.js.map +1 -1
  851. package/dist/visualization.es489.js +16 -2
  852. package/dist/visualization.es489.js.map +1 -1
  853. package/dist/visualization.es49.js +59 -174
  854. package/dist/visualization.es49.js.map +1 -1
  855. package/dist/visualization.es490.js +2 -2
  856. package/dist/visualization.es490.js.map +1 -1
  857. package/dist/visualization.es491.js +2 -54
  858. package/dist/visualization.es491.js.map +1 -1
  859. package/dist/visualization.es492.js +2 -32
  860. package/dist/visualization.es492.js.map +1 -1
  861. package/dist/visualization.es493.js +9 -33
  862. package/dist/visualization.es493.js.map +1 -1
  863. package/dist/visualization.es494.js +9 -12
  864. package/dist/visualization.es494.js.map +1 -1
  865. package/dist/visualization.es495.js +7 -7
  866. package/dist/visualization.es495.js.map +1 -1
  867. package/dist/visualization.es496.js +8 -34
  868. package/dist/visualization.es496.js.map +1 -1
  869. package/dist/visualization.es497.js +6 -3
  870. package/dist/visualization.es497.js.map +1 -1
  871. package/dist/visualization.es498.js +5 -3
  872. package/dist/visualization.es498.js.map +1 -1
  873. package/dist/visualization.es499.js +14 -6
  874. package/dist/visualization.es499.js.map +1 -1
  875. package/dist/visualization.es5.js +6 -6
  876. package/dist/visualization.es50.js +810 -73
  877. package/dist/visualization.es50.js.map +1 -1
  878. package/dist/visualization.es500.js +5 -12
  879. package/dist/visualization.es500.js.map +1 -1
  880. package/dist/visualization.es501.js +7 -2
  881. package/dist/visualization.es501.js.map +1 -1
  882. package/dist/visualization.es502.js +5 -2
  883. package/dist/visualization.es502.js.map +1 -1
  884. package/dist/visualization.es503.js +6 -3
  885. package/dist/visualization.es503.js.map +1 -1
  886. package/dist/visualization.es504.js +3 -10
  887. package/dist/visualization.es504.js.map +1 -1
  888. package/dist/visualization.es505.js +4 -25
  889. package/dist/visualization.es505.js.map +1 -1
  890. package/dist/visualization.es506.js +9 -4
  891. package/dist/visualization.es506.js.map +1 -1
  892. package/dist/visualization.es507.js +29 -32
  893. package/dist/visualization.es507.js.map +1 -1
  894. package/dist/visualization.es508.js +54 -230
  895. package/dist/visualization.es508.js.map +1 -1
  896. package/dist/visualization.es509.js +203 -958
  897. package/dist/visualization.es509.js.map +1 -1
  898. package/dist/visualization.es510.js +978 -47
  899. package/dist/visualization.es510.js.map +1 -1
  900. package/dist/visualization.es513.js +3 -3
  901. package/dist/visualization.es515.js +1 -1
  902. package/dist/visualization.es516.js +3 -3
  903. package/dist/visualization.es52.js +130 -33
  904. package/dist/visualization.es52.js.map +1 -1
  905. package/dist/visualization.es520.js +1 -1
  906. package/dist/visualization.es521.js +1 -1
  907. package/dist/visualization.es522.js +1 -1
  908. package/dist/visualization.es523.js +6 -6
  909. package/dist/visualization.es524.js +1 -1
  910. package/dist/visualization.es525.js +6 -6
  911. package/dist/visualization.es526.js +8 -8
  912. package/dist/visualization.es527.js +6 -6
  913. package/dist/visualization.es528.js +1 -1
  914. package/dist/visualization.es529.js +32 -32
  915. package/dist/visualization.es529.js.map +1 -1
  916. package/dist/visualization.es53.js +43 -7
  917. package/dist/visualization.es53.js.map +1 -1
  918. package/dist/visualization.es530.js +30 -25
  919. package/dist/visualization.es530.js.map +1 -1
  920. package/dist/visualization.es531.js +33 -45
  921. package/dist/visualization.es531.js.map +1 -1
  922. package/dist/visualization.es532.js +24 -8
  923. package/dist/visualization.es532.js.map +1 -1
  924. package/dist/visualization.es533.js +46 -15
  925. package/dist/visualization.es533.js.map +1 -1
  926. package/dist/visualization.es534.js +9 -16
  927. package/dist/visualization.es534.js.map +1 -1
  928. package/dist/visualization.es535.js +14 -15
  929. package/dist/visualization.es535.js.map +1 -1
  930. package/dist/visualization.es536.js +15 -23
  931. package/dist/visualization.es536.js.map +1 -1
  932. package/dist/visualization.es537.js +16 -6
  933. package/dist/visualization.es537.js.map +1 -1
  934. package/dist/visualization.es538.js +24 -34
  935. package/dist/visualization.es538.js.map +1 -1
  936. package/dist/visualization.es539.js +5 -29
  937. package/dist/visualization.es539.js.map +1 -1
  938. package/dist/visualization.es54.js +35 -7
  939. package/dist/visualization.es54.js.map +1 -1
  940. package/dist/visualization.es540.js +28 -11
  941. package/dist/visualization.es540.js.map +1 -1
  942. package/dist/visualization.es541.js +10 -13
  943. package/dist/visualization.es541.js.map +1 -1
  944. package/dist/visualization.es542.js +14 -8
  945. package/dist/visualization.es542.js.map +1 -1
  946. package/dist/visualization.es543.js +6 -6
  947. package/dist/visualization.es543.js.map +1 -1
  948. package/dist/visualization.es544.js +8 -20
  949. package/dist/visualization.es544.js.map +1 -1
  950. package/dist/visualization.es545.js +18 -61
  951. package/dist/visualization.es545.js.map +1 -1
  952. package/dist/visualization.es546.js +63 -28
  953. package/dist/visualization.es546.js.map +1 -1
  954. package/dist/visualization.es547.js +1 -1
  955. package/dist/visualization.es55.js +67 -32
  956. package/dist/visualization.es55.js.map +1 -1
  957. package/dist/visualization.es551.js +19 -19
  958. package/dist/visualization.es553.js +7 -7
  959. package/dist/visualization.es554.js +9 -3
  960. package/dist/visualization.es554.js.map +1 -1
  961. package/dist/visualization.es555.js +51 -3
  962. package/dist/visualization.es555.js.map +1 -1
  963. package/dist/visualization.es556.js +7 -15
  964. package/dist/visualization.es556.js.map +1 -1
  965. package/dist/visualization.es557.js +4 -3
  966. package/dist/visualization.es557.js.map +1 -1
  967. package/dist/visualization.es558.js +3 -9
  968. package/dist/visualization.es558.js.map +1 -1
  969. package/dist/visualization.es559.js +3 -4
  970. package/dist/visualization.es559.js.map +1 -1
  971. package/dist/visualization.es56.js +42 -33
  972. package/dist/visualization.es56.js.map +1 -1
  973. package/dist/visualization.es560.js +4 -6
  974. package/dist/visualization.es560.js.map +1 -1
  975. package/dist/visualization.es561.js +3 -9
  976. package/dist/visualization.es561.js.map +1 -1
  977. package/dist/visualization.es562.js +11 -7
  978. package/dist/visualization.es562.js.map +1 -1
  979. package/dist/visualization.es563.js +9 -4
  980. package/dist/visualization.es563.js.map +1 -1
  981. package/dist/visualization.es564.js +30 -3
  982. package/dist/visualization.es564.js.map +1 -1
  983. package/dist/visualization.es565.js +25 -4
  984. package/dist/visualization.es565.js.map +1 -1
  985. package/dist/visualization.es566.js +3 -11
  986. package/dist/visualization.es566.js.map +1 -1
  987. package/dist/visualization.es567.js +3 -9
  988. package/dist/visualization.es567.js.map +1 -1
  989. package/dist/visualization.es568.js +9 -30
  990. package/dist/visualization.es568.js.map +1 -1
  991. package/dist/visualization.es569.js +8 -24
  992. package/dist/visualization.es569.js.map +1 -1
  993. package/dist/visualization.es57.js +12 -29
  994. package/dist/visualization.es57.js.map +1 -1
  995. package/dist/visualization.es570.js +14 -50
  996. package/dist/visualization.es570.js.map +1 -1
  997. package/dist/visualization.es571.js +4 -3
  998. package/dist/visualization.es571.js.map +1 -1
  999. package/dist/visualization.es572.js +5 -8
  1000. package/dist/visualization.es572.js.map +1 -1
  1001. package/dist/visualization.es573.js +3 -3
  1002. package/dist/visualization.es574.js +3 -3
  1003. package/dist/visualization.es575.js +2 -2
  1004. package/dist/visualization.es576.js +1 -1
  1005. package/dist/visualization.es577.js +1 -1
  1006. package/dist/visualization.es578.js +2 -2
  1007. package/dist/visualization.es579.js +1 -1
  1008. package/dist/visualization.es58.js +34 -64
  1009. package/dist/visualization.es58.js.map +1 -1
  1010. package/dist/visualization.es581.js +7 -7
  1011. package/dist/visualization.es583.js +32 -9
  1012. package/dist/visualization.es583.js.map +1 -1
  1013. package/dist/visualization.es584.js +7 -9
  1014. package/dist/visualization.es584.js.map +1 -1
  1015. package/dist/visualization.es585.js +7 -18
  1016. package/dist/visualization.es585.js.map +1 -1
  1017. package/dist/visualization.es586.js +13 -7
  1018. package/dist/visualization.es586.js.map +1 -1
  1019. package/dist/visualization.es587.js +72 -7
  1020. package/dist/visualization.es587.js.map +1 -1
  1021. package/dist/visualization.es588.js +29 -32
  1022. package/dist/visualization.es588.js.map +1 -1
  1023. package/dist/visualization.es589.js +5 -13
  1024. package/dist/visualization.es589.js.map +1 -1
  1025. package/dist/visualization.es59.js +10 -61
  1026. package/dist/visualization.es59.js.map +1 -1
  1027. package/dist/visualization.es590.js +26 -73
  1028. package/dist/visualization.es590.js.map +1 -1
  1029. package/dist/visualization.es591.js +11 -29
  1030. package/dist/visualization.es591.js.map +1 -1
  1031. package/dist/visualization.es592.js +4 -5
  1032. package/dist/visualization.es592.js.map +1 -1
  1033. package/dist/visualization.es593.js +4 -25
  1034. package/dist/visualization.es593.js.map +1 -1
  1035. package/dist/visualization.es594.js +4 -11
  1036. package/dist/visualization.es594.js.map +1 -1
  1037. package/dist/visualization.es595.js +13 -5
  1038. package/dist/visualization.es595.js.map +1 -1
  1039. package/dist/visualization.es596.js +17 -4
  1040. package/dist/visualization.es596.js.map +1 -1
  1041. package/dist/visualization.es597.js +13 -4
  1042. package/dist/visualization.es597.js.map +1 -1
  1043. package/dist/visualization.es598.js +13 -12
  1044. package/dist/visualization.es598.js.map +1 -1
  1045. package/dist/visualization.es599.js +8 -17
  1046. package/dist/visualization.es599.js.map +1 -1
  1047. package/dist/visualization.es6.js +15 -15
  1048. package/dist/visualization.es60.js +54 -3
  1049. package/dist/visualization.es60.js.map +1 -1
  1050. package/dist/visualization.es600.js +11 -12
  1051. package/dist/visualization.es600.js.map +1 -1
  1052. package/dist/visualization.es601.js +24 -13
  1053. package/dist/visualization.es601.js.map +1 -1
  1054. package/dist/visualization.es602.js +19 -8
  1055. package/dist/visualization.es602.js.map +1 -1
  1056. package/dist/visualization.es603.js +7 -13
  1057. package/dist/visualization.es603.js.map +1 -1
  1058. package/dist/visualization.es604.js +6 -25
  1059. package/dist/visualization.es604.js.map +1 -1
  1060. package/dist/visualization.es605.js +3 -19
  1061. package/dist/visualization.es605.js.map +1 -1
  1062. package/dist/visualization.es606.js +65 -7
  1063. package/dist/visualization.es606.js.map +1 -1
  1064. package/dist/visualization.es607.js +33 -6
  1065. package/dist/visualization.es607.js.map +1 -1
  1066. package/dist/visualization.es608.js +4 -3
  1067. package/dist/visualization.es608.js.map +1 -1
  1068. package/dist/visualization.es609.js +6 -62
  1069. package/dist/visualization.es609.js.map +1 -1
  1070. package/dist/visualization.es61.js +51 -46
  1071. package/dist/visualization.es61.js.map +1 -1
  1072. package/dist/visualization.es610.js +6 -32
  1073. package/dist/visualization.es610.js.map +1 -1
  1074. package/dist/visualization.es611.js +290 -4
  1075. package/dist/visualization.es611.js.map +1 -1
  1076. package/dist/visualization.es612.js +16 -6
  1077. package/dist/visualization.es612.js.map +1 -1
  1078. package/dist/visualization.es613.js +13 -5
  1079. package/dist/visualization.es613.js.map +1 -1
  1080. package/dist/visualization.es614.js +9 -18
  1081. package/dist/visualization.es614.js.map +1 -1
  1082. package/dist/visualization.es615.js +8 -13
  1083. package/dist/visualization.es615.js.map +1 -1
  1084. package/dist/visualization.es616.js +17 -289
  1085. package/dist/visualization.es616.js.map +1 -1
  1086. package/dist/visualization.es617.js +3 -3
  1087. package/dist/visualization.es617.js.map +1 -1
  1088. package/dist/visualization.es618.js +5 -11
  1089. package/dist/visualization.es618.js.map +1 -1
  1090. package/dist/visualization.es619.js +5 -3
  1091. package/dist/visualization.es619.js.map +1 -1
  1092. package/dist/visualization.es62.js +54 -3
  1093. package/dist/visualization.es62.js.map +1 -1
  1094. package/dist/visualization.es620.js +13 -5
  1095. package/dist/visualization.es620.js.map +1 -1
  1096. package/dist/visualization.es621.js +116 -4
  1097. package/dist/visualization.es621.js.map +1 -1
  1098. package/dist/visualization.es622.js +3 -13
  1099. package/dist/visualization.es622.js.map +1 -1
  1100. package/dist/visualization.es623.js +11 -117
  1101. package/dist/visualization.es623.js.map +1 -1
  1102. package/dist/visualization.es624.js +1 -1
  1103. package/dist/visualization.es63.js +40 -279
  1104. package/dist/visualization.es63.js.map +1 -1
  1105. package/dist/visualization.es634.js +1 -1
  1106. package/dist/visualization.es636.js +1 -1
  1107. package/dist/visualization.es637.js +1 -1
  1108. package/dist/visualization.es64.js +5 -18
  1109. package/dist/visualization.es64.js.map +1 -1
  1110. package/dist/visualization.es65.js +4 -18701
  1111. package/dist/visualization.es65.js.map +1 -1
  1112. package/dist/visualization.es66.js +18 -5
  1113. package/dist/visualization.es66.js.map +1 -1
  1114. package/dist/visualization.es67.js +5 -5
  1115. package/dist/visualization.es67.js.map +1 -1
  1116. package/dist/visualization.es68.js +24 -57
  1117. package/dist/visualization.es68.js.map +1 -1
  1118. package/dist/visualization.es69.js +31 -811
  1119. package/dist/visualization.es69.js.map +1 -1
  1120. package/dist/visualization.es7.js +11 -11
  1121. package/dist/visualization.es70.js +11 -0
  1122. package/dist/visualization.es70.js.map +1 -0
  1123. package/dist/visualization.es71.js +8 -131
  1124. package/dist/visualization.es71.js.map +1 -1
  1125. package/dist/visualization.es72.js +27 -64
  1126. package/dist/visualization.es72.js.map +1 -1
  1127. package/dist/visualization.es73.js +64 -265
  1128. package/dist/visualization.es73.js.map +1 -1
  1129. package/dist/visualization.es74.js +61 -102
  1130. package/dist/visualization.es74.js.map +1 -1
  1131. package/dist/visualization.es75.js +4 -27
  1132. package/dist/visualization.es75.js.map +1 -1
  1133. package/dist/visualization.es76.js +46 -22
  1134. package/dist/visualization.es76.js.map +1 -1
  1135. package/dist/visualization.es77.js +4 -18
  1136. package/dist/visualization.es77.js.map +1 -1
  1137. package/dist/visualization.es78.js +280 -19
  1138. package/dist/visualization.es78.js.map +1 -1
  1139. package/dist/visualization.es79.js +19 -74
  1140. package/dist/visualization.es79.js.map +1 -1
  1141. package/dist/visualization.es8.js +13 -13
  1142. package/dist/visualization.es80.js +63 -78
  1143. package/dist/visualization.es80.js.map +1 -1
  1144. package/dist/visualization.es81.js +264 -65
  1145. package/dist/visualization.es81.js.map +1 -1
  1146. package/dist/visualization.es82.js +101 -38
  1147. package/dist/visualization.es82.js.map +1 -1
  1148. package/dist/visualization.es83.js +26 -80
  1149. package/dist/visualization.es83.js.map +1 -1
  1150. package/dist/visualization.es84.js +23 -46
  1151. package/dist/visualization.es84.js.map +1 -1
  1152. package/dist/visualization.es85.js +18 -56
  1153. package/dist/visualization.es85.js.map +1 -1
  1154. package/dist/visualization.es86.js +20 -6
  1155. package/dist/visualization.es86.js.map +1 -1
  1156. package/dist/visualization.es87.js +74 -13
  1157. package/dist/visualization.es87.js.map +1 -1
  1158. package/dist/visualization.es88.js +78 -55
  1159. package/dist/visualization.es88.js.map +1 -1
  1160. package/dist/visualization.es89.js +63 -112
  1161. package/dist/visualization.es89.js.map +1 -1
  1162. package/dist/visualization.es9.js +1 -1
  1163. package/dist/visualization.es90.js +2 -2
  1164. package/dist/visualization.es91.js +2 -2
  1165. package/dist/visualization.es92.js +1 -1
  1166. package/dist/visualization.es93.js +1 -1
  1167. package/dist/visualization.es94.js +1 -1
  1168. package/dist/visualization.es95.js +13 -26
  1169. package/dist/visualization.es95.js.map +1 -1
  1170. package/dist/visualization.es96.js +45 -70
  1171. package/dist/visualization.es96.js.map +1 -1
  1172. package/dist/visualization.es97.js +22 -45
  1173. package/dist/visualization.es97.js.map +1 -1
  1174. package/dist/visualization.es98.js +60 -22
  1175. package/dist/visualization.es98.js.map +1 -1
  1176. package/dist/visualization.es99.js +80 -60
  1177. package/dist/visualization.es99.js.map +1 -1
  1178. package/package.json +1 -1
  1179. package/dist/visualization.es51.js +0 -51
  1180. package/dist/visualization.es51.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"visualization.es81.js","sources":["../src/components/ViolinPlot/helpers.ts"],"sourcesContent":["import { mean } from '@visx/vendor/d3-array';\n\n//measure the height of the longest tick\nexport const getTextHeight = (text: string, fontSize: number, fontFamily: string): number => {\n const el = document.createElement(\"g\");\n el.style.position = \"absolute\";\n el.style.visibility = \"hidden\";\n el.style.fontSize = `${fontSize}px`;\n el.style.fontFamily = fontFamily;\n el.style.whiteSpace = \"nowrap\";\n el.textContent = text;\n document.body.appendChild(el);\n const width = el.getBoundingClientRect().width;\n document.body.removeChild(el);\n return width;\n};\n\n// Get the min, max, quartiles, median, and ouotiers for each data set\nexport const calculateBoxStats = (data: number[], outlierType: string) => {\n\n data.sort((a, b) => a - b);\n\n const median = (arr: number[]) => {\n const mid = Math.floor(arr.length / 2);\n return arr.length % 2 !== 0 ? arr[mid] : (arr[mid - 1] + arr[mid]) / 2;\n };\n\n const getQuartiles = (arr: number[]) => {\n const mid = Math.floor(arr.length / 2);\n const lower = arr.slice(0, mid);\n const upper = arr.slice(arr.length % 2 === 0 ? mid : mid + 1);\n return {\n firstQuartile: median(lower),\n thirdQuartile: median(upper),\n };\n };\n\n // Calculate quartiles\n const { firstQuartile, thirdQuartile } = getQuartiles(data);\n const med = median(data);\n\n // Calculate the IQR and whiskers\n const iqr = thirdQuartile - firstQuartile;\n const lowerWhisker = firstQuartile - 1.5 * iqr;\n const upperWhisker = thirdQuartile + 1.5 * iqr;\n\n // Calculate outliers (values outside of the whiskers)\n const outliers = outlierType === \"none\"\n ? []\n : outlierType === \"top\"\n ? data.filter(val => val > upperWhisker)\n : outlierType === \"bottom\"\n ? data.filter(val => val < lowerWhisker)\n : data.filter(val => val < lowerWhisker || val > upperWhisker);\n\n // Min and max\n const min = data[0];\n const max = data[data.length - 1];\n\n return { min, max, firstQuartile, thirdQuartile, median: med, outliers };\n \n};\n\nexport function kernelDensityEstimator(\n kernel: (distance: number) => number,\n X: number[]\n): (data: number[]) => { value: number, count: number }[] {\n return (data: number[]) => {\n return X.map((x) => ({\n value: x,\n count: mean(data, (v) => kernel(x - v)) || 0,\n }));\n };\n}\n\nexport function gaussian(bandwidth: number): (x: number) => number {\n const normalizationFactor = 1 / (bandwidth * Math.sqrt(2 * Math.PI));\n return (x) => normalizationFactor * Math.exp(-0.5 * Math.pow(x / bandwidth, 2));\n}\n\nexport function scottRule(data: number[]) {\n const n = data.length;\n if (n === 0) {\n return 0;\n }\n \n const mean = data.reduce((a, b) => a + b, 0) / n;\n const variance = data.reduce((acc, val) => acc + Math.pow(val - mean, 2), 0) / data.length;\n const stdDev = Math.sqrt(variance)\n const binWidth = 3.5 * stdDev / Math.pow(n, 1/3);\n return binWidth;\n }\n\n export function silvermanRule(data: number[]) {\n const n = data.length;\n if (n === 0) return 0;\n\n const mean = data.reduce((a, b) => a + b, 0) / n;\n const variance = data.reduce((acc, val) => acc + Math.pow(val - mean, 2), 0) / n;\n const stdDev = Math.sqrt(variance);\n\n //calc iqr\n const sortedData = data.slice().sort((a, b) => a - b);\n const q1 = sortedData[Math.floor((n - 1) * 0.25)];\n const q3 = sortedData[Math.floor((n - 1) * 0.75)];\n const iqr = q3 - q1;\n\n const bandwidth = 0.9 * Math.min(stdDev, iqr / 1.34) * Math.pow(n, -1 / 5);\n \n //ensure a positive result even if quartiles coincide\n return Math.max(bandwidth, 1e-10);\n}\n\n//randomly generate jitter based on seed to keep jitter consisten across page loads\nexport function seededRandom(seed: string): number {\n let hash = 0;\n for (let i = 0; i < seed.length; i++) {\n hash = (hash << 5) - hash + seed.charCodeAt(i);\n hash |= 0; // Convert to 32bit integer\n }\n const x = Math.sin(hash) * 10000;\n return x - Math.floor(x); // returns [0, 1)\n}"],"names":["getTextHeight","text","fontSize","fontFamily","el","document","createElement","style","position","visibility","whiteSpace","textContent","body","appendChild","width","getBoundingClientRect","removeChild","calculateBoxStats","data","outlierType","sort","a","b","median","arr","mid","Math","floor","length","getQuartiles","lower","slice","upper","firstQuartile","thirdQuartile","med","iqr","lowerWhisker","upperWhisker","outliers","filter","val","min","max","kernelDensityEstimator","kernel","X","map","x","value","count","mean","v","gaussian","bandwidth","normalizationFactor","sqrt","PI","exp","pow","scottRule","n","reduce","variance","acc","silvermanRule","stdDev","sortedData","q1","seededRandom","seed","hash","i","charCodeAt","sin"],"mappings":"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"}
1
+ {"version":3,"file":"visualization.es81.js","sources":["../src/components/ScatterPlot/ScatterPlotViewport.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport CircularProgress from \"@mui/material/CircularProgress\";\nimport { Box, Stack } from \"@mui/material\";\nimport { Group } from \"@visx/group\";\nimport { AxisBottom, AxisLeft, AxisRight, AxisTop } from \"@visx/axis\";\nimport { LinePath } from \"@visx/shape\";\nimport { Text } from \"@visx/text\";\nimport { curveBasis } from \"@visx/curve\";\nimport { localPoint } from \"@visx/event\";\nimport { ScaleLinear } from \"@visx/vendor/d3-scale\";\nimport { BackgroundGradient, ChartProps, CrosshairPosition, Point, SelectionMode, ZoomType } from \"./types\";\nimport { drawCanvasPoint, getTicks, isPointVisible, partitionPointsByHover, prepareCanvas, rescaleX, rescaleY } from \"./helpers\";\nimport { useStableCallback } from \"../../hooks\";\nimport AnimatedPoints from \"./AnimatedPoints\";\nimport PointLabels from \"./PointLabels\";\nimport GradientLegend from \"./GradientLegend\";\nimport Crosshair from \"./Crosshair\";\nimport { useDragSelection } from \"./hooks/useDragSelection\";\n\ntype ScatterPlotViewportProps<T extends object> = {\n width: number;\n height: number;\n margin: { top: number; left: number };\n boundedWidth: number;\n boundedHeight: number;\n loading: boolean;\n pointData: Point<T>[];\n animation?: ChartProps<T, boolean | undefined, boolean | undefined>[\"animation\"];\n animationGroupSize?: number;\n animationBuffer?: number;\n xScale: ScaleLinear<number, number, never>;\n yScale: ScaleLinear<number, number, never>;\n zoom: ZoomType;\n selectMode: SelectionMode;\n selectable: boolean;\n disableZoom?: boolean;\n groupPointsAnchor?: keyof Point<T> | keyof T;\n hoveredPoint: Point<T> | null;\n hoveredPoints?: Point<T>[];\n handleMouseMove: (event: React.MouseEvent<SVGElement>, zoom: ZoomType) => void;\n handleMouseLeave: () => void;\n onDisplayedPointsChange?: (points: Point<T>[]) => void;\n onSelectionChange?: (selectedPoints: Point<T>[]) => void;\n onPointClicked?: (point: Point<T>) => void;\n leftAxisLabel?: string;\n bottomAxisLabel?: string;\n border: boolean;\n originLine?: boolean;\n backgroundGradient?: BackgroundGradient;\n /** Crosshair position in data coordinates, or null for no crosshair. */\n crosshair?: CrosshairPosition | null;\n divRef: React.RefObject<HTMLDivElement | null>;\n};\n\n/**\n * Hover growth eases in over this long, and is dropped instantly on the way out.\n * Easing the exit too would drag a tail of still-shrinking points behind the cursor\n * whenever it sweeps across a dense plot.\n */\nconst HOVER_GROW_MS = 120;\n\nconst easeOutCubic = (t: number) => 1 - Math.pow(1 - t, 3);\n\nconst ScatterPlotViewport = <T extends object>({\n width,\n height,\n margin,\n boundedWidth,\n boundedHeight,\n loading,\n pointData,\n animation,\n animationGroupSize,\n animationBuffer,\n xScale,\n yScale,\n zoom,\n selectMode,\n selectable,\n disableZoom,\n groupPointsAnchor,\n hoveredPoint,\n hoveredPoints,\n handleMouseMove,\n handleMouseLeave,\n onDisplayedPointsChange,\n onSelectionChange,\n onPointClicked,\n leftAxisLabel,\n bottomAxisLabel,\n border,\n originLine,\n backgroundGradient,\n crosshair,\n divRef,\n}: ScatterPlotViewportProps<T>) => {\n const graphRef = useRef<SVGRectElement | null>(null);\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\n // Hover growth is driven straight onto the canvas through a ref. A redraw is ~0.3ms at\n // 3.4k points so the drawing is cheap, but a re-render per frame would not be.\n const hoverAmountRef = useRef(0);\n const animatedKeysRef = useRef<Set<string> | null>(null);\n\n // Animation state — viewport owns what it renders\n const [showPointAnimation, setShowPointAnimation] = useState(Boolean(animation));\n\n useEffect(() => {\n if (!animation) return;\n if (pointData.length > 2500) {\n setShowPointAnimation(false);\n return;\n }\n const duration = 450;\n const buffer = (animationBuffer ?? 0.03) * 1000;\n const groups = Math.ceil(pointData.length / (animationGroupSize ?? 1));\n const total = duration + groups * buffer;\n\n const t = window.setTimeout(() => setShowPointAnimation(false), total);\n return () => window.clearTimeout(t);\n }, [animation, animationBuffer, animationGroupSize, pointData.length]);\n\n const { lines, isDragging, x, y, dx, dy, dragStart, dragMove, dragEnd, completeSelection } =\n useDragSelection({ pointData, margin, xScale, yScale, onSelectionChange });\n\n // Passive event listeners to prevent default scroll/touch behavior on the chart surface\n useEffect(() => {\n const graphElement = graphRef.current;\n\n const handleWheel = (event: WheelEvent) => { event.preventDefault(); };\n const handleTouchMove = (event: TouchEvent) => { event.preventDefault(); };\n const handleTouchStart = (event: TouchEvent) => { event.preventDefault(); };\n\n if (graphElement) {\n graphElement.addEventListener('wheel', handleWheel, { passive: false });\n graphElement.addEventListener('touchstart', handleTouchStart, { passive: false });\n graphElement.addEventListener('touchmove', handleTouchMove, { passive: false });\n }\n\n return () => {\n if (graphElement) {\n graphElement.removeEventListener('wheel', handleWheel);\n graphElement.removeEventListener('touchstart', handleTouchStart);\n graphElement.removeEventListener('touchmove', handleTouchMove);\n }\n };\n }, []);\n\n const xScaleTransformed = useMemo(\n () => rescaleX(xScale, zoom.transformMatrix.translateX, zoom.transformMatrix.scaleX),\n [xScale, zoom.transformMatrix]\n );\n const yScaleTransformed = useMemo(\n () => rescaleY(yScale, zoom.transformMatrix.translateY, zoom.transformMatrix.scaleY),\n [yScale, zoom.transformMatrix]\n );\n\n // What is hovered: the point under the cursor if there is one, otherwise whatever the\n // consumer has asked to highlight. The cursor takes precedence so the plot's own hover is\n // never overridden mid-gesture.\n const highlightSeeds: Point<T>[] = useMemo(\n () => (hoveredPoint ? [hoveredPoint] : hoveredPoints ?? []),\n [hoveredPoint, hoveredPoints]\n );\n\n const groupedPoints: Point<T>[] = useMemo(() => {\n const anchor = groupPointsAnchor;\n if (!anchor) return highlightSeeds;\n\n const anchorValue = (point: Point<T>): unknown =>\n anchor in point\n ? point[anchor as keyof Point<T>]\n : point.metaData?.[anchor as keyof T];\n\n // Collect the seeds' anchor values first, so this stays O(points + seeds). Matching each\n // point against each seed would be 2.5m comparisons when a whole 750-point group is\n // handed in against 3.4k points.\n const seedValues = new Set(\n highlightSeeds.map(anchorValue).filter((value) => value !== undefined)\n );\n if (seedValues.size === 0) return [];\n\n return pointData.filter((point) => {\n const value = anchorValue(point);\n return value !== undefined && seedValues.has(value);\n });\n }, [highlightSeeds, groupPointsAnchor, pointData]);\n\n const previousHoveredKeysRef = useRef<Set<string>>(new Set());\n\n const hoveredPointKeys = useMemo(() => {\n const next = new Set(groupedPoints.map((point) => `${point.x},${point.y}`));\n const previous = previousHoveredKeysRef.current;\n\n // Moving between points inside one anchored group rebuilds this set, but its contents\n // are unchanged - the hovered group is the same group. Handing back the previous Set\n // keeps its identity stable, so the redraw effect and the hover growth it drives both\n // sit still instead of restarting on every point the cursor crosses. Purely a\n // memoisation hint: the contents are correct either way.\n if (next.size === previous.size && [...next].every((key) => previous.has(key))) {\n return previous;\n }\n\n previousHoveredKeysRef.current = next;\n return next;\n }, [groupedPoints]);\n\n const currentDisplayedPoints = useMemo(\n () => pointData.filter((point) => {\n const tx = xScaleTransformed(point.x);\n const ty = yScaleTransformed(point.y);\n return tx >= 0 && tx <= boundedWidth && ty >= 0 && ty <= boundedHeight;\n }),\n [pointData, xScaleTransformed, yScaleTransformed, boundedWidth, boundedHeight]\n );\n\n const drawPoints = useCallback((\n xST: ScaleLinear<number, number, never>,\n yST: ScaleLinear<number, number, never>,\n canvas: HTMLCanvasElement\n ) => {\n const context = canvas.getContext('2d');\n if (!context) return;\n\n prepareCanvas(context, boundedWidth, boundedHeight);\n\n if (backgroundGradient) {\n const [colorLow, colorMid, colorHigh] = backgroundGradient.colorScale ?? [\"red\", \"white\", \"blue\"];\n const W = boundedWidth;\n const H = boundedHeight;\n const x0 = xST(0);\n const y0 = yST(0);\n const fraction = Math.max(0.001, Math.min(0.999, (x0 * W - y0 * H + H * H) / (W * W + H * H)));\n const gradient = context.createLinearGradient(0, H, W, 0);\n gradient.addColorStop(0, colorLow);\n gradient.addColorStop(fraction, colorMid);\n gradient.addColorStop(1, colorHigh);\n context.globalAlpha = backgroundGradient.opacity ?? 1;\n context.fillStyle = gradient;\n context.fillRect(0, 0, W, H);\n context.globalAlpha = 1;\n }\n\n const { nonHovered, hovered } = partitionPointsByHover(pointData, hoveredPointKeys);\n\n const drawRenderedPoint = (point: Point<T>, isHovered: boolean) => {\n const transformedX = xST(point.x);\n const transformedY = yST(point.y);\n if (!isPointVisible(transformedX, transformedY, boundedWidth, boundedHeight)) return;\n drawCanvasPoint(context, point, transformedX, transformedY, isHovered ? hoverAmountRef.current : 0);\n };\n\n nonHovered.forEach((point) => drawRenderedPoint(point, false));\n hovered.forEach((point) => drawRenderedPoint(point, true));\n }, [boundedHeight, boundedWidth, hoveredPointKeys, pointData, backgroundGradient]);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas || showPointAnimation) return;\n\n // Leaving is instant: drop the growth and repaint once.\n if (hoveredPointKeys.size === 0) {\n animatedKeysRef.current = null;\n hoverAmountRef.current = 0;\n drawPoints(xScaleTransformed, yScaleTransformed, canvas);\n return;\n }\n\n // Only a change of hovered set starts the growth. This effect also runs on pan, zoom\n // and data changes, which should repaint at the size the points have already reached\n // rather than snapping them back to zero.\n if (animatedKeysRef.current === hoveredPointKeys) {\n drawPoints(xScaleTransformed, yScaleTransformed, canvas);\n return;\n }\n animatedKeysRef.current = hoveredPointKeys;\n\n const startedAt = performance.now();\n hoverAmountRef.current = 0;\n let frame = requestAnimationFrame(function step() {\n const t = Math.min(1, (performance.now() - startedAt) / HOVER_GROW_MS);\n hoverAmountRef.current = easeOutCubic(t);\n drawPoints(xScaleTransformed, yScaleTransformed, canvas);\n if (t < 1) frame = requestAnimationFrame(step);\n });\n\n return () => cancelAnimationFrame(frame);\n }, [drawPoints, xScaleTransformed, yScaleTransformed, showPointAnimation, hoveredPointKeys]);\n\n const handlePointClick = useCallback(() => {\n if (hoveredPoint) onPointClicked?.(hoveredPoint);\n }, [hoveredPoint, onPointClicked]);\n\n const surfaceCursor = disableZoom\n ? selectable\n ? isDragging ? 'none' : 'crosshair'\n : isDragging ? 'none' : 'default'\n : hoveredPoint\n ? 'default'\n : selectMode === 'select'\n ? isDragging ? 'none' : 'crosshair'\n : zoom.isDragging\n ? 'grabbing'\n : 'grab';\n\n const handleSelectionEnd = (event: React.MouseEvent<SVGRectElement> | React.TouchEvent<SVGRectElement>) => {\n dragEnd(event);\n completeSelection(zoom);\n };\n\n /**\n * Panning is coalesced to one zoom update per animation frame.\n *\n * zoom.dragMove sets the transform matrix on every move it is handed, and a mouse reports\n * positions faster than the browser paints. Because mousemove is a continuous event that\n * React flushes synchronously - and because a shared zoom sits above every synced plot, so\n * one update re-renders all of them - handling each move outright never lets the browser\n * paint, and React eventually warns that the update depth was exceeded.\n *\n * The buffer holds nativeEvent rather than the synthetic event: React clears currentTarget\n * once dispatch returns, and this runs a frame later. Routing through useStableCallback\n * keeps the frame calling the current zoom rather than the one captured when it was queued.\n */\n const dragFrameRef = useRef<number | null>(null);\n const pendingDragRef = useRef<MouseEvent | TouchEvent | null>(null);\n const dragMoveLatest = useStableCallback((event: MouseEvent | TouchEvent) => {\n zoom.dragMove(event as unknown as React.MouseEvent | React.TouchEvent);\n });\n\n const flushPendingDrag = useCallback(() => {\n if (dragFrameRef.current !== null) {\n cancelAnimationFrame(dragFrameRef.current);\n dragFrameRef.current = null;\n }\n const pending = pendingDragRef.current;\n pendingDragRef.current = null;\n if (pending) dragMoveLatest(pending);\n }, [dragMoveLatest]);\n\n useEffect(() => () => {\n if (dragFrameRef.current !== null) cancelAnimationFrame(dragFrameRef.current);\n }, []);\n\n const onZoomDragMove = (event: React.MouseEvent<SVGRectElement> | React.TouchEvent<SVGRectElement>) => {\n pendingDragRef.current = event.nativeEvent;\n if (dragFrameRef.current !== null) return;\n dragFrameRef.current = requestAnimationFrame(() => {\n dragFrameRef.current = null;\n const pending = pendingDragRef.current;\n pendingDragRef.current = null;\n if (pending) dragMoveLatest(pending);\n });\n };\n\n // The queued frame is applied before the gesture closes, so the plot lands on the position\n // the pointer was actually released at rather than a frame behind it.\n const onZoomDragEnd = () => {\n flushPendingDrag();\n zoom.dragEnd();\n };\n\n const onSurfaceMouseDown = selectMode === \"none\"\n ? undefined\n : selectMode === \"select\"\n ? dragStart\n : disableZoom ? undefined : zoom.dragStart;\n const onSurfaceMouseUp = selectMode === \"none\"\n ? undefined\n : selectMode === \"select\"\n ? handleSelectionEnd\n : disableZoom ? undefined : onZoomDragEnd;\n const onSurfaceMouseMove = selectMode === \"none\"\n ? undefined\n : selectMode === \"select\"\n ? (isDragging ? dragMove : undefined)\n : disableZoom ? undefined : onZoomDragMove;\n const onSurfaceMouseLeave = selectMode === \"none\"\n ? undefined\n : selectMode === \"select\"\n ? handleSelectionEnd\n : disableZoom ? undefined : onZoomDragEnd;\n const onSurfaceTouchStart = selectMode === \"none\"\n ? undefined\n : selectMode === \"select\"\n ? dragStart\n : disableZoom ? undefined : zoom.dragStart;\n const onSurfaceTouchEnd = selectMode === \"none\"\n ? undefined\n : selectMode === \"select\"\n ? handleSelectionEnd\n : disableZoom ? undefined : onZoomDragEnd;\n const onSurfaceTouchMove = selectMode === \"none\"\n ? undefined\n : selectMode === \"select\"\n ? (isDragging ? dragMove : undefined)\n : disableZoom ? undefined : onZoomDragMove;\n const onSurfaceWheel: React.WheelEventHandler<SVGRectElement> = (event) => {\n setShowPointAnimation(false);\n if (!disableZoom) {\n const point = localPoint(event) || { x: 0, y: 0 };\n const zoomDirection = event.deltaY < 0 ? 1.1 : 0.9;\n zoom.scale({ scaleX: zoomDirection, scaleY: zoomDirection, point });\n }\n };\n\n const previousDisplayedPoints = useRef<Point<T>[]>([]);\n\n useEffect(() => {\n const haveDisplayedPointsChanged = (prevPoints: Point<T>[], nextPoints: Point<T>[]) => {\n if (prevPoints.length !== nextPoints.length) return true;\n return !prevPoints.every((point, index) => {\n const nextPoint = nextPoints[index];\n return (\n point.x === nextPoint.x &&\n point.y === nextPoint.y &&\n point.r === nextPoint.r &&\n point.shape === nextPoint.shape &&\n point.color === nextPoint.color &&\n point.opacity === nextPoint.opacity\n );\n });\n };\n\n if (haveDisplayedPointsChanged(previousDisplayedPoints.current, currentDisplayedPoints)) {\n onDisplayedPointsChange?.(currentDisplayedPoints);\n previousDisplayedPoints.current = currentDisplayedPoints;\n }\n }, [currentDisplayedPoints, onDisplayedPointsChange]);\n\n return (\n <Stack justifyContent=\"center\" alignItems=\"center\" direction=\"row\" sx={{ position: \"relative\" }}>\n <Box sx={{ width, height }}>\n {loading ? (\n <Box display=\"flex\" width=\"100%\" height=\"100%\" sx={{ justifyContent: \"center\", alignItems: \"center\" }}>\n <CircularProgress />\n </Box>\n ) : (\n <div style={{ position: \"relative\" }} ref={divRef}>\n <canvas\n ref={canvasRef}\n width={boundedWidth * 2}\n height={boundedHeight * 2}\n style={{\n userSelect: \"none\",\n position: \"absolute\",\n top: margin.top,\n left: margin.left,\n width: boundedWidth,\n height: boundedHeight,\n backgroundColor: \"transparent\",\n }}\n />\n <svg\n width={width}\n height={height}\n overflow=\"visible\"\n style={{ position: \"absolute\", userSelect: \"none\" }}\n onMouseMove={(event) => {\n if (isDragging) handleMouseLeave();\n else handleMouseMove(event, zoom);\n }}\n onMouseLeave={handleMouseLeave}\n >\n <Group top={margin.top} left={margin.left}>\n {showPointAnimation && animation && (\n <AnimatedPoints\n pointData={pointData}\n animation={animation}\n animationGroupSize={animationGroupSize}\n animationBuffer={animationBuffer}\n xScaleTransformed={xScaleTransformed}\n yScaleTransformed={yScaleTransformed}\n boundedWidth={boundedWidth}\n boundedHeight={boundedHeight}\n />\n )}\n {selectMode === \"select\" && (\n <>\n {lines.map((line, index) => (\n <LinePath\n key={`line-${index}`}\n fill=\"transparent\"\n stroke=\"black\"\n strokeWidth={3}\n data={line}\n curve={curveBasis}\n x={(datum) => datum.x}\n y={(datum) => datum.y}\n />\n ))}\n {isDragging && (\n <g>\n <line x1={x - margin.left + dx - 6} y1={y - margin.top + dy} x2={x - margin.left + dx + 6} y2={y - margin.top + dy} stroke=\"black\" strokeWidth={1} />\n <line x1={x - margin.left + dx} y1={y - margin.top + dy - 6} x2={x - margin.left + dx} y2={y - margin.top + dy + 6} stroke=\"black\" strokeWidth={1} />\n <circle cx={x - margin.left} cy={y - margin.top} r={4} fill=\"transparent\" stroke=\"black\" pointerEvents=\"none\" />\n </g>\n )}\n </>\n )}\n {originLine && (() => {\n const x0 = xScaleTransformed(0);\n const y0 = yScaleTransformed(0);\n return (\n <>\n {y0 >= 0 && y0 <= boundedHeight && (\n <line x1={0} x2={boundedWidth} y1={y0} y2={y0} stroke=\"#000\" strokeWidth={1} strokeDasharray=\"4,4\" pointerEvents=\"none\" />\n )}\n {x0 >= 0 && x0 <= boundedWidth && (\n <line x1={x0} x2={x0} y1={0} y2={boundedHeight} stroke=\"#000\" strokeWidth={1} strokeDasharray=\"4,4\" pointerEvents=\"none\" />\n )}\n </>\n );\n })()}\n <rect\n ref={graphRef}\n fill=\"transparent\"\n width={boundedWidth}\n height={boundedHeight}\n style={{ cursor: surfaceCursor }}\n onMouseDown={onSurfaceMouseDown}\n onMouseUp={onSurfaceMouseUp}\n onMouseMove={onSurfaceMouseMove}\n onMouseLeave={onSurfaceMouseLeave}\n onTouchStart={onSurfaceTouchStart}\n onTouchEnd={onSurfaceTouchEnd}\n onTouchMove={onSurfaceTouchMove}\n onWheel={onSurfaceWheel}\n onClick={handlePointClick}\n />\n {crosshair && !isDragging && (\n <Crosshair\n position={{\n x: xScaleTransformed(crosshair.x),\n y: yScaleTransformed(crosshair.y),\n }}\n boundedWidth={boundedWidth}\n boundedHeight={boundedHeight}\n />\n )}\n </Group>\n <Group top={margin.top} left={margin.left}>\n <AxisLeft\n scale={yScaleTransformed}\n tickLabelProps={() => ({\n fill: \"#1c1917\",\n fontSize: 10,\n textAnchor: \"end\",\n verticalAnchor: \"middle\",\n x: -10,\n })}\n tickValues={getTicks(yScaleTransformed, 5)}\n />\n <AxisBottom\n top={boundedHeight}\n scale={xScaleTransformed}\n tickLabelProps={() => ({\n fill: \"#1c1917\",\n fontSize: 11,\n textAnchor: \"middle\",\n })}\n tickValues={getTicks(xScaleTransformed, 5)}\n />\n {border && (\n <>\n <AxisTop top={0} scale={xScaleTransformed} tickValues={[]} />\n <AxisRight scale={yScaleTransformed} tickValues={[]} left={boundedWidth} />\n </>\n )}\n <Text textAnchor=\"middle\" verticalAnchor=\"end\" angle={-90} fontSize={15} y={boundedHeight / 2} x={0} dx={-50}>\n {leftAxisLabel}\n </Text>\n <Text textAnchor=\"middle\" verticalAnchor=\"start\" fontSize={15} y={boundedHeight} x={boundedWidth / 2} dy={50}>\n {bottomAxisLabel}\n </Text>\n </Group>\n <PointLabels\n pointData={pointData}\n xScaleTransformed={xScaleTransformed}\n yScaleTransformed={yScaleTransformed}\n boundedWidth={boundedWidth}\n boundedHeight={boundedHeight}\n margin={margin}\n />\n {backgroundGradient?.legend && (\n <GradientLegend\n backgroundGradient={backgroundGradient}\n boundedHeight={boundedHeight}\n barLeft={margin.left + boundedWidth + 25}\n marginTop={margin.top}\n />\n )}\n </svg>\n </div>\n )}\n </Box>\n </Stack>\n );\n};\n\nexport default ScatterPlotViewport;\n"],"names":["HOVER_GROW_MS","easeOutCubic","t","Math","pow","ScatterPlotViewport","width","height","margin","boundedWidth","boundedHeight","loading","pointData","animation","animationGroupSize","animationBuffer","xScale","yScale","zoom","selectMode","selectable","disableZoom","groupPointsAnchor","hoveredPoint","hoveredPoints","handleMouseMove","handleMouseLeave","onDisplayedPointsChange","onSelectionChange","onPointClicked","leftAxisLabel","bottomAxisLabel","border","originLine","backgroundGradient","crosshair","divRef","graphRef","useRef","canvasRef","hoverAmountRef","animatedKeysRef","showPointAnimation","setShowPointAnimation","useState","Boolean","useEffect","length","duration","buffer","groups","ceil","total","window","setTimeout","clearTimeout","lines","isDragging","x","y","dx","dy","dragStart","dragMove","dragEnd","completeSelection","useDragSelection","graphElement","current","handleWheel","event","preventDefault","handleTouchMove","handleTouchStart","addEventListener","passive","removeEventListener","xScaleTransformed","useMemo","rescaleX","transformMatrix","translateX","scaleX","yScaleTransformed","rescaleY","translateY","scaleY","highlightSeeds","groupedPoints","anchor","anchorValue","point","metaData","seedValues","Set","map","filter","value","undefined","size","has","previousHoveredKeysRef","hoveredPointKeys","next","previous","every","key","currentDisplayedPoints","tx","ty","drawPoints","useCallback","xST","yST","canvas","context","getContext","prepareCanvas","colorLow","colorMid","colorHigh","colorScale","W","H","x0","y0","fraction","max","min","gradient","createLinearGradient","addColorStop","globalAlpha","opacity","fillStyle","fillRect","nonHovered","hovered","partitionPointsByHover","drawRenderedPoint","isHovered","transformedX","transformedY","isPointVisible","drawCanvasPoint","forEach","startedAt","performance","now","frame","requestAnimationFrame","step","cancelAnimationFrame","handlePointClick","surfaceCursor","handleSelectionEnd","dragFrameRef","pendingDragRef","dragMoveLatest","useStableCallback","flushPendingDrag","pending","onZoomDragMove","nativeEvent","onZoomDragEnd","onSurfaceMouseDown","onSurfaceMouseUp","onSurfaceMouseMove","onSurfaceMouseLeave","onSurfaceTouchStart","onSurfaceTouchEnd","onSurfaceTouchMove","onSurfaceWheel","localPoint","zoomDirection","deltaY","scale","previousDisplayedPoints","haveDisplayedPointsChanged","prevPoints","nextPoints","index","nextPoint","r","shape","color","jsx","Stack","position","Box","justifyContent","alignItems","CircularProgress","jsxs","userSelect","top","left","backgroundColor","Group","AnimatedPoints","Fragment","line","LinePath","curveBasis","datum","cursor","Crosshair","AxisLeft","fill","fontSize","textAnchor","verticalAnchor","getTicks","AxisBottom","AxisTop","AxisRight","Text","PointLabels","legend","GradientLegend"],"mappings":"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"}
@@ -1,43 +1,106 @@
1
- import { jsxs as p, jsx as a } from "react/jsx-runtime";
2
- import { c as w } from "react/compiler-runtime";
3
- import x from "./visualization.es34.js";
4
- const g = 18, l = 12, u = 6, r = 8;
5
- function G(n) {
6
- const t = Math.max(...n.map((h) => h.label.length)) * 7 + l + u + r * 2, e = n.length * g + r * 2;
7
- return {
8
- width: t,
9
- height: e
1
+ import { jsxs as b, jsx as f } from "react/jsx-runtime";
2
+ import { useRef as S, useEffect as Y } from "react";
3
+ import { CROSSHAIR_STROKE as T, CROSSHAIR_DASH as W, CROSSHAIR_STROKE_WIDTH as P } from "./visualization.es127.js";
4
+ import { useStableCallback as w } from "./visualization.es19.js";
5
+ const o = 0.25, H = P / o, _ = W.map((c) => c / o).join(","), N = ({
6
+ miniMap: c,
7
+ width: C,
8
+ height: D,
9
+ pointData: E,
10
+ xScale: m,
11
+ yScale: R,
12
+ zoom: r,
13
+ crosshair: h
14
+ }) => {
15
+ const a = h ? m(h.x) : null, u = h ? R(h.y) : null, l = C - 100, i = D - 100, s = S(null), d = S(null), g = S(null), M = w(() => {
16
+ const n = d.current;
17
+ d.current = null, n && r.setTransformMatrix({
18
+ ...r.transformMatrix,
19
+ translateX: r.transformMatrix.translateX - n.dx / o * r.transformMatrix.scaleX,
20
+ translateY: r.transformMatrix.translateY - n.dy / o * r.transformMatrix.scaleY
21
+ });
22
+ }), p = (n, t) => {
23
+ const e = d.current ?? {
24
+ dx: 0,
25
+ dy: 0
26
+ };
27
+ e.dx += n, e.dy += t, d.current = e;
28
+ }, A = () => {
29
+ s.current === null && (s.current = requestAnimationFrame(() => {
30
+ s.current = null, M();
31
+ }));
32
+ }, x = () => {
33
+ s.current !== null && (cancelAnimationFrame(s.current), s.current = null), M(), g.current = null, r.dragEnd();
10
34
  };
11
- }
12
- const W = (n) => {
13
- const t = w(11), {
14
- series: e,
15
- xMax: h
16
- } = n;
17
- let s;
18
- t[0] !== e ? (s = G(e), t[0] = e, t[1] = s) : s = t[1];
19
- const {
20
- width: c,
21
- height: f
22
- } = s, m = h - c - 4;
23
- let o;
24
- t[2] !== f || t[3] !== c ? (o = /* @__PURE__ */ a("rect", { width: c, height: f, fill: "white", stroke: "#d4d4d4", strokeWidth: 1, rx: 3 }), t[2] = f, t[3] = c, t[4] = o) : o = t[4];
25
- let i;
26
- t[5] !== e ? (i = e.map(H), t[5] = e, t[6] = i) : i = t[6];
27
- let d;
28
- return t[7] !== m || t[8] !== o || t[9] !== i ? (d = /* @__PURE__ */ p(x, { left: m, top: 4, children: [
29
- o,
30
- i
31
- ] }), t[7] = m, t[8] = o, t[9] = i, t[10] = d) : d = t[10], d;
35
+ return Y(() => () => {
36
+ s.current !== null && cancelAnimationFrame(s.current);
37
+ }, []), /* @__PURE__ */ b("div", { style: {
38
+ position: "absolute",
39
+ bottom: c.position ? c.position.bottom : 10,
40
+ right: c.position ? c.position.right : 10
41
+ }, children: [
42
+ /* @__PURE__ */ f("canvas", { width: l * o, height: i * o, ref: (n) => {
43
+ if (n) {
44
+ const t = n.getContext("2d"), e = o, I = l * e, k = i * e;
45
+ t && (t.clearRect(0, 0, n.width, n.height), t.fillStyle = "white", t.fillRect(0, 0, I, k), t.strokeStyle = "grey", t.lineWidth = 4, t.strokeRect(0, 0, I, k), E.forEach((y) => {
46
+ const O = m(y.x) * e, X = R(y.y) * e;
47
+ t.beginPath(), t.arc(O, X, 3 * e, 0, Math.PI * 2), t.fillStyle = y.color ?? "black", t.fill();
48
+ }));
49
+ }
50
+ }, style: {
51
+ display: "block"
52
+ } }),
53
+ /* @__PURE__ */ f("svg", { width: l * o, height: i * o, style: {
54
+ position: "absolute",
55
+ top: 0,
56
+ left: 0
57
+ }, children: /* @__PURE__ */ b("g", { transform: `scale(${o})`, children: [
58
+ /* @__PURE__ */ f(
59
+ "rect",
60
+ {
61
+ width: l,
62
+ height: i,
63
+ fill: "#0d0f98",
64
+ fillOpacity: 0.2,
65
+ stroke: "#0d0f98",
66
+ strokeWidth: 4,
67
+ rx: 8,
68
+ transform: r.toStringInvert(),
69
+ style: {
70
+ cursor: r.isDragging ? "grabbing" : "grab",
71
+ touchAction: "none"
72
+ },
73
+ onMouseDown: r.dragStart,
74
+ onMouseUp: x,
75
+ onMouseMove: (n) => {
76
+ r.isDragging && (p(n.movementX, n.movementY), A());
77
+ },
78
+ onMouseLeave: x,
79
+ onTouchStart: (n) => {
80
+ const t = n.touches[0];
81
+ t && (g.current = {
82
+ x: t.clientX,
83
+ y: t.clientY
84
+ }), r.dragStart(n);
85
+ },
86
+ onTouchEnd: x,
87
+ onTouchCancel: x,
88
+ onTouchMove: (n) => {
89
+ if (!r.isDragging || n.touches.length !== 1) return;
90
+ const t = n.touches[0], e = g.current;
91
+ g.current = {
92
+ x: t.clientX,
93
+ y: t.clientY
94
+ }, e && (p(t.clientX - e.x, t.clientY - e.y), A());
95
+ }
96
+ }
97
+ ),
98
+ u !== null && u >= 0 && u <= i && /* @__PURE__ */ f("line", { x1: 0, x2: l, y1: u, y2: u, stroke: T, strokeWidth: H, strokeDasharray: _, pointerEvents: "none" }),
99
+ a !== null && a >= 0 && a <= l && /* @__PURE__ */ f("line", { x1: a, x2: a, y1: 0, y2: i, stroke: T, strokeWidth: H, strokeDasharray: _, pointerEvents: "none" })
100
+ ] }) })
101
+ ] });
32
102
  };
33
- function H(n, t) {
34
- return /* @__PURE__ */ p(x, { top: r + t * g, children: [
35
- /* @__PURE__ */ a("rect", { x: r, y: 2, width: l, height: l, fill: n.color, opacity: 0.85, rx: 2 }),
36
- /* @__PURE__ */ a("text", { x: r + l + u, y: l / 2 + 2, dominantBaseline: "middle", fontSize: 11, children: n.label })
37
- ] }, `legend-${t}`);
38
- }
39
103
  export {
40
- W as default,
41
- G as legendDimensions
104
+ N as default
42
105
  };
43
106
  //# sourceMappingURL=visualization.es82.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"visualization.es82.js","sources":["../src/components/Histogram/HistogramLegend.tsx"],"sourcesContent":["import React from 'react';\nimport { Group } from '@visx/group';\nimport { HistogramSeries } from './types';\n\nconst ROW_HEIGHT = 18;\nconst SWATCH = 12;\nconst GAP = 6;\nconst PADDING = 8;\n\ninterface HistogramLegendProps {\n series: HistogramSeries[];\n xMax: number;\n}\n\nexport function legendDimensions(series: HistogramSeries[]) {\n const width = Math.max(...series.map((s) => s.label.length)) * 7 + SWATCH + GAP + PADDING * 2;\n const height = series.length * ROW_HEIGHT + PADDING * 2;\n return { width, height };\n}\n\nconst HistogramLegend = ({ series, xMax }: HistogramLegendProps) => {\n const { width, height } = legendDimensions(series);\n\n return (\n <Group left={xMax - width - 4} top={4}>\n <rect width={width} height={height} fill=\"white\" stroke=\"#d4d4d4\" strokeWidth={1} rx={3} />\n {series.map((s, i) => (\n <Group key={`legend-${i}`} top={PADDING + i * ROW_HEIGHT}>\n <rect x={PADDING} y={2} width={SWATCH} height={SWATCH} fill={s.color} opacity={0.85} rx={2} />\n <text\n x={PADDING + SWATCH + GAP}\n y={SWATCH / 2 + 2}\n dominantBaseline=\"middle\"\n fontSize={11}\n >\n {s.label}\n </text>\n </Group>\n ))}\n </Group>\n );\n};\n\nexport default HistogramLegend;\n"],"names":["ROW_HEIGHT","SWATCH","GAP","PADDING","legendDimensions","series","width","Math","max","map","s","label","length","height","HistogramLegend","t0","$","_c","xMax","t1","t2","t3","jsx","t4","_temp","t5","jsxs","Group","i","color"],"mappings":";;;AAIA,MAAMA,IAAa,IACbC,IAAS,IACTC,IAAM,GACNC,IAAU;AAOT,SAASC,EAAiBC,GAA2B;AACxD,QAAMC,IAAQC,KAAKC,IAAI,GAAGH,EAAOI,IAAKC,CAAAA,MAAMA,EAAEC,MAAMC,MAAM,CAAC,IAAI,IAAIX,IAASC,IAAMC,IAAU,GACtFU,IAASR,EAAOO,SAASZ,IAAaG,IAAU;AACtD,SAAO;AAAA,IAAEG,OAAAA;AAAAA,IAAOO,QAAAA;AAAAA,EAAAA;AACpB;AAEA,MAAMC,IAAkBC,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAAC;AAAA,IAAAZ,QAAAA;AAAAA,IAAAa,MAAAA;AAAAA,EAAAA,IAAAH;AAAsC,MAAAI;AAAA,EAAAH,SAAAX,KACjCc,IAAAf,EAAiBC,CAAM,GAACW,OAAAX,GAAAW,OAAAG,KAAAA,IAAAH,EAAA,CAAA;AAAlD,QAAA;AAAA,IAAAV,OAAAA;AAAAA,IAAAO,QAAAA;AAAAA,EAAAA,IAA0BM,GAGTC,IAAAF,IAAOZ,IAAQ;AAAC,MAAAe;AAAA,EAAAL,EAAA,CAAA,MAAAH,KAAAG,SAAAV,KACzBe,IAAA,gBAAAC,EAAA,QAAA,EAAahB,OAAAA,GAAeO,QAAAA,GAAa,MAAA,SAAe,QAAA,WAAuB,aAAA,GAAO,IAAA,EAAA,CAAC,GAAIG,OAAAH,GAAAG,OAAAV,GAAAU,OAAAK,KAAAA,IAAAL,EAAA,CAAA;AAAA,MAAAO;AAAA,EAAAP,SAAAX,KAC1FkB,IAAAlB,EAAMI,IAAKe,CAYX,GAACR,OAAAX,GAAAW,OAAAO,KAAAA,IAAAP,EAAA,CAAA;AAAA,MAAAS;AAAA,SAAAT,EAAA,CAAA,MAAAI,KAAAJ,SAAAK,KAAAL,EAAA,CAAA,MAAAO,KAdNE,IAAA,gBAAAC,EAACC,GAAA,EAAY,MAAAP,GAAuB,KAAA,GAChCC,UAAAA;AAAAA,IAAAA;AAAAA,IACCE;AAAAA,EAAAA,GAaL,GAAQP,OAAAI,GAAAJ,OAAAK,GAAAL,OAAAO,GAAAP,QAAAS,KAAAA,IAAAT,EAAA,EAAA,GAfRS;AAeQ;AAnBQ,SAAAD,EAAAd,GAAAkB,GAAA;AAAA,SAOR,gBAAAF,EAACC,GAAA,EAA+B,KAAAxB,IAAUyB,IAAI5B,GAC1C,UAAA;AAAA,IAAA,gBAAAsB,EAAA,QAAA,EAASnB,GAAAA,GAAY,MAAUF,OAAAA,GAAgBA,QAAAA,GAAc,MAAAS,EAACmB,OAAiB,SAAA,MAAU,IAAA,GAAC;AAAA,IAC1F,gBAAAP,YACO,GAAAnB,IAAUF,IAASC,GACnB,GAAAD,IAAS,IAAI,GACC,kBAAA,UACP,UAAA,IAETS,YAACC,MAAAA,CACN;AAAA,EAAA,EAAA,GATQ,UAAUiB,CAAC,EAUvB;AAAQ;"}
1
+ {"version":3,"file":"visualization.es82.js","sources":["../src/components/ScatterPlot/minimap.tsx"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { MapProps } from \"./types\";\nimport { CROSSHAIR_DASH, CROSSHAIR_STROKE, CROSSHAIR_STROKE_WIDTH } from \"./Crosshair\";\nimport { useStableCallback } from \"../../hooks\";\n\nconst MINIMAP_SCALE_FACTOR = 0.25;\n// The crosshair is drawn inside the scaled group, so its stroke and dashes shrink with it.\n// Scale them back up so it renders identically to the crosshair on the plot itself.\nconst MINIMAP_CROSSHAIR_STROKE_WIDTH = CROSSHAIR_STROKE_WIDTH / MINIMAP_SCALE_FACTOR;\nconst MINIMAP_CROSSHAIR_DASH = CROSSHAIR_DASH.map((dash) => dash / MINIMAP_SCALE_FACTOR).join(\",\");\n\nconst MiniMap = <T,>({\n miniMap,\n width,\n height,\n pointData,\n xScale,\n yScale,\n zoom,\n crosshair\n}: MapProps<T>) => {\n // The minimap frame is the whole plot area untransformed, so a data coordinate maps onto it\n // through the base scales - no need to undo the current zoom.\n const crosshairX = crosshair ? xScale(crosshair.x) : null;\n const crosshairY = crosshair ? yScale(crosshair.y) : null;\n const frameWidth = width - 100;\n const frameHeight = height - 100;\n\n /**\n * Dragging the window is coalesced to one zoom update per animation frame.\n *\n * This handler sets the transform matrix directly rather than going through zoom.dragMove,\n * so it needs its own coalescing: without it a mouse reporting faster than the browser\n * paints updates a zoom shared by every synced plot on each move, and React eventually\n * warns that the update depth was exceeded.\n *\n * Movement is accumulated rather than replaced: these are deltas, so dropping the moves in\n * between would lose the distance they covered. A pointer moving faster than the frame rate\n * still pans exactly as far as it travelled.\n */\n const frameRef = useRef<number | null>(null);\n const pendingRef = useRef<{ dx: number; dy: number } | null>(null);\n // Touch events carry absolute positions, so a drag delta is the step from the previous one.\n const lastTouchRef = useRef<{ x: number; y: number } | null>(null);\n\n const flushPan = useStableCallback(() => {\n const pending = pendingRef.current;\n pendingRef.current = null;\n if (!pending) return;\n\n zoom.setTransformMatrix({\n ...zoom.transformMatrix,\n translateX: zoom.transformMatrix.translateX - pending.dx / MINIMAP_SCALE_FACTOR * zoom.transformMatrix.scaleX,\n translateY: zoom.transformMatrix.translateY - pending.dy / MINIMAP_SCALE_FACTOR * zoom.transformMatrix.scaleY,\n });\n });\n\n const accumulate = (dx: number, dy: number) => {\n const pending = pendingRef.current ?? { dx: 0, dy: 0 };\n pending.dx += dx;\n pending.dy += dy;\n pendingRef.current = pending;\n };\n\n const scheduleFrame = () => {\n if (frameRef.current !== null) return;\n frameRef.current = requestAnimationFrame(() => {\n frameRef.current = null;\n flushPan();\n });\n };\n\n // Apply whatever is still queued before the gesture closes, so the window lands where the\n // pointer left it rather than a frame behind.\n const endPan = () => {\n if (frameRef.current !== null) {\n cancelAnimationFrame(frameRef.current);\n frameRef.current = null;\n }\n flushPan();\n lastTouchRef.current = null;\n zoom.dragEnd();\n };\n\n useEffect(() => () => {\n if (frameRef.current !== null) cancelAnimationFrame(frameRef.current);\n }, []);\n\n return (\n <div\n style={{\n position: 'absolute',\n bottom: miniMap.position ? miniMap.position.bottom : 10,\n right: miniMap.position ? miniMap.position.right : 10,\n }}\n >\n {/* Canvas for rendering points on minimap */}\n <canvas\n width={frameWidth * MINIMAP_SCALE_FACTOR}\n height={frameHeight * MINIMAP_SCALE_FACTOR}\n ref={(canvas) => {\n if (canvas) {\n const context = canvas.getContext('2d');\n const scaleFactor = MINIMAP_SCALE_FACTOR;\n const scaledWidth = frameWidth * scaleFactor;\n const scaledHeight = frameHeight * scaleFactor;\n if (context) {\n // Clear canvas\n context.clearRect(0, 0, canvas.width, canvas.height);\n\n // Draw background and outline\n context.fillStyle = 'white';\n context.fillRect(0, 0, scaledWidth, scaledHeight);\n context.strokeStyle = 'grey';\n context.lineWidth = 4;\n context.strokeRect(0, 0, scaledWidth, scaledHeight);\n\n // Draw points\n pointData.forEach(point => {\n const transformedX = xScale(point.x) * scaleFactor;\n const transformedY = yScale(point.y) * scaleFactor;\n context.beginPath();\n context.arc(transformedX, transformedY, 3 * scaleFactor, 0, Math.PI * 2);\n context.fillStyle = point.color ?? \"black\";\n context.fill();\n });\n }\n }\n }}\n style={{ display: 'block' }}\n />\n\n {/* SVG for rendering the zoom window */}\n <svg\n width={frameWidth * MINIMAP_SCALE_FACTOR}\n height={frameHeight * MINIMAP_SCALE_FACTOR}\n style={{ position: 'absolute', top: 0, left: 0 }}\n >\n <g transform={`scale(${MINIMAP_SCALE_FACTOR})`}>\n <rect\n width={frameWidth}\n height={frameHeight}\n fill=\"#0d0f98\"\n fillOpacity={0.2}\n stroke=\"#0d0f98\"\n strokeWidth={4}\n rx={8}\n transform={zoom.toStringInvert()}\n //drag functionality for window, must invert zoom and take the scale into account\n style={{ cursor: zoom.isDragging ? \"grabbing\" : \"grab\", touchAction: \"none\" }}\n onMouseDown={zoom.dragStart}\n onMouseUp={endPan}\n onMouseMove={(event) => {\n if (zoom.isDragging) {\n accumulate(event.movementX, event.movementY);\n scheduleFrame();\n }\n }}\n onMouseLeave={endPan}\n onTouchStart={(event) => {\n const touch = event.touches[0];\n // Seed the previous position so the first move measures a step from\n // where the finger landed, not from the origin.\n if (touch) lastTouchRef.current = { x: touch.clientX, y: touch.clientY };\n zoom.dragStart(event);\n }}\n onTouchEnd={endPan}\n onTouchCancel={endPan}\n onTouchMove={(event) => {\n // Only a single finger pans; a second one is a pinch, which belongs\n // to the plot's own zoom rather than to this window.\n if (!zoom.isDragging || event.touches.length !== 1) return;\n const touch = event.touches[0];\n const last = lastTouchRef.current;\n lastTouchRef.current = { x: touch.clientX, y: touch.clientY };\n if (!last) return;\n accumulate(touch.clientX - last.x, touch.clientY - last.y);\n scheduleFrame();\n }}\n />\n {crosshairY !== null && crosshairY >= 0 && crosshairY <= frameHeight && (\n <line\n x1={0}\n x2={frameWidth}\n y1={crosshairY}\n y2={crosshairY}\n stroke={CROSSHAIR_STROKE}\n strokeWidth={MINIMAP_CROSSHAIR_STROKE_WIDTH}\n strokeDasharray={MINIMAP_CROSSHAIR_DASH}\n pointerEvents=\"none\"\n />\n )}\n {crosshairX !== null && crosshairX >= 0 && crosshairX <= frameWidth && (\n <line\n x1={crosshairX}\n x2={crosshairX}\n y1={0}\n y2={frameHeight}\n stroke={CROSSHAIR_STROKE}\n strokeWidth={MINIMAP_CROSSHAIR_STROKE_WIDTH}\n strokeDasharray={MINIMAP_CROSSHAIR_DASH}\n pointerEvents=\"none\"\n />\n )}\n </g>\n </svg>\n </div>\n );\n};\n\nexport default MiniMap;"],"names":["MINIMAP_SCALE_FACTOR","MINIMAP_CROSSHAIR_STROKE_WIDTH","CROSSHAIR_STROKE_WIDTH","MINIMAP_CROSSHAIR_DASH","CROSSHAIR_DASH","map","dash","join","MiniMap","miniMap","width","height","pointData","xScale","yScale","zoom","crosshair","crosshairX","x","crosshairY","y","frameWidth","frameHeight","frameRef","useRef","pendingRef","lastTouchRef","flushPan","useStableCallback","pending","current","setTransformMatrix","transformMatrix","translateX","dx","scaleX","translateY","dy","scaleY","accumulate","scheduleFrame","requestAnimationFrame","endPan","cancelAnimationFrame","dragEnd","useEffect","jsxs","position","bottom","right","jsx","canvas","context","getContext","scaleFactor","scaledWidth","scaledHeight","clearRect","fillStyle","fillRect","strokeStyle","lineWidth","strokeRect","forEach","point","transformedX","transformedY","beginPath","arc","Math","PI","color","fill","display","top","left","toStringInvert","cursor","isDragging","touchAction","dragStart","event","movementX","movementY","touch","touches","clientX","clientY","length","last","CROSSHAIR_STROKE"],"mappings":";;;;AAKA,MAAMA,IAAuB,MAGvBC,IAAiCC,IAAyBF,GAC1DG,IAAyBC,EAAeC,IAAKC,CAAAA,MAASA,IAAON,CAAoB,EAAEO,KAAK,GAAG,GAE3FC,IAAU,CAAK;AAAA,EACjBC,SAAAA;AAAAA,EACAC,OAAAA;AAAAA,EACAC,QAAAA;AAAAA,EACAC,WAAAA;AAAAA,EACAC,QAAAA;AAAAA,EACAC,QAAAA;AAAAA,EACAC,MAAAA;AAAAA,EACAC,WAAAA;AACS,MAAM;AAGf,QAAMC,IAAaD,IAAYH,EAAOG,EAAUE,CAAC,IAAI,MAC/CC,IAAaH,IAAYF,EAAOE,EAAUI,CAAC,IAAI,MAC/CC,IAAaX,IAAQ,KACrBY,IAAcX,IAAS,KAcvBY,IAAWC,EAAsB,IAAI,GACrCC,IAAaD,EAA0C,IAAI,GAE3DE,IAAeF,EAAwC,IAAI,GAE3DG,IAAWC,EAAkB,MAAM;AACrC,UAAMC,IAAUJ,EAAWK;AAE3B,IADAL,EAAWK,UAAU,MAChBD,KAELd,EAAKgB,mBAAmB;AAAA,MACpB,GAAGhB,EAAKiB;AAAAA,MACRC,YAAYlB,EAAKiB,gBAAgBC,aAAaJ,EAAQK,KAAKlC,IAAuBe,EAAKiB,gBAAgBG;AAAAA,MACvGC,YAAYrB,EAAKiB,gBAAgBI,aAAaP,EAAQQ,KAAKrC,IAAuBe,EAAKiB,gBAAgBM;AAAAA,IAAAA,CAC1G;AAAA,EACL,CAAC,GAEKC,IAAaA,CAACL,GAAYG,MAAe;AAC3C,UAAMR,IAAUJ,EAAWK,WAAW;AAAA,MAAEI,IAAI;AAAA,MAAGG,IAAI;AAAA,IAAA;AACnDR,IAAAA,EAAQK,MAAMA,GACdL,EAAQQ,MAAMA,GACdZ,EAAWK,UAAUD;AAAAA,EACzB,GAEMW,IAAgBA,MAAM;AACxB,IAAIjB,EAASO,YAAY,SACzBP,EAASO,UAAUW,sBAAsB,MAAM;AAC3ClB,MAAAA,EAASO,UAAU,MACnBH,EAAAA;AAAAA,IACJ,CAAC;AAAA,EACL,GAIMe,IAASA,MAAM;AACjB,IAAInB,EAASO,YAAY,SACrBa,qBAAqBpB,EAASO,OAAO,GACrCP,EAASO,UAAU,OAEvBH,EAAAA,GACAD,EAAaI,UAAU,MACvBf,EAAK6B,QAAAA;AAAAA,EACT;AAEAC,SAAAA,EAAU,MAAM,MAAM;AAClB,IAAItB,EAASO,YAAY,QAAMa,qBAAqBpB,EAASO,OAAO;AAAA,EACxE,GAAG,CAAA,CAAE,GAGD,gBAAAgB,EAAC,SACG,OAAO;AAAA,IACHC,UAAU;AAAA,IACVC,QAAQvC,EAAQsC,WAAWtC,EAAQsC,SAASC,SAAS;AAAA,IACrDC,OAAOxC,EAAQsC,WAAWtC,EAAQsC,SAASE,QAAQ;AAAA,EAAA,GAIvD,UAAA;AAAA,IAAA,gBAAAC,EAAC,UAAA,EACG,OAAO7B,IAAarB,GACpB,QAAQsB,IAActB,GACtB,KAAMmD,CAAAA,MAAW;AACb,UAAIA,GAAQ;AACR,cAAMC,IAAUD,EAAOE,WAAW,IAAI,GAChCC,IAActD,GACduD,IAAclC,IAAaiC,GAC3BE,IAAelC,IAAcgC;AACnC,QAAIF,MAEAA,EAAQK,UAAU,GAAG,GAAGN,EAAOzC,OAAOyC,EAAOxC,MAAM,GAGnDyC,EAAQM,YAAY,SACpBN,EAAQO,SAAS,GAAG,GAAGJ,GAAaC,CAAY,GAChDJ,EAAQQ,cAAc,QACtBR,EAAQS,YAAY,GACpBT,EAAQU,WAAW,GAAG,GAAGP,GAAaC,CAAY,GAGlD5C,EAAUmD,QAAQC,CAAAA,MAAS;AACvB,gBAAMC,IAAepD,EAAOmD,EAAM9C,CAAC,IAAIoC,GACjCY,IAAepD,EAAOkD,EAAM5C,CAAC,IAAIkC;AACvCF,UAAAA,EAAQe,UAAAA,GACRf,EAAQgB,IAAIH,GAAcC,GAAc,IAAIZ,GAAa,GAAGe,KAAKC,KAAK,CAAC,GACvElB,EAAQM,YAAYM,EAAMO,SAAS,SACnCnB,EAAQoB,KAAAA;AAAAA,QACZ,CAAC;AAAA,MAET;AAAA,IACJ,GACA,OAAO;AAAA,MAAEC,SAAS;AAAA,IAAA,GAAU;AAAA,IAIhC,gBAAAvB,EAAC,SACG,OAAO7B,IAAarB,GACpB,QAAQsB,IAActB,GACtB,OAAO;AAAA,MAAE+C,UAAU;AAAA,MAAY2B,KAAK;AAAA,MAAGC,MAAM;AAAA,IAAA,GAE7C,UAAA,gBAAA7B,EAAC,KAAA,EAAE,WAAW,SAAS9C,CAAoB,KACvC,UAAA;AAAA,MAAA,gBAAAkD;AAAA,QAAC;AAAA,QAAA;AAAA,UACG,OAAO7B;AAAAA,UACP,QAAQC;AAAAA,UACR,MAAK;AAAA,UACL,aAAa;AAAA,UACb,QAAO;AAAA,UACP,aAAa;AAAA,UACb,IAAI;AAAA,UACJ,WAAWP,EAAK6D,eAAAA;AAAAA,UAEhB,OAAO;AAAA,YAAEC,QAAQ9D,EAAK+D,aAAa,aAAa;AAAA,YAAQC,aAAa;AAAA,UAAA;AAAA,UACrE,aAAahE,EAAKiE;AAAAA,UAClB,WAAWtC;AAAAA,UACX,aAAcuC,CAAAA,MAAU;AACpB,YAAIlE,EAAK+D,eACLvC,EAAW0C,EAAMC,WAAWD,EAAME,SAAS,GAC3C3C,EAAAA;AAAAA,UAER;AAAA,UACA,cAAcE;AAAAA,UACd,cAAeuC,CAAAA,MAAU;AACrB,kBAAMG,IAAQH,EAAMI,QAAQ,CAAC;AAG7B,YAAID,QAAoBtD,UAAU;AAAA,cAAEZ,GAAGkE,EAAME;AAAAA,cAASlE,GAAGgE,EAAMG;AAAAA,YAAAA,IAC/DxE,EAAKiE,UAAUC,CAAK;AAAA,UACxB;AAAA,UACA,YAAYvC;AAAAA,UACZ,eAAeA;AAAAA,UACf,aAAcuC,CAAAA,MAAU;AAGpB,gBAAI,CAAClE,EAAK+D,cAAcG,EAAMI,QAAQG,WAAW,EAAG;AACpD,kBAAMJ,IAAQH,EAAMI,QAAQ,CAAC,GACvBI,IAAO/D,EAAaI;AAE1B,YADAJ,EAAaI,UAAU;AAAA,cAAEZ,GAAGkE,EAAME;AAAAA,cAASlE,GAAGgE,EAAMG;AAAAA,YAAAA,GAC/CE,MACLlD,EAAW6C,EAAME,UAAUG,EAAKvE,GAAGkE,EAAMG,UAAUE,EAAKrE,CAAC,GACzDoB,EAAAA;AAAAA,UACJ;AAAA,QAAA;AAAA,MAAA;AAAA,MAEHrB,MAAe,QAAQA,KAAc,KAAKA,KAAcG,KACrD,gBAAA4B,EAAC,QAAA,EACG,IAAI,GACJ,IAAI7B,GACJ,IAAIF,GACJ,IAAIA,GACJ,QAAQuE,GACR,aAAazF,GACb,iBAAiBE,GACjB,eAAc,OAAA,CAAM;AAAA,MAG3Bc,MAAe,QAAQA,KAAc,KAAKA,KAAcI,KACrD,gBAAA6B,EAAC,QAAA,EACG,IAAIjC,GACJ,IAAIA,GACJ,IAAI,GACJ,IAAIK,GACJ,QAAQoE,GACR,aAAazF,GACb,iBAAiBE,GACjB,eAAc,OAAA,CAAM;AAAA,IAAA,EAAA,CAGhC,EAAA,CACJ;AAAA,EAAA,GACJ;AAER;"}
@@ -1,84 +1,30 @@
1
- import { jsxs as n, jsx as c } from "react/jsx-runtime";
2
- import { c as b } from "react/compiler-runtime";
3
- import { useState as S, useImperativeHandle as v } from "react";
4
- import _ from "./visualization.es22.js";
5
- const H = (t) => {
6
- const e = b(10), {
7
- multiSeries: d,
8
- tooltipBody: i,
9
- ref: h
10
- } = t;
11
- let r;
12
- e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (r = {
13
- open: !1
14
- }, e[0] = r) : r = e[0];
15
- const [p, u] = S(r);
16
- let s;
17
- if (e[1] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (s = () => ({
18
- show: (g, x, y) => u({
19
- open: !0,
20
- data: g,
21
- left: x,
22
- top: y
23
- }),
24
- hide: () => u(j)
25
- }), e[1] = s) : s = e[1], v(h, s), !p.open || !p.data)
26
- return null;
27
- const {
28
- data: o,
29
- left: f,
30
- top: m
31
- } = p;
32
- let l;
33
- e[2] !== o || e[3] !== d || e[4] !== i ? (l = i ? i(o) : /* @__PURE__ */ n("div", { style: {
34
- fontSize: 12
35
- }, children: [
36
- /* @__PURE__ */ n("div", { children: [
37
- /* @__PURE__ */ c("strong", { children: "Range:" }),
38
- " ",
39
- o.x0.toFixed(2),
40
- ", ",
41
- o.x1.toFixed(2)
42
- ] }),
43
- d ? o.series.map(k) : /* @__PURE__ */ n("div", { children: [
44
- /* @__PURE__ */ c("strong", { children: "Count:" }),
45
- " ",
46
- o.count
47
- ] })
48
- ] }), e[2] = o, e[3] = d, e[4] = i, e[5] = l) : l = e[5];
49
- let a;
50
- return e[6] !== f || e[7] !== l || e[8] !== m ? (a = /* @__PURE__ */ c(_, { left: f, top: m, children: l }), e[6] = f, e[7] = l, e[8] = m, e[9] = a) : a = e[9], a;
1
+ import { jsx as i } from "react/jsx-runtime";
2
+ import { c as n } from "react/compiler-runtime";
3
+ import m from "./visualization.es78.js";
4
+ const f = {
5
+ scaleX: 1,
6
+ scaleY: 1,
7
+ translateX: 0,
8
+ translateY: 0,
9
+ skewX: 0,
10
+ skewY: 0
11
+ }, M = {
12
+ scaleXMin: 1 / 2,
13
+ scaleXMax: 10,
14
+ scaleYMin: 1 / 2,
15
+ scaleYMax: 10
16
+ }, h = m, d = (r) => {
17
+ const t = n(6), {
18
+ width: s,
19
+ height: a,
20
+ children: l
21
+ } = r;
22
+ let e;
23
+ t[0] !== l ? (e = (c) => l(c), t[0] = l, t[1] = e) : e = t[1];
24
+ let o;
25
+ return t[2] !== a || t[3] !== e || t[4] !== s ? (o = /* @__PURE__ */ i(h, { width: s, height: a, ...M, initialTransformMatrix: f, children: e }), t[2] = a, t[3] = e, t[4] = s, t[5] = o) : o = t[5], o;
51
26
  };
52
- function j(t) {
53
- return {
54
- ...t,
55
- open: !1
56
- };
57
- }
58
- function k(t) {
59
- return /* @__PURE__ */ n("div", { style: {
60
- display: "flex",
61
- alignItems: "center",
62
- gap: 4
63
- }, children: [
64
- /* @__PURE__ */ c("span", { style: {
65
- width: 8,
66
- height: 8,
67
- borderRadius: 2,
68
- backgroundColor: t.color,
69
- display: "inline-block"
70
- } }),
71
- /* @__PURE__ */ n("span", { children: [
72
- /* @__PURE__ */ n("strong", { children: [
73
- t.label,
74
- ":"
75
- ] }),
76
- " ",
77
- t.count
78
- ] })
79
- ] }, t.label);
80
- }
81
27
  export {
82
- H as default
28
+ d as default
83
29
  };
84
30
  //# sourceMappingURL=visualization.es83.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"visualization.es83.js","sources":["../src/components/Histogram/HistogramTooltip.tsx"],"sourcesContent":["import React, { useImperativeHandle, useState } from 'react';\nimport { TooltipWithBounds } from '@visx/tooltip';\nimport { HistogramBin } from './types';\n\nexport interface HistogramTooltipHandle {\n show: (bin: HistogramBin, left: number, top: number) => void;\n hide: () => void;\n}\n\ninterface HistogramTooltipProps {\n multiSeries: boolean;\n tooltipBody?: (bin: HistogramBin) => React.ReactElement;\n ref: React.Ref<HistogramTooltipHandle>;\n}\n\nconst HistogramTooltip = ({ multiSeries, tooltipBody, ref }: HistogramTooltipProps) => {\n const [state, setState] = useState<{ open: boolean; data?: HistogramBin; left?: number; top?: number }>({ open: false });\n\n useImperativeHandle(ref, () => ({\n show: (bin, left, top) => setState({ open: true, data: bin, left, top }),\n hide: () => setState((s) => ({ ...s, open: false })),\n }));\n\n if (!state.open || !state.data) return null;\n\n const { data, left, top } = state;\n\n return (\n <TooltipWithBounds left={left} top={top}>\n {tooltipBody ? (\n tooltipBody(data)\n ) : (\n <div style={{ fontSize: 12 }}>\n <div>\n <strong>Range:</strong> {data.x0.toFixed(2)}, {data.x1.toFixed(2)}\n </div>\n {multiSeries ? (\n data.series.map((s) => (\n <div key={s.label} style={{ display: 'flex', alignItems: 'center', gap: 4 }}>\n <span style={{ width: 8, height: 8, borderRadius: 2, backgroundColor: s.color, display: 'inline-block' }} />\n <span><strong>{s.label}:</strong> {s.count}</span>\n </div>\n ))\n ) : (\n <div><strong>Count:</strong> {data.count}</div>\n )}\n </div>\n )}\n </TooltipWithBounds>\n );\n};\n\nexport default HistogramTooltip;\n"],"names":["HistogramTooltip","t0","$","_c","multiSeries","tooltipBody","ref","t1","Symbol","for","open","state","setState","useState","t2","show","bin","left","top","data","hide","_temp","useImperativeHandle","left_0","top_0","t3","jsxs","fontSize","jsx","x0","toFixed","x1","series","map","_temp2","count","t4","TooltipWithBounds","s","s_0","display","alignItems","gap","width","height","borderRadius","backgroundColor","color","label"],"mappings":"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"}
1
+ {"version":3,"file":"visualization.es83.js","sources":["../src/components/ScatterPlot/PlotZoom.tsx"],"sourcesContent":["import React, { ReactElement } from 'react';\nimport { Zoom as VisxZoom, ZoomProps } from '@visx/zoom';\nimport { ZoomType } from './types';\n\n/**\n * Shared by every plot that creates a zoom, so a plot driving its own zoom and a plot driving a\n * shared one behave identically.\n */\nconst initialTransformMatrix = {\n scaleX: 1,\n scaleY: 1,\n translateX: 0,\n translateY: 0,\n skewX: 0,\n skewY: 0,\n};\n\nconst ZOOM_SCALE_LIMITS = {\n scaleXMin: 1 / 2,\n scaleXMax: 10,\n scaleYMin: 1 / 2,\n scaleYMax: 10,\n};\n\n/**\n * Hacky workaround for complex type compatability issues. Hopefully this will fix itself when ugrading to React 19 - Jonathan 12/11/24\n * @todo remove this when possible\n */\nconst Zoom = VisxZoom as unknown as React.FC<ZoomProps<React.ReactElement>>;\n\ntype PlotZoomProps = {\n /**\n * Size of the zoomed area. Only used by visx to pick a default anchor point for operations\n * that have none of their own; the plots always pass an explicit one.\n */\n width: number;\n height: number;\n children: (zoom: ZoomType) => ReactElement;\n};\n\nconst PlotZoom = ({ width, height, children }: PlotZoomProps) => (\n <Zoom\n width={width}\n height={height}\n {...ZOOM_SCALE_LIMITS}\n initialTransformMatrix={initialTransformMatrix}\n >\n {(zoom) => children(zoom as ZoomType)}\n </Zoom>\n);\n\nexport default PlotZoom;\n"],"names":["initialTransformMatrix","scaleX","scaleY","translateX","translateY","skewX","skewY","ZOOM_SCALE_LIMITS","scaleXMin","scaleXMax","scaleYMin","scaleYMax","Zoom","VisxZoom","PlotZoom","t0","$","_c","width","height","children","t1","zoom","t2"],"mappings":";;;AAQA,MAAMA,IAAyB;AAAA,EAC3BC,QAAQ;AAAA,EACRC,QAAQ;AAAA,EACRC,YAAY;AAAA,EACZC,YAAY;AAAA,EACZC,OAAO;AAAA,EACPC,OAAO;AACX,GAEMC,IAAoB;AAAA,EACtBC,WAAW,IAAI;AAAA,EACfC,WAAW;AAAA,EACXC,WAAW,IAAI;AAAA,EACfC,WAAW;AACf,GAMMC,IAAOC,GAYPC,IAAWC,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GAAC;AAAA,IAAAC,OAAAA;AAAAA,IAAAC,QAAAA;AAAAA,IAAAC,UAAAA;AAAAA,EAAAA,IAAAL;AAA0C,MAAAM;AAAA,EAAAL,SAAAI,KAOnDC,IAAAC,CAAAA,MAAUF,EAASE,CAAgB,GAACN,OAAAI,GAAAJ,OAAAK,KAAAA,IAAAL,EAAA,CAAA;AAAA,MAAAO;AAAA,SAAAP,EAAA,CAAA,MAAAG,KAAAH,SAAAK,KAAAL,EAAA,CAAA,MAAAE,KANzCK,sBAACX,GAAA,EACUM,OAAAA,GACCC,QAAAA,MACJZ,GACoBP,wBAAAA,GAEvBqB,UAAAA,GACL,GAAOL,OAAAG,GAAAH,OAAAK,GAAAL,OAAAE,GAAAF,OAAAO,KAAAA,IAAAP,EAAA,CAAA,GAPPO;AAOO;"}
@@ -1,49 +1,26 @@
1
- import { jsx as g } from "react/jsx-runtime";
2
- import { memo as X, useState as v } from "react";
3
- import { getAnimationProps as w } from "./visualization.es31.js";
4
- import { motion as x } from "./visualization.es45.js";
5
- import B from "./visualization.es94.js";
6
- const E = X(({
7
- bin: r,
8
- x: p,
9
- barWidth: l,
10
- yScale: n,
11
- animationType: c,
12
- binIndex: f,
13
- svgRef: i,
14
- tooltipRef: s,
15
- onBarClicked: u
16
- }) => {
17
- const [h, m] = v(!1), d = c ? x.g : "g", M = w(c, f);
18
- let a = 0;
19
- const Y = r.series.map((t, e) => {
20
- const o = a;
21
- return a += t.count, {
22
- s: t,
23
- si: e,
24
- segY: n(o + t.count),
25
- segHeight: Math.max(n(o) - n(o + t.count), 0)
26
- };
27
- });
28
- return /* @__PURE__ */ g(d, { ...M, onMouseEnter: (t) => {
29
- m(!0);
30
- const e = i.current?.getBoundingClientRect();
31
- s.current?.show(r, e ? t.clientX - e.left + 10 : t.pageX, e ? t.clientY - e.top : t.pageY);
32
- }, onMouseMove: (t) => {
33
- const e = i.current?.getBoundingClientRect();
34
- s.current?.show(r, e ? t.clientX - e.left + 10 : t.pageX, e ? t.clientY - e.top : t.pageY);
35
- }, onMouseLeave: () => {
36
- m(!1), s.current?.hide();
37
- }, children: Y.map(({
38
- s: t,
39
- si: e,
40
- segY: o,
41
- segHeight: H
42
- }) => /* @__PURE__ */ g(B, { x: p, y: o, width: l, height: H, fill: t.color, opacity: 0.85, stroke: h ? "#000000" : "none", style: {
43
- cursor: u ? "pointer" : "default"
44
- }, onClick: () => u?.(r) }, `seg-${e}`)) });
45
- });
1
+ import { jsx as a, jsxs as c } from "react/jsx-runtime";
2
+ import { c as n } from "react/compiler-runtime";
3
+ const m = (l) => {
4
+ const t = n(5), {
5
+ tooltipBody: e,
6
+ tooltipData: i
7
+ } = l;
8
+ let r;
9
+ t[0] !== e || t[1] !== i ? (r = e ? e(i) : /* @__PURE__ */ a("div", { children: i.metaData && Object.entries(i.metaData).map(s) }), t[0] = e, t[1] = i, t[2] = r) : r = t[2];
10
+ let o;
11
+ return t[3] !== r ? (o = /* @__PURE__ */ a("div", { children: r }), t[3] = r, t[4] = o) : o = t[4], o;
12
+ };
13
+ function s(l) {
14
+ const [t, e] = l;
15
+ return /* @__PURE__ */ c("div", { children: [
16
+ /* @__PURE__ */ c("strong", { children: [
17
+ t.charAt(0).toUpperCase() + t.slice(1),
18
+ ": "
19
+ ] }),
20
+ typeof e == "string" ? e.length > 45 ? `${e.replace(/_/g, " ").slice(0, 45)}...` : e.replace(/_/g, " ") : String(e)
21
+ ] }, t);
22
+ }
46
23
  export {
47
- E as default
24
+ m as default
48
25
  };
49
26
  //# sourceMappingURL=visualization.es84.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"visualization.es84.js","sources":["../src/components/Histogram/HistogramBar.tsx"],"sourcesContent":["import React, { memo, useState } from 'react';\nimport { Bar } from '@visx/shape';\nimport { motion } from 'framer-motion';\nimport { getAnimationProps, AnimationType } from '../../utility';\nimport { HistogramBin } from './types';\nimport { HistogramTooltipHandle } from './HistogramTooltip';\n\nexport interface HistogramBarProps {\n bin: HistogramBin;\n x: number;\n barWidth: number;\n yScale: (v: number) => number;\n animationType?: AnimationType;\n binIndex: number;\n svgRef: React.RefObject<SVGSVGElement | null>;\n tooltipRef: React.RefObject<HistogramTooltipHandle | null>;\n onBarClicked?: (bin: HistogramBin) => void;\n}\n\n//memoize so that entire chart doesnt re-render on hover, just the hovered bar\nconst HistogramBar = memo(({ bin, x, barWidth, yScale, animationType, binIndex, svgRef, tooltipRef, onBarClicked }: HistogramBarProps) => {\n const [isHovered, setIsHovered] = useState(false);\n\n const Wrapper = animationType ? motion.g : 'g';\n const animProps = getAnimationProps(animationType, binIndex);\n\n let totCount = 0;\n const segments = bin.series.map((s, si) => {\n const start = totCount;\n totCount += s.count;\n return { s, si, segY: yScale(start + s.count), segHeight: Math.max(yScale(start) - yScale(start + s.count), 0) };\n });\n\n return (\n <Wrapper\n {...animProps}\n onMouseEnter={(e: React.MouseEvent) => {\n setIsHovered(true);\n const rect = svgRef.current?.getBoundingClientRect();\n tooltipRef.current?.show(bin, rect ? e.clientX - rect.left + 10 : e.pageX, rect ? e.clientY - rect.top : e.pageY);\n }}\n onMouseMove={(e: React.MouseEvent) => {\n const rect = svgRef.current?.getBoundingClientRect();\n tooltipRef.current?.show(bin, rect ? e.clientX - rect.left + 10 : e.pageX, rect ? e.clientY - rect.top : e.pageY);\n }}\n onMouseLeave={() => {\n setIsHovered(false);\n tooltipRef.current?.hide();\n }}\n >\n {segments.map(({ s, si, segY, segHeight }) => (\n <Bar\n key={`seg-${si}`}\n x={x}\n y={segY}\n width={barWidth}\n height={segHeight}\n fill={s.color}\n opacity={0.85}\n stroke={isHovered ? '#000000' : 'none'}\n style={{ cursor: onBarClicked ? 'pointer' : 'default' }}\n onClick={() => onBarClicked?.(bin)}\n />\n ))}\n </Wrapper>\n );\n});\n\nexport default HistogramBar;\n"],"names":["HistogramBar","memo","bin","x","barWidth","yScale","animationType","binIndex","svgRef","tooltipRef","onBarClicked","isHovered","setIsHovered","useState","Wrapper","motion","g","animProps","getAnimationProps","totCount","segments","series","map","s","si","start","count","segY","segHeight","Math","max","e","rect","current","getBoundingClientRect","show","clientX","left","pageX","clientY","top","pageY","hide","jsx","Bar","color","cursor"],"mappings":";;;;;AAoBA,MAAMA,IAAeC,EAAK,CAAC;AAAA,EAAEC,KAAAA;AAAAA,EAAKC,GAAAA;AAAAA,EAAGC,UAAAA;AAAAA,EAAUC,QAAAA;AAAAA,EAAQC,eAAAA;AAAAA,EAAeC,UAAAA;AAAAA,EAAUC,QAAAA;AAAAA,EAAQC,YAAAA;AAAAA,EAAYC,cAAAA;AAAgC,MAAM;AACtI,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAE1CC,IAAUR,IAAgBS,EAAOC,IAAI,KACrCC,IAAYC,EAAkBZ,GAAeC,CAAQ;AAE3D,MAAIY,IAAW;AACf,QAAMC,IAAWlB,EAAImB,OAAOC,IAAI,CAACC,GAAGC,MAAO;AACvC,UAAMC,IAAQN;AACdA,WAAAA,KAAYI,EAAEG,OACP;AAAA,MAAEH,GAAAA;AAAAA,MAAGC,IAAAA;AAAAA,MAAIG,MAAMtB,EAAOoB,IAAQF,EAAEG,KAAK;AAAA,MAAGE,WAAWC,KAAKC,IAAIzB,EAAOoB,CAAK,IAAIpB,EAAOoB,IAAQF,EAAEG,KAAK,GAAG,CAAC;AAAA,IAAA;AAAA,EACjH,CAAC;AAED,2BACKZ,GAAA,EACG,GAAIG,GACJ,cAAc,CAACc,MAAwB;AACnCnB,IAAAA,EAAa,EAAI;AACjB,UAAMoB,IAAOxB,EAAOyB,SAASC,sBAAAA;AAC7BzB,IAAAA,EAAWwB,SAASE,KAAKjC,GAAK8B,IAAOD,EAAEK,UAAUJ,EAAKK,OAAO,KAAKN,EAAEO,OAAON,IAAOD,EAAEQ,UAAUP,EAAKQ,MAAMT,EAAEU,KAAK;AAAA,EACpH,GACA,aAAa,CAACV,MAAwB;AAClC,UAAMC,IAAOxB,EAAOyB,SAASC,sBAAAA;AAC7BzB,IAAAA,EAAWwB,SAASE,KAAKjC,GAAK8B,IAAOD,EAAEK,UAAUJ,EAAKK,OAAO,KAAKN,EAAEO,OAAON,IAAOD,EAAEQ,UAAUP,EAAKQ,MAAMT,EAAEU,KAAK;AAAA,EACpH,GACA,cAAc,MAAM;AAChB7B,IAAAA,EAAa,EAAK,GAClBH,EAAWwB,SAASS,KAAAA;AAAAA,EACxB,GAECtB,UAAAA,EAASE,IAAI,CAAC;AAAA,IAAEC,GAAAA;AAAAA,IAAGC,IAAAA;AAAAA,IAAIG,MAAAA;AAAAA,IAAMC,WAAAA;AAAAA,EAAAA,MAC1B,gBAAAe,EAACC,GAAA,EAEG,GAAAzC,GACA,GAAGwB,GACH,OAAOvB,GACP,QAAQwB,GACR,MAAML,EAAEsB,OACR,SAAS,MACT,QAAQlC,IAAY,YAAY,QAChC,OAAO;AAAA,IAAEmC,QAAQpC,IAAe,YAAY;AAAA,EAAA,GAC5C,SAAS,MAAMA,IAAeR,CAAG,KAT5B,OAAOsB,CAAE,EASqB,CAE1C,GACL;AAER,CAAC;"}
1
+ {"version":3,"file":"visualization.es84.js","sources":["../src/components/ScatterPlot/tooltip.tsx"],"sourcesContent":["import { TooltipProps } from \"./types\";\n\nconst ScatterTooltip = <T,>({\n tooltipBody,\n tooltipData\n}: TooltipProps<T>) => {\n return (\n <div>\n {tooltipBody ? tooltipBody(tooltipData) : (\n <div>\n {tooltipData.metaData && Object.entries(tooltipData.metaData).map(([key, value]) => (\n <div key={key}>\n <strong>{key.charAt(0).toUpperCase() + key.slice(1)}: </strong>\n {typeof value === 'string'\n ? (value.length > 45\n ? `${value.replace(/_/g, \" \").slice(0, 45)}...`\n : value.replace(/_/g, \" \"))\n : String(value)}\n </div>\n ))}\n </div>\n )}\n </div>\n );\n}\n\nexport default ScatterTooltip;"],"names":["ScatterTooltip","t0","$","_c","tooltipBody","tooltipData","t1","metaData","Object","entries","map","_temp","t2","key","value","jsxs","charAt","toUpperCase","slice","length","replace","String"],"mappings":";;AAEA,MAAMA,IAAiBC,CAAAA,MAAA;AAAA,QAAAC,IAAAC,EAAA,CAAA,GAAK;AAAA,IAAAC,aAAAA;AAAAA,IAAAC,aAAAA;AAAAA,EAAAA,IAAAJ;AAGV,MAAAK;AAAA,EAAAJ,EAAA,CAAA,MAAAE,KAAAF,SAAAG,KAGLC,IAAAF,IAAcA,EAAYC,CAa3B,sBAZI,OAAA,EACKA,UAAAA,EAAWE,YAAaC,OAAMC,QAASJ,EAAWE,QAAS,EAACG,IAAKC,CASjE,GACL,GACHT,OAAAE,GAAAF,OAAAG,GAAAH,OAAAI,KAAAA,IAAAJ,EAAA,CAAA;AAAA,MAAAU;AAAA,SAAAV,SAAAI,KAdLM,+BACKN,UAAAA,EAAAA,CAcL,GAAMJ,OAAAI,GAAAJ,OAAAU,KAAAA,IAAAV,EAAA,CAAA,GAfNU;AAeM;AApBS,SAAAD,EAAAV,GAAA;AAQgE,QAAA,CAAAY,GAAAC,CAAA,IAAAb;AAAY,2BAC3E,OAAA,EACI,UAAA;AAAA,IAAA,gBAAAc,EAAA,UAAA,EAASF,UAAAA;AAAAA,MAAAA,EAAGG,OAAQ,CAAC,EAACC,gBAAiBJ,EAAGK,MAAO,CAAC;AAAA,MAAE;AAAA,IAAA,GAAE;AAAA,IACrD,OAAOJ,KAAU,WACXA,EAAKK,SAAU,KAAf,GACML,EAAKM,QAAS,MAAM,GAAG,EAACF,MAAO,GAAG,EAAE,CAAC,QACxCJ,EAAKM,QAAS,MAAM,GAAG,IAC3BC,OAAOP,CAAK;AAAA,EAAA,EAAA,IACtB;AAAM;"}