@milaboratories/miplots4 1.0.129 → 1.0.131

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 (351) hide show
  1. package/dist/DataFrame.d.ts +15 -9
  2. package/dist/DataFrame.d.ts.map +1 -1
  3. package/dist/DataFrame.js +105 -81
  4. package/dist/DataFrame.js.map +1 -1
  5. package/dist/bubble/ChartRenderer.d.ts +6 -5
  6. package/dist/bubble/ChartRenderer.d.ts.map +1 -1
  7. package/dist/bubble/ChartRenderer.js +123 -121
  8. package/dist/bubble/ChartRenderer.js.map +1 -1
  9. package/dist/bubble/components/Chart.d.ts +3 -2
  10. package/dist/bubble/components/Chart.d.ts.map +1 -1
  11. package/dist/bubble/components/Chart.js +78 -97
  12. package/dist/bubble/components/Chart.js.map +1 -1
  13. package/dist/bubble/components/ChartsGroup.d.ts +6 -5
  14. package/dist/bubble/components/ChartsGroup.d.ts.map +1 -1
  15. package/dist/bubble/components/ChartsGroup.js +39 -37
  16. package/dist/bubble/components/ChartsGroup.js.map +1 -1
  17. package/dist/bubble/getCellTooltip.d.ts +5 -0
  18. package/dist/bubble/getCellTooltip.d.ts.map +1 -0
  19. package/dist/bubble/getCellTooltip.js +28 -0
  20. package/dist/bubble/getCellTooltip.js.map +1 -0
  21. package/dist/bubble/{getCells.d.ts → getGroupedCellsData.d.ts} +4 -4
  22. package/dist/bubble/getGroupedCellsData.d.ts.map +1 -0
  23. package/dist/bubble/getGroupedCellsData.js +94 -0
  24. package/dist/bubble/getGroupedCellsData.js.map +1 -0
  25. package/dist/bubble/index.d.ts +4 -4
  26. package/dist/bubble/index.d.ts.map +1 -1
  27. package/dist/bubble/index.js +47 -42
  28. package/dist/bubble/index.js.map +1 -1
  29. package/dist/bubble/utils/calculateCaptionTails.d.ts +2 -2
  30. package/dist/bubble/utils/calculateCaptionTails.d.ts.map +1 -1
  31. package/dist/bubble/utils/calculateCaptionTails.js.map +1 -1
  32. package/dist/common/Legend.d.ts.map +1 -1
  33. package/dist/common/Legend.js.map +1 -1
  34. package/dist/common/Tooltip.js +1 -1
  35. package/dist/common/Tooltip.js.map +1 -1
  36. package/dist/common/types.d.ts +1 -1
  37. package/dist/common/types.d.ts.map +1 -1
  38. package/dist/common/useDataFrame.d.ts +11 -0
  39. package/dist/common/useDataFrame.d.ts.map +1 -0
  40. package/dist/common/useDataFrame.js +20 -0
  41. package/dist/common/useDataFrame.js.map +1 -0
  42. package/dist/dendro/ChartRenderer.d.ts +9 -8
  43. package/dist/dendro/ChartRenderer.d.ts.map +1 -1
  44. package/dist/dendro/ChartRenderer.js +187 -187
  45. package/dist/dendro/ChartRenderer.js.map +1 -1
  46. package/dist/dendro/components/Chart.d.ts +8 -8
  47. package/dist/dendro/components/Chart.d.ts.map +1 -1
  48. package/dist/dendro/components/Chart.js +35 -35
  49. package/dist/dendro/components/Chart.js.map +1 -1
  50. package/dist/dendro/components/Heatmap.d.ts +3 -3
  51. package/dist/dendro/components/Heatmap.d.ts.map +1 -1
  52. package/dist/dendro/components/Heatmap.js +23 -23
  53. package/dist/dendro/components/Heatmap.js.map +1 -1
  54. package/dist/dendro/components/Legend.d.ts.map +1 -1
  55. package/dist/dendro/components/Legend.js.map +1 -1
  56. package/dist/dendro/components/LinksGroup.d.ts +6 -6
  57. package/dist/dendro/components/LinksGroup.d.ts.map +1 -1
  58. package/dist/dendro/components/LinksGroup.js +17 -17
  59. package/dist/dendro/components/LinksGroup.js.map +1 -1
  60. package/dist/dendro/components/NodesGroup.d.ts +7 -7
  61. package/dist/dendro/components/NodesGroup.d.ts.map +1 -1
  62. package/dist/dendro/components/NodesGroup.js +29 -29
  63. package/dist/dendro/components/NodesGroup.js.map +1 -1
  64. package/dist/dendro/components/types.d.ts +2 -2
  65. package/dist/dendro/components/types.d.ts.map +1 -1
  66. package/dist/dendro/getHeatmapData.d.ts +2 -2
  67. package/dist/dendro/getHeatmapData.d.ts.map +1 -1
  68. package/dist/dendro/getHeatmapData.js +48 -44
  69. package/dist/dendro/getHeatmapData.js.map +1 -1
  70. package/dist/dendro/getHierarchyData.d.ts +3 -3
  71. package/dist/dendro/getHierarchyData.d.ts.map +1 -1
  72. package/dist/dendro/getHierarchyData.js +31 -31
  73. package/dist/dendro/getHierarchyData.js.map +1 -1
  74. package/dist/dendro/index.d.ts +5 -5
  75. package/dist/dendro/index.d.ts.map +1 -1
  76. package/dist/dendro/index.js +86 -89
  77. package/dist/dendro/index.js.map +1 -1
  78. package/dist/discrete/ChartRenderer.d.ts +6 -6
  79. package/dist/discrete/ChartRenderer.d.ts.map +1 -1
  80. package/dist/discrete/ChartRenderer.js +197 -196
  81. package/dist/discrete/ChartRenderer.js.map +1 -1
  82. package/dist/discrete/DiscreteSettingsImpl.d.ts +3 -3
  83. package/dist/discrete/DiscreteSettingsImpl.d.ts.map +1 -1
  84. package/dist/discrete/DiscreteSettingsImpl.js +8 -8
  85. package/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
  86. package/dist/discrete/components/layers/BoxElement.js.map +1 -1
  87. package/dist/discrete/index.d.ts +1 -1
  88. package/dist/discrete/index.d.ts.map +1 -1
  89. package/dist/discrete/index.js +109 -106
  90. package/dist/discrete/index.js.map +1 -1
  91. package/dist/discrete/layers/bar.d.ts +2 -2
  92. package/dist/discrete/layers/bar.d.ts.map +1 -1
  93. package/dist/discrete/layers/bar.js +32 -37
  94. package/dist/discrete/layers/bar.js.map +1 -1
  95. package/dist/discrete/layers/binnedDots.d.ts +3 -3
  96. package/dist/discrete/layers/binnedDots.d.ts.map +1 -1
  97. package/dist/discrete/layers/binnedDots.js +66 -78
  98. package/dist/discrete/layers/binnedDots.js.map +1 -1
  99. package/dist/discrete/layers/boxes.d.ts +3 -4
  100. package/dist/discrete/layers/boxes.d.ts.map +1 -1
  101. package/dist/discrete/layers/boxes.js +59 -60
  102. package/dist/discrete/layers/boxes.js.map +1 -1
  103. package/dist/discrete/layers/dots.d.ts +2 -3
  104. package/dist/discrete/layers/dots.d.ts.map +1 -1
  105. package/dist/discrete/layers/dots.js +30 -30
  106. package/dist/discrete/layers/dots.js.map +1 -1
  107. package/dist/discrete/layers/lines.js +11 -10
  108. package/dist/discrete/layers/lines.js.map +1 -1
  109. package/dist/discrete/layers/logo.d.ts +2 -2
  110. package/dist/discrete/layers/logo.d.ts.map +1 -1
  111. package/dist/discrete/layers/logo.js +21 -21
  112. package/dist/discrete/layers/logo.js.map +1 -1
  113. package/dist/discrete/layers/pairedPoints.d.ts +2 -2
  114. package/dist/discrete/layers/pairedPoints.d.ts.map +1 -1
  115. package/dist/discrete/layers/pairedPoints.js +62 -62
  116. package/dist/discrete/layers/pairedPoints.js.map +1 -1
  117. package/dist/discrete/layers/sina.d.ts +3 -4
  118. package/dist/discrete/layers/sina.d.ts.map +1 -1
  119. package/dist/discrete/layers/sina.js +67 -71
  120. package/dist/discrete/layers/sina.js.map +1 -1
  121. package/dist/discrete/layers/stackedBar.d.ts +1 -1
  122. package/dist/discrete/layers/stackedBar.d.ts.map +1 -1
  123. package/dist/discrete/layers/stackedBar.js +25 -25
  124. package/dist/discrete/layers/stackedBar.js.map +1 -1
  125. package/dist/discrete/layers/violins.js +13 -13
  126. package/dist/discrete/utils/getOutliersBounds.d.ts +1 -1
  127. package/dist/discrete/utils/getOutliersBounds.d.ts.map +1 -1
  128. package/dist/discrete/utils/getOutliersBounds.js +5 -5
  129. package/dist/discrete/utils/getOutliersBounds.js.map +1 -1
  130. package/dist/discrete/utils/splitTextByWidth.js +1 -1
  131. package/dist/discrete/utils/splitTextByWidth.js.map +1 -1
  132. package/dist/heatmap/ChartRenderer.d.ts +7 -6
  133. package/dist/heatmap/ChartRenderer.d.ts.map +1 -1
  134. package/dist/heatmap/ChartRenderer.js +232 -230
  135. package/dist/heatmap/ChartRenderer.js.map +1 -1
  136. package/dist/heatmap/HeatmapSettingsImpl.d.ts +2 -2
  137. package/dist/heatmap/HeatmapSettingsImpl.d.ts.map +1 -1
  138. package/dist/heatmap/HeatmapSettingsImpl.js +1 -1
  139. package/dist/heatmap/HeatmapSettingsImpl.js.map +1 -1
  140. package/dist/heatmap/components/Annotations/Annotation.d.ts.map +1 -1
  141. package/dist/heatmap/components/Annotations/Annotation.js +40 -39
  142. package/dist/heatmap/components/Annotations/Annotation.js.map +1 -1
  143. package/dist/heatmap/components/Chart.d.ts.map +1 -1
  144. package/dist/heatmap/components/Chart.js +90 -89
  145. package/dist/heatmap/components/Chart.js.map +1 -1
  146. package/dist/heatmap/components/ChartsGroup.d.ts +2 -2
  147. package/dist/heatmap/components/ChartsGroup.d.ts.map +1 -1
  148. package/dist/heatmap/components/ChartsGroup.js +14 -14
  149. package/dist/heatmap/components/ChartsGroup.js.map +1 -1
  150. package/dist/heatmap/components/types.d.ts +3 -2
  151. package/dist/heatmap/components/types.d.ts.map +1 -1
  152. package/dist/heatmap/getCells.d.ts +3 -2
  153. package/dist/heatmap/getCells.d.ts.map +1 -1
  154. package/dist/heatmap/getCells.js +97 -93
  155. package/dist/heatmap/getCells.js.map +1 -1
  156. package/dist/heatmap/index.d.ts +3 -3
  157. package/dist/heatmap/index.d.ts.map +1 -1
  158. package/dist/heatmap/index.js +13 -12
  159. package/dist/heatmap/index.js.map +1 -1
  160. package/dist/heatmap/utils/calculateAnnotationTitleSizes.d.ts.map +1 -1
  161. package/dist/heatmap/utils/calculateAnnotationTitleSizes.js +1 -1
  162. package/dist/heatmap/utils/calculateAnnotationTitleSizes.js.map +1 -1
  163. package/dist/heatmap/utils/calculateCaptionTails.d.ts +1 -1
  164. package/dist/heatmap/utils/calculateCaptionTails.d.ts.map +1 -1
  165. package/dist/heatmap/utils/calculateCaptionTails.js.map +1 -1
  166. package/dist/histogram/ChartRenderer.d.ts +6 -5
  167. package/dist/histogram/ChartRenderer.d.ts.map +1 -1
  168. package/dist/histogram/ChartRenderer.js +154 -153
  169. package/dist/histogram/ChartRenderer.js.map +1 -1
  170. package/dist/histogram/HistogramSettingsImpl.d.ts +2 -2
  171. package/dist/histogram/HistogramSettingsImpl.d.ts.map +1 -1
  172. package/dist/histogram/HistogramSettingsImpl.js.map +1 -1
  173. package/dist/histogram/components/Chart.js +48 -48
  174. package/dist/histogram/components/Chart.js.map +1 -1
  175. package/dist/histogram/components/types.d.ts +4 -3
  176. package/dist/histogram/components/types.d.ts.map +1 -1
  177. package/dist/histogram/getHistogramData.d.ts +7 -7
  178. package/dist/histogram/getHistogramData.d.ts.map +1 -1
  179. package/dist/histogram/getHistogramData.js +52 -53
  180. package/dist/histogram/getHistogramData.js.map +1 -1
  181. package/dist/histogram/index.d.ts +3 -3
  182. package/dist/histogram/index.d.ts.map +1 -1
  183. package/dist/histogram/index.js +49 -45
  184. package/dist/histogram/index.js.map +1 -1
  185. package/dist/node_modules/@d3fc/d3fc-axis/src/axisBase.js +10 -10
  186. package/dist/node_modules/d3-array/src/min.js +5 -11
  187. package/dist/node_modules/d3-array/src/min.js.map +1 -1
  188. package/dist/node_modules/d3-shape/src/area.js +30 -30
  189. package/dist/node_modules/d3-shape/src/line.js +6 -6
  190. package/dist/node_modules/d3-shape/src/line.js.map +1 -1
  191. package/dist/node_modules/kdbush/index.js +148 -0
  192. package/dist/node_modules/kdbush/index.js.map +1 -0
  193. package/dist/scatterplot/ChartRenderer.d.ts +7 -6
  194. package/dist/scatterplot/ChartRenderer.d.ts.map +1 -1
  195. package/dist/scatterplot/ChartRenderer.js +213 -209
  196. package/dist/scatterplot/ChartRenderer.js.map +1 -1
  197. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts +2 -2
  198. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts.map +1 -1
  199. package/dist/scatterplot/ScatterplotSettingsImpl.js +28 -28
  200. package/dist/scatterplot/ScatterplotSettingsImpl.js.map +1 -1
  201. package/dist/scatterplot/components/ChartAxisTitles.d.ts.map +1 -1
  202. package/dist/scatterplot/components/ChartAxisTitles.js +31 -30
  203. package/dist/scatterplot/components/ChartAxisTitles.js.map +1 -1
  204. package/dist/scatterplot/components/ChartLayersData.d.ts.map +1 -1
  205. package/dist/scatterplot/components/ChartLayersData.js +138 -156
  206. package/dist/scatterplot/components/ChartLayersData.js.map +1 -1
  207. package/dist/scatterplot/components/ChartTooltip.d.ts.map +1 -1
  208. package/dist/scatterplot/components/ChartTooltip.js +41 -38
  209. package/dist/scatterplot/components/ChartTooltip.js.map +1 -1
  210. package/dist/scatterplot/components/ChartTrendsData.js +21 -21
  211. package/dist/scatterplot/components/ChartTrendsData.js.map +1 -1
  212. package/dist/scatterplot/components/types.d.ts +7 -7
  213. package/dist/scatterplot/components/types.d.ts.map +1 -1
  214. package/dist/scatterplot/constants.d.ts +1 -1
  215. package/dist/scatterplot/constants.d.ts.map +1 -1
  216. package/dist/scatterplot/constants.js.map +1 -1
  217. package/dist/scatterplot/dots.d.ts +2 -2
  218. package/dist/scatterplot/dots.d.ts.map +1 -1
  219. package/dist/scatterplot/dots.js +27 -25
  220. package/dist/scatterplot/dots.js.map +1 -1
  221. package/dist/scatterplot/getLayersData.d.ts +3 -3
  222. package/dist/scatterplot/getLayersData.d.ts.map +1 -1
  223. package/dist/scatterplot/getLayersData.js +12 -15
  224. package/dist/scatterplot/getLayersData.js.map +1 -1
  225. package/dist/scatterplot/index.d.ts +4 -4
  226. package/dist/scatterplot/index.d.ts.map +1 -1
  227. package/dist/scatterplot/index.js +71 -72
  228. package/dist/scatterplot/index.js.map +1 -1
  229. package/dist/scatterplot/linearRegression.d.ts +5 -4
  230. package/dist/scatterplot/linearRegression.d.ts.map +1 -1
  231. package/dist/scatterplot/linearRegression.js +88 -86
  232. package/dist/scatterplot/linearRegression.js.map +1 -1
  233. package/dist/scatterplot/utils/createAesGetter.d.ts +3 -2
  234. package/dist/scatterplot/utils/createAesGetter.d.ts.map +1 -1
  235. package/dist/scatterplot/utils/createAesGetter.js +21 -21
  236. package/dist/scatterplot/utils/createAesGetter.js.map +1 -1
  237. package/dist/scatterplot/utils/createLegendInfo.d.ts +2 -10
  238. package/dist/scatterplot/utils/createLegendInfo.d.ts.map +1 -1
  239. package/dist/scatterplot/utils/createLegendInfo.js +44 -37
  240. package/dist/scatterplot/utils/createLegendInfo.js.map +1 -1
  241. package/dist/scatterplot/utils/formatColumnValue.d.ts +5 -0
  242. package/dist/scatterplot/utils/formatColumnValue.d.ts.map +1 -0
  243. package/dist/scatterplot/utils/formatColumnValue.js +11 -0
  244. package/dist/scatterplot/utils/formatColumnValue.js.map +1 -0
  245. package/dist/scatterplot/utils/getVisibleLabels.d.ts +6 -9
  246. package/dist/scatterplot/utils/getVisibleLabels.d.ts.map +1 -1
  247. package/dist/scatterplot/utils/getVisibleLabels.js +46 -56
  248. package/dist/scatterplot/utils/getVisibleLabels.js.map +1 -1
  249. package/dist/scatterplot-umap/ChartRenderer.d.ts +18 -15
  250. package/dist/scatterplot-umap/ChartRenderer.d.ts.map +1 -1
  251. package/dist/scatterplot-umap/ChartRenderer.js +231 -214
  252. package/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
  253. package/dist/scatterplot-umap/SettingsImpl.d.ts +2 -2
  254. package/dist/scatterplot-umap/SettingsImpl.d.ts.map +1 -1
  255. package/dist/scatterplot-umap/SettingsImpl.js +25 -25
  256. package/dist/scatterplot-umap/SettingsImpl.js.map +1 -1
  257. package/dist/scatterplot-umap/colors.d.ts +6 -0
  258. package/dist/scatterplot-umap/colors.d.ts.map +1 -0
  259. package/dist/scatterplot-umap/colors.js +42 -0
  260. package/dist/scatterplot-umap/colors.js.map +1 -0
  261. package/dist/scatterplot-umap/components/LowerSVG.d.ts +2 -2
  262. package/dist/scatterplot-umap/components/LowerSVG.d.ts.map +1 -1
  263. package/dist/scatterplot-umap/components/LowerSVG.js +97 -94
  264. package/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
  265. package/dist/scatterplot-umap/components/UpperSVG.d.ts.map +1 -1
  266. package/dist/scatterplot-umap/components/UpperSVG.js +20 -19
  267. package/dist/scatterplot-umap/components/UpperSVG.js.map +1 -1
  268. package/dist/scatterplot-umap/index.d.ts +0 -2
  269. package/dist/scatterplot-umap/index.d.ts.map +1 -1
  270. package/dist/scatterplot-umap/index.js +77 -102
  271. package/dist/scatterplot-umap/index.js.map +1 -1
  272. package/dist/scatterplot-umap/types.d.ts +7 -10
  273. package/dist/scatterplot-umap/types.d.ts.map +1 -1
  274. package/dist/types/bubble.d.ts +44 -12
  275. package/dist/types/bubble.d.ts.map +1 -1
  276. package/dist/types/common.d.ts +22 -3
  277. package/dist/types/common.d.ts.map +1 -1
  278. package/dist/types/common.js +3 -1
  279. package/dist/types/common.js.map +1 -1
  280. package/dist/types/dendro.d.ts +113 -10
  281. package/dist/types/dendro.d.ts.map +1 -1
  282. package/dist/types/dendro.js +1 -1
  283. package/dist/types/dendro.js.map +1 -1
  284. package/dist/types/discrete.d.ts +99 -22
  285. package/dist/types/discrete.d.ts.map +1 -1
  286. package/dist/types/discrete.js +3 -3
  287. package/dist/types/discrete.js.map +1 -1
  288. package/dist/types/heatmap.d.ts +187 -28
  289. package/dist/types/heatmap.d.ts.map +1 -1
  290. package/dist/types/heatmap.js +1 -1
  291. package/dist/types/heatmap.js.map +1 -1
  292. package/dist/types/histogram.d.ts +30 -8
  293. package/dist/types/histogram.d.ts.map +1 -1
  294. package/dist/types/histogram.js +1 -1
  295. package/dist/types/histogram.js.map +1 -1
  296. package/dist/types/scatterplot-umap.d.ts +149 -15
  297. package/dist/types/scatterplot-umap.d.ts.map +1 -1
  298. package/dist/types/scatterplot-umap.js +9 -9
  299. package/dist/types/scatterplot-umap.js.map +1 -1
  300. package/dist/types/scatterplot.d.ts +164 -12
  301. package/dist/types/scatterplot.d.ts.map +1 -1
  302. package/dist/types/scatterplot.js +1 -1
  303. package/dist/types/scatterplot.js.map +1 -1
  304. package/dist/utils/TextMeasurer/TextMeasurer.d.ts +7 -0
  305. package/dist/utils/TextMeasurer/TextMeasurer.d.ts.map +1 -0
  306. package/dist/utils/TextMeasurer/TextMeasurer.js +42 -0
  307. package/dist/utils/TextMeasurer/TextMeasurer.js.map +1 -0
  308. package/dist/utils/TextMeasurer/charToWidth.json.js +155 -0
  309. package/dist/utils/TextMeasurer/charToWidth.json.js.map +1 -0
  310. package/dist/utils/arrangeLegendParts.js +1 -1
  311. package/dist/utils/arrangeLegendParts.js.map +1 -1
  312. package/dist/utils/getChartEdgeSides.d.ts +1 -1
  313. package/dist/utils/getLegendWidth.d.ts.map +1 -1
  314. package/dist/utils/getLegendWidth.js +1 -1
  315. package/dist/utils/getLegendWidth.js.map +1 -1
  316. package/package.json +5 -3
  317. package/dist/bubble/getCells.d.ts.map +0 -1
  318. package/dist/bubble/getCells.js +0 -91
  319. package/dist/bubble/getCells.js.map +0 -1
  320. package/dist/node_modules/d3-quadtree/src/add.js +0 -30
  321. package/dist/node_modules/d3-quadtree/src/add.js.map +0 -1
  322. package/dist/node_modules/d3-quadtree/src/cover.js +0 -29
  323. package/dist/node_modules/d3-quadtree/src/cover.js.map +0 -1
  324. package/dist/node_modules/d3-quadtree/src/data.js +0 -12
  325. package/dist/node_modules/d3-quadtree/src/data.js.map +0 -1
  326. package/dist/node_modules/d3-quadtree/src/extent.js +0 -7
  327. package/dist/node_modules/d3-quadtree/src/extent.js.map +0 -1
  328. package/dist/node_modules/d3-quadtree/src/find.js +0 -26
  329. package/dist/node_modules/d3-quadtree/src/find.js.map +0 -1
  330. package/dist/node_modules/d3-quadtree/src/quad.js +0 -7
  331. package/dist/node_modules/d3-quadtree/src/quad.js.map +0 -1
  332. package/dist/node_modules/d3-quadtree/src/quadtree.js +0 -51
  333. package/dist/node_modules/d3-quadtree/src/quadtree.js.map +0 -1
  334. package/dist/node_modules/d3-quadtree/src/remove.js +0 -21
  335. package/dist/node_modules/d3-quadtree/src/remove.js.map +0 -1
  336. package/dist/node_modules/d3-quadtree/src/root.js +0 -7
  337. package/dist/node_modules/d3-quadtree/src/root.js.map +0 -1
  338. package/dist/node_modules/d3-quadtree/src/size.js +0 -12
  339. package/dist/node_modules/d3-quadtree/src/size.js.map +0 -1
  340. package/dist/node_modules/d3-quadtree/src/visit.js +0 -14
  341. package/dist/node_modules/d3-quadtree/src/visit.js.map +0 -1
  342. package/dist/node_modules/d3-quadtree/src/visitAfter.js +0 -19
  343. package/dist/node_modules/d3-quadtree/src/visitAfter.js.map +0 -1
  344. package/dist/node_modules/d3-quadtree/src/x.js +0 -11
  345. package/dist/node_modules/d3-quadtree/src/x.js.map +0 -1
  346. package/dist/node_modules/d3-quadtree/src/y.js +0 -11
  347. package/dist/node_modules/d3-quadtree/src/y.js.map +0 -1
  348. package/dist/utils/TextMeasurer.d.ts +0 -8
  349. package/dist/utils/TextMeasurer.d.ts.map +0 -1
  350. package/dist/utils/TextMeasurer.js +0 -27
  351. package/dist/utils/TextMeasurer.js.map +0 -1
@@ -1,204 +1,189 @@
1
- import { j as a } from "../../node_modules/react/jsx-runtime.js";
2
- import { r as p } from "../../_virtual/index.js";
3
- import { getLineShape as g } from "../../utils/getLineShape.js";
4
- import { getPointShape as u } from "../../utils/getPointShape.js";
5
- import { TextMeasurer as C } from "../../utils/TextMeasurer.js";
6
- import { getFilteredLabels as j } from "../utils/getVisibleLabels.js";
7
- import k from "../../node_modules/d3-shape/src/line.js";
8
- import v from "../../node_modules/d3-shape/src/curve/basis.js";
9
- const l = 3, Y = p.memo(({
1
+ import { j as s } from "../../node_modules/react/jsx-runtime.js";
2
+ import { r as c } from "../../_virtual/index.js";
3
+ import { getLineShape as L } from "../../utils/getLineShape.js";
4
+ import { getPointShape as l } from "../../utils/getPointShape.js";
5
+ import { TextMeasurer as C } from "../../utils/TextMeasurer/TextMeasurer.js";
6
+ import { getLabelMinX as k, getLabelMinY as v, createLabelPositioner as M } from "../utils/getVisibleLabels.js";
7
+ import D from "../../node_modules/d3-shape/src/line.js";
8
+ import $ from "../../node_modules/d3-shape/src/curve/basis.js";
9
+ const w = 3, _ = c.memo(({
10
10
  width: t,
11
- height: r,
12
- scales: n,
13
- dotsData: e,
14
- layersData: i,
15
- aesGetters: o,
11
+ height: e,
12
+ scales: i,
13
+ dotsData: o,
14
+ layersData: r,
15
+ aesGetters: n,
16
16
  onMouseEnterDot: d,
17
- onMouseLeaveDot: s
18
- }) => i.map((m, x) => {
17
+ onMouseLeaveDot: p
18
+ }) => r.map((m, x) => {
19
19
  if (m.type === "dots")
20
- return /* @__PURE__ */ a.jsx(
21
- $,
20
+ return /* @__PURE__ */ s.jsx(
21
+ B,
22
22
  {
23
23
  width: t,
24
- height: r,
25
- scales: n,
26
- dotsData: e,
27
- layersData: i,
28
- aesGetters: o,
24
+ height: e,
25
+ scales: i,
26
+ dotsData: o,
27
+ layersData: r,
28
+ aesGetters: n,
29
29
  onMouseEnterDot: d,
30
- onMouseLeaveDot: s
30
+ onMouseLeaveDot: p
31
31
  },
32
32
  m.type + x
33
33
  );
34
34
  if (m.type === "curve")
35
- return /* @__PURE__ */ a.jsx(
36
- B,
35
+ return /* @__PURE__ */ s.jsx(
36
+ b,
37
37
  {
38
38
  layer: m,
39
- scales: n,
40
- aesGetters: o
39
+ scales: i,
40
+ aesGetters: n
41
41
  },
42
42
  m.type + x
43
43
  );
44
- })), $ = p.memo(({
44
+ })), B = c.memo(({
45
45
  width: t,
46
- height: r,
47
- scales: n,
48
- dotsData: e,
49
- layersData: i,
50
- aesGetters: o,
46
+ height: e,
47
+ scales: i,
48
+ dotsData: o,
49
+ layersData: r,
50
+ aesGetters: n,
51
51
  onMouseEnterDot: d,
52
- onMouseLeaveDot: s
52
+ onMouseLeaveDot: p
53
53
  }) => {
54
- const { dots: m } = e, [x, c] = p.useState(null), [f, y] = p.useState(
55
- () => S(
56
- m,
57
- n,
58
- o,
59
- i.find((h) => h.type === "dots")
60
- )
61
- ), [b, L] = p.useState(
62
- () => j(f, t, r, l, l)
63
- );
64
- return p.useEffect(() => {
65
- y(
66
- S(
67
- m,
68
- n,
69
- o,
70
- i.find((h) => h.type === "dots")
71
- )
72
- );
73
- }, [m, n, o, i]), p.useEffect(() => {
74
- const h = j(f, t, r);
75
- L(h);
76
- }, [f, t, r]), /* @__PURE__ */ a.jsxs("g", { children: [
77
- /* @__PURE__ */ a.jsx(
78
- D,
54
+ const { dots: m } = o, [x, u] = c.useState(null), h = c.useMemo(() => r.findIndex((a) => a.type === "dots") !== -1, [r]), f = c.useMemo(() => h ? W(
55
+ m,
56
+ i,
57
+ t,
58
+ e,
59
+ n
60
+ ) : [], [m, i.x, i.y, t, e, n, h]);
61
+ return /* @__PURE__ */ s.jsxs("g", { children: [
62
+ /* @__PURE__ */ s.jsx(
63
+ z,
79
64
  {
80
- scales: n,
81
- dotsData: e,
82
- aesGetters: o,
65
+ scales: i,
66
+ dotsData: o,
67
+ aesGetters: n,
83
68
  onMouseEnter: d,
84
- onMouseLeave: s
69
+ onMouseLeave: p
85
70
  }
86
71
  ),
87
- /* @__PURE__ */ a.jsx(
88
- F,
72
+ /* @__PURE__ */ s.jsx(
73
+ P,
89
74
  {
90
- labels: b,
91
- onMouseEnter: (h) => c(h),
92
- onMouseLeave: () => c(null)
75
+ labels: f,
76
+ onMouseEnter: (a) => u(a),
77
+ onMouseLeave: () => u(null)
93
78
  }
94
79
  ),
95
- x && /* @__PURE__ */ a.jsxs(
80
+ x && /* @__PURE__ */ s.jsxs(
96
81
  "g",
97
82
  {
98
- transform: `translate(${n.x(x.x)},${n.y(x.y)})`,
83
+ transform: `translate(${i.x(x.x)},${i.y(x.y)})`,
99
84
  children: [
100
- u(
101
- o.dotShape(x.data),
102
- o.dotSize(x.data) + 1,
85
+ l(
86
+ n.dotShape(x.idx),
87
+ n.dotSize(x.idx) + 1,
103
88
  "white",
104
89
  "white"
105
90
  ),
106
- u(
107
- o.dotShape(x.data),
108
- o.dotSize(x.data),
109
- o.dotColor(x.data)
91
+ l(
92
+ n.dotShape(x.idx),
93
+ n.dotSize(x.idx),
94
+ n.dotColor(x.idx)
110
95
  )
111
96
  ]
112
97
  },
113
98
  "activeDot"
114
99
  )
115
100
  ] });
116
- }), B = p.memo(({
101
+ }), b = c.memo(({
117
102
  layer: t,
118
- scales: r,
119
- aesGetters: n
103
+ scales: e,
104
+ aesGetters: i
120
105
  }) => {
121
106
  if (t.type === "curve" && !t.info.smoothing)
122
- return t.geoms.map((e, i) => /* @__PURE__ */ a.jsx("g", { children: /* @__PURE__ */ a.jsx(
107
+ return t.geoms.map((o, r) => /* @__PURE__ */ s.jsx("g", { children: /* @__PURE__ */ s.jsx(
123
108
  "polyline",
124
109
  {
125
- points: e.dots.map((o) => `${r.x(o.x)},${r.y(o.y)}`).join(" "),
110
+ points: o.dots.map((n) => `${e.x(n.x)},${e.y(n.y)}`).join(" "),
126
111
  fill: "none",
127
- stroke: n.lineColor(e.data),
112
+ stroke: i.lineColor(o.dots[0].idx),
128
113
  strokeWidth: t.info.aes.lineWidth,
129
- strokeDasharray: g(t.info.aes.lineShape)
114
+ strokeDasharray: L(t.info.aes.lineShape)
130
115
  }
131
- ) }, i));
116
+ ) }, r));
132
117
  if (t.type === "curve" && t.info.smoothing)
133
- return t.geoms.map((e, i) => /* @__PURE__ */ a.jsx("g", { children: /* @__PURE__ */ a.jsx(
118
+ return t.geoms.map((o, r) => /* @__PURE__ */ s.jsx("g", { children: /* @__PURE__ */ s.jsx(
134
119
  "path",
135
120
  {
136
- d: k().curve(v).x((o) => r.x(o.x)).y((o) => r.y(o.y))(e.dots) ?? "",
121
+ d: D().curve($).x((n) => e.x(n.x)).y((n) => e.y(n.y))(o.dots) ?? "",
137
122
  fill: "none",
138
- stroke: n.lineColor(e.data),
123
+ stroke: i.lineColor(o.dots[0].idx),
139
124
  strokeWidth: t.info.aes.lineWidth,
140
- strokeDasharray: g(t.info.aes.lineShape)
125
+ strokeDasharray: L(t.info.aes.lineShape)
141
126
  }
142
- ) }, i));
143
- }), D = p.memo(({
127
+ ) }, r));
128
+ }), z = c.memo(({
144
129
  scales: t,
145
- dotsData: r,
146
- aesGetters: n,
147
- onMouseEnter: e,
148
- onMouseLeave: i
130
+ dotsData: e,
131
+ aesGetters: i,
132
+ onMouseEnter: o,
133
+ onMouseLeave: r
149
134
  }) => {
150
- const { dots: o } = r;
151
- return /* @__PURE__ */ a.jsx(a.Fragment, { children: o.map((d, s) => /* @__PURE__ */ a.jsx(
152
- E,
135
+ const { dots: n } = e;
136
+ return /* @__PURE__ */ s.jsx(s.Fragment, { children: n.map((d, p) => /* @__PURE__ */ s.jsx(
137
+ F,
153
138
  {
154
139
  dot: d,
155
140
  scales: t,
156
- aesGetters: n,
157
- onMouseEnter: e,
158
- onMouseLeave: i
141
+ aesGetters: i,
142
+ onMouseEnter: o,
143
+ onMouseLeave: r
159
144
  },
160
- s
145
+ p
161
146
  )) });
162
- }), E = ({
147
+ }), F = ({
163
148
  dot: t,
164
- scales: r,
165
- aesGetters: n,
166
- onMouseEnter: e,
167
- onMouseLeave: i
168
- }) => /* @__PURE__ */ a.jsx(
149
+ scales: e,
150
+ aesGetters: i,
151
+ onMouseEnter: o,
152
+ onMouseLeave: r
153
+ }) => /* @__PURE__ */ s.jsx(
169
154
  "g",
170
155
  {
171
- transform: `translate(${r.x(t.x)},${r.y(t.y)})`,
156
+ transform: `translate(${e.x(t.x)},${e.y(t.y)})`,
172
157
  opacity: t.dimmed ? 0.3 : 1,
173
- onMouseOver: () => e == null ? void 0 : e(t),
174
- onMouseLeave: () => i == null ? void 0 : i(t),
175
- children: u(
176
- n.dotShape(t.data),
177
- n.dotSize(t.data),
178
- n.dotColor(t.data)
158
+ onMouseOver: () => o == null ? void 0 : o(t),
159
+ onMouseLeave: () => r == null ? void 0 : r(t),
160
+ children: l(
161
+ i.dotShape(t.idx),
162
+ i.dotSize(t.idx),
163
+ i.dotColor(t.idx)
179
164
  )
180
165
  }
181
- ), F = p.memo(({
166
+ ), P = c.memo(({
182
167
  labels: t,
183
- onMouseEnter: r,
184
- onMouseLeave: n
185
- }) => /* @__PURE__ */ a.jsx(a.Fragment, { children: t.map((e, i) => {
186
- const { name: o, height: d, bbox: s, width: m } = e;
187
- return /* @__PURE__ */ a.jsxs("g", { transform: `translate(${s.minX},${s.minY})`, children: [
188
- /* @__PURE__ */ a.jsx(
168
+ onMouseEnter: e,
169
+ onMouseLeave: i
170
+ }) => /* @__PURE__ */ s.jsx(s.Fragment, { children: t.map((o, r) => {
171
+ const { name: n, height: d, width: p } = o;
172
+ return /* @__PURE__ */ s.jsxs("g", { transform: `translate(${k(o)},${v(o)})`, children: [
173
+ /* @__PURE__ */ s.jsx(
189
174
  "rect",
190
175
  {
191
176
  x: "0",
192
177
  y: "0",
193
- width: m,
178
+ width: p,
194
179
  height: d,
195
180
  fill: "transparent",
196
181
  stroke: "none",
197
- onMouseEnter: () => r(e.dot),
198
- onMouseLeave: () => n(e.dot)
182
+ onMouseEnter: () => e(o.dot),
183
+ onMouseLeave: () => i(o.dot)
199
184
  }
200
185
  ),
201
- /* @__PURE__ */ a.jsx(
186
+ /* @__PURE__ */ s.jsx(
202
187
  "text",
203
188
  {
204
189
  x: 0,
@@ -210,41 +195,38 @@ const l = 3, Y = p.memo(({
210
195
  fontFamily: "Manrope",
211
196
  fontSize: "16px",
212
197
  dominantBaseline: "middle",
213
- children: o
198
+ children: n
214
199
  }
215
200
  )
216
- ] }, i);
217
- }) })), w = new C("16px Manrope");
218
- function S(t, r, n, e) {
219
- if (!e)
220
- return [];
221
- const i = [];
222
- for (const o of t) {
223
- const d = o.label;
224
- if (!d)
201
+ ] }, r);
202
+ }) }));
203
+ function W(t, e, i, o, r) {
204
+ const n = new C("16px Manrope"), d = M(i, o), p = [];
205
+ for (let m = 0; m < t.length; m++) {
206
+ const x = t[m];
207
+ if (x.label == null)
225
208
  continue;
226
- const s = w.getTextMetrics(String(d));
227
- i.push({
228
- name: String(d),
229
- width: (s == null ? void 0 : s.width) ?? 0,
230
- height: ((s == null ? void 0 : s.actualBoundingBoxAscent) ?? 0) + ((s == null ? void 0 : s.actualBoundingBoxDescent) ?? 0),
231
- x: r.x(o.x),
232
- y: r.y(o.y),
233
- xPosition: "right",
234
- yPosition: "middle",
235
- bbox: { minX: 0, maxX: 0, minY: 0, maxY: 0 },
236
- dot: o,
237
- padding: n.dotSize(o.data) + l
209
+ const u = String(x.label), h = n.getTextMetrics(u), f = e.x(x.x), a = e.y(x.y), j = h.width, y = h.actualBoundingBoxAscent + h.actualBoundingBoxDescent, S = r.dotSize(x.idx) + w, g = d(f, a, j, y, S);
210
+ g && p.push({
211
+ x: f,
212
+ y: a,
213
+ dot: x,
214
+ name: u,
215
+ width: j,
216
+ height: y,
217
+ padding: S,
218
+ xPosition: g[0],
219
+ yPosition: g[1]
238
220
  });
239
221
  }
240
- return i;
222
+ return p;
241
223
  }
242
224
  export {
243
- B as ChartCurveLayer,
244
- E as ChartDot,
245
- D as ChartDots,
246
- F as ChartLabels,
247
- $ as ChartLayerDots,
248
- Y as ChartLayersData
225
+ b as ChartCurveLayer,
226
+ F as ChartDot,
227
+ z as ChartDots,
228
+ P as ChartLabels,
229
+ B as ChartLayerDots,
230
+ _ as ChartLayersData
249
231
  };
250
232
  //# sourceMappingURL=ChartLayersData.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartLayersData.js","sources":["../../../src/scatterplot/components/ChartLayersData.tsx"],"sourcesContent":["import { curveBasis, line } from 'd3-shape';\nimport { memo, useEffect, useState } from 'react';\nimport { getLineShape } from '../../utils/getLineShape';\nimport { getPointShape } from '../../utils/getPointShape';\nimport { TextMeasurer } from '../../utils/TextMeasurer';\nimport type { Dot, GroupedDots } from '../dots';\nimport type { DotsLayerData, ScatterplotLayerData } from '../getLayersData';\nimport type { Label } from '../utils/getVisibleLabels';\nimport { getFilteredLabels } from '../utils/getVisibleLabels';\nimport type {\n AesGetters,\n ChartScales\n} from './types';\n\nconst LABEL_OFFSET = 3;\n\ninterface Props {\n width: number;\n height: number;\n scales: ChartScales;\n dotsData: GroupedDots[keyof GroupedDots];\n layersData: ScatterplotLayerData[];\n aesGetters: AesGetters;\n onMouseEnterDot?: (dot: Dot) => void;\n onMouseLeaveDot?: (dot: Dot) => void;\n}\n\nexport const ChartLayersData = memo(({\n width,\n height,\n scales,\n dotsData,\n layersData,\n aesGetters,\n onMouseEnterDot,\n onMouseLeaveDot,\n}: Props) => {\n return layersData.map((layer, idx) => {\n if (layer.type === 'dots') {\n return <ChartLayerDots\n key={layer.type + idx}\n width={width}\n height={height}\n scales={scales}\n dotsData={dotsData}\n layersData={layersData}\n aesGetters={aesGetters}\n onMouseEnterDot={onMouseEnterDot}\n onMouseLeaveDot={onMouseLeaveDot}\n />;\n }\n\n if (layer.type === 'curve') {\n return <ChartCurveLayer\n key={layer.type + idx}\n layer={layer}\n scales={scales}\n aesGetters={aesGetters}\n />;\n }\n });\n});\n\nexport const ChartLayerDots = memo(({\n width,\n height,\n scales,\n dotsData,\n layersData,\n aesGetters,\n onMouseEnterDot,\n onMouseLeaveDot,\n}: Props) => {\n const {dots} = dotsData;\n\n const [activeDot, setActiveDot] = useState<Dot | null>(null);\n\n const [allLabels, setAllLabels] = useState<Label[]>(() =>\n getAllPossibleLabels(\n dots,\n scales,\n aesGetters,\n layersData.find(layer => layer.type === 'dots') as DotsLayerData | undefined\n )\n );\n const [labels, setLabels] = useState<Label[]>(() =>\n getFilteredLabels(allLabels, width, height, LABEL_OFFSET, LABEL_OFFSET)\n );\n\n useEffect(() => {\n setAllLabels(\n getAllPossibleLabels(\n dots,\n scales,\n aesGetters,\n layersData.find(layer => layer.type === 'dots') as DotsLayerData | undefined\n )\n );\n }, [dots, scales, aesGetters, layersData]);\n\n useEffect(() => {\n const filteredLabels = getFilteredLabels(allLabels, width, height);\n setLabels(filteredLabels);\n }, [allLabels, width, height]);\n\n return (\n <g>\n <ChartDots\n scales={scales}\n dotsData={dotsData}\n aesGetters={aesGetters}\n onMouseEnter={onMouseEnterDot}\n onMouseLeave={onMouseLeaveDot}\n />\n <ChartLabels\n labels={labels}\n onMouseEnter={dot => setActiveDot(dot)}\n onMouseLeave={() => setActiveDot(null)}\n />\n {activeDot && (\n <g\n key=\"activeDot\"\n transform={`translate(${scales.x(activeDot.x)},${scales.y(activeDot.y)})`}\n >\n {getPointShape(\n aesGetters.dotShape(activeDot.data),\n aesGetters.dotSize(activeDot.data) + 1,\n 'white',\n 'white'\n )}\n {getPointShape(\n aesGetters.dotShape(activeDot.data),\n aesGetters.dotSize(activeDot.data),\n aesGetters.dotColor(activeDot.data)\n )}\n </g>\n )}\n </g>\n );\n});\n\nexport const ChartCurveLayer = memo(({\n layer,\n scales,\n aesGetters,\n}: {\n layer: ScatterplotLayerData;\n scales: ChartScales;\n aesGetters: AesGetters;\n}) => {\n if (layer.type === 'curve' && !layer.info.smoothing) {\n return layer.geoms.map((curve, idx) => (\n <g key={idx}>\n <polyline\n points={curve.dots.map(d => `${scales.x(d.x)},${scales.y(d.y)}`).join(' ')}\n fill=\"none\"\n stroke={aesGetters.lineColor(curve.data)}\n strokeWidth={layer.info.aes.lineWidth}\n strokeDasharray={getLineShape(layer.info.aes.lineShape)}\n />\n </g>\n ));\n }\n\n if (layer.type === 'curve' && layer.info.smoothing) {\n return layer.geoms.map((curve, idx) => (\n <g key={idx}>\n <path\n d={\n line<Dot>()\n .curve(curveBasis)\n .x((d: Dot) => scales.x(d.x))\n .y((d: Dot) => scales.y(d.y))(curve.dots) ?? ''\n }\n fill=\"none\"\n stroke={aesGetters.lineColor(curve.data)}\n strokeWidth={layer.info.aes.lineWidth}\n strokeDasharray={getLineShape(layer.info.aes.lineShape)}\n />\n </g>\n ));\n }\n});\n\nexport const ChartDots = memo(({\n scales,\n dotsData,\n aesGetters,\n onMouseEnter,\n onMouseLeave,\n}: Pick<Props, 'scales' | 'dotsData' | 'aesGetters'> & {\n onMouseEnter?: (dot: Dot) => void;\n onMouseLeave?: (dot: Dot) => void;\n}) => {\n const {dots} = dotsData;\n\n return (<>\n {dots.map((dot, idx) => {\n return <ChartDot\n key={idx}\n dot={dot}\n scales={scales}\n aesGetters={aesGetters}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n />;\n })}\n </>);\n});\n\nexport const ChartDot = (({\n dot,\n scales,\n aesGetters,\n onMouseEnter,\n onMouseLeave,\n}: {\n dot: Dot;\n scales: ChartScales;\n aesGetters: AesGetters;\n onMouseEnter?: (dot: Dot) => void;\n onMouseLeave?: (dot: Dot) => void;\n}) => {\n return (<g\n transform={`translate(${scales.x(dot.x)},${scales.y(dot.y)})`}\n opacity={dot.dimmed ? 0.3 : 1}\n onMouseOver={() => onMouseEnter?.(dot)}\n onMouseLeave={() => onMouseLeave?.(dot)}\n >\n {getPointShape(\n aesGetters.dotShape(dot.data),\n aesGetters.dotSize(dot.data),\n aesGetters.dotColor(dot.data)\n )}\n </g>);\n});\n\nexport const ChartLabels = memo(({\n labels,\n onMouseEnter,\n onMouseLeave,\n}: {\n labels: Label[];\n onMouseEnter: (dot: Dot ) => void;\n onMouseLeave: (dot: Dot ) => void;\n}) => {\n return (<>\n {labels.map((label, idx) => {\n const {name, height, bbox, width} = label;\n return (\n <g key={idx} transform={`translate(${bbox.minX},${bbox.minY})`}>\n <rect\n x=\"0\"\n y=\"0\"\n width={width}\n height={height}\n fill=\"transparent\"\n stroke=\"none\"\n onMouseEnter={() => onMouseEnter(label.dot)}\n onMouseLeave={() => onMouseLeave(label.dot)}\n />\n <text\n x={0}\n y={height / 2}\n stroke=\"white\"\n strokeWidth={2}\n paintOrder=\"stroke\"\n style={{pointerEvents: 'none'}}\n fontFamily=\"Manrope\"\n fontSize=\"16px\"\n dominantBaseline=\"middle\"\n >\n {name}\n </text>\n </g>\n );\n })}\n </>);\n});\n\nconst textMeasurer = new TextMeasurer('16px Manrope');\nfunction getAllPossibleLabels(dots: Dot[], scales: ChartScales, aesGetters: AesGetters, layer?: DotsLayerData) {\n if (!layer) {\n return [];\n }\n const labels: Label[] = [];\n for (const dot of dots) {\n const text = dot.label;\n if (!text) {\n continue;\n }\n const metrics = textMeasurer.getTextMetrics(String(text));\n labels.push({\n name: String(text),\n width: metrics?.width ?? 0,\n height: (metrics?.actualBoundingBoxAscent ?? 0) + (metrics?.actualBoundingBoxDescent ?? 0),\n x: scales.x(dot.x),\n y: scales.y(dot.y),\n xPosition: 'right',\n yPosition: 'middle',\n bbox: {minX: 0, maxX: 0, minY: 0, maxY: 0},\n dot,\n padding: aesGetters.dotSize(dot.data) + LABEL_OFFSET,\n } as Label);\n }\n return labels;\n}"],"names":["LABEL_OFFSET","ChartLayersData","memo","width","height","scales","dotsData","layersData","aesGetters","onMouseEnterDot","onMouseLeaveDot","layer","idx","jsx","ChartLayerDots","ChartCurveLayer","dots","activeDot","setActiveDot","useState","allLabels","setAllLabels","getAllPossibleLabels","labels","setLabels","getFilteredLabels","useEffect","filteredLabels","ChartDots","ChartLabels","dot","jsxs","getPointShape","curve","d","getLineShape","line","curveBasis","onMouseEnter","onMouseLeave","Fragment","ChartDot","label","name","bbox","textMeasurer","TextMeasurer","text","metrics"],"mappings":"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"}
1
+ {"version":3,"file":"ChartLayersData.js","sources":["../../../src/scatterplot/components/ChartLayersData.tsx"],"sourcesContent":["import { curveBasis, line } from 'd3-shape';\nimport { memo, useMemo, useState } from 'react';\nimport { getLineShape } from '../../utils/getLineShape';\nimport { getPointShape } from '../../utils/getPointShape';\nimport { TextMeasurer } from '../../utils/TextMeasurer/TextMeasurer';\nimport type { Dot, GroupedDots } from '../dots';\nimport type { ScatterplotLayerData } from '../getLayersData';\nimport type { Label } from '../utils/getVisibleLabels';\nimport { createLabelPositioner, getLabelMinX, getLabelMinY } from '../utils/getVisibleLabels';\nimport type {\n AesGetters,\n ChartScales\n} from './types';\n\nconst LABEL_OFFSET = 3;\n\ninterface Props {\n width: number;\n height: number;\n scales: ChartScales;\n dotsData: GroupedDots[keyof GroupedDots];\n layersData: ScatterplotLayerData[];\n aesGetters: AesGetters;\n onMouseEnterDot?: (dot: Dot) => void;\n onMouseLeaveDot?: (dot: Dot) => void;\n}\n\nexport const ChartLayersData = memo(({\n width,\n height,\n scales,\n dotsData,\n layersData,\n aesGetters,\n onMouseEnterDot,\n onMouseLeaveDot,\n}: Props) => {\n return layersData.map((layer, idx) => {\n if (layer.type === 'dots') {\n return <ChartLayerDots\n key={layer.type + idx}\n width={width}\n height={height}\n scales={scales}\n dotsData={dotsData}\n layersData={layersData}\n aesGetters={aesGetters}\n onMouseEnterDot={onMouseEnterDot}\n onMouseLeaveDot={onMouseLeaveDot}\n />;\n }\n\n if (layer.type === 'curve') {\n return <ChartCurveLayer\n key={layer.type + idx}\n layer={layer}\n scales={scales}\n aesGetters={aesGetters}\n />;\n }\n });\n});\n\nexport const ChartLayerDots = memo(({\n width,\n height,\n scales,\n dotsData,\n layersData,\n aesGetters,\n onMouseEnterDot,\n onMouseLeaveDot,\n}: Props) => {\n const {dots} = dotsData;\n\n const [activeDot, setActiveDot] = useState<Dot | null>(null);\n const hasLayerDots = useMemo(() => layersData.findIndex(layer => layer.type === 'dots') !== -1, [layersData]);\n \n const labels = useMemo<Label[]>(() =>{\n if (!hasLayerDots) return [];\n return computeLabels(\n dots,\n scales,\n width,\n height,\n aesGetters,\n );\n }, [dots, scales.x, scales.y, width, height, aesGetters, hasLayerDots]);\n\n return (\n <g>\n <ChartDots\n scales={scales}\n dotsData={dotsData}\n aesGetters={aesGetters}\n onMouseEnter={onMouseEnterDot}\n onMouseLeave={onMouseLeaveDot}\n />\n <ChartLabels\n labels={labels}\n onMouseEnter={dot => setActiveDot(dot)}\n onMouseLeave={() => setActiveDot(null)}\n />\n {activeDot && (\n <g\n key=\"activeDot\"\n transform={`translate(${scales.x(activeDot.x)},${scales.y(activeDot.y)})`}\n >\n {getPointShape(\n aesGetters.dotShape(activeDot.idx),\n aesGetters.dotSize(activeDot.idx) + 1,\n 'white',\n 'white'\n )}\n {getPointShape(\n aesGetters.dotShape(activeDot.idx),\n aesGetters.dotSize(activeDot.idx),\n aesGetters.dotColor(activeDot.idx)\n )}\n </g>\n )}\n </g>\n );\n});\n\nexport const ChartCurveLayer = memo(({\n layer,\n scales,\n aesGetters,\n}: {\n layer: ScatterplotLayerData;\n scales: ChartScales;\n aesGetters: AesGetters;\n}) => {\n if (layer.type === 'curve' && !layer.info.smoothing) {\n return layer.geoms.map((curve, idx) => (\n <g key={idx}>\n <polyline\n points={curve.dots.map(d => `${scales.x(d.x)},${scales.y(d.y)}`).join(' ')}\n fill=\"none\"\n stroke={aesGetters.lineColor(curve.dots[0].idx)}\n strokeWidth={layer.info.aes.lineWidth}\n strokeDasharray={getLineShape(layer.info.aes.lineShape)}\n />\n </g>\n ));\n }\n\n if (layer.type === 'curve' && layer.info.smoothing) {\n return layer.geoms.map((curve, idx) => (\n <g key={idx}>\n <path\n d={\n line<Dot>()\n .curve(curveBasis)\n .x((d: Dot) => scales.x(d.x))\n .y((d: Dot) => scales.y(d.y))(curve.dots) ?? ''\n }\n fill=\"none\"\n stroke={aesGetters.lineColor(curve.dots[0].idx)}\n strokeWidth={layer.info.aes.lineWidth}\n strokeDasharray={getLineShape(layer.info.aes.lineShape)}\n />\n </g>\n ));\n }\n});\n\nexport const ChartDots = memo(({\n scales,\n dotsData,\n aesGetters,\n onMouseEnter,\n onMouseLeave,\n}: Pick<Props, 'scales' | 'dotsData' | 'aesGetters'> & {\n onMouseEnter?: (dot: Dot) => void;\n onMouseLeave?: (dot: Dot) => void;\n}) => {\n const {dots} = dotsData;\n\n return (<>\n {dots.map((dot, idx) => {\n return <ChartDot\n key={idx}\n dot={dot}\n scales={scales}\n aesGetters={aesGetters}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n />;\n })}\n </>);\n});\n\nexport const ChartDot = (({\n dot,\n scales,\n aesGetters,\n onMouseEnter,\n onMouseLeave,\n}: {\n dot: Dot;\n scales: ChartScales;\n aesGetters: AesGetters;\n onMouseEnter?: (dot: Dot) => void;\n onMouseLeave?: (dot: Dot) => void;\n}) => {\n return (<g\n transform={`translate(${scales.x(dot.x)},${scales.y(dot.y)})`}\n opacity={dot.dimmed ? 0.3 : 1}\n onMouseOver={() => onMouseEnter?.(dot)}\n onMouseLeave={() => onMouseLeave?.(dot)}\n >\n {getPointShape(\n aesGetters.dotShape(dot.idx),\n aesGetters.dotSize(dot.idx),\n aesGetters.dotColor(dot.idx)\n )}\n </g>);\n});\n\nexport const ChartLabels = memo(({\n labels,\n onMouseEnter,\n onMouseLeave,\n}: {\n labels: Label[];\n onMouseEnter: (dot: Dot ) => void;\n onMouseLeave: (dot: Dot ) => void;\n}) => {\n return (<>\n {labels.map((label, idx) => {\n const {name, height, width} = label;\n return (\n <g key={idx} transform={`translate(${getLabelMinX(label)},${getLabelMinY(label)})`}>\n <rect\n x=\"0\"\n y=\"0\"\n width={width}\n height={height}\n fill=\"transparent\"\n stroke=\"none\"\n onMouseEnter={() => onMouseEnter(label.dot)}\n onMouseLeave={() => onMouseLeave(label.dot)}\n />\n <text\n x={0}\n y={height / 2}\n stroke=\"white\"\n strokeWidth={2}\n paintOrder=\"stroke\"\n style={{pointerEvents: 'none'}}\n fontFamily=\"Manrope\"\n fontSize=\"16px\"\n dominantBaseline=\"middle\"\n >\n {name}\n </text>\n </g>\n );\n })}\n </>);\n});\n\nfunction computeLabels(dots: Dot[], scales: ChartScales, chartWidth: number, chartHeight: number, aesGetters: AesGetters): Label[] {\n const textMeasurer = new TextMeasurer('16px Manrope');\n const getPosition = createLabelPositioner(chartWidth, chartHeight);\n const labels: Label[] = [];\n\n for (let i = 0; i < dots.length; i++) {\n const dot = dots[i];\n if (dot.label == null) {\n continue;\n }\n const name = String(dot.label);\n const metrics = textMeasurer.getTextMetrics(name);\n const x = scales.x(dot.x);\n const y = scales.y(dot.y);\n const w = metrics.width;\n const h = (metrics.actualBoundingBoxAscent) + (metrics.actualBoundingBoxDescent);\n const p = aesGetters.dotSize(dot.idx) + LABEL_OFFSET;\n const position = getPosition(x, y, w, h, p);\n if (!position) {\n continue;\n }\n\n labels.push({\n x,\n y,\n dot,\n name,\n width: w,\n height: h,\n padding: p,\n xPosition: position[0],\n yPosition: position[1],\n } satisfies Label);\n }\n\n return labels;\n}\n"],"names":["LABEL_OFFSET","ChartLayersData","memo","width","height","scales","dotsData","layersData","aesGetters","onMouseEnterDot","onMouseLeaveDot","layer","idx","jsx","ChartLayerDots","ChartCurveLayer","dots","activeDot","setActiveDot","useState","hasLayerDots","useMemo","labels","computeLabels","ChartDots","ChartLabels","dot","jsxs","getPointShape","curve","d","getLineShape","line","curveBasis","onMouseEnter","onMouseLeave","Fragment","ChartDot","label","name","getLabelMinX","getLabelMinY","chartWidth","chartHeight","textMeasurer","TextMeasurer","getPosition","createLabelPositioner","i","metrics","x","y","w","h","p","position"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChartTooltip.d.ts","sourceRoot":"","sources":["../../../src/scatterplot/components/ChartTooltip.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAE1E,OAAO,KAAK,EACR,UAAU,EACV,mBAAmB,EACnB,WAAW,EACX,UAAU,EACV,OAAO,EACV,MAAM,SAAS,CAAC;AAEjB,UAAU,KAAK;IACX,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;IAChC,UAAU,EAAE,SAAS,GAAG,mBAAmB,CAAC;IAC5C,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;IAChC,SAAS,EAAE,UAAU,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC;IAC/D,UAAU,EAAE,UAAU,CAAC;CAC1B;AAID,eAAO,MAAM,YAAY,2HAQtB,KAAK,oDA4CN,CAAC"}
1
+ {"version":3,"file":"ChartTooltip.d.ts","sourceRoot":"","sources":["../../../src/scatterplot/components/ChartTooltip.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAG1E,OAAO,KAAK,EACR,UAAU,EACV,mBAAmB,EACnB,WAAW,EACX,UAAU,EACV,OAAO,EACV,MAAM,SAAS,CAAC;AAEjB,UAAU,KAAK;IACX,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;IAChC,UAAU,EAAE,SAAS,GAAG,mBAAmB,CAAC;IAC5C,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;IAChC,SAAS,EAAE,UAAU,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,uBAAuB,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC;IAC/D,UAAU,EAAE,UAAU,CAAC;CAC1B;AAID,eAAO,MAAM,YAAY,2HAQtB,KAAK,oDA6CN,CAAC"}
@@ -1,58 +1,61 @@
1
- import { j as a } from "../../node_modules/react/jsx-runtime.js";
2
- import { r as x } from "../../_virtual/index.js";
1
+ import { j as l } from "../../node_modules/react/jsx-runtime.js";
2
+ import { r as c } from "../../_virtual/index.js";
3
3
  import { Tooltip as n } from "../../common/Tooltip.js";
4
- import { numberFormat as u } from "../../utils/numberFormat.js";
5
- import { ChartDot as p } from "./ChartLayersData.js";
6
- const b = { left: 0, right: 0, top: 0, bottom: 0 }, T = x.memo(({
7
- tooltipsData: e,
8
- tooltips: l,
9
- keyColumn: c,
4
+ import { useDataFrame as p } from "../../common/useDataFrame.js";
5
+ import { formatColumnValue as g } from "../utils/formatColumnValue.js";
6
+ import { ChartDot as d } from "./ChartLayersData.js";
7
+ import { format as C } from "../../node_modules/d3-format/src/defaultLocale.js";
8
+ const j = { left: 0, right: 0, top: 0, bottom: 0 }, w = c.memo(({
9
+ tooltipsData: r,
10
+ tooltips: a,
11
+ keyColumn: m,
10
12
  chartSizes: o,
11
13
  dimensions: t,
12
- scales: r,
13
- aesGetters: h
14
+ scales: f,
15
+ aesGetters: u
14
16
  }) => {
15
- const f = t == null ? void 0 : t.padding, g = x.useMemo(() => !t || !r || !f ? b : {
16
- left: t.left + f.left,
17
- right: o.totalWidth - (t.left + f.left),
18
- top: t.top + f.top,
19
- bottom: o.totalHeight - (t.top + f.top)
20
- }, [t, f, o]);
21
- return !t || !r || !f || !e.selectedData || !l.show ? null : /* @__PURE__ */ a.jsxs(a.Fragment, { children: [
22
- e.fixed && /* @__PURE__ */ a.jsxs("g", { transform: `translate(${t.left + f.left}, ${t.top + f.top})`, children: [
23
- /* @__PURE__ */ a.jsx("rect", { width: o.chartWidth, height: o.chartHeight, fill: "rgba(255, 255, 255, 0.8)" }),
24
- /* @__PURE__ */ a.jsx(
25
- p,
17
+ const x = p(), e = t == null ? void 0 : t.padding, h = c.useMemo(() => !t || !f || !e ? j : {
18
+ left: t.left + e.left,
19
+ right: o.totalWidth - (t.left + e.left),
20
+ top: t.top + e.top,
21
+ bottom: o.totalHeight - (t.top + e.top)
22
+ }, [t, e, o]);
23
+ return !t || !f || !e || !r.selectedData || !a.show ? null : /* @__PURE__ */ l.jsxs(l.Fragment, { children: [
24
+ r.fixed && /* @__PURE__ */ l.jsxs("g", { transform: `translate(${t.left + e.left}, ${t.top + e.top})`, children: [
25
+ /* @__PURE__ */ l.jsx("rect", { width: o.chartWidth, height: o.chartHeight, fill: "rgba(255, 255, 255, 0.8)" }),
26
+ /* @__PURE__ */ l.jsx(
27
+ d,
26
28
  {
27
- dot: e.selectedData,
28
- scales: r,
29
- aesGetters: h
29
+ dot: r.selectedData,
30
+ scales: f,
31
+ aesGetters: u
30
32
  }
31
33
  )
32
34
  ] }),
33
- /* @__PURE__ */ a.jsx(
35
+ /* @__PURE__ */ l.jsx(
34
36
  n,
35
37
  {
36
- content: $(e.selectedData, c, l == null ? void 0 : l.content),
37
- x: r.x(e.selectedData.x),
38
- y: r.y(e.selectedData.y),
38
+ content: E(x, r.selectedData, a == null ? void 0 : a.content),
39
+ x: f.x(r.selectedData.x),
40
+ y: f.y(r.selectedData.y),
39
41
  active: !0,
40
- sideDistances: g,
41
- fixed: e.fixed,
42
- onClose: e.onClose,
42
+ sideDistances: h,
43
+ fixed: r.fixed,
44
+ onClose: r.onClose,
43
45
  container: null
44
46
  }
45
47
  )
46
48
  ] });
47
49
  });
48
- function $(e, l, c = []) {
49
- const o = e.data, t = [`x: ${u(e.x)}`, `y: ${u(e.y)}`];
50
- l.label && t.unshift(`${l.label}: ${o[l.label]}`);
51
- for (const r of c)
52
- t.push(`${r.label}: ${o[r.valueLabels ?? r.value]}`);
53
- return t;
50
+ function E(r, a, m = []) {
51
+ const o = [];
52
+ for (const t of m) {
53
+ const f = t != null && t.format ? C(t.format) : void 0;
54
+ o.push(`${t.label}: ${g(r, a.idx, t, f)}`);
55
+ }
56
+ return o;
54
57
  }
55
58
  export {
56
- T as ChartTooltip
59
+ w as ChartTooltip
57
60
  };
58
61
  //# sourceMappingURL=ChartTooltip.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartTooltip.js","sources":["../../../src/scatterplot/components/ChartTooltip.tsx"],"sourcesContent":["import { memo, useMemo } from 'react';\nimport type { TooltipsData } from '../../common/Tooltip';\nimport { Tooltip } from '../../common/Tooltip';\nimport type { ColumnName } from '../../types';\nimport { numberFormat } from '../../utils/numberFormat';\nimport type { Dot } from '../dots';\nimport type { ScatterplotSettingsImpl } from '../ScatterplotSettingsImpl';\nimport { ChartDot } from './ChartLayersData';\nimport type {\n AesGetters,\n ChartDimensionsData,\n ChartScales,\n ChartSizes,\n Margins\n} from './types';\n\ninterface Props {\n tooltipsData: TooltipsData<Dot>;\n dimensions: undefined | ChartDimensionsData;\n scales: undefined | ChartScales;\n keyColumn: ColumnName;\n margins: Margins;\n chartSizes: ChartSizes;\n tooltips: ScatterplotSettingsImpl['chartSettings']['tooltips'];\n aesGetters: AesGetters;\n}\n\nconst ZERO_SIDE_DISTANCES = { left: 0, right: 0, top: 0, bottom: 0 };\n\nexport const ChartTooltip = memo(({\n tooltipsData,\n tooltips,\n keyColumn,\n chartSizes,\n dimensions,\n scales,\n aesGetters,\n}: Props) => {\n const padding = dimensions?.padding;\n\n const sideDistances = useMemo(() => {\n if (!dimensions || !scales || !padding) {\n return ZERO_SIDE_DISTANCES;\n }\n\n return ({\n left: dimensions.left + padding.left,\n right: chartSizes.totalWidth - (dimensions.left + padding.left),\n top: dimensions.top + padding.top,\n bottom: chartSizes.totalHeight - (dimensions.top + padding.top),\n });\n }, [dimensions, padding, chartSizes]);\n\n if (!dimensions || !scales || !padding || !tooltipsData.selectedData || !tooltips.show) {\n return null;\n }\n\n return (\n <>\n {tooltipsData.fixed && \n <g transform={`translate(${dimensions.left + padding.left}, ${dimensions.top + padding.top})`}>\n <rect width={chartSizes.chartWidth} height={chartSizes.chartHeight} fill=\"rgba(255, 255, 255, 0.8)\"/>\n <ChartDot\n dot={tooltipsData.selectedData}\n scales={scales}\n aesGetters={aesGetters}\n />\n </g>\n }\n <Tooltip\n content={getTooltipContent(tooltipsData.selectedData, keyColumn, tooltips?.content)}\n x={scales.x(tooltipsData.selectedData.x)}\n y={scales.y(tooltipsData.selectedData.y)}\n active\n sideDistances={sideDistances}\n fixed={tooltipsData.fixed}\n onClose={tooltipsData.onClose}\n container={null}\n />\n </>\n );\n});\n\nfunction getTooltipContent(dot: Dot, keyColumn: ColumnName, columnsList: ColumnName[] = []) {\n const row = dot.data;\n const lines = [`x: ${numberFormat(dot.x)}`, `y: ${numberFormat(dot.y)}`];\n if (keyColumn.label) {\n lines.unshift(`${keyColumn.label}: ${row[keyColumn.label]}`);\n }\n for (const column of columnsList) {\n lines.push(`${column.label}: ${row[column.valueLabels ?? column.value]}`);\n }\n return lines;\n}\n"],"names":["ZERO_SIDE_DISTANCES","ChartTooltip","memo","tooltipsData","tooltips","keyColumn","chartSizes","dimensions","scales","aesGetters","padding","sideDistances","useMemo","jsxs","Fragment","jsx","ChartDot","Tooltip","getTooltipContent","dot","columnsList","row","lines","numberFormat","column"],"mappings":";;;;;AA2BA,MAAMA,IAAsB,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,EAAA,GAEpDC,IAAeC,EAAAA,KAAK,CAAC;AAAA,EAC9B,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AACJ,MAAa;AACT,QAAMC,IAAUH,KAAA,gBAAAA,EAAY,SAEtBI,IAAgBC,EAAAA,QAAQ,MACtB,CAACL,KAAc,CAACC,KAAU,CAACE,IACpBV,IAGH;AAAA,IACJ,MAAMO,EAAW,OAAOG,EAAQ;AAAA,IAChC,OAAOJ,EAAW,cAAcC,EAAW,OAAOG,EAAQ;AAAA,IAC1D,KAAKH,EAAW,MAAMG,EAAQ;AAAA,IAC9B,QAAQJ,EAAW,eAAeC,EAAW,MAAMG,EAAQ;AAAA,EAAA,GAEhE,CAACH,GAAYG,GAASJ,CAAU,CAAC;AAEpC,SAAI,CAACC,KAAc,CAACC,KAAU,CAACE,KAAW,CAACP,EAAa,gBAAgB,CAACC,EAAS,OACvE,OAIPS,gBAAAA,EAAAA,KAAAC,YAAA,EACK,UAAA;AAAA,IAAAX,EAAa,SACVU,gBAAAA,EAAAA,KAAC,KAAA,EAAE,WAAW,aAAaN,EAAW,OAAOG,EAAQ,IAAI,KAAKH,EAAW,MAAMG,EAAQ,GAAG,KACtF,UAAA;AAAA,MAAAK,gBAAAA,EAAAA,IAAC,QAAA,EAAK,OAAOT,EAAW,YAAY,QAAQA,EAAW,aAAa,MAAK,2BAAA,CAA0B;AAAA,MACnGS,gBAAAA,EAAAA;AAAAA,QAACC;AAAA,QAAA;AAAA,UACG,KAAKb,EAAa;AAAA,UAClB,QAAAK;AAAA,UACA,YAAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ,GACJ;AAAA,IAEJM,gBAAAA,EAAAA;AAAAA,MAACE;AAAA,MAAA;AAAA,QACG,SAASC,EAAkBf,EAAa,cAAcE,GAAWD,KAAA,gBAAAA,EAAU,OAAO;AAAA,QAClF,GAAGI,EAAO,EAAEL,EAAa,aAAa,CAAC;AAAA,QACvC,GAAGK,EAAO,EAAEL,EAAa,aAAa,CAAC;AAAA,QACvC,QAAM;AAAA,QACN,eAAAQ;AAAA,QACA,OAAOR,EAAa;AAAA,QACpB,SAASA,EAAa;AAAA,QACtB,WAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EACf,GACJ;AAER,CAAC;AAED,SAASe,EAAkBC,GAAUd,GAAuBe,IAA4B,CAAA,GAAI;AACxF,QAAMC,IAAMF,EAAI,MACVG,IAAQ,CAAC,MAAMC,EAAaJ,EAAI,CAAC,CAAC,IAAI,MAAMI,EAAaJ,EAAI,CAAC,CAAC,EAAE;AACvE,EAAId,EAAU,SACViB,EAAM,QAAQ,GAAGjB,EAAU,KAAK,KAAKgB,EAAIhB,EAAU,KAAK,CAAC,EAAE;AAE/D,aAAWmB,KAAUJ;AACjB,IAAAE,EAAM,KAAK,GAAGE,EAAO,KAAK,KAAKH,EAAIG,EAAO,eAAeA,EAAO,KAAK,CAAC,EAAE;AAE5E,SAAOF;AACX;"}
1
+ {"version":3,"file":"ChartTooltip.js","sources":["../../../src/scatterplot/components/ChartTooltip.tsx"],"sourcesContent":["import {format} from 'd3-format';\nimport { memo, useMemo } from 'react';\nimport type { TooltipsData } from '../../common/Tooltip';\nimport { Tooltip } from '../../common/Tooltip';\nimport { useDataFrame } from '../../common/useDataFrame';\nimport type { DataFrame } from '../../DataFrame';\nimport type { ColumnName } from '../../types';\nimport type { Dot } from '../dots';\nimport type { ScatterplotSettingsImpl } from '../ScatterplotSettingsImpl';\nimport {formatColumnValue} from '../utils/formatColumnValue';\nimport { ChartDot } from './ChartLayersData';\nimport type {\n AesGetters,\n ChartDimensionsData,\n ChartScales,\n ChartSizes,\n Margins\n} from './types';\n\ninterface Props {\n tooltipsData: TooltipsData<Dot>;\n dimensions: undefined | ChartDimensionsData;\n scales: undefined | ChartScales;\n keyColumn: ColumnName;\n margins: Margins;\n chartSizes: ChartSizes;\n tooltips: ScatterplotSettingsImpl['chartSettings']['tooltips'];\n aesGetters: AesGetters;\n}\n\nconst ZERO_SIDE_DISTANCES = { left: 0, right: 0, top: 0, bottom: 0 };\n\nexport const ChartTooltip = memo(({\n tooltipsData,\n tooltips,\n keyColumn,\n chartSizes,\n dimensions,\n scales,\n aesGetters,\n}: Props) => {\n const dataFrame = useDataFrame();\n const padding = dimensions?.padding;\n\n const sideDistances = useMemo(() => {\n if (!dimensions || !scales || !padding) {\n return ZERO_SIDE_DISTANCES;\n }\n\n return ({\n left: dimensions.left + padding.left,\n right: chartSizes.totalWidth - (dimensions.left + padding.left),\n top: dimensions.top + padding.top,\n bottom: chartSizes.totalHeight - (dimensions.top + padding.top),\n });\n }, [dimensions, padding, chartSizes]);\n\n if (!dimensions || !scales || !padding || !tooltipsData.selectedData || !tooltips.show) {\n return null;\n }\n\n return (\n <>\n {tooltipsData.fixed && \n <g transform={`translate(${dimensions.left + padding.left}, ${dimensions.top + padding.top})`}>\n <rect width={chartSizes.chartWidth} height={chartSizes.chartHeight} fill=\"rgba(255, 255, 255, 0.8)\"/>\n <ChartDot\n dot={tooltipsData.selectedData}\n scales={scales}\n aesGetters={aesGetters}\n />\n </g>\n }\n <Tooltip\n content={getTooltipContent(dataFrame, tooltipsData.selectedData, tooltips?.content)}\n x={scales.x(tooltipsData.selectedData.x)}\n y={scales.y(tooltipsData.selectedData.y)}\n active\n sideDistances={sideDistances}\n fixed={tooltipsData.fixed}\n onClose={tooltipsData.onClose}\n container={null}\n />\n </>\n );\n});\n\nfunction getTooltipContent(dataFrame: DataFrame, dot: Dot, columnsList: ColumnName[] = []) {\n const lines: string[] = [];\n for (const column of columnsList) {\n const columnFormatter = column?.format ? format(column.format) : undefined;\n lines.push(`${column.label}: ${formatColumnValue(dataFrame, dot.idx, column, columnFormatter)}`);\n }\n return lines;\n}\n"],"names":["ZERO_SIDE_DISTANCES","ChartTooltip","memo","tooltipsData","tooltips","keyColumn","chartSizes","dimensions","scales","aesGetters","dataFrame","useDataFrame","padding","sideDistances","useMemo","jsxs","Fragment","jsx","ChartDot","Tooltip","getTooltipContent","dot","columnsList","lines","column","columnFormatter","format","formatColumnValue"],"mappings":";;;;;;;AA8BA,MAAMA,IAAsB,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,EAAA,GAEpDC,IAAeC,EAAAA,KAAK,CAAC;AAAA,EAC9B,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AACJ,MAAa;AACT,QAAMC,IAAYC,EAAA,GACZC,IAAUL,KAAA,gBAAAA,EAAY,SAEtBM,IAAgBC,EAAAA,QAAQ,MACtB,CAACP,KAAc,CAACC,KAAU,CAACI,IACpBZ,IAGH;AAAA,IACJ,MAAMO,EAAW,OAAOK,EAAQ;AAAA,IAChC,OAAON,EAAW,cAAcC,EAAW,OAAOK,EAAQ;AAAA,IAC1D,KAAKL,EAAW,MAAMK,EAAQ;AAAA,IAC9B,QAAQN,EAAW,eAAeC,EAAW,MAAMK,EAAQ;AAAA,EAAA,GAEhE,CAACL,GAAYK,GAASN,CAAU,CAAC;AAEpC,SAAI,CAACC,KAAc,CAACC,KAAU,CAACI,KAAW,CAACT,EAAa,gBAAgB,CAACC,EAAS,OACvE,OAIPW,gBAAAA,EAAAA,KAAAC,YAAA,EACK,UAAA;AAAA,IAAAb,EAAa,SACVY,gBAAAA,EAAAA,KAAC,KAAA,EAAE,WAAW,aAAaR,EAAW,OAAOK,EAAQ,IAAI,KAAKL,EAAW,MAAMK,EAAQ,GAAG,KACtF,UAAA;AAAA,MAAAK,gBAAAA,EAAAA,IAAC,QAAA,EAAK,OAAOX,EAAW,YAAY,QAAQA,EAAW,aAAa,MAAK,2BAAA,CAA0B;AAAA,MACnGW,gBAAAA,EAAAA;AAAAA,QAACC;AAAA,QAAA;AAAA,UACG,KAAKf,EAAa;AAAA,UAClB,QAAAK;AAAA,UACA,YAAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ,GACJ;AAAA,IAEJQ,gBAAAA,EAAAA;AAAAA,MAACE;AAAA,MAAA;AAAA,QACG,SAASC,EAAkBV,GAAWP,EAAa,cAAcC,KAAA,gBAAAA,EAAU,OAAO;AAAA,QAClF,GAAGI,EAAO,EAAEL,EAAa,aAAa,CAAC;AAAA,QACvC,GAAGK,EAAO,EAAEL,EAAa,aAAa,CAAC;AAAA,QACvC,QAAM;AAAA,QACN,eAAAU;AAAA,QACA,OAAOV,EAAa;AAAA,QACpB,SAASA,EAAa;AAAA,QACtB,WAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EACf,GACJ;AAER,CAAC;AAED,SAASiB,EAAkBV,GAAsBW,GAAUC,IAA4B,CAAA,GAAI;AACvF,QAAMC,IAAkB,CAAA;AACxB,aAAWC,KAAUF,GAAa;AAC9B,UAAMG,IAAkBD,KAAA,QAAAA,EAAQ,SAASE,EAAOF,EAAO,MAAM,IAAI;AACjE,IAAAD,EAAM,KAAK,GAAGC,EAAO,KAAK,KAAKG,EAAkBjB,GAAWW,EAAI,KAAKG,GAAQC,CAAe,CAAC,EAAE;AAAA,EACnG;AACA,SAAOF;AACX;"}