@weng-lab/visualization 2.6.0-beta.1 → 2.7.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1360) hide show
  1. package/dist/src/components/Heatmap/Heatmap.d.ts.map +1 -1
  2. package/dist/src/components/Heatmap/HeatmapCanvasCells.d.ts +19 -5
  3. package/dist/src/components/Heatmap/HeatmapCanvasCells.d.ts.map +1 -1
  4. package/dist/src/components/Heatmap/HeatmapGrid.d.ts +36 -0
  5. package/dist/src/components/Heatmap/HeatmapGrid.d.ts.map +1 -0
  6. package/dist/src/components/Heatmap/{scrollable/HeatmapMiniMap.d.ts → HeatmapMiniMap.d.ts} +1 -1
  7. package/dist/src/components/Heatmap/HeatmapMiniMap.d.ts.map +1 -0
  8. package/dist/src/components/Heatmap/{scrollable/HeatmapMiniMapPopup.d.ts → HeatmapMiniMapPopup.d.ts} +1 -1
  9. package/dist/src/components/Heatmap/HeatmapMiniMapPopup.d.ts.map +1 -0
  10. package/dist/src/components/Heatmap/heatmapAxisProps.d.ts +2 -15
  11. package/dist/src/components/Heatmap/heatmapAxisProps.d.ts.map +1 -1
  12. package/dist/src/components/Heatmap/heatmapCellAppearance.d.ts +2 -2
  13. package/dist/src/components/Heatmap/heatmapExport.d.ts +20 -0
  14. package/dist/src/components/Heatmap/heatmapExport.d.ts.map +1 -0
  15. package/dist/src/components/Heatmap/heatmapLayout.d.ts +4 -18
  16. package/dist/src/components/Heatmap/heatmapLayout.d.ts.map +1 -1
  17. package/dist/src/components/Heatmap/hooks/useHeatmapCanvasGrid.d.ts +4 -3
  18. package/dist/src/components/Heatmap/hooks/useHeatmapCanvasGrid.d.ts.map +1 -1
  19. package/dist/src/components/Heatmap/types.d.ts +13 -5
  20. package/dist/src/components/Heatmap/types.d.ts.map +1 -1
  21. package/dist/src/components/Legend/ChipLegend/ChipLegend.d.ts +40 -0
  22. package/dist/src/components/Legend/ChipLegend/ChipLegend.d.ts.map +1 -0
  23. package/dist/src/components/Legend/ChipLegend/ShapeGlyph.d.ts +12 -0
  24. package/dist/src/components/Legend/ChipLegend/ShapeGlyph.d.ts.map +1 -0
  25. package/dist/src/components/Legend/ColorRange/ColorRangeButton.d.ts +34 -0
  26. package/dist/src/components/Legend/ColorRange/ColorRangeButton.d.ts.map +1 -0
  27. package/dist/src/components/Legend/ColorRange/ColorRangeEditor.d.ts +28 -0
  28. package/dist/src/components/Legend/ColorRange/ColorRangeEditor.d.ts.map +1 -0
  29. package/dist/src/components/Legend/ColorRange/SteadyText.d.ts +15 -0
  30. package/dist/src/components/Legend/ColorRange/SteadyText.d.ts.map +1 -0
  31. package/dist/src/components/Legend/Colorbar/Colorbar.d.ts +53 -0
  32. package/dist/src/components/Legend/Colorbar/Colorbar.d.ts.map +1 -0
  33. package/dist/src/components/Legend/Colorbar/ColorbarEnd.d.ts +26 -0
  34. package/dist/src/components/Legend/Colorbar/ColorbarEnd.d.ts.map +1 -0
  35. package/dist/src/components/Legend/Colorbar/ColorbarGraphic.d.ts +34 -0
  36. package/dist/src/components/Legend/Colorbar/ColorbarGraphic.d.ts.map +1 -0
  37. package/dist/src/components/Legend/Colorbar/ColorbarLegend.d.ts +35 -0
  38. package/dist/src/components/Legend/Colorbar/ColorbarLegend.d.ts.map +1 -0
  39. package/dist/src/components/Legend/Colorbar/colorbarLabels.d.ts +37 -0
  40. package/dist/src/components/Legend/Colorbar/colorbarLabels.d.ts.map +1 -0
  41. package/dist/src/components/Legend/Colorbar/useSweep.d.ts +7 -0
  42. package/dist/src/components/Legend/Colorbar/useSweep.d.ts.map +1 -0
  43. package/dist/src/components/Legend/Swatch.d.ts +7 -0
  44. package/dist/src/components/Legend/Swatch.d.ts.map +1 -0
  45. package/dist/src/components/Legend/colorbarAxis.d.ts +105 -0
  46. package/dist/src/components/Legend/colorbarAxis.d.ts.map +1 -0
  47. package/dist/src/components/Legend/colorbarGeometry.d.ts +43 -0
  48. package/dist/src/components/Legend/colorbarGeometry.d.ts.map +1 -0
  49. package/dist/src/components/Legend/index.d.ts +17 -0
  50. package/dist/src/components/Legend/index.d.ts.map +1 -0
  51. package/dist/src/components/ScatterPlot/AnimatedPoints.d.ts +3 -2
  52. package/dist/src/components/ScatterPlot/AnimatedPoints.d.ts.map +1 -1
  53. package/dist/src/components/ScatterPlot/ScatterPlotViewport.d.ts +7 -4
  54. package/dist/src/components/ScatterPlot/ScatterPlotViewport.d.ts.map +1 -1
  55. package/dist/src/components/ScatterPlot/helpers.d.ts +6 -2
  56. package/dist/src/components/ScatterPlot/helpers.d.ts.map +1 -1
  57. package/dist/src/components/ScatterPlot/hooks/useHoverTooltip.d.ts.map +1 -1
  58. package/dist/src/components/ScatterPlot/hooks/useHoveredPointKeys.d.ts +17 -0
  59. package/dist/src/components/ScatterPlot/hooks/useHoveredPointKeys.d.ts.map +1 -0
  60. package/dist/src/components/ScatterPlot/index.d.ts +1 -1
  61. package/dist/src/components/ScatterPlot/index.d.ts.map +1 -1
  62. package/dist/src/components/ScatterPlot/minimap.d.ts +1 -1
  63. package/dist/src/components/ScatterPlot/minimap.d.ts.map +1 -1
  64. package/dist/src/components/ScatterPlot/scatterplot.d.ts.map +1 -1
  65. package/dist/src/components/ScatterPlot/types.d.ts +33 -0
  66. package/dist/src/components/ScatterPlot/types.d.ts.map +1 -1
  67. package/dist/src/index.d.ts +2 -1
  68. package/dist/src/index.d.ts.map +1 -1
  69. package/dist/src/utility.d.ts +34 -20
  70. package/dist/src/utility.d.ts.map +1 -1
  71. package/dist/visualization.es.js +49 -30
  72. package/dist/visualization.es.js.map +1 -1
  73. package/dist/visualization.es10.js +168 -59
  74. package/dist/visualization.es10.js.map +1 -1
  75. package/dist/visualization.es100.js +46 -44
  76. package/dist/visualization.es100.js.map +1 -1
  77. package/dist/visualization.es101.js +4 -76
  78. package/dist/visualization.es101.js.map +1 -1
  79. package/dist/visualization.es102.js +281 -24
  80. package/dist/visualization.es102.js.map +1 -1
  81. package/dist/visualization.es103.js +19 -85
  82. package/dist/visualization.es103.js.map +1 -1
  83. package/dist/visualization.es104.js +66 -32
  84. package/dist/visualization.es104.js.map +1 -1
  85. package/dist/visualization.es105.js +11 -221
  86. package/dist/visualization.es105.js.map +1 -1
  87. package/dist/visualization.es106.js +26 -2
  88. package/dist/visualization.es106.js.map +1 -1
  89. package/dist/visualization.es107.js +69 -556
  90. package/dist/visualization.es107.js.map +1 -1
  91. package/dist/visualization.es108.js +5 -214
  92. package/dist/visualization.es108.js.map +1 -1
  93. package/dist/visualization.es109.js +5 -2
  94. package/dist/visualization.es109.js.map +1 -1
  95. package/dist/visualization.es11.js +140 -120
  96. package/dist/visualization.es11.js.map +1 -1
  97. package/dist/visualization.es110.js +5 -4800
  98. package/dist/visualization.es110.js.map +1 -1
  99. package/dist/visualization.es111.js +222 -25
  100. package/dist/visualization.es111.js.map +1 -1
  101. package/dist/visualization.es112.js +2 -45
  102. package/dist/visualization.es112.js.map +1 -1
  103. package/dist/visualization.es113.js +557 -144
  104. package/dist/visualization.es113.js.map +1 -1
  105. package/dist/visualization.es114.js +213 -146
  106. package/dist/visualization.es114.js.map +1 -1
  107. package/dist/visualization.es115.js +2 -58
  108. package/dist/visualization.es115.js.map +1 -1
  109. package/dist/visualization.es116.js +4799 -31
  110. package/dist/visualization.es116.js.map +1 -1
  111. package/dist/visualization.es117.js +24 -17
  112. package/dist/visualization.es117.js.map +1 -1
  113. package/dist/visualization.es118.js +45 -14
  114. package/dist/visualization.es118.js.map +1 -1
  115. package/dist/visualization.es119.js +144 -26
  116. package/dist/visualization.es119.js.map +1 -1
  117. package/dist/visualization.es12.js +27 -2
  118. package/dist/visualization.es12.js.map +1 -1
  119. package/dist/visualization.es120.js +146 -14
  120. package/dist/visualization.es120.js.map +1 -1
  121. package/dist/visualization.es121.js +10 -10
  122. package/dist/visualization.es121.js.map +1 -1
  123. package/dist/visualization.es122.js +15 -26
  124. package/dist/visualization.es122.js.map +1 -1
  125. package/dist/visualization.es123.js +33 -70
  126. package/dist/visualization.es123.js.map +1 -1
  127. package/dist/visualization.es124.js +43 -53
  128. package/dist/visualization.es124.js.map +1 -1
  129. package/dist/visualization.es125.js +76 -24
  130. package/dist/visualization.es125.js.map +1 -1
  131. package/dist/visualization.es126.js +24 -83
  132. package/dist/visualization.es126.js.map +1 -1
  133. package/dist/visualization.es127.js +83 -221
  134. package/dist/visualization.es127.js.map +1 -1
  135. package/dist/visualization.es128.js +36 -18
  136. package/dist/visualization.es128.js.map +1 -1
  137. package/dist/visualization.es129.js +53 -101
  138. package/dist/visualization.es129.js.map +1 -1
  139. package/dist/visualization.es13.js +58 -79
  140. package/dist/visualization.es13.js.map +1 -1
  141. package/dist/visualization.es130.js +24 -175
  142. package/dist/visualization.es130.js.map +1 -1
  143. package/dist/visualization.es131.js +79 -77
  144. package/dist/visualization.es131.js.map +1 -1
  145. package/dist/visualization.es132.js +244 -36
  146. package/dist/visualization.es132.js.map +1 -1
  147. package/dist/visualization.es133.js +18 -56
  148. package/dist/visualization.es133.js.map +1 -1
  149. package/dist/visualization.es134.js +142 -47
  150. package/dist/visualization.es134.js.map +1 -1
  151. package/dist/visualization.es135.js +175 -2
  152. package/dist/visualization.es135.js.map +1 -1
  153. package/dist/visualization.es136.js +101 -1604
  154. package/dist/visualization.es136.js.map +1 -1
  155. package/dist/visualization.es137.js +36 -17
  156. package/dist/visualization.es137.js.map +1 -1
  157. package/dist/visualization.es138.js +12 -84
  158. package/dist/visualization.es138.js.map +1 -1
  159. package/dist/visualization.es139.js +74 -5
  160. package/dist/visualization.es139.js.map +1 -1
  161. package/dist/visualization.es14.js +123 -100
  162. package/dist/visualization.es14.js.map +1 -1
  163. package/dist/visualization.es140.js +31 -88
  164. package/dist/visualization.es140.js.map +1 -1
  165. package/dist/visualization.es141.js +11 -11
  166. package/dist/visualization.es141.js.map +1 -1
  167. package/dist/visualization.es142.js +58 -6
  168. package/dist/visualization.es142.js.map +1 -1
  169. package/dist/visualization.es143.js +32 -15
  170. package/dist/visualization.es143.js.map +1 -1
  171. package/dist/visualization.es144.js +18 -7
  172. package/dist/visualization.es144.js.map +1 -1
  173. package/dist/visualization.es145.js +14 -14
  174. package/dist/visualization.es145.js.map +1 -1
  175. package/dist/visualization.es146.js +26 -5
  176. package/dist/visualization.es146.js.map +1 -1
  177. package/dist/visualization.es147.js +18 -8
  178. package/dist/visualization.es147.js.map +1 -1
  179. package/dist/visualization.es148.js +2 -61
  180. package/dist/visualization.es148.js.map +1 -1
  181. package/dist/visualization.es149.js +1604 -37
  182. package/dist/visualization.es149.js.map +1 -1
  183. package/dist/visualization.es15.js +145 -15
  184. package/dist/visualization.es15.js.map +1 -1
  185. package/dist/visualization.es150.js +17 -36
  186. package/dist/visualization.es150.js.map +1 -1
  187. package/dist/visualization.es151.js +5 -84
  188. package/dist/visualization.es151.js.map +1 -1
  189. package/dist/visualization.es152.js +17 -27
  190. package/dist/visualization.es152.js.map +1 -1
  191. package/dist/visualization.es153.js +3 -3
  192. package/dist/visualization.es153.js.map +1 -1
  193. package/dist/visualization.es154.js +35 -71
  194. package/dist/visualization.es154.js.map +1 -1
  195. package/dist/visualization.es155.js +8 -17
  196. package/dist/visualization.es155.js.map +1 -1
  197. package/dist/visualization.es156.js +15 -11
  198. package/dist/visualization.es156.js.map +1 -1
  199. package/dist/visualization.es157.js +11 -5
  200. package/dist/visualization.es157.js.map +1 -1
  201. package/dist/visualization.es158.js +6 -8
  202. package/dist/visualization.es158.js.map +1 -1
  203. package/dist/visualization.es159.js +11 -15
  204. package/dist/visualization.es159.js.map +1 -1
  205. package/dist/visualization.es16.js +2 -270
  206. package/dist/visualization.es16.js.map +1 -1
  207. package/dist/visualization.es160.js +4 -11
  208. package/dist/visualization.es160.js.map +1 -1
  209. package/dist/visualization.es161.js +2 -6
  210. package/dist/visualization.es161.js.map +1 -1
  211. package/dist/visualization.es162.js +11 -12
  212. package/dist/visualization.es162.js.map +1 -1
  213. package/dist/visualization.es163.js +30 -3
  214. package/dist/visualization.es163.js.map +1 -1
  215. package/dist/visualization.es164.js +43 -2
  216. package/dist/visualization.es164.js.map +1 -1
  217. package/dist/visualization.es165.js +48 -9
  218. package/dist/visualization.es165.js.map +1 -1
  219. package/dist/visualization.es166.js +3 -31
  220. package/dist/visualization.es166.js.map +1 -1
  221. package/dist/visualization.es167.js +3 -43
  222. package/dist/visualization.es167.js.map +1 -1
  223. package/dist/visualization.es168.js +5 -49
  224. package/dist/visualization.es168.js.map +1 -1
  225. package/dist/visualization.es169.js +5 -3
  226. package/dist/visualization.es169.js.map +1 -1
  227. package/dist/visualization.es17.js +79 -9
  228. package/dist/visualization.es17.js.map +1 -1
  229. package/dist/visualization.es170.js +11 -3
  230. package/dist/visualization.es170.js.map +1 -1
  231. package/dist/visualization.es171.js +3 -5
  232. package/dist/visualization.es171.js.map +1 -1
  233. package/dist/visualization.es172.js +17 -4
  234. package/dist/visualization.es172.js.map +1 -1
  235. package/dist/visualization.es173.js +17 -9
  236. package/dist/visualization.es173.js.map +1 -1
  237. package/dist/visualization.es174.js +36 -3
  238. package/dist/visualization.es174.js.map +1 -1
  239. package/dist/visualization.es175.js +2 -18
  240. package/dist/visualization.es175.js.map +1 -1
  241. package/dist/visualization.es176.js +2 -19
  242. package/dist/visualization.es176.js.map +1 -1
  243. package/dist/visualization.es177.js +4 -37
  244. package/dist/visualization.es177.js.map +1 -1
  245. package/dist/visualization.es178.js +15 -2
  246. package/dist/visualization.es178.js.map +1 -1
  247. package/dist/visualization.es179.js +3 -2
  248. package/dist/visualization.es179.js.map +1 -1
  249. package/dist/visualization.es18.js +103 -96
  250. package/dist/visualization.es18.js.map +1 -1
  251. package/dist/visualization.es180.js +7 -4
  252. package/dist/visualization.es180.js.map +1 -1
  253. package/dist/visualization.es181.js +3 -15
  254. package/dist/visualization.es181.js.map +1 -1
  255. package/dist/visualization.es182.js +7 -3
  256. package/dist/visualization.es182.js.map +1 -1
  257. package/dist/visualization.es183.js +4 -7
  258. package/dist/visualization.es183.js.map +1 -1
  259. package/dist/visualization.es184.js +61 -3
  260. package/dist/visualization.es184.js.map +1 -1
  261. package/dist/visualization.es185.js +38 -6
  262. package/dist/visualization.es185.js.map +1 -1
  263. package/dist/visualization.es186.js +36 -3
  264. package/dist/visualization.es186.js.map +1 -1
  265. package/dist/visualization.es187.js +79 -59
  266. package/dist/visualization.es187.js.map +1 -1
  267. package/dist/visualization.es188.js +29 -7
  268. package/dist/visualization.es188.js.map +1 -1
  269. package/dist/visualization.es189.js +7 -42
  270. package/dist/visualization.es189.js.map +1 -1
  271. package/dist/visualization.es19.js +17 -28
  272. package/dist/visualization.es19.js.map +1 -1
  273. package/dist/visualization.es190.js +4 -9
  274. package/dist/visualization.es190.js.map +1 -1
  275. package/dist/visualization.es191.js +3 -6
  276. package/dist/visualization.es191.js.map +1 -1
  277. package/dist/visualization.es192.js +84 -7
  278. package/dist/visualization.es192.js.map +1 -1
  279. package/dist/visualization.es193.js +89 -9
  280. package/dist/visualization.es193.js.map +1 -1
  281. package/dist/visualization.es194.js +12 -6
  282. package/dist/visualization.es194.js.map +1 -1
  283. package/dist/visualization.es195.js +5 -6
  284. package/dist/visualization.es195.js.map +1 -1
  285. package/dist/visualization.es196.js +13 -4
  286. package/dist/visualization.es196.js.map +1 -1
  287. package/dist/visualization.es197.js +7 -15
  288. package/dist/visualization.es197.js.map +1 -1
  289. package/dist/visualization.es198.js +13 -5
  290. package/dist/visualization.es198.js.map +1 -1
  291. package/dist/visualization.es199.js +74 -3
  292. package/dist/visualization.es199.js.map +1 -1
  293. package/dist/visualization.es2.js +10 -10
  294. package/dist/visualization.es20.js +270 -15
  295. package/dist/visualization.es20.js.map +1 -1
  296. package/dist/visualization.es200.js +2 -7
  297. package/dist/visualization.es200.js.map +1 -1
  298. package/dist/visualization.es201.js +482 -6
  299. package/dist/visualization.es201.js.map +1 -1
  300. package/dist/visualization.es202.js +2 -10
  301. package/dist/visualization.es202.js.map +1 -1
  302. package/dist/visualization.es203.js +1 -1
  303. package/dist/visualization.es209.js +2 -2
  304. package/dist/visualization.es21.js +147 -63
  305. package/dist/visualization.es21.js.map +1 -1
  306. package/dist/visualization.es217.js +1 -1
  307. package/dist/visualization.es22.js +9 -65
  308. package/dist/visualization.es22.js.map +1 -1
  309. package/dist/visualization.es220.js +5 -5
  310. package/dist/visualization.es221.js +71 -3
  311. package/dist/visualization.es221.js.map +1 -1
  312. package/dist/visualization.es222.js +16 -5
  313. package/dist/visualization.es222.js.map +1 -1
  314. package/dist/visualization.es223.js +11 -33
  315. package/dist/visualization.es223.js.map +1 -1
  316. package/dist/visualization.es224.js +5 -16
  317. package/dist/visualization.es224.js.map +1 -1
  318. package/dist/visualization.es225.js +62 -6
  319. package/dist/visualization.es225.js.map +1 -1
  320. package/dist/visualization.es226.js +7 -12
  321. package/dist/visualization.es226.js.map +1 -1
  322. package/dist/visualization.es227.js +41 -31
  323. package/dist/visualization.es227.js.map +1 -1
  324. package/dist/visualization.es228.js +70 -112
  325. package/dist/visualization.es228.js.map +1 -1
  326. package/dist/visualization.es229.js +20 -16
  327. package/dist/visualization.es229.js.map +1 -1
  328. package/dist/visualization.es23.js +99 -111
  329. package/dist/visualization.es23.js.map +1 -1
  330. package/dist/visualization.es230.js +22 -3
  331. package/dist/visualization.es230.js.map +1 -1
  332. package/dist/visualization.es231.js +39 -34
  333. package/dist/visualization.es231.js.map +1 -1
  334. package/dist/visualization.es232.js +7 -19
  335. package/dist/visualization.es232.js.map +1 -1
  336. package/dist/visualization.es233.js +12 -27
  337. package/dist/visualization.es233.js.map +1 -1
  338. package/dist/visualization.es234.js +14 -69
  339. package/dist/visualization.es234.js.map +1 -1
  340. package/dist/visualization.es235.js +35 -21
  341. package/dist/visualization.es235.js.map +1 -1
  342. package/dist/visualization.es236.js +22 -20
  343. package/dist/visualization.es236.js.map +1 -1
  344. package/dist/visualization.es237.js +24 -37
  345. package/dist/visualization.es237.js.map +1 -1
  346. package/dist/visualization.es238.js +8 -6
  347. package/dist/visualization.es238.js.map +1 -1
  348. package/dist/visualization.es239.js +6 -12
  349. package/dist/visualization.es239.js.map +1 -1
  350. package/dist/visualization.es24.js +77 -146
  351. package/dist/visualization.es24.js.map +1 -1
  352. package/dist/visualization.es240.js +6 -16
  353. package/dist/visualization.es240.js.map +1 -1
  354. package/dist/visualization.es241.js +9 -36
  355. package/dist/visualization.es241.js.map +1 -1
  356. package/dist/visualization.es242.js +6 -24
  357. package/dist/visualization.es242.js.map +1 -1
  358. package/dist/visualization.es243.js +5 -26
  359. package/dist/visualization.es243.js.map +1 -1
  360. package/dist/visualization.es244.js +5 -74
  361. package/dist/visualization.es244.js.map +1 -1
  362. package/dist/visualization.es245.js +15 -2
  363. package/dist/visualization.es245.js.map +1 -1
  364. package/dist/visualization.es246.js +5 -482
  365. package/dist/visualization.es246.js.map +1 -1
  366. package/dist/visualization.es247.js +4 -2
  367. package/dist/visualization.es247.js.map +1 -1
  368. package/dist/visualization.es248.js +6 -123
  369. package/dist/visualization.es248.js.map +1 -1
  370. package/dist/visualization.es249.js +6 -63
  371. package/dist/visualization.es249.js.map +1 -1
  372. package/dist/visualization.es25.js +28 -7
  373. package/dist/visualization.es25.js.map +1 -1
  374. package/dist/visualization.es250.js +9 -60
  375. package/dist/visualization.es250.js.map +1 -1
  376. package/dist/visualization.es251.js +33 -2
  377. package/dist/visualization.es251.js.map +1 -1
  378. package/dist/visualization.es252.js +114 -34
  379. package/dist/visualization.es252.js.map +1 -1
  380. package/dist/visualization.es253.js +4 -2
  381. package/dist/visualization.es253.js.map +1 -1
  382. package/dist/visualization.es254.js +4 -22
  383. package/dist/visualization.es254.js.map +1 -1
  384. package/dist/visualization.es255.js +33 -53
  385. package/dist/visualization.es255.js.map +1 -1
  386. package/dist/visualization.es256.js +15 -20
  387. package/dist/visualization.es256.js.map +1 -1
  388. package/dist/visualization.es257.js +7 -3
  389. package/dist/visualization.es257.js.map +1 -1
  390. package/dist/visualization.es258.js +11 -3
  391. package/dist/visualization.es258.js.map +1 -1
  392. package/dist/visualization.es259.js +19 -3
  393. package/dist/visualization.es259.js.map +1 -1
  394. package/dist/visualization.es26.js +14 -7
  395. package/dist/visualization.es26.js.map +1 -1
  396. package/dist/visualization.es260.js +27 -3
  397. package/dist/visualization.es260.js.map +1 -1
  398. package/dist/visualization.es261.js +123 -3
  399. package/dist/visualization.es261.js.map +1 -1
  400. package/dist/visualization.es262.js +2 -4
  401. package/dist/visualization.es262.js.map +1 -1
  402. package/dist/visualization.es263.js +34 -3
  403. package/dist/visualization.es263.js.map +1 -1
  404. package/dist/visualization.es264.js +2 -8
  405. package/dist/visualization.es264.js.map +1 -1
  406. package/dist/visualization.es265.js +9 -48
  407. package/dist/visualization.es265.js.map +1 -1
  408. package/dist/visualization.es266.js +9 -3
  409. package/dist/visualization.es266.js.map +1 -1
  410. package/dist/visualization.es267.js +6 -6
  411. package/dist/visualization.es267.js.map +1 -1
  412. package/dist/visualization.es268.js +8 -4
  413. package/dist/visualization.es268.js.map +1 -1
  414. package/dist/visualization.es269.js +6 -3
  415. package/dist/visualization.es269.js.map +1 -1
  416. package/dist/visualization.es27.js +62 -46
  417. package/dist/visualization.es27.js.map +1 -1
  418. package/dist/visualization.es270.js +5 -6
  419. package/dist/visualization.es270.js.map +1 -1
  420. package/dist/visualization.es271.js +14 -4
  421. package/dist/visualization.es271.js.map +1 -1
  422. package/dist/visualization.es272.js +6 -3
  423. package/dist/visualization.es272.js.map +1 -1
  424. package/dist/visualization.es273.js +6 -11
  425. package/dist/visualization.es273.js.map +1 -1
  426. package/dist/visualization.es274.js +6 -36
  427. package/dist/visualization.es274.js.map +1 -1
  428. package/dist/visualization.es275.js +6 -260
  429. package/dist/visualization.es275.js.map +1 -1
  430. package/dist/visualization.es276.js +3 -59
  431. package/dist/visualization.es276.js.map +1 -1
  432. package/dist/visualization.es277.js +4 -5
  433. package/dist/visualization.es277.js.map +1 -1
  434. package/dist/visualization.es278.js +9 -53
  435. package/dist/visualization.es278.js.map +1 -1
  436. package/dist/visualization.es279.js +3 -32
  437. package/dist/visualization.es279.js.map +1 -1
  438. package/dist/visualization.es28.js +18700 -19
  439. package/dist/visualization.es28.js.map +1 -1
  440. package/dist/visualization.es280.js +11 -33
  441. package/dist/visualization.es280.js.map +1 -1
  442. package/dist/visualization.es281.js +36 -12
  443. package/dist/visualization.es281.js.map +1 -1
  444. package/dist/visualization.es282.js +258 -5
  445. package/dist/visualization.es282.js.map +1 -1
  446. package/dist/visualization.es283.js +52 -133
  447. package/dist/visualization.es283.js.map +1 -1
  448. package/dist/visualization.es284.js +5 -5
  449. package/dist/visualization.es284.js.map +1 -1
  450. package/dist/visualization.es285.js +7 -21
  451. package/dist/visualization.es285.js.map +1 -1
  452. package/dist/visualization.es286.js +136 -33
  453. package/dist/visualization.es286.js.map +1 -1
  454. package/dist/visualization.es287.js +5 -34
  455. package/dist/visualization.es287.js.map +1 -1
  456. package/dist/visualization.es288.js +22 -15
  457. package/dist/visualization.es288.js.map +1 -1
  458. package/dist/visualization.es289.js +37 -18
  459. package/dist/visualization.es289.js.map +1 -1
  460. package/dist/visualization.es29.js +5 -5
  461. package/dist/visualization.es29.js.map +1 -1
  462. package/dist/visualization.es290.js +34 -8
  463. package/dist/visualization.es290.js.map +1 -1
  464. package/dist/visualization.es291.js +14 -109
  465. package/dist/visualization.es291.js.map +1 -1
  466. package/dist/visualization.es292.js +17 -11
  467. package/dist/visualization.es292.js.map +1 -1
  468. package/dist/visualization.es293.js +8 -141
  469. package/dist/visualization.es293.js.map +1 -1
  470. package/dist/visualization.es294.js +109 -5
  471. package/dist/visualization.es294.js.map +1 -1
  472. package/dist/visualization.es295.js +11 -70
  473. package/dist/visualization.es295.js.map +1 -1
  474. package/dist/visualization.es296.js +135 -29
  475. package/dist/visualization.es296.js.map +1 -1
  476. package/dist/visualization.es297.js +5 -20
  477. package/dist/visualization.es297.js.map +1 -1
  478. package/dist/visualization.es298.js +71 -3
  479. package/dist/visualization.es298.js.map +1 -1
  480. package/dist/visualization.es299.js +30 -19
  481. package/dist/visualization.es299.js.map +1 -1
  482. package/dist/visualization.es3.js +164 -332
  483. package/dist/visualization.es3.js.map +1 -1
  484. package/dist/visualization.es30.js +5 -34
  485. package/dist/visualization.es30.js.map +1 -1
  486. package/dist/visualization.es300.js +19 -29
  487. package/dist/visualization.es300.js.map +1 -1
  488. package/dist/visualization.es301.js +4 -2
  489. package/dist/visualization.es301.js.map +1 -1
  490. package/dist/visualization.es302.js +25 -2
  491. package/dist/visualization.es302.js.map +1 -1
  492. package/dist/visualization.es303.js +30 -5
  493. package/dist/visualization.es303.js.map +1 -1
  494. package/dist/visualization.es304.js +2 -15
  495. package/dist/visualization.es304.js.map +1 -1
  496. package/dist/visualization.es305.js +2 -35
  497. package/dist/visualization.es305.js.map +1 -1
  498. package/dist/visualization.es306.js +5 -27
  499. package/dist/visualization.es306.js.map +1 -1
  500. package/dist/visualization.es307.js +15 -11
  501. package/dist/visualization.es307.js.map +1 -1
  502. package/dist/visualization.es308.js +34 -6
  503. package/dist/visualization.es308.js.map +1 -1
  504. package/dist/visualization.es309.js +27 -13
  505. package/dist/visualization.es309.js.map +1 -1
  506. package/dist/visualization.es31.js +59 -34
  507. package/dist/visualization.es31.js.map +1 -1
  508. package/dist/visualization.es310.js +11 -12
  509. package/dist/visualization.es310.js.map +1 -1
  510. package/dist/visualization.es311.js +7 -2
  511. package/dist/visualization.es311.js.map +1 -1
  512. package/dist/visualization.es312.js +14 -3
  513. package/dist/visualization.es312.js.map +1 -1
  514. package/dist/visualization.es313.js +12 -2
  515. package/dist/visualization.es313.js.map +1 -1
  516. package/dist/visualization.es314.js +2 -104
  517. package/dist/visualization.es314.js.map +1 -1
  518. package/dist/visualization.es315.js +3 -5
  519. package/dist/visualization.es315.js.map +1 -1
  520. package/dist/visualization.es316.js +2 -3
  521. package/dist/visualization.es316.js.map +1 -1
  522. package/dist/visualization.es317.js +103 -18
  523. package/dist/visualization.es317.js.map +1 -1
  524. package/dist/visualization.es318.js +4 -5
  525. package/dist/visualization.es318.js.map +1 -1
  526. package/dist/visualization.es319.js +3 -15
  527. package/dist/visualization.es319.js.map +1 -1
  528. package/dist/visualization.es32.js +808 -65
  529. package/dist/visualization.es32.js.map +1 -1
  530. package/dist/visualization.es320.js +18 -4
  531. package/dist/visualization.es320.js.map +1 -1
  532. package/dist/visualization.es321.js +5 -28
  533. package/dist/visualization.es321.js.map +1 -1
  534. package/dist/visualization.es322.js +14 -6
  535. package/dist/visualization.es322.js.map +1 -1
  536. package/dist/visualization.es323.js +5 -2
  537. package/dist/visualization.es323.js.map +1 -1
  538. package/dist/visualization.es324.js +29 -20
  539. package/dist/visualization.es324.js.map +1 -1
  540. package/dist/visualization.es325.js +7 -21
  541. package/dist/visualization.es325.js.map +1 -1
  542. package/dist/visualization.es326.js +2 -6
  543. package/dist/visualization.es326.js.map +1 -1
  544. package/dist/visualization.es327.js +20 -8
  545. package/dist/visualization.es327.js.map +1 -1
  546. package/dist/visualization.es328.js +21 -19
  547. package/dist/visualization.es328.js.map +1 -1
  548. package/dist/visualization.es329.js +6 -44
  549. package/dist/visualization.es329.js.map +1 -1
  550. package/dist/visualization.es330.js +8 -7
  551. package/dist/visualization.es330.js.map +1 -1
  552. package/dist/visualization.es331.js +18 -19
  553. package/dist/visualization.es331.js.map +1 -1
  554. package/dist/visualization.es332.js +42 -52
  555. package/dist/visualization.es332.js.map +1 -1
  556. package/dist/visualization.es333.js +7 -27
  557. package/dist/visualization.es333.js.map +1 -1
  558. package/dist/visualization.es334.js +20 -11
  559. package/dist/visualization.es334.js.map +1 -1
  560. package/dist/visualization.es335.js +51 -16
  561. package/dist/visualization.es335.js.map +1 -1
  562. package/dist/visualization.es336.js +26 -11
  563. package/dist/visualization.es336.js.map +1 -1
  564. package/dist/visualization.es337.js +11 -5
  565. package/dist/visualization.es337.js.map +1 -1
  566. package/dist/visualization.es338.js +19 -4
  567. package/dist/visualization.es338.js.map +1 -1
  568. package/dist/visualization.es339.js +11 -3
  569. package/dist/visualization.es339.js.map +1 -1
  570. package/dist/visualization.es34.js +128 -138
  571. package/dist/visualization.es34.js.map +1 -1
  572. package/dist/visualization.es340.js +4 -175
  573. package/dist/visualization.es340.js.map +1 -1
  574. package/dist/visualization.es341.js +4 -40
  575. package/dist/visualization.es341.js.map +1 -1
  576. package/dist/visualization.es342.js +3 -5
  577. package/dist/visualization.es342.js.map +1 -1
  578. package/dist/visualization.es343.js +175 -3
  579. package/dist/visualization.es343.js.map +1 -1
  580. package/dist/visualization.es344.js +40 -2
  581. package/dist/visualization.es344.js.map +1 -1
  582. package/dist/visualization.es345.js +6 -30
  583. package/dist/visualization.es345.js.map +1 -1
  584. package/dist/visualization.es346.js +4 -8
  585. package/dist/visualization.es346.js.map +1 -1
  586. package/dist/visualization.es347.js +2 -11
  587. package/dist/visualization.es347.js.map +1 -1
  588. package/dist/visualization.es348.js +30 -4
  589. package/dist/visualization.es348.js.map +1 -1
  590. package/dist/visualization.es349.js +8 -66
  591. package/dist/visualization.es349.js.map +1 -1
  592. package/dist/visualization.es35.js +51 -26
  593. package/dist/visualization.es35.js.map +1 -1
  594. package/dist/visualization.es350.js +11 -7
  595. package/dist/visualization.es350.js.map +1 -1
  596. package/dist/visualization.es351.js +3 -4
  597. package/dist/visualization.es351.js.map +1 -1
  598. package/dist/visualization.es352.js +64 -12
  599. package/dist/visualization.es352.js.map +1 -1
  600. package/dist/visualization.es353.js +7 -35
  601. package/dist/visualization.es353.js.map +1 -1
  602. package/dist/visualization.es354.js +4 -4
  603. package/dist/visualization.es354.js.map +1 -1
  604. package/dist/visualization.es355.js +12 -8
  605. package/dist/visualization.es355.js.map +1 -1
  606. package/dist/visualization.es356.js +35 -2
  607. package/dist/visualization.es356.js.map +1 -1
  608. package/dist/visualization.es357.js +5 -5
  609. package/dist/visualization.es357.js.map +1 -1
  610. package/dist/visualization.es358.js +10 -2
  611. package/dist/visualization.es358.js.map +1 -1
  612. package/dist/visualization.es359.js +2 -10
  613. package/dist/visualization.es359.js.map +1 -1
  614. package/dist/visualization.es36.js +176 -21
  615. package/dist/visualization.es36.js.map +1 -1
  616. package/dist/visualization.es360.js +5 -10
  617. package/dist/visualization.es360.js.map +1 -1
  618. package/dist/visualization.es361.js +2 -13
  619. package/dist/visualization.es361.js.map +1 -1
  620. package/dist/visualization.es362.js +10 -2
  621. package/dist/visualization.es362.js.map +1 -1
  622. package/dist/visualization.es363.js +10 -10
  623. package/dist/visualization.es363.js.map +1 -1
  624. package/dist/visualization.es364.js +13 -8
  625. package/dist/visualization.es364.js.map +1 -1
  626. package/dist/visualization.es365.js +2 -6
  627. package/dist/visualization.es365.js.map +1 -1
  628. package/dist/visualization.es366.js +10 -25
  629. package/dist/visualization.es366.js.map +1 -1
  630. package/dist/visualization.es367.js +8 -19
  631. package/dist/visualization.es367.js.map +1 -1
  632. package/dist/visualization.es368.js +5 -40
  633. package/dist/visualization.es368.js.map +1 -1
  634. package/dist/visualization.es369.js +25 -3
  635. package/dist/visualization.es369.js.map +1 -1
  636. package/dist/visualization.es37.js +54 -17
  637. package/dist/visualization.es37.js.map +1 -1
  638. package/dist/visualization.es370.js +19 -9
  639. package/dist/visualization.es370.js.map +1 -1
  640. package/dist/visualization.es371.js +40 -8
  641. package/dist/visualization.es371.js.map +1 -1
  642. package/dist/visualization.es372.js +3 -36
  643. package/dist/visualization.es372.js.map +1 -1
  644. package/dist/visualization.es373.js +8 -9
  645. package/dist/visualization.es373.js.map +1 -1
  646. package/dist/visualization.es374.js +8 -31
  647. package/dist/visualization.es374.js.map +1 -1
  648. package/dist/visualization.es375.js +35 -4
  649. package/dist/visualization.es375.js.map +1 -1
  650. package/dist/visualization.es376.js +10 -2
  651. package/dist/visualization.es376.js.map +1 -1
  652. package/dist/visualization.es377.js +30 -14
  653. package/dist/visualization.es377.js.map +1 -1
  654. package/dist/visualization.es378.js +4 -24
  655. package/dist/visualization.es378.js.map +1 -1
  656. package/dist/visualization.es379.js +2 -2
  657. package/dist/visualization.es379.js.map +1 -1
  658. package/dist/visualization.es38.js +42 -20
  659. package/dist/visualization.es38.js.map +1 -1
  660. package/dist/visualization.es380.js +14 -61
  661. package/dist/visualization.es380.js.map +1 -1
  662. package/dist/visualization.es381.js +25 -2
  663. package/dist/visualization.es381.js.map +1 -1
  664. package/dist/visualization.es382.js +2 -2
  665. package/dist/visualization.es382.js.map +1 -1
  666. package/dist/visualization.es383.js +62 -5
  667. package/dist/visualization.es383.js.map +1 -1
  668. package/dist/visualization.es384.js +2 -37
  669. package/dist/visualization.es384.js.map +1 -1
  670. package/dist/visualization.es385.js +2 -21
  671. package/dist/visualization.es385.js.map +1 -1
  672. package/dist/visualization.es386.js +5 -3
  673. package/dist/visualization.es386.js.map +1 -1
  674. package/dist/visualization.es387.js +36 -4
  675. package/dist/visualization.es387.js.map +1 -1
  676. package/dist/visualization.es388.js +20 -4
  677. package/dist/visualization.es388.js.map +1 -1
  678. package/dist/visualization.es389.js +3 -48
  679. package/dist/visualization.es389.js.map +1 -1
  680. package/dist/visualization.es39.js +6 -70
  681. package/dist/visualization.es39.js.map +1 -1
  682. package/dist/visualization.es390.js +4 -26
  683. package/dist/visualization.es390.js.map +1 -1
  684. package/dist/visualization.es391.js +4 -16
  685. package/dist/visualization.es391.js.map +1 -1
  686. package/dist/visualization.es392.js +48 -9
  687. package/dist/visualization.es392.js.map +1 -1
  688. package/dist/visualization.es393.js +26 -19
  689. package/dist/visualization.es393.js.map +1 -1
  690. package/dist/visualization.es394.js +16 -13
  691. package/dist/visualization.es394.js.map +1 -1
  692. package/dist/visualization.es395.js +10 -4
  693. package/dist/visualization.es395.js.map +1 -1
  694. package/dist/visualization.es396.js +19 -12
  695. package/dist/visualization.es396.js.map +1 -1
  696. package/dist/visualization.es397.js +13 -48
  697. package/dist/visualization.es397.js.map +1 -1
  698. package/dist/visualization.es398.js +3 -5
  699. package/dist/visualization.es398.js.map +1 -1
  700. package/dist/visualization.es399.js +12 -12
  701. package/dist/visualization.es399.js.map +1 -1
  702. package/dist/visualization.es4.js +87 -300
  703. package/dist/visualization.es4.js.map +1 -1
  704. package/dist/visualization.es40.js +5 -81
  705. package/dist/visualization.es40.js.map +1 -1
  706. package/dist/visualization.es400.js +49 -2
  707. package/dist/visualization.es400.js.map +1 -1
  708. package/dist/visualization.es401.js +5 -6
  709. package/dist/visualization.es401.js.map +1 -1
  710. package/dist/visualization.es402.js +12 -209
  711. package/dist/visualization.es402.js.map +1 -1
  712. package/dist/visualization.es403.js +2 -27
  713. package/dist/visualization.es403.js.map +1 -1
  714. package/dist/visualization.es404.js +6 -3
  715. package/dist/visualization.es404.js.map +1 -1
  716. package/dist/visualization.es405.js +210 -16
  717. package/dist/visualization.es405.js.map +1 -1
  718. package/dist/visualization.es406.js +27 -15
  719. package/dist/visualization.es406.js.map +1 -1
  720. package/dist/visualization.es407.js +4 -15
  721. package/dist/visualization.es407.js.map +1 -1
  722. package/dist/visualization.es408.js +16 -2
  723. package/dist/visualization.es408.js.map +1 -1
  724. package/dist/visualization.es409.js +15 -2
  725. package/dist/visualization.es409.js.map +1 -1
  726. package/dist/visualization.es41.js +18 -18702
  727. package/dist/visualization.es41.js.map +1 -1
  728. package/dist/visualization.es410.js +15 -2
  729. package/dist/visualization.es410.js.map +1 -1
  730. package/dist/visualization.es411.js +2 -5
  731. package/dist/visualization.es411.js.map +1 -1
  732. package/dist/visualization.es412.js +2 -2
  733. package/dist/visualization.es412.js.map +1 -1
  734. package/dist/visualization.es413.js +2 -25
  735. package/dist/visualization.es413.js.map +1 -1
  736. package/dist/visualization.es414.js +4 -21
  737. package/dist/visualization.es414.js.map +1 -1
  738. package/dist/visualization.es415.js +2 -9
  739. package/dist/visualization.es415.js.map +1 -1
  740. package/dist/visualization.es416.js +24 -67
  741. package/dist/visualization.es416.js.map +1 -1
  742. package/dist/visualization.es417.js +21 -5
  743. package/dist/visualization.es417.js.map +1 -1
  744. package/dist/visualization.es418.js +7 -27
  745. package/dist/visualization.es418.js.map +1 -1
  746. package/dist/visualization.es419.js +68 -10
  747. package/dist/visualization.es419.js.map +1 -1
  748. package/dist/visualization.es42.js +5 -5
  749. package/dist/visualization.es42.js.map +1 -1
  750. package/dist/visualization.es420.js +6 -6
  751. package/dist/visualization.es420.js.map +1 -1
  752. package/dist/visualization.es421.js +29 -2
  753. package/dist/visualization.es421.js.map +1 -1
  754. package/dist/visualization.es422.js +9 -4
  755. package/dist/visualization.es422.js.map +1 -1
  756. package/dist/visualization.es423.js +6 -26
  757. package/dist/visualization.es423.js.map +1 -1
  758. package/dist/visualization.es424.js +2 -11
  759. package/dist/visualization.es424.js.map +1 -1
  760. package/dist/visualization.es425.js +4 -26
  761. package/dist/visualization.es425.js.map +1 -1
  762. package/dist/visualization.es426.js +25 -9
  763. package/dist/visualization.es426.js.map +1 -1
  764. package/dist/visualization.es427.js +10 -10
  765. package/dist/visualization.es427.js.map +1 -1
  766. package/dist/visualization.es428.js +27 -2
  767. package/dist/visualization.es428.js.map +1 -1
  768. package/dist/visualization.es429.js +10 -16
  769. package/dist/visualization.es429.js.map +1 -1
  770. package/dist/visualization.es43.js +27 -5
  771. package/dist/visualization.es43.js.map +1 -1
  772. package/dist/visualization.es430.js +10 -29
  773. package/dist/visualization.es430.js.map +1 -1
  774. package/dist/visualization.es431.js +2 -26
  775. package/dist/visualization.es431.js.map +1 -1
  776. package/dist/visualization.es432.js +16 -2
  777. package/dist/visualization.es432.js.map +1 -1
  778. package/dist/visualization.es433.js +29 -8
  779. package/dist/visualization.es433.js.map +1 -1
  780. package/dist/visualization.es434.js +26 -13
  781. package/dist/visualization.es434.js.map +1 -1
  782. package/dist/visualization.es435.js +2 -23
  783. package/dist/visualization.es435.js.map +1 -1
  784. package/dist/visualization.es436.js +8 -12
  785. package/dist/visualization.es436.js.map +1 -1
  786. package/dist/visualization.es437.js +13 -3
  787. package/dist/visualization.es437.js.map +1 -1
  788. package/dist/visualization.es438.js +23 -2
  789. package/dist/visualization.es438.js.map +1 -1
  790. package/dist/visualization.es439.js +12 -17
  791. package/dist/visualization.es439.js.map +1 -1
  792. package/dist/visualization.es44.js +26 -55
  793. package/dist/visualization.es44.js.map +1 -1
  794. package/dist/visualization.es440.js +3 -4
  795. package/dist/visualization.es440.js.map +1 -1
  796. package/dist/visualization.es441.js +2 -12
  797. package/dist/visualization.es441.js.map +1 -1
  798. package/dist/visualization.es442.js +18 -11
  799. package/dist/visualization.es442.js.map +1 -1
  800. package/dist/visualization.es443.js +3 -6
  801. package/dist/visualization.es443.js.map +1 -1
  802. package/dist/visualization.es444.js +12 -19
  803. package/dist/visualization.es444.js.map +1 -1
  804. package/dist/visualization.es445.js +11 -23
  805. package/dist/visualization.es445.js.map +1 -1
  806. package/dist/visualization.es446.js +6 -11
  807. package/dist/visualization.es446.js.map +1 -1
  808. package/dist/visualization.es447.js +19 -51
  809. package/dist/visualization.es447.js.map +1 -1
  810. package/dist/visualization.es448.js +20 -15
  811. package/dist/visualization.es448.js.map +1 -1
  812. package/dist/visualization.es449.js +9 -33
  813. package/dist/visualization.es449.js.map +1 -1
  814. package/dist/visualization.es45.js +5 -811
  815. package/dist/visualization.es45.js.map +1 -1
  816. package/dist/visualization.es450.js +47 -19
  817. package/dist/visualization.es450.js.map +1 -1
  818. package/dist/visualization.es451.js +13 -27
  819. package/dist/visualization.es451.js.map +1 -1
  820. package/dist/visualization.es452.js +35 -3
  821. package/dist/visualization.es452.js.map +1 -1
  822. package/dist/visualization.es453.js +22 -18
  823. package/dist/visualization.es453.js.map +1 -1
  824. package/dist/visualization.es454.js +32 -14
  825. package/dist/visualization.es454.js.map +1 -1
  826. package/dist/visualization.es455.js +3 -10
  827. package/dist/visualization.es455.js.map +1 -1
  828. package/dist/visualization.es456.js +18 -29
  829. package/dist/visualization.es456.js.map +1 -1
  830. package/dist/visualization.es457.js +14 -6
  831. package/dist/visualization.es457.js.map +1 -1
  832. package/dist/visualization.es458.js +10 -7
  833. package/dist/visualization.es458.js.map +1 -1
  834. package/dist/visualization.es459.js +30 -2
  835. package/dist/visualization.es459.js.map +1 -1
  836. package/dist/visualization.es46.js +58 -0
  837. package/dist/visualization.es46.js.map +1 -0
  838. package/dist/visualization.es460.js +6 -17
  839. package/dist/visualization.es460.js.map +1 -1
  840. package/dist/visualization.es461.js +7 -8
  841. package/dist/visualization.es461.js.map +1 -1
  842. package/dist/visualization.es462.js +2 -10
  843. package/dist/visualization.es462.js.map +1 -1
  844. package/dist/visualization.es463.js +14 -613
  845. package/dist/visualization.es463.js.map +1 -1
  846. package/dist/visualization.es464.js +8 -50
  847. package/dist/visualization.es464.js.map +1 -1
  848. package/dist/visualization.es465.js +10 -13
  849. package/dist/visualization.es465.js.map +1 -1
  850. package/dist/visualization.es466.js +616 -11
  851. package/dist/visualization.es466.js.map +1 -1
  852. package/dist/visualization.es467.js +50 -22
  853. package/dist/visualization.es467.js.map +1 -1
  854. package/dist/visualization.es468.js +13 -35
  855. package/dist/visualization.es468.js.map +1 -1
  856. package/dist/visualization.es469.js +11 -13
  857. package/dist/visualization.es469.js.map +1 -1
  858. package/dist/visualization.es47.js +109 -129
  859. package/dist/visualization.es47.js.map +1 -1
  860. package/dist/visualization.es470.js +23 -19
  861. package/dist/visualization.es470.js.map +1 -1
  862. package/dist/visualization.es471.js +32 -23
  863. package/dist/visualization.es471.js.map +1 -1
  864. package/dist/visualization.es472.js +12 -26
  865. package/dist/visualization.es472.js.map +1 -1
  866. package/dist/visualization.es473.js +14 -38
  867. package/dist/visualization.es473.js.map +1 -1
  868. package/dist/visualization.es474.js +20 -14
  869. package/dist/visualization.es474.js.map +1 -1
  870. package/dist/visualization.es475.js +22 -36
  871. package/dist/visualization.es475.js.map +1 -1
  872. package/dist/visualization.es476.js +36 -51
  873. package/dist/visualization.es476.js.map +1 -1
  874. package/dist/visualization.es477.js +19 -3
  875. package/dist/visualization.es477.js.map +1 -1
  876. package/dist/visualization.es478.js +41 -3
  877. package/dist/visualization.es478.js.map +1 -1
  878. package/dist/visualization.es479.js +58 -7
  879. package/dist/visualization.es479.js.map +1 -1
  880. package/dist/visualization.es48.js +7 -35
  881. package/dist/visualization.es48.js.map +1 -1
  882. package/dist/visualization.es480.js +3 -15
  883. package/dist/visualization.es480.js.map +1 -1
  884. package/dist/visualization.es481.js +3 -2
  885. package/dist/visualization.es481.js.map +1 -1
  886. package/dist/visualization.es482.js +7 -2
  887. package/dist/visualization.es482.js.map +1 -1
  888. package/dist/visualization.es483.js +16 -2
  889. package/dist/visualization.es483.js.map +1 -1
  890. package/dist/visualization.es484.js +2 -7
  891. package/dist/visualization.es484.js.map +1 -1
  892. package/dist/visualization.es485.js +2 -35
  893. package/dist/visualization.es485.js.map +1 -1
  894. package/dist/visualization.es486.js +2 -4
  895. package/dist/visualization.es486.js.map +1 -1
  896. package/dist/visualization.es487.js +29 -4
  897. package/dist/visualization.es487.js.map +1 -1
  898. package/dist/visualization.es488.js +119 -6
  899. package/dist/visualization.es488.js.map +1 -1
  900. package/dist/visualization.es489.js +29 -12
  901. package/dist/visualization.es489.js.map +1 -1
  902. package/dist/visualization.es49.js +7 -34
  903. package/dist/visualization.es49.js.map +1 -1
  904. package/dist/visualization.es490.js +11 -2
  905. package/dist/visualization.es490.js.map +1 -1
  906. package/dist/visualization.es491.js +13 -3
  907. package/dist/visualization.es491.js.map +1 -1
  908. package/dist/visualization.es492.js +32 -3
  909. package/dist/visualization.es492.js.map +1 -1
  910. package/dist/visualization.es493.js +27 -9
  911. package/dist/visualization.es493.js.map +1 -1
  912. package/dist/visualization.es494.js +10 -4
  913. package/dist/visualization.es494.js.map +1 -1
  914. package/dist/visualization.es495.js +12 -32
  915. package/dist/visualization.es495.js.map +1 -1
  916. package/dist/visualization.es496.js +18 -29
  917. package/dist/visualization.es496.js.map +1 -1
  918. package/dist/visualization.es497.js +21 -117
  919. package/dist/visualization.es497.js.map +1 -1
  920. package/dist/visualization.es498.js +16 -29
  921. package/dist/visualization.es498.js.map +1 -1
  922. package/dist/visualization.es499.js +95 -9
  923. package/dist/visualization.es499.js.map +1 -1
  924. package/dist/visualization.es5.js +46 -113
  925. package/dist/visualization.es5.js.map +1 -1
  926. package/dist/visualization.es50.js +7 -10
  927. package/dist/visualization.es50.js.map +1 -1
  928. package/dist/visualization.es500.js +28 -13
  929. package/dist/visualization.es500.js.map +1 -1
  930. package/dist/visualization.es501.js +69 -30
  931. package/dist/visualization.es501.js.map +1 -1
  932. package/dist/visualization.es502.js +50 -27
  933. package/dist/visualization.es502.js.map +1 -1
  934. package/dist/visualization.es503.js +34 -10
  935. package/dist/visualization.es503.js.map +1 -1
  936. package/dist/visualization.es504.js +40 -11
  937. package/dist/visualization.es504.js.map +1 -1
  938. package/dist/visualization.es505.js +3 -17
  939. package/dist/visualization.es505.js.map +1 -1
  940. package/dist/visualization.es506.js +3 -23
  941. package/dist/visualization.es506.js.map +1 -1
  942. package/dist/visualization.es507.js +3 -16
  943. package/dist/visualization.es507.js.map +1 -1
  944. package/dist/visualization.es508.js +3 -96
  945. package/dist/visualization.es508.js.map +1 -1
  946. package/dist/visualization.es509.js +3 -28
  947. package/dist/visualization.es509.js.map +1 -1
  948. package/dist/visualization.es51.js +18 -52
  949. package/dist/visualization.es51.js.map +1 -1
  950. package/dist/visualization.es510.js +3 -71
  951. package/dist/visualization.es510.js.map +1 -1
  952. package/dist/visualization.es511.js +3 -51
  953. package/dist/visualization.es511.js.map +1 -1
  954. package/dist/visualization.es512.js +6 -33
  955. package/dist/visualization.es512.js.map +1 -1
  956. package/dist/visualization.es513.js +48 -41
  957. package/dist/visualization.es513.js.map +1 -1
  958. package/dist/visualization.es514.js +3 -61
  959. package/dist/visualization.es514.js.map +1 -1
  960. package/dist/visualization.es515.js +5 -236
  961. package/dist/visualization.es515.js.map +1 -1
  962. package/dist/visualization.es516.js +4 -992
  963. package/dist/visualization.es516.js.map +1 -1
  964. package/dist/visualization.es517.js +3 -29
  965. package/dist/visualization.es517.js.map +1 -1
  966. package/dist/visualization.es518.js +6 -9
  967. package/dist/visualization.es518.js.map +1 -1
  968. package/dist/visualization.es519.js +4 -9
  969. package/dist/visualization.es519.js.map +1 -1
  970. package/dist/visualization.es52.js +32 -42
  971. package/dist/visualization.es52.js.map +1 -1
  972. package/dist/visualization.es520.js +23 -6
  973. package/dist/visualization.es520.js.map +1 -1
  974. package/dist/visualization.es521.js +53 -8
  975. package/dist/visualization.es521.js.map +1 -1
  976. package/dist/visualization.es522.js +20 -6
  977. package/dist/visualization.es522.js.map +1 -1
  978. package/dist/visualization.es523.js +7 -6
  979. package/dist/visualization.es523.js.map +1 -1
  980. package/dist/visualization.es524.js +33 -13
  981. package/dist/visualization.es524.js.map +1 -1
  982. package/dist/visualization.es525.js +3 -5
  983. package/dist/visualization.es525.js.map +1 -1
  984. package/dist/visualization.es526.js +3 -6
  985. package/dist/visualization.es526.js.map +1 -1
  986. package/dist/visualization.es527.js +6 -6
  987. package/dist/visualization.es527.js.map +1 -1
  988. package/dist/visualization.es528.js +12 -6
  989. package/dist/visualization.es528.js.map +1 -1
  990. package/dist/visualization.es529.js +2 -4
  991. package/dist/visualization.es529.js.map +1 -1
  992. package/dist/visualization.es53.js +66 -27
  993. package/dist/visualization.es53.js.map +1 -1
  994. package/dist/visualization.es530.js +3 -4
  995. package/dist/visualization.es530.js.map +1 -1
  996. package/dist/visualization.es531.js +3 -9
  997. package/dist/visualization.es531.js.map +1 -1
  998. package/dist/visualization.es532.js +9 -32
  999. package/dist/visualization.es532.js.map +1 -1
  1000. package/dist/visualization.es533.js +4 -29
  1001. package/dist/visualization.es533.js.map +1 -1
  1002. package/dist/visualization.es534.js +31 -32
  1003. package/dist/visualization.es534.js.map +1 -1
  1004. package/dist/visualization.es535.js +10 -25
  1005. package/dist/visualization.es535.js.map +1 -1
  1006. package/dist/visualization.es536.js +78 -46
  1007. package/dist/visualization.es536.js.map +1 -1
  1008. package/dist/visualization.es537.js +3 -9
  1009. package/dist/visualization.es537.js.map +1 -1
  1010. package/dist/visualization.es538.js +35 -15
  1011. package/dist/visualization.es538.js.map +1 -1
  1012. package/dist/visualization.es539.js +54 -16
  1013. package/dist/visualization.es539.js.map +1 -1
  1014. package/dist/visualization.es54.js +258 -64
  1015. package/dist/visualization.es54.js.map +1 -1
  1016. package/dist/visualization.es540.js +32 -16
  1017. package/dist/visualization.es540.js.map +1 -1
  1018. package/dist/visualization.es541.js +34 -24
  1019. package/dist/visualization.es541.js.map +1 -1
  1020. package/dist/visualization.es542.js +12 -5
  1021. package/dist/visualization.es542.js.map +1 -1
  1022. package/dist/visualization.es543.js +236 -9
  1023. package/dist/visualization.es543.js.map +1 -1
  1024. package/dist/visualization.es544.js +991 -12
  1025. package/dist/visualization.es544.js.map +1 -1
  1026. package/dist/visualization.es545.js +62 -8
  1027. package/dist/visualization.es545.js.map +1 -1
  1028. package/dist/visualization.es546.js +30 -8
  1029. package/dist/visualization.es546.js.map +1 -1
  1030. package/dist/visualization.es547.js +10 -19
  1031. package/dist/visualization.es547.js.map +1 -1
  1032. package/dist/visualization.es548.js +12 -61
  1033. package/dist/visualization.es548.js.map +1 -1
  1034. package/dist/visualization.es549.js +8 -28
  1035. package/dist/visualization.es549.js.map +1 -1
  1036. package/dist/visualization.es55.js +147 -43
  1037. package/dist/visualization.es55.js.map +1 -1
  1038. package/dist/visualization.es550.js +8 -5
  1039. package/dist/visualization.es550.js.map +1 -1
  1040. package/dist/visualization.es551.js +19 -3
  1041. package/dist/visualization.es551.js.map +1 -1
  1042. package/dist/visualization.es552.js +63 -2
  1043. package/dist/visualization.es552.js.map +1 -1
  1044. package/dist/visualization.es553.js +28 -282
  1045. package/dist/visualization.es553.js.map +1 -1
  1046. package/dist/visualization.es554.js +5 -2
  1047. package/dist/visualization.es554.js.map +1 -1
  1048. package/dist/visualization.es555.js +3 -127
  1049. package/dist/visualization.es555.js.map +1 -1
  1050. package/dist/visualization.es556.js +2 -19
  1051. package/dist/visualization.es556.js.map +1 -1
  1052. package/dist/visualization.es557.js +18 -3
  1053. package/dist/visualization.es557.js.map +1 -1
  1054. package/dist/visualization.es558.js +281 -3
  1055. package/dist/visualization.es558.js.map +1 -1
  1056. package/dist/visualization.es559.js +2 -16
  1057. package/dist/visualization.es559.js.map +1 -1
  1058. package/dist/visualization.es56.js +25 -60
  1059. package/dist/visualization.es56.js.map +1 -1
  1060. package/dist/visualization.es560.js +127 -3
  1061. package/dist/visualization.es560.js.map +1 -1
  1062. package/dist/visualization.es561.js +9 -9
  1063. package/dist/visualization.es561.js.map +1 -1
  1064. package/dist/visualization.es562.js +51 -4
  1065. package/dist/visualization.es562.js.map +1 -1
  1066. package/dist/visualization.es563.js +7 -5
  1067. package/dist/visualization.es563.js.map +1 -1
  1068. package/dist/visualization.es564.js +4 -9
  1069. package/dist/visualization.es564.js.map +1 -1
  1070. package/dist/visualization.es565.js +3 -7
  1071. package/dist/visualization.es565.js.map +1 -1
  1072. package/dist/visualization.es566.js +3 -4
  1073. package/dist/visualization.es566.js.map +1 -1
  1074. package/dist/visualization.es567.js +4 -4
  1075. package/dist/visualization.es567.js.map +1 -1
  1076. package/dist/visualization.es568.js +4 -4
  1077. package/dist/visualization.es568.js.map +1 -1
  1078. package/dist/visualization.es569.js +15 -11
  1079. package/dist/visualization.es569.js.map +1 -1
  1080. package/dist/visualization.es57.js +21 -3
  1081. package/dist/visualization.es57.js.map +1 -1
  1082. package/dist/visualization.es570.js +3 -9
  1083. package/dist/visualization.es570.js.map +1 -1
  1084. package/dist/visualization.es571.js +9 -30
  1085. package/dist/visualization.es571.js.map +1 -1
  1086. package/dist/visualization.es572.js +4 -24
  1087. package/dist/visualization.es572.js.map +1 -1
  1088. package/dist/visualization.es573.js +5 -51
  1089. package/dist/visualization.es573.js.map +1 -1
  1090. package/dist/visualization.es574.js +11 -3
  1091. package/dist/visualization.es574.js.map +1 -1
  1092. package/dist/visualization.es575.js +9 -8
  1093. package/dist/visualization.es575.js.map +1 -1
  1094. package/dist/visualization.es576.js +30 -20
  1095. package/dist/visualization.es576.js.map +1 -1
  1096. package/dist/visualization.es577.js +24 -7
  1097. package/dist/visualization.es577.js.map +1 -1
  1098. package/dist/visualization.es578.js +3 -6
  1099. package/dist/visualization.es578.js.map +1 -1
  1100. package/dist/visualization.es579.js +8 -5
  1101. package/dist/visualization.es579.js.map +1 -1
  1102. package/dist/visualization.es58.js +18 -47
  1103. package/dist/visualization.es58.js.map +1 -1
  1104. package/dist/visualization.es580.js +33 -7
  1105. package/dist/visualization.es580.js.map +1 -1
  1106. package/dist/visualization.es581.js +25 -16
  1107. package/dist/visualization.es581.js.map +1 -1
  1108. package/dist/visualization.es582.js +45 -4
  1109. package/dist/visualization.es582.js.map +1 -1
  1110. package/dist/visualization.es583.js +9 -7
  1111. package/dist/visualization.es583.js.map +1 -1
  1112. package/dist/visualization.es584.js +15 -35
  1113. package/dist/visualization.es584.js.map +1 -1
  1114. package/dist/visualization.es585.js +16 -9
  1115. package/dist/visualization.es585.js.map +1 -1
  1116. package/dist/visualization.es586.js +16 -33
  1117. package/dist/visualization.es586.js.map +1 -1
  1118. package/dist/visualization.es587.js +24 -10
  1119. package/dist/visualization.es587.js.map +1 -1
  1120. package/dist/visualization.es588.js +4 -8
  1121. package/dist/visualization.es588.js.map +1 -1
  1122. package/dist/visualization.es589.js +20 -18
  1123. package/dist/visualization.es589.js.map +1 -1
  1124. package/dist/visualization.es59.js +20 -3
  1125. package/dist/visualization.es59.js.map +1 -1
  1126. package/dist/visualization.es590.js +7 -7
  1127. package/dist/visualization.es590.js.map +1 -1
  1128. package/dist/visualization.es591.js +6 -7
  1129. package/dist/visualization.es591.js.map +1 -1
  1130. package/dist/visualization.es592.js +5 -13
  1131. package/dist/visualization.es592.js.map +1 -1
  1132. package/dist/visualization.es593.js +7 -72
  1133. package/dist/visualization.es593.js.map +1 -1
  1134. package/dist/visualization.es594.js +15 -29
  1135. package/dist/visualization.es594.js.map +1 -1
  1136. package/dist/visualization.es595.js +4 -5
  1137. package/dist/visualization.es595.js.map +1 -1
  1138. package/dist/visualization.es596.js +6 -25
  1139. package/dist/visualization.es596.js.map +1 -1
  1140. package/dist/visualization.es597.js +34 -11
  1141. package/dist/visualization.es597.js.map +1 -1
  1142. package/dist/visualization.es598.js +8 -4
  1143. package/dist/visualization.es598.js.map +1 -1
  1144. package/dist/visualization.es599.js +33 -4
  1145. package/dist/visualization.es599.js.map +1 -1
  1146. package/dist/visualization.es6.js +317 -294
  1147. package/dist/visualization.es6.js.map +1 -1
  1148. package/dist/visualization.es60.js +69 -281
  1149. package/dist/visualization.es60.js.map +1 -1
  1150. package/dist/visualization.es600.js +29 -4
  1151. package/dist/visualization.es600.js.map +1 -1
  1152. package/dist/visualization.es601.js +10 -13
  1153. package/dist/visualization.es601.js.map +1 -1
  1154. package/dist/visualization.es602.js +9 -17
  1155. package/dist/visualization.es602.js.map +1 -1
  1156. package/dist/visualization.es603.js +18 -13
  1157. package/dist/visualization.es603.js.map +1 -1
  1158. package/dist/visualization.es604.js +7 -13
  1159. package/dist/visualization.es604.js.map +1 -1
  1160. package/dist/visualization.es605.js +7 -8
  1161. package/dist/visualization.es605.js.map +1 -1
  1162. package/dist/visualization.es606.js +2 -2
  1163. package/dist/visualization.es607.js +3 -3
  1164. package/dist/visualization.es608.js +2 -2
  1165. package/dist/visualization.es61.js +81 -19
  1166. package/dist/visualization.es61.js.map +1 -1
  1167. package/dist/visualization.es612.js +4 -4
  1168. package/dist/visualization.es613.js +13 -4
  1169. package/dist/visualization.es613.js.map +1 -1
  1170. package/dist/visualization.es614.js +71 -7
  1171. package/dist/visualization.es614.js.map +1 -1
  1172. package/dist/visualization.es615.js +29 -6
  1173. package/dist/visualization.es615.js.map +1 -1
  1174. package/dist/visualization.es616.js +5 -18
  1175. package/dist/visualization.es616.js.map +1 -1
  1176. package/dist/visualization.es617.js +25 -14
  1177. package/dist/visualization.es617.js.map +1 -1
  1178. package/dist/visualization.es618.js +11 -32
  1179. package/dist/visualization.es618.js.map +1 -1
  1180. package/dist/visualization.es619.js +4 -290
  1181. package/dist/visualization.es619.js.map +1 -1
  1182. package/dist/visualization.es62.js +22 -54
  1183. package/dist/visualization.es62.js.map +1 -1
  1184. package/dist/visualization.es620.js +4 -3
  1185. package/dist/visualization.es620.js.map +1 -1
  1186. package/dist/visualization.es621.js +4 -11
  1187. package/dist/visualization.es621.js.map +1 -1
  1188. package/dist/visualization.es622.js +13 -4
  1189. package/dist/visualization.es622.js.map +1 -1
  1190. package/dist/visualization.es623.js +17 -5
  1191. package/dist/visualization.es623.js.map +1 -1
  1192. package/dist/visualization.es624.js +12 -4
  1193. package/dist/visualization.es624.js.map +1 -1
  1194. package/dist/visualization.es625.js +13 -13
  1195. package/dist/visualization.es625.js.map +1 -1
  1196. package/dist/visualization.es626.js +7 -116
  1197. package/dist/visualization.es626.js.map +1 -1
  1198. package/dist/visualization.es627.js +4 -65
  1199. package/dist/visualization.es627.js.map +1 -1
  1200. package/dist/visualization.es628.js +8 -4
  1201. package/dist/visualization.es628.js.map +1 -1
  1202. package/dist/visualization.es629.js +5 -6
  1203. package/dist/visualization.es629.js.map +1 -1
  1204. package/dist/visualization.es63.js +23 -111
  1205. package/dist/visualization.es63.js.map +1 -1
  1206. package/dist/visualization.es630.js +32 -7
  1207. package/dist/visualization.es630.js.map +1 -1
  1208. package/dist/visualization.es631.js +18 -16
  1209. package/dist/visualization.es631.js.map +1 -1
  1210. package/dist/visualization.es632.js +15 -19
  1211. package/dist/visualization.es632.js.map +1 -1
  1212. package/dist/visualization.es633.js +32 -9
  1213. package/dist/visualization.es633.js.map +1 -1
  1214. package/dist/visualization.es634.js +3 -3
  1215. package/dist/visualization.es634.js.map +1 -1
  1216. package/dist/visualization.es635.js +10 -27
  1217. package/dist/visualization.es635.js.map +1 -1
  1218. package/dist/visualization.es636.js +291 -6
  1219. package/dist/visualization.es636.js.map +1 -1
  1220. package/dist/visualization.es637.js +3 -10
  1221. package/dist/visualization.es637.js.map +1 -1
  1222. package/dist/visualization.es638.js +4 -5
  1223. package/dist/visualization.es638.js.map +1 -1
  1224. package/dist/visualization.es639.js +4 -10
  1225. package/dist/visualization.es639.js.map +1 -1
  1226. package/dist/visualization.es64.js +179 -7
  1227. package/dist/visualization.es64.js.map +1 -1
  1228. package/dist/visualization.es640.js +13 -21
  1229. package/dist/visualization.es640.js.map +1 -1
  1230. package/dist/visualization.es641.js +118 -2
  1231. package/dist/visualization.es641.js.map +1 -1
  1232. package/dist/visualization.es642.js +28 -12
  1233. package/dist/visualization.es642.js.map +1 -1
  1234. package/dist/visualization.es643.js +6 -303
  1235. package/dist/visualization.es643.js.map +1 -1
  1236. package/dist/visualization.es644.js +9 -25
  1237. package/dist/visualization.es644.js.map +1 -1
  1238. package/dist/visualization.es645.js +6 -77
  1239. package/dist/visualization.es645.js.map +1 -1
  1240. package/dist/visualization.es646.js +11 -34
  1241. package/dist/visualization.es646.js.map +1 -1
  1242. package/dist/visualization.es647.js +20 -11
  1243. package/dist/visualization.es647.js.map +1 -1
  1244. package/dist/visualization.es648.js +2 -8
  1245. package/dist/visualization.es648.js.map +1 -1
  1246. package/dist/visualization.es649.js +11 -8
  1247. package/dist/visualization.es649.js.map +1 -1
  1248. package/dist/visualization.es65.js +137 -30
  1249. package/dist/visualization.es65.js.map +1 -1
  1250. package/dist/visualization.es650.js +27 -3
  1251. package/dist/visualization.es650.js.map +1 -1
  1252. package/dist/visualization.es651.js +69 -0
  1253. package/dist/visualization.es651.js.map +1 -0
  1254. package/dist/visualization.es652.js +8 -0
  1255. package/dist/visualization.es652.js.map +1 -0
  1256. package/dist/visualization.es653.js +11 -0
  1257. package/dist/visualization.es653.js.map +1 -0
  1258. package/dist/visualization.es654.js +11 -0
  1259. package/dist/visualization.es654.js.map +1 -0
  1260. package/dist/visualization.es655.js +20 -0
  1261. package/dist/visualization.es655.js.map +1 -0
  1262. package/dist/visualization.es656.js +22 -0
  1263. package/dist/visualization.es656.js.map +1 -0
  1264. package/dist/visualization.es657.js +13 -0
  1265. package/dist/visualization.es657.js.map +1 -0
  1266. package/dist/visualization.es658.js +7 -0
  1267. package/dist/visualization.es658.js.map +1 -0
  1268. package/dist/visualization.es659.js +16 -0
  1269. package/dist/visualization.es659.js.map +1 -0
  1270. package/dist/visualization.es66.js +176 -48
  1271. package/dist/visualization.es66.js.map +1 -1
  1272. package/dist/visualization.es660.js +11 -0
  1273. package/dist/visualization.es660.js.map +1 -0
  1274. package/dist/visualization.es67.js +62 -50
  1275. package/dist/visualization.es67.js.map +1 -1
  1276. package/dist/visualization.es68.js +39 -42
  1277. package/dist/visualization.es68.js.map +1 -1
  1278. package/dist/visualization.es69.js +80 -5
  1279. package/dist/visualization.es69.js.map +1 -1
  1280. package/dist/visualization.es7.js +300 -166
  1281. package/dist/visualization.es7.js.map +1 -1
  1282. package/dist/visualization.es70.js +46 -5
  1283. package/dist/visualization.es70.js.map +1 -1
  1284. package/dist/visualization.es71.js +54 -16
  1285. package/dist/visualization.es71.js.map +1 -1
  1286. package/dist/visualization.es72.js +6 -4
  1287. package/dist/visualization.es72.js.map +1 -1
  1288. package/dist/visualization.es73.js +24 -25
  1289. package/dist/visualization.es73.js.map +1 -1
  1290. package/dist/visualization.es74.js +47 -30
  1291. package/dist/visualization.es74.js.map +1 -1
  1292. package/dist/visualization.es75.js +31 -5
  1293. package/dist/visualization.es75.js.map +1 -1
  1294. package/dist/visualization.es76.js +34 -7
  1295. package/dist/visualization.es76.js.map +1 -1
  1296. package/dist/visualization.es77.js +11 -68
  1297. package/dist/visualization.es77.js.map +1 -1
  1298. package/dist/visualization.es78.js +56 -10
  1299. package/dist/visualization.es78.js.map +1 -1
  1300. package/dist/visualization.es79.js +28 -39
  1301. package/dist/visualization.es79.js.map +1 -1
  1302. package/dist/visualization.es8.js +106 -137
  1303. package/dist/visualization.es8.js.map +1 -1
  1304. package/dist/visualization.es80.js +18 -80
  1305. package/dist/visualization.es80.js.map +1 -1
  1306. package/dist/visualization.es81.js +37 -46
  1307. package/dist/visualization.es81.js.map +1 -1
  1308. package/dist/visualization.es82.js +151 -54
  1309. package/dist/visualization.es82.js.map +1 -1
  1310. package/dist/visualization.es83.js +27 -7
  1311. package/dist/visualization.es83.js.map +1 -1
  1312. package/dist/visualization.es84.js +150 -26
  1313. package/dist/visualization.es84.js.map +1 -1
  1314. package/dist/visualization.es85.js +42 -12
  1315. package/dist/visualization.es85.js.map +1 -1
  1316. package/dist/visualization.es86.js +301 -56
  1317. package/dist/visualization.es86.js.map +1 -1
  1318. package/dist/visualization.es87.js +36 -36
  1319. package/dist/visualization.es87.js.map +1 -1
  1320. package/dist/visualization.es88.js +34 -193
  1321. package/dist/visualization.es88.js.map +1 -1
  1322. package/dist/visualization.es89.js +8 -142
  1323. package/dist/visualization.es89.js.map +1 -1
  1324. package/dist/visualization.es9.js +312 -26
  1325. package/dist/visualization.es9.js.map +1 -1
  1326. package/dist/visualization.es90.js +54 -187
  1327. package/dist/visualization.es90.js.map +1 -1
  1328. package/dist/visualization.es91.js +44 -120
  1329. package/dist/visualization.es91.js.map +1 -1
  1330. package/dist/visualization.es92.js +43 -12
  1331. package/dist/visualization.es92.js.map +1 -1
  1332. package/dist/visualization.es93.js +8 -74
  1333. package/dist/visualization.es93.js.map +1 -1
  1334. package/dist/visualization.es94.js +7 -32
  1335. package/dist/visualization.es94.js.map +1 -1
  1336. package/dist/visualization.es95.js +112 -12
  1337. package/dist/visualization.es95.js.map +1 -1
  1338. package/dist/visualization.es96.js +29 -5
  1339. package/dist/visualization.es96.js.map +1 -1
  1340. package/dist/visualization.es97.js +65 -5
  1341. package/dist/visualization.es97.js.map +1 -1
  1342. package/dist/visualization.es98.js +62 -5
  1343. package/dist/visualization.es98.js.map +1 -1
  1344. package/dist/visualization.es99.js +4 -32
  1345. package/dist/visualization.es99.js.map +1 -1
  1346. package/package.json +1 -1
  1347. package/dist/src/components/Heatmap/HeatmapCell.d.ts +0 -29
  1348. package/dist/src/components/Heatmap/HeatmapCell.d.ts.map +0 -1
  1349. package/dist/src/components/Heatmap/HeatmapCells.d.ts +0 -29
  1350. package/dist/src/components/Heatmap/HeatmapCells.d.ts.map +0 -1
  1351. package/dist/src/components/Heatmap/HeatmapStaticSvg.d.ts +0 -32
  1352. package/dist/src/components/Heatmap/HeatmapStaticSvg.d.ts.map +0 -1
  1353. package/dist/src/components/Heatmap/scrollable/HeatmapMiniMap.d.ts.map +0 -1
  1354. package/dist/src/components/Heatmap/scrollable/HeatmapMiniMapPopup.d.ts.map +0 -1
  1355. package/dist/src/components/Heatmap/scrollable/HeatmapScrollableGrid.d.ts +0 -29
  1356. package/dist/src/components/Heatmap/scrollable/HeatmapScrollableGrid.d.ts.map +0 -1
  1357. package/dist/src/components/Heatmap/scrollable/heatmapExport.d.ts +0 -25
  1358. package/dist/src/components/Heatmap/scrollable/heatmapExport.d.ts.map +0 -1
  1359. package/dist/visualization.es33.js +0 -271
  1360. package/dist/visualization.es33.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"visualization.es130.js","sources":["../src/components/Heatmap/scrollable/HeatmapMiniMapPopup.tsx"],"sourcesContent":["import { useCallback, useEffect, useRef, useState, type ReactNode, type RefObject } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport type { HeatmapLegendFrame } from \"../types\";\nimport HeatmapMiniMap, { type HeatmapMiniMapProps } from \"./HeatmapMiniMap\";\n\n// Nearly the whole screen, with enough backdrop showing that it reads as a popup.\nconst MINI_MAP_POPUP_WIDTH_VW = 94;\nconst MINI_MAP_POPUP_HEIGHT_VH = 90;\nconst MINI_MAP_POPUP_PADDING = 16;\n// Portaled to <body>, since a transformed ancestor would trap `position: fixed`, and stacked\n// above anything else the host page puts on top.\nconst MINI_MAP_POPUP_Z_INDEX = 2147483647;\n// The legend's band across the top: long enough to sweep with some precision.\nconst LEGEND_BAND_WIDTH = 440;\nconst LEGEND_BAND_HEIGHT = 40;\nconst LEGEND_BAND_GAP = 12;\n\ntype MiniMapPassThroughProps = Omit<HeatmapMiniMapProps, \"width\" | \"height\" | \"onCanvasClick\">;\n\nexport interface HeatmapMiniMapPopupProps extends MiniMapPassThroughProps {\n onClose: () => void;\n /** The inline minimap's container, where a click doesn't count as outside the popup. */\n containerRef: RefObject<HTMLDivElement | null>;\n /** Draws the plot's legend in a band across the top. Omitted where the plot shows no legend. */\n legend?: (frame: HeatmapLegendFrame) => ReactNode;\n}\n\nconst HeatmapMiniMapPopup = ({ onClose, containerRef, legend, ...miniMapProps }: HeatmapMiniMapPopupProps) => {\n const popupRef = useRef<HTMLDivElement | null>(null);\n // The legend's tooltips portal into the backdrop to show above the popup. State rather than a\n // ref, so the legend re-renders once it exists.\n const [backdrop, setBackdrop] = useState<HTMLDivElement | null>(null);\n useEffect(() => {\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target as Node;\n if (containerRef.current?.contains(target) || popupRef.current?.contains(target)) return;\n // An overlay the legend opened is part of the popup too; the backdrop itself is outside it.\n if (backdrop && target !== backdrop && backdrop.contains(target)) return;\n onClose();\n };\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") onClose();\n };\n document.addEventListener(\"pointerdown\", handlePointerDown);\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown);\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [containerRef, onClose, backdrop]);\n\n // The canvas needs pixel dimensions; the popup is sized in vw/vh, so the area is measured as it resizes.\n const [size, setSize] = useState<{ width: number; height: number } | null>(null);\n // A spinner covers the first draw, which can take a moment on a large grid.\n const [isReady, setIsReady] = useState(false);\n const handleReady = useCallback(() => setIsReady(true), []);\n const observerRef = useRef<ResizeObserver | null>(null);\n const areaRef = useCallback((node: HTMLDivElement | null) => {\n observerRef.current?.disconnect();\n observerRef.current = null;\n if (!node) {\n setSize(null);\n return;\n }\n const observer = new ResizeObserver(([entry]) => {\n if (!entry) return;\n const { width, height } = entry.contentRect;\n setSize({ width: Math.floor(width), height: Math.floor(height) });\n });\n observer.observe(node);\n observerRef.current = observer;\n }, []);\n\n // Narrower only where the popup itself is: on a phone.\n const legendBandWidth = Math.min(LEGEND_BAND_WIDTH, size?.width ?? LEGEND_BAND_WIDTH);\n\n return createPortal(\n <div\n ref={setBackdrop}\n style={{ position: \"fixed\", inset: 0, zIndex: MINI_MAP_POPUP_Z_INDEX, background: \"rgba(0,0,0,0.45)\", display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}\n >\n <style>{\"@keyframes heatmapMiniMapSpinnerRotate { to { transform: rotate(360deg); } }\"}</style>\n <div\n ref={popupRef}\n style={{\n position: \"relative\",\n width: `${MINI_MAP_POPUP_WIDTH_VW}vw`,\n height: `${MINI_MAP_POPUP_HEIGHT_VH}vh`,\n boxSizing: \"border-box\",\n display: \"flex\",\n flexDirection: \"column\",\n background: \"#fff\",\n border: \"1px solid #d5d5d5\",\n borderRadius: 8,\n boxShadow: \"0 8px 32px rgba(0,0,0,0.25)\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n flexShrink: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: `10px ${MINI_MAP_POPUP_PADDING}px`,\n background: \"#f7f7f8\",\n borderBottom: \"1px solid #e5e5e5\",\n }}\n >\n <span style={{ fontSize: 14, fontWeight: 600, color: \"#333\" }}>Minimap</span>\n <button\n type=\"button\"\n aria-label=\"Close expanded minimap\"\n onClick={onClose}\n style={{\n width: 26,\n height: 26,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: 0,\n border: \"none\",\n borderRadius: \"50%\",\n background: \"#fff\",\n color: \"#555\",\n fontSize: 16,\n lineHeight: 1,\n cursor: \"pointer\",\n }}\n >\n ×\n </button>\n </div>\n <div style={{ flex: 1, minHeight: 0, display: \"flex\", flexDirection: \"column\", gap: LEGEND_BAND_GAP, padding: MINI_MAP_POPUP_PADDING }}>\n {legend && (\n // Above the map rather than beside it: the popup is wide, so a band costs the map less.\n <svg\n width={legendBandWidth}\n height={LEGEND_BAND_HEIGHT}\n style={{ flexShrink: 0, display: \"block\", overflow: \"visible\" }}\n >\n {legend({\n width: legendBandWidth,\n height: LEGEND_BAND_HEIGHT,\n orientation: \"horizontal\",\n overlayContainer: backdrop ?? undefined,\n })}\n </svg>\n )}\n <div ref={areaRef} style={{ flex: 1, minHeight: 0, position: \"relative\" }}>\n {/* Not gated on `size`, so it shows on the first paint rather than after the measurement. */}\n {!isReady && (\n <div\n aria-label=\"Loading minimap\"\n style={{\n position: \"absolute\",\n inset: 0,\n zIndex: 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n pointerEvents: \"none\",\n }}\n >\n <div\n style={{\n width: 40,\n height: 40,\n borderRadius: \"50%\",\n border: \"4px solid #e5e5e5\",\n // The minimap's viewport-rectangle color.\n borderTopColor: \"#0d0f98\",\n animation: \"heatmapMiniMapSpinnerRotate 0.8s linear infinite\",\n }}\n />\n </div>\n )}\n {size && size.width > 0 && size.height > 0 && (\n <HeatmapMiniMap {...miniMapProps} width={size.width} height={size.height} onReady={handleReady} />\n )}\n </div>\n </div>\n </div>\n </div>,\n document.body\n );\n};\n\nexport default HeatmapMiniMapPopup;\n"],"names":["MINI_MAP_POPUP_WIDTH_VW","MINI_MAP_POPUP_HEIGHT_VH","MINI_MAP_POPUP_PADDING","MINI_MAP_POPUP_Z_INDEX","LEGEND_BAND_WIDTH","LEGEND_BAND_HEIGHT","LEGEND_BAND_GAP","HeatmapMiniMapPopup","t0","$","_c","containerRef","legend","miniMapProps","onClose","popupRef","useRef","backdrop","setBackdrop","useState","t1","t2","handlePointerDown","event","target","current","contains","handleKeyDown","event_0","key","document","addEventListener","removeEventListener","useEffect","size","setSize","isReady","setIsReady","t3","Symbol","for","handleReady","observerRef","t4","node","disconnect","observer","ResizeObserver","t5","entry","width","height","contentRect","Math","floor","observe","areaRef","legendBandWidth","min","t6","position","inset","zIndex","background","display","alignItems","justifyContent","jsx","t7","t8","t9","boxSizing","flexDirection","border","borderRadius","boxShadow","overflow","flexShrink","padding","borderBottom","fontSize","fontWeight","color","t10","lineHeight","cursor","t11","t12","flex","minHeight","gap","t13","orientation","overlayContainer","undefined","t14","t15","pointerEvents","borderTopColor","animation","t16","HeatmapMiniMap","t17","jsxs","t18","t19","createPortal","body"],"mappings":"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"}
1
+ {"version":3,"file":"visualization.es130.js","sources":["../src/components/Heatmap/heatmapCellAppearance.ts"],"sourcesContent":["import { scaleLinear } from \"@visx/scale\";\n\n/** A cell outside highlightRange: faint enough that the cells inside it carry the grid. */\nexport const DIMMED_OPACITY = 0.12;\nconst NULL_VALUE_COLOR = \"none\";\n\nexport function getHeatmapColorScale(colors: [string, string, ...string[]], domain: [number, number]) {\n const [minValue, maxValue] = domain;\n return scaleLinear<string>({\n range: colors,\n domain: colors.map((_, i) => minValue + (i * (maxValue - minValue)) / (colors.length - 1)),\n // Held at the end colors rather than extrapolated past them, which interpolates the RGB channels\n // out of range into colors that aren't on the gradient at all.\n clamp: true,\n });\n}\n\n/** Whether a count falls outside highlightRange, and so fades. Nothing fades without a range. */\nexport const isOutsideRange = (count: number | null | undefined, range: [number, number] | null | undefined) =>\n !!range && count != null && (count < range[0] || count > range[1]);\n\n/**\n * A cell's fill. Selection isn't part of it: selected cells are framed instead (see\n * heatmapSelection.ts).\n */\nexport function resolveCellAppearance(\n count: number | null | undefined,\n color: string | undefined,\n isDimmed = false\n): { fill: string; fillOpacity: number } {\n const isNullValue = count == null;\n return {\n fill: isNullValue || color === undefined ? NULL_VALUE_COLOR : color,\n fillOpacity: isNullValue ? 0 : isDimmed ? DIMMED_OPACITY : 1,\n };\n}\n"],"names":["DIMMED_OPACITY","NULL_VALUE_COLOR","getHeatmapColorScale","colors","domain","minValue","maxValue","scaleLinear","range","map","_","i","length","clamp","isOutsideRange","count","resolveCellAppearance","color","isDimmed","isNullValue","fill","undefined","fillOpacity"],"mappings":";AAGO,MAAMA,IAAiB,MACxBC,IAAmB;AAElB,SAASC,EAAqBC,GAAuCC,GAA0B;AACpG,QAAM,CAACC,GAAUC,CAAQ,IAAIF;AAC7B,SAAOG,EAAoB;AAAA,IACzBC,OAAOL;AAAAA,IACPC,QAAQD,EAAOM,IAAI,CAACC,GAAGC,MAAMN,IAAYM,KAAKL,IAAWD,MAAcF,EAAOS,SAAS,EAAE;AAAA;AAAA;AAAA,IAGzFC,OAAO;AAAA,EAAA,CACR;AACH;AAGO,MAAMC,IAAiBA,CAACC,GAAkCP,MAC/D,CAAC,CAACA,KAASO,KAAS,SAASA,IAAQP,EAAM,CAAC,KAAKO,IAAQP,EAAM,CAAC;AAM3D,SAASQ,EACdD,GACAE,GACAC,IAAW,IAC4B;AACvC,QAAMC,IAAcJ,KAAS;AAC7B,SAAO;AAAA,IACLK,MAAMD,KAAeF,MAAUI,SAAYpB,IAAmBgB;AAAAA,IAC9DK,aAAaH,IAAc,IAAID,IAAWlB,IAAiB;AAAA,EAAA;AAE/D;"}
@@ -1,85 +1,87 @@
1
- import { useRef as T, useEffect as Y, useCallback as f, useState as q, useMemo as m } from "react";
2
- import { getVisibleRange as v, drawHeatmapCells as y, hitTestCell as w, buildBin as A } from "./visualization.es127.js";
3
- const g = 4;
4
- function I({
5
- canvasCellParams: e,
6
- viewportWidth: i,
7
- viewportHeight: a,
8
- xTickValues: b,
9
- yTickValues: M,
10
- onClick: S
1
+ const d = "#1a1c1e", C = "#ffffff";
2
+ const x = (n) => `${n.row}-${n.column}`, y = (n) => {
3
+ const [f, r] = n.split("-").map(Number);
4
+ return {
5
+ row: f,
6
+ column: r
7
+ };
8
+ };
9
+ function* $(n, {
10
+ colStart: f,
11
+ colEnd: r,
12
+ rowStart: i,
13
+ rowEnd: H
11
14
  }) {
12
- const l = T(null), _ = T(null), d = T(null), L = T(null), R = T(null);
13
- Y(() => () => {
14
- R.current != null && cancelAnimationFrame(R.current);
15
- }, []);
16
- const c = f(() => {
17
- const t = _.current, n = l.current;
18
- if (!t || !n) return;
19
- const r = t.getContext("2d");
20
- if (!r) return;
21
- const u = window.devicePixelRatio || 1;
22
- r.setTransform(u, 0, 0, u, 0, 0), r.clearRect(0, 0, i, a);
23
- const o = v(e, n.scrollLeft, n.scrollTop, i, a, g);
24
- r.translate(-n.scrollLeft, -n.scrollTop), y(r, e, o, d.current);
25
- }, [e, i, a]);
26
- Y(() => {
27
- c();
28
- }, [c]);
29
- const [p, x] = q({
30
- left: 0,
31
- top: 0
32
- }), G = f((t) => {
33
- l.current = t, t && x({
34
- left: t.scrollLeft,
35
- top: t.scrollTop
15
+ if ((r - f + 1) * (H - i + 1) <= n.size) {
16
+ for (let t = f; t <= r; t++) for (let o = i; o <= H; o++) n.has(x({
17
+ row: o,
18
+ column: t
19
+ })) && (yield {
20
+ row: o,
21
+ column: t
36
22
  });
37
- }, []), s = m(() => v(e, p.left, p.top, i, a, g), [e, p.left, p.top, i, a]), V = m(() => b.slice(s.colStart, s.colEnd + 1), [b, s.colStart, s.colEnd]), C = m(() => M.slice(s.rowStart, s.rowEnd + 1), [M, s.rowStart, s.rowEnd]), F = f(() => {
38
- const t = l.current;
39
- t && R.current == null && (R.current = requestAnimationFrame(() => {
40
- R.current = null, c(), x({
41
- left: t.scrollLeft,
42
- top: t.scrollTop
43
- });
44
- }));
45
- }, [c]), N = f((t) => {
46
- const n = l.current;
47
- if (!n) return;
48
- const r = t.nativeEvent.offsetX + n.scrollLeft, u = t.nativeEvent.offsetY + n.scrollTop, o = w(e, r, u);
49
- t.currentTarget.style.cursor = o ? "pointer" : "default";
50
- const E = d.current;
51
- if ((E?.row !== o?.row || E?.column !== o?.column) && (d.current = o, c()), o) {
52
- const X = A(e, o);
53
- X && L.current?.show(X, t);
54
- } else
55
- L.current?.hide();
56
- }, [e, c]), h = f((t) => {
57
- t.currentTarget.style.cursor = "default", d.current && (d.current = null, c()), L.current?.hide();
58
- }, [c]), k = f((t) => {
59
- const n = l.current;
60
- if (!n || !S) return;
61
- const r = t.nativeEvent.offsetX + n.scrollLeft, u = t.nativeEvent.offsetY + n.scrollTop, o = w(e, r, u);
62
- if (!o) return;
63
- const E = A(e, o);
64
- E && S(E);
65
- }, [e, S]);
23
+ return;
24
+ }
25
+ for (const t of n) {
26
+ const o = y(t);
27
+ o.column >= f && o.column <= r && o.row >= i && o.row <= H && (yield o);
28
+ }
29
+ }
30
+ function v(n, f, r, i) {
31
+ const {
32
+ xScale: H,
33
+ cellYScale: t,
34
+ binWidth: o,
35
+ binHeight: E,
36
+ gap: e
37
+ } = r, c = (s, l) => n.has(x({
38
+ row: s,
39
+ column: l
40
+ })), u = [], R = [], _ = (s, l, A, a, M, m) => s.push({
41
+ x: A,
42
+ y: a,
43
+ width: M,
44
+ height: m,
45
+ fill: l
46
+ });
47
+ for (const {
48
+ row: s,
49
+ column: l
50
+ } of f) {
51
+ if (!c(s, l)) continue;
52
+ const A = H(l), a = A + o - e, M = t(s) + e, m = t(s) + E, I = A - 2 < 0 ? A + 2 : A, O = a + 2 > i.width ? a - 2 : a, T = M - 2 < 0 ? M + 2 : M, h = m + 2 > i.height ? m - 2 : m, w = c(s + 1, l), S = c(s - 1, l), F = c(s, l - 1), N = c(s, l + 1), D = (k) => k ? e : 2, W = (k) => k ? e : 0, p = [I - D(F), O - I + D(F) + D(N)], L = [T - D(w), h - T + D(w) + D(S)], g = [I - W(F), O - I + W(F) + W(N)], b = [T - W(w), h - T + W(w) + W(S)];
53
+ w || (_(u, d, p[0], T - 2, p[1], 2), _(R, C, g[0], T, g[1], 1)), S || (_(u, d, p[0], h, p[1], 2), _(R, C, g[0], h - 1, g[1], 1)), F || (_(u, d, I - 2, L[0], 2, L[1]), _(R, C, I, b[0], 1, b[1])), N || (_(u, d, O, L[0], 2, L[1]), _(R, C, O - 1, b[0], 1, b[1]));
54
+ }
55
+ return [...u, ...R];
56
+ }
57
+ const z = {
58
+ columns: /* @__PURE__ */ new Set(),
59
+ rows: /* @__PURE__ */ new Set()
60
+ };
61
+ function B(n, f, r) {
62
+ if (!n?.size) return z;
63
+ const i = [...n].map(y), H = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Map();
64
+ for (const {
65
+ row: e,
66
+ column: c
67
+ } of i)
68
+ H.set(c, (H.get(c) ?? 0) + 1), t.set(e, (t.get(e) ?? 0) + 1);
69
+ const o = /* @__PURE__ */ new Set(), E = /* @__PURE__ */ new Set();
70
+ for (const {
71
+ row: e,
72
+ column: c
73
+ } of i)
74
+ (t.get(e) ?? 0) < f && o.add(c), (H.get(c) ?? 0) < r && E.add(e);
66
75
  return {
67
- canvasRef: _,
68
- mainPaneRef: l,
69
- canvasTooltipRef: L,
70
- setMainPaneNode: G,
71
- handleGridScroll: F,
72
- axisScrollPos: p,
73
- visibleXTickValues: V,
74
- visibleYTickValues: C,
75
- canvasHandlers: {
76
- onMouseMove: N,
77
- onMouseLeave: h,
78
- onClick: k
79
- }
76
+ columns: o,
77
+ rows: E
80
78
  };
81
79
  }
82
80
  export {
83
- I as useHeatmapCanvasGrid
81
+ d as SELECTION_COLOR,
82
+ x as cellKey,
83
+ $ as selectedCellsIn,
84
+ v as selectionFrame,
85
+ B as selectionMarks
84
86
  };
85
87
  //# sourceMappingURL=visualization.es131.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"visualization.es131.js","sources":["../src/components/Heatmap/hooks/useHeatmapCanvasGrid.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport type { HeatmapCellId } from \"../types\";\nimport type { AnyBin } from \"../HeatmapCells\";\nimport type { PlotTooltipHandle } from \"../../../tooltip\";\nimport { drawHeatmapCells, getVisibleRange, hitTestCell, buildBin, type CanvasCellParams } from \"../HeatmapCanvasCells\";\n\n// Rows and columns drawn past the viewport, so cells and tick labels don't pop in as they scroll into view.\nconst GRID_OVERSCAN_CELLS = 4;\n\nexport interface UseHeatmapCanvasGridArgs {\n canvasCellParams: CanvasCellParams;\n viewportWidth: number;\n viewportHeight: number;\n xTickValues: number[];\n yTickValues: number[];\n onClick?: (bin: AnyBin) => void;\n}\n\nexport function useHeatmapCanvasGrid({\n canvasCellParams, viewportWidth, viewportHeight, xTickValues, yTickValues, onClick,\n}: UseHeatmapCanvasGridArgs) {\n // Only mainPaneRef scrolls natively. The canvas repaints from its scroll position, and the tick\n // label panes follow it through a transform (axisScrollPos), both once per frame.\n const mainPaneRef = useRef<HTMLDivElement | null>(null);\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\n const hoveredCellRef = useRef<HeatmapCellId | null>(null);\n const canvasTooltipRef = useRef<PlotTooltipHandle<AnyBin>>(null);\n const drawRafRef = useRef<number | null>(null);\n\n useEffect(() => () => {\n if (drawRafRef.current != null) cancelAnimationFrame(drawRafRef.current);\n }, []);\n\n // Painted imperatively rather than through state, so scrolling never waits on a React render.\n const drawCanvas = useCallback(() => {\n const canvas = canvasRef.current;\n const main = mainPaneRef.current;\n if (!canvas || !main) return;\n const ctx = canvas.getContext(\"2d\");\n if (!ctx) return;\n const dpr = window.devicePixelRatio || 1;\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n ctx.clearRect(0, 0, viewportWidth, viewportHeight);\n const range = getVisibleRange(canvasCellParams, main.scrollLeft, main.scrollTop, viewportWidth, viewportHeight, GRID_OVERSCAN_CELLS);\n ctx.translate(-main.scrollLeft, -main.scrollTop);\n drawHeatmapCells(ctx, canvasCellParams, range, hoveredCellRef.current);\n }, [canvasCellParams, viewportWidth, viewportHeight]);\n\n useEffect(() => {\n drawCanvas();\n }, [drawCanvas]);\n\n const [axisScrollPos, setAxisScrollPos] = useState({ left: 0, top: 0 });\n const setMainPaneNode = useCallback((node: HTMLDivElement | null) => {\n mainPaneRef.current = node;\n if (node) setAxisScrollPos({ left: node.scrollLeft, top: node.scrollTop });\n }, []);\n\n const axisVisibleRange = useMemo(\n () => getVisibleRange(canvasCellParams, axisScrollPos.left, axisScrollPos.top, viewportWidth, viewportHeight, GRID_OVERSCAN_CELLS),\n [canvasCellParams, axisScrollPos.left, axisScrollPos.top, viewportWidth, viewportHeight]\n );\n const visibleXTickValues = useMemo(\n () => xTickValues.slice(axisVisibleRange.colStart, axisVisibleRange.colEnd + 1),\n [xTickValues, axisVisibleRange.colStart, axisVisibleRange.colEnd]\n );\n const visibleYTickValues = useMemo(\n () => yTickValues.slice(axisVisibleRange.rowStart, axisVisibleRange.rowEnd + 1),\n [yTickValues, axisVisibleRange.rowStart, axisVisibleRange.rowEnd]\n );\n\n const handleGridScroll = useCallback(() => {\n const main = mainPaneRef.current;\n if (!main) return;\n if (drawRafRef.current != null) return;\n drawRafRef.current = requestAnimationFrame(() => {\n drawRafRef.current = null;\n drawCanvas();\n setAxisScrollPos({ left: main.scrollLeft, top: main.scrollTop });\n });\n }, [drawCanvas]);\n\n const handleCanvasMouseMove = useCallback((event: React.MouseEvent<HTMLCanvasElement>) => {\n const main = mainPaneRef.current;\n if (!main) return;\n const contentX = event.nativeEvent.offsetX + main.scrollLeft;\n const contentY = event.nativeEvent.offsetY + main.scrollTop;\n const cell = hitTestCell(canvasCellParams, contentX, contentY);\n // As heatmapCellStyles does for SVG cells: a pointer over any cell, null ones included.\n event.currentTarget.style.cursor = cell ? \"pointer\" : \"default\";\n const prev = hoveredCellRef.current;\n if (prev?.row !== cell?.row || prev?.column !== cell?.column) {\n hoveredCellRef.current = cell;\n drawCanvas();\n }\n if (cell) {\n const bin = buildBin(canvasCellParams, cell);\n if (bin) canvasTooltipRef.current?.show(bin, event);\n } else {\n canvasTooltipRef.current?.hide();\n }\n }, [canvasCellParams, drawCanvas]);\n\n const handleCanvasMouseLeave = useCallback((event: React.MouseEvent<HTMLCanvasElement>) => {\n event.currentTarget.style.cursor = \"default\";\n if (hoveredCellRef.current) {\n hoveredCellRef.current = null;\n drawCanvas();\n }\n canvasTooltipRef.current?.hide();\n }, [drawCanvas]);\n\n const handleCanvasClick = useCallback((event: React.MouseEvent<HTMLCanvasElement>) => {\n const main = mainPaneRef.current;\n if (!main || !onClick) return;\n const contentX = event.nativeEvent.offsetX + main.scrollLeft;\n const contentY = event.nativeEvent.offsetY + main.scrollTop;\n const cell = hitTestCell(canvasCellParams, contentX, contentY);\n if (!cell) return;\n const bin = buildBin(canvasCellParams, cell);\n if (bin) onClick(bin);\n }, [canvasCellParams, onClick]);\n\n return {\n canvasRef, mainPaneRef, canvasTooltipRef, setMainPaneNode, handleGridScroll, axisScrollPos,\n visibleXTickValues, visibleYTickValues,\n canvasHandlers: {\n onMouseMove: handleCanvasMouseMove,\n onMouseLeave: handleCanvasMouseLeave,\n onClick: handleCanvasClick,\n },\n };\n}\n"],"names":["GRID_OVERSCAN_CELLS","useHeatmapCanvasGrid","canvasCellParams","viewportWidth","viewportHeight","xTickValues","yTickValues","onClick","mainPaneRef","useRef","canvasRef","hoveredCellRef","canvasTooltipRef","drawRafRef","useEffect","current","cancelAnimationFrame","drawCanvas","useCallback","canvas","main","ctx","getContext","dpr","window","devicePixelRatio","setTransform","clearRect","range","getVisibleRange","scrollLeft","scrollTop","translate","drawHeatmapCells","axisScrollPos","setAxisScrollPos","useState","left","top","setMainPaneNode","node","axisVisibleRange","useMemo","visibleXTickValues","slice","colStart","colEnd","visibleYTickValues","rowStart","rowEnd","handleGridScroll","requestAnimationFrame","handleCanvasMouseMove","event","contentX","nativeEvent","offsetX","contentY","offsetY","cell","hitTestCell","currentTarget","style","cursor","prev","row","column","bin","buildBin","show","hide","handleCanvasMouseLeave","handleCanvasClick","canvasHandlers","onMouseMove","onMouseLeave"],"mappings":"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"}
1
+ {"version":3,"file":"visualization.es131.js","sources":["../src/components/Heatmap/heatmapSelection.ts"],"sourcesContent":["/**\n * How a selection shows: a frame around the selected cells, and marks on the axes and minimap for\n * the columns and rows holding them. Cells keep their own colors, so the rest of the grid can\n * still be read for what to select next.\n */\n\nimport type { HeatmapCellId } from \"./types\";\n\n/** The frame's dark line, and the white one just inside it that holds it against a dark cell. */\nexport const SELECTION_COLOR = \"#1a1c1e\";\nconst HALO_COLOR = \"#ffffff\";\n/** Laid outside the selected cells: at the default gap of 2 it fills the gap and covers no cell. */\nconst FRAME_WIDTH = 2;\nconst HALO_WIDTH = 1;\n\nexport type SelectionBand = { x: number; y: number; width: number; height: number; fill: string };\n\ntype FrameGeometry = {\n xScale: (column: number) => number;\n cellYScale: (row: number) => number;\n binWidth: number;\n binHeight: number;\n gap: number;\n};\n\ntype GridBounds = { width: number; height: number };\n\nexport const cellKey = (cell: HeatmapCellId) => `${cell.row}-${cell.column}`;\n\nconst parseKey = (key: string): HeatmapCellId => {\n const [row, column] = key.split(\"-\").map(Number);\n return { row, column };\n};\n\n/** The selected cells within a block, walking whichever of the block and the selection is smaller. */\nexport function* selectedCellsIn(\n selectedKeys: Set<string>,\n { colStart, colEnd, rowStart, rowEnd }: { colStart: number; colEnd: number; rowStart: number; rowEnd: number }\n): Generator<HeatmapCellId> {\n if ((colEnd - colStart + 1) * (rowEnd - rowStart + 1) <= selectedKeys.size) {\n for (let column = colStart; column <= colEnd; column++)\n for (let row = rowStart; row <= rowEnd; row++) if (selectedKeys.has(cellKey({ row, column }))) yield { row, column };\n return;\n }\n for (const key of selectedKeys) {\n const cell = parseKey(key);\n if (cell.column >= colStart && cell.column <= colEnd && cell.row >= rowStart && cell.row <= rowEnd) yield cell;\n }\n}\n\n/**\n * The frame around the selected cells among `cells`, as rectangles to fill in order: a dark band\n * outside each edge not shared with another selected cell, then a white line just inside it.\n * Adjacent selected cells share one frame, so a selected column is one tall box.\n */\nexport function selectionFrame(\n selectedKeys: Set<string>,\n cells: Iterable<HeatmapCellId>,\n geometry: FrameGeometry,\n bounds: GridBounds\n): SelectionBand[] {\n const { xScale, cellYScale, binWidth, binHeight, gap } = geometry;\n const isSelected = (row: number, column: number) => selectedKeys.has(cellKey({ row, column }));\n const dark: SelectionBand[] = [];\n const halo: SelectionBand[] = [];\n const band = (into: SelectionBand[], fill: string, x: number, y: number, width: number, height: number) =>\n into.push({ x, y, width, height, fill });\n\n for (const { row, column } of cells) {\n if (!isSelected(row, column)) continue;\n // The cell as drawn, with its gap to its right and above it (see getCellGeometry).\n const cellLeft = xScale(column);\n const cellRight = cellLeft + binWidth - gap;\n const cellTop = cellYScale(row) + gap;\n const cellBottom = cellYScale(row) + binHeight;\n // The cell, pulled in wherever the line outside it would fall past the grid's edge.\n const left = cellLeft - FRAME_WIDTH < 0 ? cellLeft + FRAME_WIDTH : cellLeft;\n const right = cellRight + FRAME_WIDTH > bounds.width ? cellRight - FRAME_WIDTH : cellRight;\n const top = cellTop - FRAME_WIDTH < 0 ? cellTop + FRAME_WIDTH : cellTop;\n const bottom = cellBottom + FRAME_WIDTH > bounds.height ? cellBottom - FRAME_WIDTH : cellBottom;\n // Row 0 is at the bottom of the grid, so the row above is row + 1.\n const above = isSelected(row + 1, column);\n const below = isSelected(row - 1, column);\n const before = isSelected(row, column - 1);\n const after = isSelected(row, column + 1);\n // How far an edge's line runs past the box: across the gap to a selected neighbor, or round\n // the corner where there is none.\n const reach = (selected: boolean) => (selected ? gap : FRAME_WIDTH);\n const bridge = (selected: boolean) => (selected ? gap : 0);\n const across = [left - reach(before), right - left + reach(before) + reach(after)] as const;\n const down = [top - reach(above), bottom - top + reach(above) + reach(below)] as const;\n const haloAcross = [left - bridge(before), right - left + bridge(before) + bridge(after)] as const;\n const haloDown = [top - bridge(above), bottom - top + bridge(above) + bridge(below)] as const;\n\n if (!above) {\n band(dark, SELECTION_COLOR, across[0], top - FRAME_WIDTH, across[1], FRAME_WIDTH);\n band(halo, HALO_COLOR, haloAcross[0], top, haloAcross[1], HALO_WIDTH);\n }\n if (!below) {\n band(dark, SELECTION_COLOR, across[0], bottom, across[1], FRAME_WIDTH);\n band(halo, HALO_COLOR, haloAcross[0], bottom - HALO_WIDTH, haloAcross[1], HALO_WIDTH);\n }\n if (!before) {\n band(dark, SELECTION_COLOR, left - FRAME_WIDTH, down[0], FRAME_WIDTH, down[1]);\n band(halo, HALO_COLOR, left, haloDown[0], HALO_WIDTH, haloDown[1]);\n }\n if (!after) {\n band(dark, SELECTION_COLOR, right, down[0], FRAME_WIDTH, down[1]);\n band(halo, HALO_COLOR, right - HALO_WIDTH, haloDown[0], HALO_WIDTH, haloDown[1]);\n }\n }\n return [...dark, ...halo];\n}\n\n/** The columns and rows the axes and minimap mark as holding the selection. */\nexport type SelectionMarks = { columns: Set<number>; rows: Set<number> };\n\nconst NO_SELECTION_MARKS: SelectionMarks = { columns: new Set(), rows: new Set() };\n\n/**\n * Which columns and rows to mark. A column is marked for a selected cell whose row isn't fully\n * selected, and a row for one whose column isn't: a whole selected column marks only its column,\n * and a single cell marks both.\n */\nexport function selectionMarks(selectedKeys: Set<string> | null, numColumns: number, numRows: number): SelectionMarks {\n if (!selectedKeys?.size) return NO_SELECTION_MARKS;\n const cells = [...selectedKeys].map(parseKey);\n const perColumn = new Map<number, number>();\n const perRow = new Map<number, number>();\n for (const { row, column } of cells) {\n perColumn.set(column, (perColumn.get(column) ?? 0) + 1);\n perRow.set(row, (perRow.get(row) ?? 0) + 1);\n }\n const columns = new Set<number>();\n const rows = new Set<number>();\n for (const { row, column } of cells) {\n if ((perRow.get(row) ?? 0) < numColumns) columns.add(column);\n if ((perColumn.get(column) ?? 0) < numRows) rows.add(row);\n }\n return { columns, rows };\n}\n"],"names":["SELECTION_COLOR","HALO_COLOR","cellKey","cell","row","column","parseKey","key","split","map","Number","selectedCellsIn","selectedKeys","colStart","colEnd","rowStart","rowEnd","size","has","selectionFrame","cells","geometry","bounds","xScale","cellYScale","binWidth","binHeight","gap","isSelected","dark","halo","band","into","fill","x","y","width","height","push","cellLeft","cellRight","cellTop","cellBottom","left","FRAME_WIDTH","right","top","bottom","above","below","before","after","reach","selected","bridge","across","down","haloAcross","haloDown","HALO_WIDTH","NO_SELECTION_MARKS","columns","Set","rows","selectionMarks","numColumns","numRows","perColumn","Map","perRow","set","get","add"],"mappings":"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"}
@@ -1,40 +1,248 @@
1
- import { c as T } from "react/compiler-runtime";
2
- import { useRef as _, useEffect as v } from "react";
3
- import { cellKey as R } from "./visualization.es126.js";
4
- function w(f, e, l, t) {
5
- return t - l > e || l < f ? l : t > f + e ? t - e : f;
6
- }
7
- function O(f) {
8
- const e = T(12), {
9
- mainPaneRef: l,
10
- selectedCells: t,
11
- scrollToSelection: n,
12
- binWidth: o,
13
- viewportWidth: c
14
- } = f;
15
- let i;
16
- e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (i = /* @__PURE__ */ new Set(), e[0] = i) : i = e[0];
17
- const p = _(i);
18
- let r;
19
- e[1] !== o || e[2] !== l || e[3] !== n || e[4] !== t || e[5] !== c ? (r = () => {
20
- const g = p.current, y = t ?? [], C = y.filter((s) => !g.has(R(s)));
21
- p.current = new Set(y.map(R));
22
- const u = l.current;
23
- if (!n || !u || C.length === 0)
24
- return;
25
- let a = 1 / 0, h = -1 / 0;
26
- for (const s of C)
27
- s.column < a && (a = s.column), s.column > h && (h = s.column);
28
- const K = a * o, S = (h + 1) * o, L = w(u.scrollLeft, c, K, S);
29
- L !== u.scrollLeft && u.scrollTo({
30
- left: L,
31
- behavior: "smooth"
32
- });
33
- }, e[1] = o, e[2] = l, e[3] = n, e[4] = t, e[5] = c, e[6] = r) : r = e[6];
34
- let m;
35
- e[7] !== o || e[8] !== n || e[9] !== t || e[10] !== c ? (m = [t, n, o, c], e[7] = o, e[8] = n, e[9] = t, e[10] = c, e[11] = m) : m = e[11], v(r, m);
1
+ import { getAnimationPose as z } from "./visualization.es36.js";
2
+ import { isOutsideRange as tt, resolveCellAppearance as nt, DIMMED_OPACITY as ot } from "./visualization.es130.js";
3
+ import { selectionFrame as et, selectedCellsIn as lt } from "./visualization.es131.js";
4
+ const O = (t, n, o) => Math.min(Math.max(t, n), o);
5
+ function L(t, n, o) {
6
+ const {
7
+ xScale: e,
8
+ cellYScale: i,
9
+ gap: c,
10
+ isRect: l,
11
+ binWidth: a,
12
+ binHeight: s
13
+ } = t;
14
+ if (l)
15
+ return {
16
+ isRect: !0,
17
+ x: e(n),
18
+ y: i(o) + c,
19
+ width: a - c,
20
+ height: s - c
21
+ };
22
+ const r = Math.min(a, s) / 2;
23
+ return {
24
+ isRect: !1,
25
+ cx: n * a + a / 2,
26
+ cy: i(o) + c + r,
27
+ r: r - c,
28
+ radius: r
29
+ };
30
+ }
31
+ function it(t, n) {
32
+ if (t.isRect) {
33
+ const o = t.width * n.scale, e = t.height * n.scale;
34
+ return {
35
+ isRect: !0,
36
+ x: t.x + (t.width - o) / 2 + n.x,
37
+ y: t.y + (t.height - e) / 2 + n.y,
38
+ width: o,
39
+ height: e
40
+ };
41
+ }
42
+ return {
43
+ ...t,
44
+ cx: t.cx + n.x,
45
+ cy: t.cy + n.y,
46
+ r: t.r * n.scale
47
+ };
48
+ }
49
+ function dt(t, n, o, e, i, c) {
50
+ const {
51
+ data: l,
52
+ numRows: a,
53
+ binWidth: s,
54
+ binHeight: r,
55
+ yMax: S
56
+ } = t;
57
+ return {
58
+ colStart: O(Math.floor(n / s) - c, 0, Math.max(0, l.length - 1)),
59
+ colEnd: O(Math.ceil((n + e) / s) + c, 0, Math.max(0, l.length - 1)),
60
+ rowStart: O(Math.floor((S - (o + i)) / r) - c, 0, Math.max(0, a - 1)),
61
+ rowEnd: O(Math.floor((S - o) / r) + c, 0, Math.max(0, a - 1))
62
+ };
63
+ }
64
+ function mt(t, n, o, e, i = null) {
65
+ const {
66
+ data: c,
67
+ colorScale: l,
68
+ selectedKeys: a,
69
+ highlightRange: s
70
+ } = n;
71
+ let r = !1, S = null, b = -1;
72
+ for (let d = o.colStart; d <= o.colEnd; d++) {
73
+ const E = c[d];
74
+ if (!E) continue;
75
+ const f = i ? z(i.type, Math.max(0, d - i.firstColumn), i.elapsed) : null, u = f !== null && !f.done;
76
+ if (!(u && (r = !0, f.opacity <= 0 || f.scale <= 0)))
77
+ for (let m = o.rowStart; m <= o.rowEnd; m++) {
78
+ const v = E.rows[m];
79
+ if (!v) continue;
80
+ const M = v.count, w = M == null ? void 0 : l(M), p = tt(M, s), {
81
+ fill: x,
82
+ fillOpacity: g
83
+ } = nt(M, w, p);
84
+ if (g <= 0) continue;
85
+ const h = u ? it(L(n, d, m), f) : L(n, d, m), I = u ? g * f.opacity : g;
86
+ I !== b && (t.globalAlpha = I, b = I), x !== S && (t.fillStyle = x, S = x);
87
+ const D = e !== null && e.row === m && e.column === d;
88
+ if (h.isRect) {
89
+ const A = Math.max(h.width, 0), W = Math.max(h.height, 0);
90
+ t.fillRect(h.x, h.y, A, W), D && (t.beginPath(), t.rect(h.x, h.y, A, W));
91
+ } else
92
+ t.beginPath(), t.arc(h.cx, h.cy, Math.max(h.r, 0), 0, Math.PI * 2), t.fill();
93
+ D && (b = u ? f.opacity : 1, t.globalAlpha = b, t.lineWidth = 2, t.strokeStyle = x, t.stroke());
94
+ }
95
+ }
96
+ if (t.globalAlpha = 1, a) {
97
+ const d = {
98
+ colStart: o.colStart - 1,
99
+ colEnd: o.colEnd + 1,
100
+ rowStart: o.rowStart - 1,
101
+ rowEnd: o.rowEnd + 1
102
+ }, E = {
103
+ width: c.length * n.binWidth,
104
+ height: n.yMax
105
+ };
106
+ for (const {
107
+ x: f,
108
+ y: u,
109
+ width: m,
110
+ height: v,
111
+ fill: M
112
+ } of et(a, lt(a, d), n, E))
113
+ t.fillStyle = M, t.fillRect(f, u, m, v);
114
+ }
115
+ return r;
116
+ }
117
+ const T = 256;
118
+ let R = null;
119
+ function ct(t) {
120
+ if (R ??= document.createElement("canvas").getContext("2d", {
121
+ willReadFrequently: !0
122
+ }), !R) return [0, 0, 0];
123
+ R.clearRect(0, 0, 1, 1), R.fillStyle = "#000", R.fillStyle = t, R.fillRect(0, 0, 1, 1);
124
+ const [n, o, e] = R.getImageData(0, 0, 1, 1).data;
125
+ return [n, o, e];
126
+ }
127
+ const Q = /* @__PURE__ */ new WeakMap(), Z = /* @__PURE__ */ new WeakMap();
128
+ function at(t) {
129
+ const n = Q.get(t.colorScale);
130
+ if (n) return n;
131
+ const {
132
+ colorScale: o,
133
+ minValue: e,
134
+ maxValue: i
135
+ } = t, c = new Uint8ClampedArray(T * 3);
136
+ for (let l = 0; l < T; l++) {
137
+ const [a, s, r] = ct(o(e + (i - e) * l / (T - 1)) ?? "#000");
138
+ c.set([a, s, r], l * 3);
139
+ }
140
+ return Q.set(t.colorScale, c), c;
141
+ }
142
+ function rt(t, n) {
143
+ const o = Z.get(t);
144
+ if (o && o.length === t.length * n) return o;
145
+ const e = new Float64Array(t.length * n).fill(NaN);
146
+ return t.forEach((i, c) => i.rows.forEach((l, a) => {
147
+ a < n && l.count != null && (e[c * n + a] = l.count);
148
+ })), Z.set(t, e), e;
149
+ }
150
+ function st(t, n, o) {
151
+ const {
152
+ data: e,
153
+ numRows: i,
154
+ highlightRange: c,
155
+ minValue: l,
156
+ maxValue: a
157
+ } = t, s = e.length;
158
+ if (s === 0 || i === 0 || n < 1 || o < 1) return null;
159
+ const r = at(t), S = rt(e, i), b = a - l, [d, E] = c ?? [-1 / 0, 1 / 0], f = new ImageData(n, o), u = f.data, m = (w, p) => Array.from({
160
+ length: p
161
+ }, (x, g) => {
162
+ const h = Math.min(Math.floor(g * w / p), w - 1);
163
+ return [h, Math.max(h + 1, Math.floor((g + 1) * w / p))];
164
+ }), v = m(s, n), M = m(i, o);
165
+ for (let w = 0; w < o; w++) {
166
+ const [p, x] = M[w];
167
+ for (let g = 0; g < n; g++) {
168
+ const [h, I] = v[g];
169
+ let D = 0, A = 0, W = 0, C = 0, N = 0, q = 0, B = 0, K = 0, H = 0;
170
+ for (let k = h; k < I; k++) {
171
+ const $ = k * i;
172
+ for (let _ = p; _ < x; _++) {
173
+ const X = $ + i - 1 - _;
174
+ N++;
175
+ const V = S[X];
176
+ if (V !== V) continue;
177
+ const G = b > 0 ? Math.round(Math.min(Math.max((V - l) / b, 0), 1) * (T - 1)) * 3 : 0, U = r[G], Y = r[G + 1], j = r[G + 2], J = V >= d && V <= E;
178
+ J && c && (q += U, B += Y, K += j, H++);
179
+ const F = J ? 1 : ot;
180
+ D += U * F, A += Y * F, W += j * F, C += F;
181
+ }
182
+ }
183
+ const y = (w * n + g) * 4;
184
+ H > 0 ? (u[y] = q / H, u[y + 1] = B / H, u[y + 2] = K / H, u[y + 3] = 255) : C > 0 && (u[y] = D / C, u[y + 1] = A / C, u[y + 2] = W / C, u[y + 3] = C / N * 255);
185
+ }
186
+ }
187
+ return f;
188
+ }
189
+ let P = null;
190
+ function gt(t, n) {
191
+ const {
192
+ width: o,
193
+ height: e
194
+ } = t.canvas;
195
+ t.setTransform(1, 0, 0, 1, 0, 0), t.clearRect(0, 0, o, e);
196
+ const i = Math.min(o, n.data.length), c = Math.min(e, n.numRows), l = st(n, i, c);
197
+ l && (i === o && c === e ? t.putImageData(l, 0, 0) : (P ??= document.createElement("canvas"), P.width = i, P.height = c, P.getContext("2d")?.putImageData(l, 0, 0), t.imageSmoothingEnabled = !1, t.drawImage(P, 0, 0, o, e)));
198
+ }
199
+ function wt(t, n, o) {
200
+ const {
201
+ data: e,
202
+ numRows: i,
203
+ binWidth: c,
204
+ binHeight: l,
205
+ yMax: a
206
+ } = t;
207
+ if (n < 0 || o < 0) return null;
208
+ const s = Math.floor(n / c), r = Math.floor((a - o) / l);
209
+ return s < 0 || s >= e.length || r < 0 || r >= i || !e[s]?.rows[r] ? null : {
210
+ row: r,
211
+ column: s
212
+ };
213
+ }
214
+ function Mt(t, n) {
215
+ const o = t.data[n.column], e = o?.rows[n.row];
216
+ if (!o || !e) return null;
217
+ const i = e.count, c = i == null ? void 0 : t.colorScale(i), l = L(t, n.column, n.row), a = {
218
+ bin: e,
219
+ row: n.row,
220
+ column: n.column,
221
+ datum: o,
222
+ gap: t.gap,
223
+ count: i,
224
+ color: c,
225
+ opacity: i == null ? void 0 : 1
226
+ };
227
+ return l.isRect ? {
228
+ ...a,
229
+ x: l.x,
230
+ y: l.y,
231
+ width: l.width,
232
+ height: l.height
233
+ } : {
234
+ ...a,
235
+ cx: l.cx,
236
+ cy: l.cy,
237
+ r: l.r,
238
+ radius: l.radius
239
+ };
36
240
  }
37
241
  export {
38
- O as useScrollToSelection
242
+ Mt as buildBin,
243
+ mt as drawHeatmapCells,
244
+ gt as drawHeatmapOverview,
245
+ dt as getVisibleRange,
246
+ wt as hitTestCell
39
247
  };
40
248
  //# sourceMappingURL=visualization.es132.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"visualization.es132.js","sources":["../src/components/Heatmap/hooks/useScrollToSelection.ts"],"sourcesContent":["import { useEffect, useRef, type RefObject } from \"react\";\nimport type { HeatmapCellId } from \"../types\";\nimport { cellKey } from \"../heatmapSelection\";\n\n// The smallest scroll that brings [boxStart, boxEnd) into view, as scrollIntoView({ block: \"nearest\" })\n// would: unchanged if it's already visible, aligned to boxStart if it can't fit.\nfunction nearestScrollOffset(current: number, viewportSize: number, boxStart: number, boxEnd: number): number {\n if (boxEnd - boxStart > viewportSize) return boxStart;\n if (boxStart < current) return boxStart;\n if (boxEnd > current + viewportSize) return boxEnd - viewportSize;\n return current;\n}\n\nexport interface UseScrollToSelectionArgs {\n mainPaneRef: RefObject<HTMLDivElement | null>;\n selectedCells?: HeatmapCellId[];\n scrollToSelection?: boolean;\n binWidth: number;\n viewportWidth: number;\n}\n\n// Scrolls newly selected cells into view, horizontally.\nexport function useScrollToSelection({\n mainPaneRef, selectedCells, scrollToSelection, binWidth, viewportWidth,\n}: UseScrollToSelectionArgs) {\n const previousSelectionKeysRef = useRef<Set<string>>(new Set());\n\n useEffect(() => {\n const previousKeys = previousSelectionKeysRef.current;\n const cells = selectedCells ?? [];\n const newCells = cells.filter((cell) => !previousKeys.has(cellKey(cell)));\n previousSelectionKeysRef.current = new Set(cells.map(cellKey));\n\n const main = mainPaneRef.current;\n if (!scrollToSelection || !main || newCells.length === 0) return;\n\n let minCol = Infinity, maxCol = -Infinity;\n for (const cell of newCells) {\n if (cell.column < minCol) minCol = cell.column;\n if (cell.column > maxCol) maxCol = cell.column;\n }\n\n const boxLeft = minCol * binWidth;\n const boxRight = (maxCol + 1) * binWidth;\n\n const targetLeft = nearestScrollOffset(main.scrollLeft, viewportWidth, boxLeft, boxRight);\n if (targetLeft !== main.scrollLeft) {\n main.scrollTo({ left: targetLeft, behavior: \"smooth\" });\n }\n }, [selectedCells, scrollToSelection, binWidth, viewportWidth]);\n}\n"],"names":["nearestScrollOffset","current","viewportSize","boxStart","boxEnd","useScrollToSelection","t0","$","_c","mainPaneRef","selectedCells","scrollToSelection","binWidth","viewportWidth","t1","Symbol","for","Set","previousSelectionKeysRef","useRef","t2","previousKeys","cells","newCells","filter","cell","has","cellKey","map","main","length","minCol","Infinity","maxCol","cell_0","column","boxLeft","boxRight","targetLeft","scrollLeft","scrollTo","left","behavior","t3","useEffect"],"mappings":";;;AAMA,SAASA,EAAoBC,GAAiBC,GAAsBC,GAAkBC,GAAwB;AAE5G,SADIA,IAASD,IAAWD,KACpBC,IAAWF,IAAgBE,IAC3BC,IAASH,IAAUC,IAAqBE,IAASF,IAC9CD;AACT;AAWO,SAAAI,EAAAC,GAAA;AAAA,QAAAC,IAAAC,EAAA,EAAA,GAA8B;AAAA,IAAAC,aAAAA;AAAAA,IAAAC,eAAAA;AAAAA,IAAAC,mBAAAA;AAAAA,IAAAC,UAAAA;AAAAA,IAAAC,eAAAA;AAAAA,EAAAA,IAAAP;AAEV,MAAAQ;AAAA,EAAAP,EAAA,CAAA,MAAAQ,uBAAAC,IAAA,2BAAA,KAC4BF,wBAAIG,IAAAA,GAAKV,OAAAO,KAAAA,IAAAP,EAAA,CAAA;AAA9D,QAAAW,IAAiCC,EAAoBL,CAAS;AAAE,MAAAM;AAAA,EAAAb,EAAA,CAAA,MAAAK,KAAAL,EAAA,CAAA,MAAAE,KAAAF,EAAA,CAAA,MAAAI,KAAAJ,EAAA,CAAA,MAAAG,KAAAH,SAAAM,KAEtDO,IAAAA,MAAA;AACR,UAAAC,IAAqBH,EAAwBjB,SAC7CqB,IAAcZ,KAAA,CAAA,GACda,IAAiBD,EAAKE,OAAQC,CAAAA,MAAU,CAACJ,EAAYK,IAAKC,EAAQF,CAAI,CAAC,CAAC;AACxEP,IAAAA,EAAwBjB,UAAW,IAAIgB,IAAIK,EAAKM,IAAKD,CAAO,CAAC;AAE7D,UAAAE,IAAapB,EAAWR;AACxB,QAAI,CAACU,KAAD,CAAuBkB,KAAQN,EAAQO,WAAY;AAAC;AAExD,QAAAC,IAAaC,OAAbC,IAAgC;AAChC,eAAKC,KAAcX;AACjB,MAAIE,EAAIU,SAAUJ,MAAQA,IAASN,EAAIU,SACnCV,EAAIU,SAAUF,MAAQA,IAASR,EAAIU;AAGzC,UAAAC,IAAgBL,IAASnB,GACzByB,KAAkBJ,IAAS,KAAKrB,GAEhC0B,IAAmBtC,EAAoB6B,EAAIU,YAAa1B,GAAeuB,GAASC,CAAQ;AACxF,IAAIC,MAAeT,EAAIU,cACrBV,EAAIW,SAAU;AAAA,MAAAC,MAAQH;AAAAA,MAAUI,UAAY;AAAA,IAAA,CAAU;AAAA,EACvD,GACFnC,OAAAK,GAAAL,OAAAE,GAAAF,OAAAI,GAAAJ,OAAAG,GAAAH,OAAAM,GAAAN,OAAAa,KAAAA,IAAAb,EAAA,CAAA;AAAA,MAAAoC;AAAA,EAAApC,EAAA,CAAA,MAAAK,KAAAL,EAAA,CAAA,MAAAI,KAAAJ,EAAA,CAAA,MAAAG,KAAAH,UAAAM,KAAE8B,IAAA,CAACjC,GAAeC,GAAmBC,GAAUC,CAAa,GAACN,OAAAK,GAAAL,OAAAI,GAAAJ,OAAAG,GAAAH,QAAAM,GAAAN,QAAAoC,KAAAA,IAAApC,EAAA,EAAA,GAtB9DqC,EAAUxB,GAsBPuB,CAA2D;AAAC;"}
1
+ {"version":3,"file":"visualization.es132.js","sources":["../src/components/Heatmap/HeatmapCanvasCells.ts"],"sourcesContent":["import type { RectCell, CircleCell } from \"@visx/heatmap\";\nimport type { ColumnDatum, HeatmapCellId, RowDatum } from \"./types\";\nimport { getAnimationPose, type AnimationPose, type AnimationType } from \"../../utility\";\nimport { DIMMED_OPACITY, isOutsideRange, resolveCellAppearance } from \"./heatmapCellAppearance\";\nimport { selectedCellsIn, selectionFrame, type SelectionMarks } from \"./heatmapSelection\";\n\n/** A cell as onClick and tooltipBody receive it - see buildBin. */\nexport type AnyBin = RectCell<ColumnDatum, RowDatum> | CircleCell<ColumnDatum, RowDatum>;\n\n/** What the canvas renderers and hit-testing need to place and color cells. */\nexport interface CanvasCellParams {\n data: ColumnDatum[];\n numRows: number;\n xScale: (column: number) => number;\n cellYScale: (row: number) => number;\n colorScale: (count: number) => string | undefined;\n /** The counts colorScale spans, which the overview samples it across. */\n minValue: number;\n maxValue: number;\n gap: number;\n isRect: boolean;\n binWidth: number;\n binHeight: number;\n yMax: number;\n /** The selected cells' keys, which the grid frames; null where nothing is selected. */\n selectedKeys: Set<string> | null;\n /** The columns and rows holding the selection, which the minimap marks along its edges. */\n selectionMarks: SelectionMarks;\n highlightRange: [number, number] | null;\n}\n\nexport interface CanvasDrawRange {\n colStart: number;\n colEnd: number;\n rowStart: number;\n rowEnd: number;\n}\n\n/** An entry animation, `elapsed` seconds in. */\nexport interface CanvasEntryFrame {\n type: AnimationType;\n elapsed: number;\n /** The column the stagger counts from: the first in view when the animation began. */\n firstColumn: number;\n}\n\nconst clamp = (value: number, min: number, max: number) => Math.min(Math.max(value, min), max);\n\n// visx's HeatmapRect/HeatmapCircle geometry, which buildBin passes on to onClick and tooltipBody,\n// except that circles are centered in their cells.\ntype CellGeometry =\n | { isRect: true; x: number; y: number; width: number; height: number }\n | { isRect: false; cx: number; cy: number; r: number; radius: number };\n\nfunction getCellGeometry(params: CanvasCellParams, col: number, row: number): CellGeometry {\n const { xScale, cellYScale, gap, isRect, binWidth, binHeight } = params;\n if (isRect) {\n return { isRect: true, x: xScale(col), y: cellYScale(row) + gap, width: binWidth - gap, height: binHeight - gap };\n }\n const radius = Math.min(binWidth, binHeight) / 2;\n return { isRect: false, cx: col * binWidth + binWidth / 2, cy: cellYScale(row) + gap + radius, r: radius - gap, radius };\n}\n\n/** A cell's geometry moved, and scaled about its center, by an animation pose. */\nfunction poseCellGeometry(geometry: CellGeometry, pose: AnimationPose): CellGeometry {\n if (geometry.isRect) {\n const width = geometry.width * pose.scale;\n const height = geometry.height * pose.scale;\n return {\n isRect: true,\n x: geometry.x + (geometry.width - width) / 2 + pose.x,\n y: geometry.y + (geometry.height - height) / 2 + pose.y,\n width,\n height,\n };\n }\n return { ...geometry, cx: geometry.cx + pose.x, cy: geometry.cy + pose.y, r: geometry.r * pose.scale };\n}\n\n/**\n * The columns and rows (inclusive) within the scrolled viewport, plus `overscan` either side. Row 0\n * is at the bottom, so the row under content y is floor((yMax - y) / binHeight).\n */\nexport function getVisibleRange(\n params: CanvasCellParams,\n scrollLeft: number,\n scrollTop: number,\n viewportWidth: number,\n viewportHeight: number,\n overscan: number\n): CanvasDrawRange {\n const { data, numRows, binWidth, binHeight, yMax } = params;\n return {\n colStart: clamp(Math.floor(scrollLeft / binWidth) - overscan, 0, Math.max(0, data.length - 1)),\n colEnd: clamp(Math.ceil((scrollLeft + viewportWidth) / binWidth) + overscan, 0, Math.max(0, data.length - 1)),\n rowStart: clamp(Math.floor((yMax - (scrollTop + viewportHeight)) / binHeight) - overscan, 0, Math.max(0, numRows - 1)),\n rowEnd: clamp(Math.floor((yMax - scrollTop) / binHeight) + overscan, 0, Math.max(0, numRows - 1)),\n };\n}\n\n/**\n * Paints the cells in `range` onto `ctx`, whose origin is already at content-space (0,0), and the\n * selection's frame over them. With `entry`, the cells (not the frame) are drawn mid-animation.\n * Returns whether any cell drawn is still animating.\n */\nexport function drawHeatmapCells(\n ctx: CanvasRenderingContext2D,\n params: CanvasCellParams,\n range: CanvasDrawRange,\n hoveredCell: HeatmapCellId | null,\n entry: CanvasEntryFrame | null = null\n): boolean {\n const { data, colorScale, selectedKeys, highlightRange } = params;\n let isEntering = false;\n // Setting fillStyle re-parses the color even when unchanged, so repeats are skipped: an export\n // runs this for every cell. A path is built only for the hovered cell, to stroke its outline.\n let lastFill: string | null = null;\n let lastAlpha = -1;\n for (let col = range.colStart; col <= range.colEnd; col++) {\n const columnDatum = data[col];\n if (!columnDatum) continue;\n // Staggered by column: a column's rows move together.\n const pose = entry ? getAnimationPose(entry.type, Math.max(0, col - entry.firstColumn), entry.elapsed) : null;\n const isPosed = pose !== null && !pose.done;\n if (isPosed) {\n isEntering = true;\n if (pose.opacity <= 0 || pose.scale <= 0) continue;\n }\n for (let row = range.rowStart; row <= range.rowEnd; row++) {\n const rowDatum = columnDatum.rows[row];\n if (!rowDatum) continue;\n const count = rowDatum.count;\n const color = count == null ? undefined : colorScale(count);\n const isDimmed = isOutsideRange(count, highlightRange);\n const { fill, fillOpacity } = resolveCellAppearance(count, color, isDimmed);\n if (fillOpacity <= 0) continue;\n\n const geometry = isPosed ? poseCellGeometry(getCellGeometry(params, col, row), pose) : getCellGeometry(params, col, row);\n const alpha = isPosed ? fillOpacity * pose.opacity : fillOpacity;\n if (alpha !== lastAlpha) {\n ctx.globalAlpha = alpha;\n lastAlpha = alpha;\n }\n if (fill !== lastFill) {\n ctx.fillStyle = fill;\n lastFill = fill;\n }\n\n const isHovered = hoveredCell !== null && hoveredCell.row === row && hoveredCell.column === col;\n if (geometry.isRect) {\n const width = Math.max(geometry.width, 0);\n const height = Math.max(geometry.height, 0);\n ctx.fillRect(geometry.x, geometry.y, width, height);\n if (isHovered) {\n ctx.beginPath();\n ctx.rect(geometry.x, geometry.y, width, height);\n }\n } else {\n ctx.beginPath();\n ctx.arc(geometry.cx, geometry.cy, Math.max(geometry.r, 0), 0, Math.PI * 2);\n ctx.fill();\n }\n\n if (isHovered) {\n // Full strength even on a dimmed cell, but fading in with its cell.\n lastAlpha = isPosed ? pose.opacity : 1;\n ctx.globalAlpha = lastAlpha;\n ctx.lineWidth = 2;\n ctx.strokeStyle = fill;\n ctx.stroke();\n }\n }\n }\n ctx.globalAlpha = 1;\n\n if (selectedKeys) {\n // Past the range by a cell, so the frame's line for a selected cell just outside it still shows.\n const around = {\n colStart: range.colStart - 1,\n colEnd: range.colEnd + 1,\n rowStart: range.rowStart - 1,\n rowEnd: range.rowEnd + 1,\n };\n const bounds = { width: data.length * params.binWidth, height: params.yMax };\n for (const { x, y, width, height, fill } of selectionFrame(selectedKeys, selectedCellsIn(selectedKeys, around), params, bounds)) {\n ctx.fillStyle = fill;\n ctx.fillRect(x, y, width, height);\n }\n }\n return isEntering;\n}\n\n// Colors sampled from colorScale for the overview, which looks them up rather than calling it per cell.\nconst OVERVIEW_LEVELS = 256;\n\nlet colorParser: CanvasRenderingContext2D | null = null;\n/** Any CSS color as RGB, read back off a 1px canvas, so a color the browser understands is one this does. */\nfunction parseColor(css: string): [number, number, number] {\n colorParser ??= document.createElement(\"canvas\").getContext(\"2d\", { willReadFrequently: true });\n if (!colorParser) return [0, 0, 0];\n colorParser.clearRect(0, 0, 1, 1);\n colorParser.fillStyle = \"#000\";\n colorParser.fillStyle = css;\n colorParser.fillRect(0, 0, 1, 1);\n const [r, g, b] = colorParser.getImageData(0, 0, 1, 1).data;\n return [r, g, b];\n}\n\n// Keyed on identities the layout memoizes, which a highlight sweep leaves alone.\nconst lutCache = new WeakMap<object, Uint8ClampedArray>();\nconst countsCache = new WeakMap<ColumnDatum[], Float64Array>();\n\nfunction colorLut(params: CanvasCellParams): Uint8ClampedArray {\n const cached = lutCache.get(params.colorScale);\n if (cached) return cached;\n const { colorScale, minValue, maxValue } = params;\n const lut = new Uint8ClampedArray(OVERVIEW_LEVELS * 3);\n for (let i = 0; i < OVERVIEW_LEVELS; i++) {\n const [r, g, b] = parseColor(colorScale(minValue + ((maxValue - minValue) * i) / (OVERVIEW_LEVELS - 1)) ?? \"#000\");\n lut.set([r, g, b], i * 3);\n }\n lutCache.set(params.colorScale, lut);\n return lut;\n}\n\n/** Every count in one column-major array, NaN where there is none: several times faster to scan than the row objects. */\nfunction flatCounts(data: ColumnDatum[], numRows: number): Float64Array {\n const cached = countsCache.get(data);\n if (cached && cached.length === data.length * numRows) return cached;\n const counts = new Float64Array(data.length * numRows).fill(NaN);\n data.forEach((column, c) =>\n column.rows.forEach((row, r) => {\n if (r < numRows && row.count != null) counts[c * numRows + r] = row.count;\n })\n );\n countsCache.set(data, counts);\n return counts;\n}\n\n/**\n * The whole grid resampled to `width` x `height` pixels for the minimap, written straight into an\n * ImageData: a fillRect per cell took ~400ms on a million-cell grid.\n *\n * Each pixel averages the cells under it. While highlightRange is set, a pixel holding any cell in\n * the range shows those cells alone at full strength, so a lone outlier isn't averaged away. Cells\n * are solid squares here; the minimap marks the selection along its edges instead.\n */\nfunction renderHeatmapOverview(params: CanvasCellParams, width: number, height: number): ImageData | null {\n const { data, numRows, highlightRange, minValue, maxValue } = params;\n const numColumns = data.length;\n if (numColumns === 0 || numRows === 0 || width < 1 || height < 1) return null;\n\n const lut = colorLut(params);\n const counts = flatCounts(data, numRows);\n const span = maxValue - minValue;\n // With no range, every cell is inside it: nothing fades and nothing is singled out.\n const [low, high] = highlightRange ?? [-Infinity, Infinity];\n const image = new ImageData(width, height);\n const pixels = image.data;\n\n // The run of columns (rows) each pixel column (row) covers: at least one, and between them every one.\n const spans = (cells: number, size: number) =>\n Array.from({ length: size }, (_, i) => {\n const start = Math.min(Math.floor((i * cells) / size), cells - 1);\n return [start, Math.max(start + 1, Math.floor(((i + 1) * cells) / size))] as const;\n });\n const columnSpans = spans(numColumns, width);\n // From the top down, where row 0 sits at the bottom of the grid (see cellYScale).\n const rowSpans = spans(numRows, height);\n\n // Scalars and typed arrays only in here: it runs once per cell per redraw.\n for (let y = 0; y < height; y++) {\n const [rowFrom, rowTo] = rowSpans[y];\n for (let x = 0; x < width; x++) {\n const [columnFrom, columnTo] = columnSpans[x];\n // Opacity-weighted sums over every cell, and plain sums over the highlighted ones.\n let r = 0, g = 0, b = 0, a = 0, cells = 0;\n let hr = 0, hg = 0, hb = 0, highlighted = 0;\n for (let column = columnFrom; column < columnTo; column++) {\n const base = column * numRows;\n for (let fromTop = rowFrom; fromTop < rowTo; fromTop++) {\n const index = base + numRows - 1 - fromTop;\n cells++;\n const count = counts[index];\n if (count !== count) continue; // NaN: transparent, as a null cell is drawn nowhere.\n // Held at the ends, as the color scale itself clamps.\n const level = span > 0 ? Math.round(Math.min(Math.max((count - minValue) / span, 0), 1) * (OVERVIEW_LEVELS - 1)) * 3 : 0;\n const cr = lut[level], cg = lut[level + 1], cb = lut[level + 2];\n // isOutsideRange, inlined.\n const inRange = count >= low && count <= high;\n if (inRange && highlightRange) {\n hr += cr; hg += cg; hb += cb; highlighted++;\n }\n const opacity = inRange ? 1 : DIMMED_OPACITY;\n r += cr * opacity; g += cg * opacity; b += cb * opacity; a += opacity;\n }\n }\n const offset = (y * width + x) * 4;\n if (highlighted > 0) {\n pixels[offset] = hr / highlighted;\n pixels[offset + 1] = hg / highlighted;\n pixels[offset + 2] = hb / highlighted;\n pixels[offset + 3] = 255;\n } else if (a > 0) {\n pixels[offset] = r / a;\n pixels[offset + 1] = g / a;\n pixels[offset + 2] = b / a;\n pixels[offset + 3] = (a / cells) * 255;\n }\n }\n }\n return image;\n}\n\nlet overviewScratch: HTMLCanvasElement | null = null;\n\n/**\n * The whole grid, filling the canvas. Rendered at no more than a pixel per cell and stretched\n * nearest-neighbor from there: resampling every pixel of the expanded minimap took over 100ms.\n */\nexport function drawHeatmapOverview(ctx: CanvasRenderingContext2D, params: CanvasCellParams) {\n const { width, height } = ctx.canvas;\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, width, height);\n const overviewWidth = Math.min(width, params.data.length);\n const overviewHeight = Math.min(height, params.numRows);\n const overview = renderHeatmapOverview(params, overviewWidth, overviewHeight);\n if (!overview) return;\n if (overviewWidth === width && overviewHeight === height) {\n ctx.putImageData(overview, 0, 0);\n } else {\n overviewScratch ??= document.createElement(\"canvas\");\n overviewScratch.width = overviewWidth;\n overviewScratch.height = overviewHeight;\n overviewScratch.getContext(\"2d\")?.putImageData(overview, 0, 0);\n ctx.imageSmoothingEnabled = false;\n ctx.drawImage(overviewScratch, 0, 0, width, height);\n }\n}\n\n/** Content-space (post-scroll-offset) coordinates -> the cell under them, or null if none. */\nexport function hitTestCell(params: CanvasCellParams, contentX: number, contentY: number): HeatmapCellId | null {\n const { data, numRows, binWidth, binHeight, yMax } = params;\n if (contentX < 0 || contentY < 0) return null;\n const column = Math.floor(contentX / binWidth);\n const row = Math.floor((yMax - contentY) / binHeight);\n if (column < 0 || column >= data.length || row < 0 || row >= numRows) return null;\n if (!data[column]?.rows[row]) return null;\n return { row, column };\n}\n\n/** Builds the same bin shape @visx/heatmap's RectCell/CircleCell provide, for onClick/tooltipBody. */\nexport function buildBin(params: CanvasCellParams, cell: HeatmapCellId): AnyBin | null {\n const columnDatum = params.data[cell.column];\n const rowDatum = columnDatum?.rows[cell.row];\n if (!columnDatum || !rowDatum) return null;\n\n const count = rowDatum.count;\n const color = count == null ? undefined : params.colorScale(count);\n const geometry = getCellGeometry(params, cell.column, cell.row);\n const shared = { bin: rowDatum, row: cell.row, column: cell.column, datum: columnDatum, gap: params.gap, count, color, opacity: count == null ? undefined : 1 };\n\n return geometry.isRect\n ? ({ ...shared, x: geometry.x, y: geometry.y, width: geometry.width, height: geometry.height } as AnyBin)\n : ({ ...shared, cx: geometry.cx, cy: geometry.cy, r: geometry.r, radius: geometry.radius } as AnyBin);\n}\n"],"names":["clamp","value","min","max","Math","getCellGeometry","params","col","row","xScale","cellYScale","gap","isRect","binWidth","binHeight","x","y","width","height","radius","cx","cy","r","poseCellGeometry","geometry","pose","scale","getVisibleRange","scrollLeft","scrollTop","viewportWidth","viewportHeight","overscan","data","numRows","yMax","colStart","floor","length","colEnd","ceil","rowStart","rowEnd","drawHeatmapCells","ctx","range","hoveredCell","entry","colorScale","selectedKeys","highlightRange","isEntering","lastFill","lastAlpha","columnDatum","getAnimationPose","type","firstColumn","elapsed","isPosed","done","opacity","rowDatum","rows","count","color","undefined","isDimmed","isOutsideRange","fill","fillOpacity","resolveCellAppearance","alpha","globalAlpha","fillStyle","isHovered","column","fillRect","beginPath","rect","arc","PI","lineWidth","strokeStyle","stroke","around","bounds","selectionFrame","selectedCellsIn","OVERVIEW_LEVELS","colorParser","parseColor","css","document","createElement","getContext","willReadFrequently","clearRect","g","b","getImageData","lutCache","WeakMap","countsCache","colorLut","cached","get","minValue","maxValue","lut","Uint8ClampedArray","i","set","flatCounts","counts","Float64Array","NaN","forEach","c","renderHeatmapOverview","numColumns","span","low","high","Infinity","image","ImageData","pixels","spans","cells","size","Array","from","_","start","columnSpans","rowSpans","rowFrom","rowTo","columnFrom","columnTo","a","hr","hg","hb","highlighted","base","fromTop","index","level","round","cr","cg","cb","inRange","DIMMED_OPACITY","offset","overviewScratch","drawHeatmapOverview","canvas","setTransform","overviewWidth","overviewHeight","overview","putImageData","imageSmoothingEnabled","drawImage","hitTestCell","contentX","contentY","buildBin","cell","shared","bin","datum"],"mappings":"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"}