@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 +1 @@
1
- {"version":3,"file":"HistogramSettingsImpl.d.ts","sourceRoot":"","sources":["../../src/histogram/HistogramSettingsImpl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HistogramSettingsImpl.d.ts","sourceRoot":"","sources":["../../src/histogram/HistogramSettingsImpl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,SAAS,IAAI,cAAc,EAC3B,aAAa,IAAI,cAAc,EAC/B,iBAAiB,EACjB,aAAa,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,sBAAsB,EAA2B,MAAM,UAAU,CAAC;AAMhG,qBAAa,SAAS;IAClB,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,GAAG,EAAE;QACV,SAAS,EAAE,mBAAmB,GAAG,MAAM,GAAG,sBAAsB,CAAC;QACjE,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACnB,CAIC;gBAEU,KAAK,EAAE,cAAc;CAMpC;AAED,qBAAa,aAAa;IACtB,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,GAAG,EAAE;QACV,OAAO,EAAE,MAAM,CAAC;KACnB,CAEC;gBAEU,KAAK,EAAE,cAAc;CAMpC;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC;AAEvC,qBAAa,qBAAsB,YAAW,iBAAiB;IAC3D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;KAC9C,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,UAAU,GAAG,YAAY,CAAC;IAClD,QAAQ,CAAC,iBAAiB,EAAE,UAAU,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE;QACpB,QAAQ,CAAC,IAAI,EAAE;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAC,CAAC;QACzF,QAAQ,CAAC,KAAK,EAAE;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,OAAO,CAAC;YAAC,QAAQ,EAAE,aAAa,CAAA;SAAC,CAAC;QACvE,QAAQ,CAAC,KAAK,EAAE;YAAC,QAAQ,EAAE,OAAO,CAAC;YAAC,SAAS,EAAE,OAAO,CAAC;YAAC,YAAY,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,CAAA;SAAC,CAAC;QACxG,QAAQ,CAAC,KAAK,EAAE;YAAC,QAAQ,EAAE,OAAO,CAAC;YAAC,SAAS,EAAE,OAAO,CAAC;YAAC,YAAY,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;YAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,CAAA;SAAC,CAAC;QACpI,QAAQ,CAAC,KAAK,EAAE;YAAC,IAAI,EAAE,SAAS,CAAA;SAAC,CAAC;QAClC,QAAQ,CAAC,MAAM,EAAE;YAAC,IAAI,EAAE,OAAO,CAAC;YAAC,QAAQ,EAAE,cAAc,CAAA;SAAC,CAAC;KAC9D,CAAC;IACF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;gBAEtB,QAAQ,EAAE,iBAAiB;CA6D1C"}
@@ -1 +1 @@
1
- {"version":3,"file":"HistogramSettingsImpl.js","sources":["../../src/histogram/HistogramSettingsImpl.ts"],"sourcesContent":["import lodash from 'lodash';\nimport { BLACK, DEFAULT_HEIGHT, DEFAULT_HEIGHT_SMALL, DEFAULT_WIDTH, DEFAULT_WIDTH_SMALL } from '../constants';\nimport type {\n ColumnName,\n FrameType,\n HistogramSettings,\n InheritAesHistogram,\n LegendPosition,\n BinsLayer as OuterBinsLayer,\n BinsLineLayer as OuterLineLayer,\n SettingsInterface,\n TitlePosition,\n} from '../types';\nimport { type AesMap, type ContinuousAesHistogram, HistogramSettingsSchema } from '../types';\nimport { exhaustive } from '../utils';\nimport { MIN_MARGIN, PADDINGS } from './constants';\n\nconst DEFAULT_BINS_COUNT = 10;\n\nexport class BinsLayer {\n readonly type = 'bins';\n readonly aes: {\n fillColor: InheritAesHistogram | string | ContinuousAesHistogram;\n lineColor: string,\n opacity: number;\n } = {\n fillColor: 'white',\n lineColor: BLACK,\n opacity: 1,\n };\n\n constructor(layer: OuterBinsLayer) {\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n}\n\nexport class BinsLineLayer {\n readonly type = 'binsLine';\n readonly aes: {\n opacity: number;\n } = {\n opacity: 1,\n };\n\n constructor(layer: OuterLineLayer) {\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n}\n\nexport type HistogramLayer = BinsLayer;\n\nexport class HistogramSettingsImpl implements SettingsInterface {\n readonly id: string;\n readonly type = 'histogram';\n readonly valueColumn: ColumnName;\n readonly binsCount: number;\n readonly facetSettings: {\n sharedX: boolean;\n sharedY: boolean;\n nRows?: number;\n nCols?: number;\n titlePosition: 'left' | 'center' | 'right';\n };\n readonly facetBy: ColumnName[];\n readonly grouping: ColumnName | null;\n readonly groupingStack: 'vertical' | 'horizontal';\n readonly groupingDirection: 'straight' | 'reverse';\n readonly groupingOrder: string[] | null;\n readonly chartSettings: {\n readonly size: {width: number; height: number, innerOffset: number, outerOffset: number};\n readonly title: {name: string; show: boolean; position: TitlePosition};\n readonly yAxis: {showGrid: boolean; showTicks: boolean; hiddenLabels: boolean; scale: 'linear' | 'log'};\n readonly xAxis: {showGrid: boolean; showTicks: boolean; hiddenLabels: boolean; title: string | ColumnName; scale: 'linear' | 'log'};\n readonly frame: {type: FrameType};\n readonly legend: {show: boolean; position: LegendPosition};\n };\n readonly inheritedAes: Record<string, AesMap>;\n readonly layers: HistogramLayer[];\n\n constructor(settings: HistogramSettings) {\n HistogramSettingsSchema.parse(settings);\n this.id = lodash.uniqueId('settings');\n this.facetSettings = {sharedX: true, sharedY: true, titlePosition: 'left', ...settings.facetSettings};\n this.valueColumn = settings.valueColumn;\n this.binsCount = settings.binsCount ?? DEFAULT_BINS_COUNT;\n this.facetBy = settings.facetBy ?? [];\n this.grouping = settings.grouping ?? null;\n this.groupingStack = settings.groupingStack ?? 'vertical';\n this.groupingDirection = settings.groupingDirection ?? 'straight';\n this.groupingOrder = settings.groupingOrder ?? null;\n this.chartSettings = {\n size: {\n width: settings?.size?.width ?? (this.facetBy.length ? DEFAULT_WIDTH_SMALL : DEFAULT_WIDTH),\n height: settings?.size?.height ?? (this.facetBy.length ? DEFAULT_HEIGHT_SMALL : DEFAULT_HEIGHT),\n outerOffset: settings?.size?.outerOffset ?? MIN_MARGIN,\n innerOffset: settings?.size?.innerOffset ?? PADDINGS.TOP\n },\n title: {\n position: 'center',\n show: true,\n ...settings.title,\n name: settings.title?.name ?? 'Chart',\n },\n yAxis: {\n showGrid: true,\n showTicks: true,\n scale: settings.xAxis?.scale ?? 'linear',\n hiddenLabels: false,\n ...settings.yAxis,\n },\n xAxis: {\n title: settings.valueColumn.label ?? settings.valueColumn.value ?? '',\n scale: settings.xAxis?.scale ?? 'linear',\n showGrid: settings.xAxis?.showGrid ?? true,\n showTicks: settings.xAxis?.showTicks ?? true,\n hiddenLabels: settings.xAxis?.hiddenLabels ?? false,\n ...settings.xAxis,\n },\n frame: {type: settings.frame?.type ?? 'full'},\n legend: {\n show: true,\n position: 'right',\n ...settings.legend,\n },\n };\n\n this.inheritedAes = settings.inheritedAes ?? {};\n\n this.layers = settings.layers\n .map(layer => {\n if (layer.type === 'bins') {\n return new BinsLayer(layer);\n }\n if (layer.type === 'binsLine') {\n return new BinsLineLayer(layer);\n }\n exhaustive(layer, 'Unknown layer type');\n })\n .filter(Boolean) as HistogramLayer[];\n }\n}\n"],"names":["DEFAULT_BINS_COUNT","BinsLayer","layer","__publicField","BLACK","BinsLineLayer","HistogramSettingsImpl","settings","HistogramSettingsSchema","lodash","_a","DEFAULT_WIDTH_SMALL","DEFAULT_WIDTH","_b","DEFAULT_HEIGHT_SMALL","DEFAULT_HEIGHT","_c","MIN_MARGIN","_d","PADDINGS","_e","_f","_g","_h","_i","_j","_k","exhaustive"],"mappings":"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"}
1
+ {"version":3,"file":"HistogramSettingsImpl.js","sources":["../../src/histogram/HistogramSettingsImpl.ts"],"sourcesContent":["import lodash from 'lodash';\nimport { BLACK, DEFAULT_HEIGHT, DEFAULT_HEIGHT_SMALL, DEFAULT_WIDTH, DEFAULT_WIDTH_SMALL } from '../constants';\nimport type {\n ColumnName,\n FrameType,\n HistogramSettings,\n InheritAesHistogram,\n LegendPosition,\n BinsLayer as OuterBinsLayer,\n BinsLineLayer as OuterLineLayer,\n SettingsInterface,\n TitlePosition,\n} from '../types';\nimport { type AesRecord, type ContinuousAesHistogram, HistogramSettingsSchema } from '../types';\nimport { exhaustive } from '../utils';\nimport { MIN_MARGIN, PADDINGS } from './constants';\n\nconst DEFAULT_BINS_COUNT = 10;\n\nexport class BinsLayer {\n readonly type = 'bins';\n readonly aes: {\n fillColor: InheritAesHistogram | string | ContinuousAesHistogram;\n lineColor: string,\n opacity: number;\n } = {\n fillColor: 'white',\n lineColor: BLACK,\n opacity: 1,\n };\n\n constructor(layer: OuterBinsLayer) {\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n}\n\nexport class BinsLineLayer {\n readonly type = 'binsLine';\n readonly aes: {\n opacity: number;\n } = {\n opacity: 1,\n };\n\n constructor(layer: OuterLineLayer) {\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n}\n\nexport type HistogramLayer = BinsLayer;\n\nexport class HistogramSettingsImpl implements SettingsInterface {\n readonly id: string;\n readonly type = 'histogram';\n readonly valueColumn: ColumnName;\n readonly binsCount: number;\n readonly facetSettings: {\n sharedX: boolean;\n sharedY: boolean;\n nRows?: number;\n nCols?: number;\n titlePosition: 'left' | 'center' | 'right';\n };\n readonly facetBy: ColumnName[];\n readonly grouping: ColumnName | null;\n readonly groupingStack: 'vertical' | 'horizontal';\n readonly groupingDirection: 'straight' | 'reverse';\n readonly groupingOrder: string[] | null;\n readonly chartSettings: {\n readonly size: {width: number; height: number, innerOffset: number, outerOffset: number};\n readonly title: {name: string; show: boolean; position: TitlePosition};\n readonly yAxis: {showGrid: boolean; showTicks: boolean; hiddenLabels: boolean; scale: 'linear' | 'log'};\n readonly xAxis: {showGrid: boolean; showTicks: boolean; hiddenLabels: boolean; title: string | ColumnName; scale: 'linear' | 'log'};\n readonly frame: {type: FrameType};\n readonly legend: {show: boolean; position: LegendPosition};\n };\n readonly inheritedAes: Record<string, AesRecord>;\n readonly layers: HistogramLayer[];\n\n constructor(settings: HistogramSettings) {\n HistogramSettingsSchema.parse(settings);\n this.id = lodash.uniqueId('settings');\n this.facetSettings = {sharedX: true, sharedY: true, titlePosition: 'left', ...settings.facetSettings};\n this.valueColumn = settings.valueColumn;\n this.binsCount = settings.binsCount ?? DEFAULT_BINS_COUNT;\n this.facetBy = settings.facetBy ?? [];\n this.grouping = settings.grouping ?? null;\n this.groupingStack = settings.groupingStack ?? 'vertical';\n this.groupingDirection = settings.groupingDirection ?? 'straight';\n this.groupingOrder = settings.groupingOrder ?? null;\n this.chartSettings = {\n size: {\n width: settings?.size?.width ?? (this.facetBy.length ? DEFAULT_WIDTH_SMALL : DEFAULT_WIDTH),\n height: settings?.size?.height ?? (this.facetBy.length ? DEFAULT_HEIGHT_SMALL : DEFAULT_HEIGHT),\n outerOffset: settings?.size?.outerOffset ?? MIN_MARGIN,\n innerOffset: settings?.size?.innerOffset ?? PADDINGS.TOP\n },\n title: {\n position: 'center',\n show: true,\n ...settings.title,\n name: settings.title?.name ?? 'Chart',\n },\n yAxis: {\n showGrid: true,\n showTicks: true,\n scale: settings.xAxis?.scale ?? 'linear',\n hiddenLabels: false,\n ...settings.yAxis,\n },\n xAxis: {\n title: settings.valueColumn.label ?? settings.valueColumn.value ?? '',\n scale: settings.xAxis?.scale ?? 'linear',\n showGrid: settings.xAxis?.showGrid ?? true,\n showTicks: settings.xAxis?.showTicks ?? true,\n hiddenLabels: settings.xAxis?.hiddenLabels ?? false,\n ...settings.xAxis,\n },\n frame: {type: settings.frame?.type ?? 'full'},\n legend: {\n show: true,\n position: 'right',\n ...settings.legend,\n },\n };\n\n this.inheritedAes = settings.inheritedAes ?? {};\n\n this.layers = settings.layers\n .map(layer => {\n if (layer.type === 'bins') {\n return new BinsLayer(layer);\n }\n if (layer.type === 'binsLine') {\n return new BinsLineLayer(layer);\n }\n exhaustive(layer, 'Unknown layer type');\n })\n .filter(Boolean) as HistogramLayer[];\n }\n}\n"],"names":["DEFAULT_BINS_COUNT","BinsLayer","layer","__publicField","BLACK","BinsLineLayer","HistogramSettingsImpl","settings","HistogramSettingsSchema","lodash","_a","DEFAULT_WIDTH_SMALL","DEFAULT_WIDTH","_b","DEFAULT_HEIGHT_SMALL","DEFAULT_HEIGHT","_c","MIN_MARGIN","_d","PADDINGS","_e","_f","_g","_h","_i","_j","_k","exhaustive"],"mappings":"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"}
@@ -10,62 +10,62 @@ import { DEFAULT_TICKS_SIZE as k, FACET_TITLE_LINE as T, TITLE_LINE as D } from
10
10
  function ee(e) {
11
11
  return typeof e == "string" ? e : e.value;
12
12
  }
13
- function te(e, l) {
14
- const d = [
13
+ function te(e, i) {
14
+ const c = [
15
15
  `Amount: ${e.count}`,
16
16
  `(from ${W(e.x)}, to ${W(e.x + e.width)})`
17
17
  ];
18
- return e.groupingKey !== "null" && d.push(`${l[e.groupingKey] ?? e.groupingKey}`), d;
18
+ return e.groupingKey !== "null" && c.push(`${i[e.groupingKey] ?? e.groupingKey}`), c;
19
19
  }
20
- function w(e, l, d, o) {
21
- return l === "vertical" ? e : e + d * o;
20
+ function X(e, i, c, o) {
21
+ return i === "vertical" ? e : e + c * o;
22
22
  }
23
- function X(e, l, d, o) {
24
- return l(d === "vertical" ? o === "straight" ? e.y.straight : e.y.reverse : e.count);
23
+ function _(e, i, c, o) {
24
+ return i(c === "vertical" ? o === "straight" ? e.y.straight : e.y.reverse : e.count);
25
25
  }
26
- function he({
26
+ function fe({
27
27
  facetKey: e,
28
- width: l,
29
- height: d,
28
+ width: i,
29
+ height: c,
30
30
  dimensions: o,
31
31
  scales: r,
32
- xAxis: f,
32
+ xAxis: x,
33
33
  yAxis: a,
34
34
  frameType: K,
35
35
  histogramData: j,
36
36
  facetSettings: s,
37
37
  captionsSizes: oe,
38
38
  facetTitle: E,
39
- layers: _,
40
- aesColorGetter: z,
39
+ layers: z,
40
+ aesColorGetter: M,
41
41
  groupingDirection: A,
42
- groupingStack: h,
43
- groupingLabels: M,
44
- chartSizes: x,
42
+ groupingStack: f,
43
+ groupingLabels: Y,
44
+ chartSizes: h,
45
45
  margins: m,
46
- tooltipsContainer: Y,
46
+ tooltipsContainer: w,
47
47
  tooltipsData: n
48
48
  }) {
49
- const [C, G] = P.useState(), { padding: i } = o, H = f.showTicks ? k : 0, N = a.showTicks ? k : 0, O = o.chartEdgeSides.includes("left") || !(s != null && s.sharedY), R = o.chartEdgeSides.includes("bottom") || !(s != null && s.sharedX), U = o.chartEdgeSides.includes("bottom"), L = j.groupingKeys, Z = j.histogramByGroupingKey[L[0]].bins[0], F = r.x(Z.width) - r.x(0), p = h === "vertical" ? F : F / L.length, b = {
50
- left: m.left + o.left + i.left,
51
- right: x.totalWidth - (m.left + o.left + i.left),
52
- top: m.top + o.top + i.top,
53
- bottom: x.totalHeight - (m.top + o.top + i.top)
49
+ const [C, G] = P.useState(), { padding: l } = o, H = x.showTicks ? k : 0, N = a.showTicks ? k : 0, O = o.chartEdgeSides.includes("left") || !(s != null && s.sharedY), R = o.chartEdgeSides.includes("bottom") || !(s != null && s.sharedX), U = o.chartEdgeSides.includes("bottom"), L = j.groupingKeys, Z = j.histogramByGroupingKey[L[0]].bins[0], F = r.x(Z.width) - r.x(0), p = f === "vertical" ? F : F / L.length, b = {
50
+ left: m.left + o.left + l.left,
51
+ right: h.totalWidth - (m.left + o.left + l.left),
52
+ top: m.top + o.top + l.top,
53
+ bottom: h.totalHeight - (m.top + o.top + l.top)
54
54
  }, q = C && n.fixed, g = !1;
55
- return /* @__PURE__ */ t.jsxs("g", { transform: `translate(${o.left + i.left},${o.top + i.top})`, children: [
55
+ return /* @__PURE__ */ t.jsxs("g", { transform: `translate(${o.left + l.left},${o.top + l.top})`, children: [
56
56
  g,
57
57
  E.length && /* @__PURE__ */ t.jsxs("g", { children: [
58
- K === "full" && /* @__PURE__ */ t.jsx("rect", { x: "0", y: -i.top, height: i.top, width: l, fill: "#F7F8FA", stroke: v }),
58
+ K === "full" && /* @__PURE__ */ t.jsx("rect", { x: "0", y: -l.top, height: l.top, width: i, fill: "#F7F8FA", stroke: v }),
59
59
  E.map((u, y) => {
60
- const B = E.length, c = (i.top - T * B) / 2;
60
+ const B = E.length, d = (l.top - T * B) / 2;
61
61
  return /* @__PURE__ */ t.jsx(
62
62
  "text",
63
63
  {
64
64
  fontSize: "14px",
65
65
  fontWeight: "500",
66
66
  fill: v,
67
- x: l / 2,
68
- dy: c + T / 2 - i.top,
67
+ x: i / 2,
68
+ dy: d + T / 2 - l.top,
69
69
  y: y * T,
70
70
  textAnchor: "middle",
71
71
  dominantBaseline: "central",
@@ -76,50 +76,50 @@ function he({
76
76
  })
77
77
  ] }),
78
78
  /* @__PURE__ */ t.jsxs("g", { dominantBaseline: "central", textAnchor: "middle", fontWeight: "500", fontSize: "14px", fill: v, children: [
79
- U && f.title && /* @__PURE__ */ t.jsx("text", { x: l / 2, y: d + i.bottom - D / 2, children: ee(f.title) }),
79
+ U && x.title && /* @__PURE__ */ t.jsx("text", { x: i / 2, y: c + l.bottom - D / 2, children: ee(x.title) }),
80
80
  g
81
81
  ] }),
82
82
  /* @__PURE__ */ t.jsx(
83
83
  V,
84
84
  {
85
- width: l,
86
- height: d,
85
+ width: i,
86
+ height: c,
87
87
  scaleX: r.x,
88
88
  scaleY: r.y,
89
- axisX: f,
89
+ axisX: x,
90
90
  axisY: a,
91
91
  frameType: K
92
92
  }
93
93
  ),
94
- R && /* @__PURE__ */ t.jsxs("g", { transform: `translate(0,${d})`, children: [
95
- /* @__PURE__ */ t.jsx($, { scale: r.x, orient: "bottom", tickSize: H, hiddenLabels: f.hiddenLabels }),
94
+ R && /* @__PURE__ */ t.jsxs("g", { transform: `translate(0,${c})`, children: [
95
+ /* @__PURE__ */ t.jsx($, { scale: r.x, orient: "bottom", tickSize: H, hiddenLabels: x.hiddenLabels }),
96
96
  g
97
97
  ] }),
98
98
  O && /* @__PURE__ */ t.jsxs("g", { children: [
99
99
  /* @__PURE__ */ t.jsx($, { scale: r.y, orient: "left", tickSize: N, hiddenLabels: a.hiddenLabels }),
100
100
  g
101
101
  ] }),
102
- _.map((u) => L.map(
103
- (y, B) => j.histogramByGroupingKey[y].bins.map((c) => {
104
- const J = q && n.selectedData === c, I = /* @__PURE__ */ t.jsx(
102
+ z.map((u) => L.map(
103
+ (y, B) => j.histogramByGroupingKey[y].bins.map((d) => {
104
+ const J = q && n.selectedData === d, I = /* @__PURE__ */ t.jsx(
105
105
  "rect",
106
106
  {
107
- x: w(r.x(c.x), h, B, p),
108
- y: X(c, r.y, h, A),
109
- fill: c.rows[0] ? z(u.aes.fillColor, c.rows[0], c.count) : "",
107
+ x: X(r.x(d.x), f, B, p),
108
+ y: _(d, r.y, f, A),
109
+ fill: d.indexes.length > 0 ? M(u.aes.fillColor, d.indexes[0], d.count) : "",
110
110
  stroke: u.aes.lineColor,
111
111
  width: p,
112
- height: r.y(0) - r.y(c.count),
112
+ height: r.y(0) - r.y(d.count),
113
113
  opacity: u.aes.opacity ?? 1,
114
- onMouseOver: () => n.onMouseEnter(c, e),
114
+ onMouseOver: () => n.onMouseEnter(d, e),
115
115
  onMouseLeave: () => n.onMouseLeave()
116
116
  },
117
- c.x
117
+ d.x
118
118
  );
119
119
  return J ? Q.createPortal(I, C) : I;
120
120
  })
121
121
  )),
122
- n.fixed && /* @__PURE__ */ t.jsx("rect", { width: x.chartWidth, height: x.chartHeight, fill: "rgba(255,255,255,0.8)" }),
122
+ n.fixed && /* @__PURE__ */ t.jsx("rect", { width: h.chartWidth, height: h.chartHeight, fill: "rgba(255,255,255,0.8)" }),
123
123
  /* @__PURE__ */ t.jsx(
124
124
  "g",
125
125
  {
@@ -131,20 +131,20 @@ function he({
131
131
  n.selectedData && n.currentFacet === e && /* @__PURE__ */ t.jsx(
132
132
  S,
133
133
  {
134
- content: te(n.selectedData, M),
135
- x: w(r.x(n.selectedData.x), h, n.selectedData.groupingKeyIdx, p) + p,
136
- y: X(n.selectedData, r.y, h, A) + r.y(0) - r.y(n.selectedData.count / 2),
134
+ content: te(n.selectedData, Y),
135
+ x: X(r.x(n.selectedData.x), f, n.selectedData.groupingKeyIdx, p) + p,
136
+ y: _(n.selectedData, r.y, f, A) + r.y(0) - r.y(n.selectedData.count / 2),
137
137
  offset: 0,
138
138
  active: !0,
139
139
  fixed: n.fixed,
140
140
  sideDistances: b,
141
- container: Y,
141
+ container: w,
142
142
  onClose: n.onClose
143
143
  }
144
144
  )
145
145
  ] });
146
146
  }
147
147
  export {
148
- he as Chart
148
+ fe as Chart
149
149
  };
150
150
  //# sourceMappingURL=Chart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Chart.js","sources":["../../../src/histogram/components/Chart.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { ContinuousAxis } from '../../common/ContinuousAxis';\nimport { ContinuousGrid } from '../../common/ContinuousGrid';\nimport type { TooltipsData } from '../../common/Tooltip';\nimport { Tooltip } from '../../common/Tooltip';\nimport { BLACK } from '../../constants';\nimport type { ColumnName, FrameType } from '../../types';\nimport { numberFormat } from '../../utils/numberFormat';\nimport { DEFAULT_TICKS_SIZE, FACET_TITLE_LINE, TICK_OFFSET, TITLE_LINE } from '../constants';\nimport type { BinData, GroupedHistogramData } from '../getHistogramData';\nimport type { HistogramLayer, HistogramSettingsImpl } from '../HistogramSettingsImpl';\nimport type {\n AesGetter, CaptionsSizes,\n ChartDimensionsData,\n ChartScales,\n ChartSizes,\n Margins\n} from './types';\n\nfunction getAxisTitle(title: string | ColumnName): string {\n if (typeof title === 'string') {\n return title;\n }\n return title.value;\n}\nfunction getTooltipContent(bin: BinData, groupingLabels:Record<string, string>) {\n const lines = [\n `Amount: ${bin.count}`,\n `(from ${numberFormat(bin.x)}, to ${numberFormat(bin.x + bin.width)})`\n ];\n if (bin.groupingKey !== 'null') {\n lines.push(`${groupingLabels[bin.groupingKey] ?? bin.groupingKey}`);\n }\n return lines;\n}\n\nfunction getBinX(xPx:number, groupingStack: HistogramSettingsImpl['groupingStack'], keyIdx:number, width:number) {\n return groupingStack === 'vertical'\n ? xPx\n : xPx + keyIdx * width;\n}\nfunction getBinY(bin:BinData, scaleY:ChartScales['y'], groupingStack: HistogramSettingsImpl['groupingStack'], groupingDirection: HistogramSettingsImpl['groupingDirection']) {\n return groupingStack === 'vertical'\n ? scaleY(groupingDirection === 'straight' ? bin.y.straight : bin.y.reverse)\n : scaleY(bin.count);\n}\ninterface ChartProps {\n facetKey: string;\n width: number;\n height: number;\n dimensions: ChartDimensionsData;\n scales: ChartScales;\n xAxis: HistogramSettingsImpl['chartSettings']['xAxis'];\n yAxis: HistogramSettingsImpl['chartSettings']['yAxis'];\n frameType: FrameType;\n facetSettings: HistogramSettingsImpl['facetSettings'];\n margins: Margins;\n chartSizes: ChartSizes;\n captionsSizes: CaptionsSizes;\n facetTitle: string[];\n histogramData: GroupedHistogramData;\n layers: HistogramLayer[];\n aesColorGetter: AesGetter;\n groupingDirection: HistogramSettingsImpl['groupingDirection'];\n groupingStack: HistogramSettingsImpl['groupingStack'];\n groupingLabels: Record<string, string>;\n tooltipsContainer?: Element;\n tooltipsData: TooltipsData<BinData>;\n}\n\nexport function Chart({\n facetKey,\n width,\n height,\n dimensions,\n scales,\n xAxis,\n yAxis,\n frameType,\n histogramData,\n facetSettings,\n captionsSizes,\n facetTitle,\n layers,\n aesColorGetter,\n groupingDirection,\n groupingStack,\n groupingLabels,\n chartSizes,\n margins,\n tooltipsContainer,\n tooltipsData\n}: ChartProps) {\n const [activeElementContainer, setActiveElementContainer] = useState<SVGGElement>();\n\n const {padding} = dimensions;\n const tickSizeX = xAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const tickSizeY = yAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const needLeftAxis = dimensions.chartEdgeSides.includes('left') || !facetSettings?.sharedY;\n const needBottomAxis = dimensions.chartEdgeSides.includes('bottom') || !facetSettings?.sharedX;\n const needBottomAxisTitle = dimensions.chartEdgeSides.includes('bottom');\n const groupingKeys = histogramData.groupingKeys;\n\n const firstBin = histogramData.histogramByGroupingKey[groupingKeys[0]].bins[0];\n const binWidth = scales.x(firstBin.width) - scales.x(0);\n const partialBinWidth = groupingStack === 'vertical' ? binWidth : binWidth / groupingKeys.length;\n\n const sideDistances = {\n left: margins.left + dimensions.left + padding.left,\n right: chartSizes.totalWidth - (margins.left + dimensions.left + padding.left),\n top: margins.top + dimensions.top + padding.top,\n bottom: chartSizes.totalHeight - (margins.top + dimensions.top + padding.top),\n };\n\n const dimmedBackground = activeElementContainer && tooltipsData.fixed;\n const debug = false;\n return (\n <g transform={`translate(${dimensions.left + padding.left},${dimensions.top + padding.top})`}>\n {debug && (\n <g fill=\"none\" stroke=\"green\" strokeWidth=\"2px\">\n <rect width={width} height={padding.top} x={0} y={-padding.top} />\n <rect width={width} height={padding.bottom} x={0} y={height} />\n <rect width={padding.left} height={height} x={-padding.left} y={0} />\n <rect width={padding.right} height={height} x={width} y={0} />\n </g>\n )}\n {facetTitle.length && (\n <g>\n {frameType === 'full' && (\n <rect x=\"0\" y={-padding.top} height={padding.top} width={width} fill=\"#F7F8FA\" stroke={BLACK} />\n )}\n {facetTitle.map((titleLine, idx) => {\n const linesCount = facetTitle.length;\n const topOffset = (padding.top - FACET_TITLE_LINE * linesCount) / 2;\n return (\n <text\n key={idx}\n fontSize=\"14px\"\n fontWeight=\"500\"\n fill={BLACK}\n x={width / 2}\n dy={topOffset + FACET_TITLE_LINE / 2 - padding.top}\n y={idx * FACET_TITLE_LINE}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n >\n {titleLine}\n </text>\n );\n })}\n </g>\n )}\n <g dominantBaseline=\"central\" textAnchor=\"middle\" fontWeight=\"500\" fontSize=\"14px\" fill={BLACK}>\n {needBottomAxisTitle && xAxis.title && (\n <text x={width / 2} y={height + padding.bottom - TITLE_LINE / 2}>\n {getAxisTitle(xAxis.title)}\n </text>\n )}\n {debug && needBottomAxisTitle && (\n <rect\n x=\"0\"\n y={height + padding.bottom - TITLE_LINE}\n width={width}\n height={TITLE_LINE}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n </g>\n <ContinuousGrid\n width={width}\n height={height}\n scaleX={scales.x}\n scaleY={scales.y}\n axisX={xAxis}\n axisY={yAxis}\n frameType={frameType}\n />\n {needBottomAxis && (\n <g transform={`translate(0,${height})`}>\n <ContinuousAxis scale={scales.x} orient=\"bottom\" tickSize={tickSizeX} hiddenLabels={xAxis.hiddenLabels} />\n {debug && (\n <rect\n x=\"0\"\n y={tickSizeX + TICK_OFFSET}\n width={width}\n height={TITLE_LINE}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n </g>\n )}\n {needLeftAxis && (\n <g>\n <ContinuousAxis scale={scales.y} orient=\"left\" tickSize={tickSizeY} hiddenLabels={yAxis.hiddenLabels} />\n {debug && (\n <rect\n x={-tickSizeY - TICK_OFFSET - captionsSizes.yAxisCaptionsWidth}\n y=\"0\"\n width={captionsSizes.yAxisCaptionsWidth}\n height={height}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n </g>\n )}\n {layers.map(layer => groupingKeys.map((groupingKey, keyIdx) =>\n histogramData.histogramByGroupingKey[groupingKey].bins.map((bin) => {\n const highlighted = dimmedBackground && tooltipsData.selectedData === bin;\n const binElement = (\n <rect\n key={bin.x}\n x={getBinX(scales.x(bin.x), groupingStack, keyIdx, partialBinWidth)}\n y={getBinY(bin, scales.y, groupingStack, groupingDirection)}\n fill={bin.rows[0] ? aesColorGetter(layer.aes.fillColor, bin.rows[0], bin.count) : ''}\n stroke={layer.aes.lineColor}\n width={partialBinWidth}\n height={scales.y(0) - scales.y(bin.count)}\n opacity={layer.aes.opacity ?? 1}\n onMouseOver={() => tooltipsData.onMouseEnter(bin, facetKey)}\n onMouseLeave={() => tooltipsData.onMouseLeave()}\n />\n );\n return highlighted ? createPortal(binElement, activeElementContainer) : binElement;\n })\n ))}\n {tooltipsData.fixed && <rect width={chartSizes.chartWidth} height={chartSizes.chartHeight} fill=\"rgba(255,255,255,0.8)\"/>}\n <g ref={node => {\n if (node && !activeElementContainer) {\n setActiveElementContainer(node);\n }\n }}\n />\n {tooltipsData.selectedData && tooltipsData.currentFacet === facetKey && (\n <Tooltip\n content={getTooltipContent(tooltipsData.selectedData, groupingLabels)}\n x={getBinX(scales.x(tooltipsData.selectedData.x), groupingStack, tooltipsData.selectedData.groupingKeyIdx, partialBinWidth) + partialBinWidth}\n y={getBinY(tooltipsData.selectedData, scales.y, groupingStack, groupingDirection) + scales.y(0) - scales.y(tooltipsData.selectedData.count / 2)}\n offset={0}\n active\n fixed={tooltipsData.fixed}\n sideDistances={sideDistances}\n container={tooltipsContainer}\n onClose={tooltipsData.onClose}\n />\n )}\n </g>\n );\n}\n"],"names":["getAxisTitle","title","getTooltipContent","bin","groupingLabels","lines","numberFormat","getBinX","xPx","groupingStack","keyIdx","width","getBinY","scaleY","groupingDirection","Chart","facetKey","height","dimensions","scales","xAxis","yAxis","frameType","histogramData","facetSettings","captionsSizes","facetTitle","layers","aesColorGetter","chartSizes","margins","tooltipsContainer","tooltipsData","activeElementContainer","setActiveElementContainer","useState","padding","tickSizeX","DEFAULT_TICKS_SIZE","tickSizeY","needLeftAxis","needBottomAxis","needBottomAxisTitle","groupingKeys","firstBin","binWidth","partialBinWidth","sideDistances","dimmedBackground","debug","jsxs","jsx","BLACK","titleLine","idx","linesCount","topOffset","FACET_TITLE_LINE","TITLE_LINE","ContinuousGrid","ContinuousAxis","layer","groupingKey","highlighted","binElement","createPortal","node","Tooltip"],"mappings":";;;;;;;;;AAoBA,SAASA,GAAaC,GAAoC;AACtD,SAAI,OAAOA,KAAU,WACVA,IAEJA,EAAM;AACjB;AACA,SAASC,GAAkBC,GAAcC,GAAuC;AAC5E,QAAMC,IAAS;AAAA,IACX,WAAWF,EAAI,KAAK;AAAA,IACpB,SAASG,EAAaH,EAAI,CAAC,CAAC,QAAQG,EAAaH,EAAI,IAAIA,EAAI,KAAK,CAAC;AAAA,EAAA;AAEvE,SAAIA,EAAI,gBAAgB,UACpBE,EAAM,KAAK,GAAGD,EAAeD,EAAI,WAAW,KAAKA,EAAI,WAAW,EAAE,GAE/DE;AACX;AAEA,SAASE,EAAQC,GAAYC,GAAuDC,GAAeC,GAAc;AAC7G,SAAOF,MAAkB,aACnBD,IACAA,IAAME,IAASC;AACzB;AACA,SAASC,EAAQT,GAAaU,GAAyBJ,GAAuDK,GAA+D;AACzK,SACMD,EADCJ,MAAkB,aACZK,MAAsB,aAAaX,EAAI,EAAE,WAAWA,EAAI,EAAE,UAC1DA,EAAI,KAD6D;AAElF;AAyBO,SAASY,GAAM;AAAA,EAClB,UAAAC;AAAA,EACA,OAAAL;AAAA,EACA,QAAAM;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AAAA,EACA,QAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,mBAAAd;AAAA,EACA,eAAAL;AAAA,EACA,gBAAAL;AAAA,EACA,YAAAyB;AAAA,EACA,SAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,cAAAC;AACJ,GAAe;AACX,QAAM,CAACC,GAAwBC,CAAyB,IAAIC,WAAA,GAEtD,EAAC,SAAAC,MAAWlB,GACZmB,IAAYjB,EAAM,YAAYkB,IAAqB,GACnDC,IAAYlB,EAAM,YAAYiB,IAAqB,GACnDE,IAAetB,EAAW,eAAe,SAAS,MAAM,KAAK,EAACM,KAAA,QAAAA,EAAe,UAC7EiB,IAAiBvB,EAAW,eAAe,SAAS,QAAQ,KAAK,EAACM,KAAA,QAAAA,EAAe,UACjFkB,IAAsBxB,EAAW,eAAe,SAAS,QAAQ,GACjEyB,IAAepB,EAAc,cAE7BqB,IAAWrB,EAAc,uBAAuBoB,EAAa,CAAC,CAAC,EAAE,KAAK,CAAC,GACvEE,IAAW1B,EAAO,EAAEyB,EAAS,KAAK,IAAIzB,EAAO,EAAE,CAAC,GAChD2B,IAAkBrC,MAAkB,aAAaoC,IAAWA,IAAWF,EAAa,QAEpFI,IAAgB;AAAA,IAClB,MAAMjB,EAAQ,OAAOZ,EAAW,OAAOkB,EAAQ;AAAA,IAC/C,OAAOP,EAAW,cAAcC,EAAQ,OAAOZ,EAAW,OAAOkB,EAAQ;AAAA,IACzE,KAAKN,EAAQ,MAAMZ,EAAW,MAAMkB,EAAQ;AAAA,IAC5C,QAAQP,EAAW,eAAeC,EAAQ,MAAMZ,EAAW,MAAMkB,EAAQ;AAAA,EAAA,GAGvEY,IAAmBf,KAA0BD,EAAa,OAC1DiB,IAAQ;AACd,SACIC,gBAAAA,EAAAA,KAAC,KAAA,EAAE,WAAW,aAAahC,EAAW,OAAOkB,EAAQ,IAAI,IAAIlB,EAAW,MAAMkB,EAAQ,GAAG,KACpF,UAAA;AAAA,IAAAa;AAAA,IAQAvB,EAAW,UACRwB,gBAAAA,EAAAA,KAAC,KAAA,EACI,UAAA;AAAA,MAAA5B,MAAc,UACX6B,gBAAAA,EAAAA,IAAC,QAAA,EAAK,GAAE,KAAI,GAAG,CAACf,EAAQ,KAAK,QAAQA,EAAQ,KAAK,OAAAzB,GAAc,MAAK,WAAU,QAAQyC,GAAO;AAAA,MAEjG1B,EAAW,IAAI,CAAC2B,GAAWC,MAAQ;AAChC,cAAMC,IAAa7B,EAAW,QACxB8B,KAAapB,EAAQ,MAAMqB,IAAmBF,KAAc;AAClE,eACIJ,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YAEG,UAAS;AAAA,YACT,YAAW;AAAA,YACX,MAAMC;AAAA,YACN,GAAGzC,IAAQ;AAAA,YACX,IAAI6C,IAAYC,IAAmB,IAAIrB,EAAQ;AAAA,YAC/C,GAAGkB,IAAMG;AAAA,YACT,YAAW;AAAA,YACX,kBAAiB;AAAA,YAEhB,UAAAJ;AAAA,UAAA;AAAA,UAVIC;AAAA,QAAA;AAAA,MAajB,CAAC;AAAA,IAAA,GACL;AAAA,IAEJJ,gBAAAA,EAAAA,KAAC,KAAA,EAAE,kBAAiB,WAAU,YAAW,UAAS,YAAW,OAAM,UAAS,QAAO,MAAME,GACpF,UAAA;AAAA,MAAAV,KAAuBtB,EAAM,SAC1B+B,gBAAAA,EAAAA,IAAC,QAAA,EAAK,GAAGxC,IAAQ,GAAG,GAAGM,IAASmB,EAAQ,SAASsB,IAAa,GACzD,UAAA1D,GAAaoB,EAAM,KAAK,GAC7B;AAAA,MAEH6B;AAAA,IAQG,GAER;AAAA,IACAE,gBAAAA,EAAAA;AAAAA,MAACQ;AAAA,MAAA;AAAA,QACG,OAAAhD;AAAA,QACA,QAAAM;AAAA,QACA,QAAQE,EAAO;AAAA,QACf,QAAQA,EAAO;AAAA,QACf,OAAOC;AAAA,QACP,OAAOC;AAAA,QACP,WAAAC;AAAA,MAAA;AAAA,IAAA;AAAA,IAEHmB,KACGS,gBAAAA,EAAAA,KAAC,KAAA,EAAE,WAAW,eAAejC,CAAM,KAC/B,UAAA;AAAA,MAAAkC,gBAAAA,EAAAA,IAACS,GAAA,EAAe,OAAOzC,EAAO,GAAG,QAAO,UAAS,UAAUkB,GAAW,cAAcjB,EAAM,aAAA,CAAc;AAAA,MACvG6B;AAAA,IAQG,GAER;AAAA,IAEHT,4BACI,KAAA,EACG,UAAA;AAAA,MAAAW,gBAAAA,EAAAA,IAACS,GAAA,EAAe,OAAOzC,EAAO,GAAG,QAAO,QAAO,UAAUoB,GAAW,cAAclB,EAAM,aAAA,CAAc;AAAA,MACrG4B;AAAA,IAQG,GAER;AAAA,IAEHtB,EAAO,IAAI,CAAAkC,MAASlB,EAAa;AAAA,MAAI,CAACmB,GAAapD,MAChDa,EAAc,uBAAuBuC,CAAW,EAAE,KAAK,IAAI,CAAC3D,MAAQ;AAChE,cAAM4D,IAAcf,KAAoBhB,EAAa,iBAAiB7B,GAChE6D,IACFb,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YAEG,GAAG5C,EAAQY,EAAO,EAAEhB,EAAI,CAAC,GAAGM,GAAeC,GAAQoC,CAAe;AAAA,YAClE,GAAGlC,EAAQT,GAAKgB,EAAO,GAAGV,GAAeK,CAAiB;AAAA,YAC1D,MAAMX,EAAI,KAAK,CAAC,IAAIyB,EAAeiC,EAAM,IAAI,WAAW1D,EAAI,KAAK,CAAC,GAAGA,EAAI,KAAK,IAAI;AAAA,YAClF,QAAQ0D,EAAM,IAAI;AAAA,YAClB,OAAOf;AAAA,YACP,QAAQ3B,EAAO,EAAE,CAAC,IAAIA,EAAO,EAAEhB,EAAI,KAAK;AAAA,YACxC,SAAS0D,EAAM,IAAI,WAAW;AAAA,YAC9B,aAAa,MAAM7B,EAAa,aAAa7B,GAAKa,CAAQ;AAAA,YAC1D,cAAc,MAAMgB,EAAa,aAAA;AAAA,UAAa;AAAA,UATzC7B,EAAI;AAAA,QAAA;AAYjB,eAAO4D,IAAcE,EAAAA,aAAaD,GAAY/B,CAAsB,IAAI+B;AAAA,MAC5E,CAAC;AAAA,IAAA,CACJ;AAAA,IACAhC,EAAa,SAASmB,gBAAAA,EAAAA,IAAC,QAAA,EAAK,OAAOtB,EAAW,YAAY,QAAQA,EAAW,aAAa,MAAK,wBAAA,CAAuB;AAAA,IACvHsB,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QAAE,KAAK,CAAAe,MAAQ;AACZ,UAAIA,KAAQ,CAACjC,KACTC,EAA0BgC,CAAI;AAAA,QAEtC;AAAA,MAAA;AAAA,IAAA;AAAA,IAEClC,EAAa,gBAAgBA,EAAa,iBAAiBhB,KACxDmC,gBAAAA,EAAAA;AAAAA,MAACgB;AAAA,MAAA;AAAA,QACG,SAASjE,GAAkB8B,EAAa,cAAc5B,CAAc;AAAA,QACpE,GAAGG,EAAQY,EAAO,EAAEa,EAAa,aAAa,CAAC,GAAGvB,GAAeuB,EAAa,aAAa,gBAAgBc,CAAe,IAAIA;AAAA,QAC9H,GAAGlC,EAAQoB,EAAa,cAAcb,EAAO,GAAGV,GAAeK,CAAiB,IAAIK,EAAO,EAAE,CAAC,IAAIA,EAAO,EAAEa,EAAa,aAAa,QAAQ,CAAC;AAAA,QAC9I,QAAQ;AAAA,QACR,QAAM;AAAA,QACN,OAAOA,EAAa;AAAA,QACpB,eAAAe;AAAA,QACA,WAAWhB;AAAA,QACX,SAASC,EAAa;AAAA,MAAA;AAAA,IAAA;AAAA,EAC1B,GAER;AAER;"}
1
+ {"version":3,"file":"Chart.js","sources":["../../../src/histogram/components/Chart.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { ContinuousAxis } from '../../common/ContinuousAxis';\nimport { ContinuousGrid } from '../../common/ContinuousGrid';\nimport type { TooltipsData } from '../../common/Tooltip';\nimport { Tooltip } from '../../common/Tooltip';\nimport { BLACK } from '../../constants';\nimport type { ColumnName, FrameType } from '../../types';\nimport { numberFormat } from '../../utils/numberFormat';\nimport { DEFAULT_TICKS_SIZE, FACET_TITLE_LINE, TICK_OFFSET, TITLE_LINE } from '../constants';\nimport type { BinData, GroupedHistogramData } from '../getHistogramData';\nimport type { HistogramLayer, HistogramSettingsImpl } from '../HistogramSettingsImpl';\nimport type {\n AesGetter, CaptionsSizes,\n ChartDimensionsData,\n ChartScales,\n ChartSizes,\n Margins\n} from './types';\n\nfunction getAxisTitle(title: string | ColumnName): string {\n if (typeof title === 'string') {\n return title;\n }\n return title.value;\n}\nfunction getTooltipContent(bin: BinData, groupingLabels:Record<string, string>) {\n const lines = [\n `Amount: ${bin.count}`,\n `(from ${numberFormat(bin.x)}, to ${numberFormat(bin.x + bin.width)})`\n ];\n if (bin.groupingKey !== 'null') {\n lines.push(`${groupingLabels[bin.groupingKey] ?? bin.groupingKey}`);\n }\n return lines;\n}\n\nfunction getBinX(xPx:number, groupingStack: HistogramSettingsImpl['groupingStack'], keyIdx:number, width:number) {\n return groupingStack === 'vertical'\n ? xPx\n : xPx + keyIdx * width;\n}\nfunction getBinY(bin:BinData, scaleY:ChartScales['y'], groupingStack: HistogramSettingsImpl['groupingStack'], groupingDirection: HistogramSettingsImpl['groupingDirection']) {\n return groupingStack === 'vertical'\n ? scaleY(groupingDirection === 'straight' ? bin.y.straight : bin.y.reverse)\n : scaleY(bin.count);\n}\ninterface ChartProps {\n facetKey: string;\n width: number;\n height: number;\n dimensions: ChartDimensionsData;\n scales: ChartScales;\n xAxis: HistogramSettingsImpl['chartSettings']['xAxis'];\n yAxis: HistogramSettingsImpl['chartSettings']['yAxis'];\n frameType: FrameType;\n facetSettings: HistogramSettingsImpl['facetSettings'];\n margins: Margins;\n chartSizes: ChartSizes;\n captionsSizes: CaptionsSizes;\n facetTitle: string[];\n histogramData: GroupedHistogramData;\n layers: HistogramLayer[];\n aesColorGetter: AesGetter;\n groupingDirection: HistogramSettingsImpl['groupingDirection'];\n groupingStack: HistogramSettingsImpl['groupingStack'];\n groupingLabels: Record<string, string>;\n tooltipsContainer?: Element;\n tooltipsData: TooltipsData<BinData>;\n}\n\nexport function Chart({\n facetKey,\n width,\n height,\n dimensions,\n scales,\n xAxis,\n yAxis,\n frameType,\n histogramData,\n facetSettings,\n captionsSizes,\n facetTitle,\n layers,\n aesColorGetter,\n groupingDirection,\n groupingStack,\n groupingLabels,\n chartSizes,\n margins,\n tooltipsContainer,\n tooltipsData\n}: ChartProps) {\n const [activeElementContainer, setActiveElementContainer] = useState<SVGGElement>();\n\n const {padding} = dimensions;\n const tickSizeX = xAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const tickSizeY = yAxis.showTicks ? DEFAULT_TICKS_SIZE : 0;\n const needLeftAxis = dimensions.chartEdgeSides.includes('left') || !facetSettings?.sharedY;\n const needBottomAxis = dimensions.chartEdgeSides.includes('bottom') || !facetSettings?.sharedX;\n const needBottomAxisTitle = dimensions.chartEdgeSides.includes('bottom');\n const groupingKeys = histogramData.groupingKeys;\n\n const firstBin = histogramData.histogramByGroupingKey[groupingKeys[0]].bins[0];\n const binWidth = scales.x(firstBin.width) - scales.x(0);\n const partialBinWidth = groupingStack === 'vertical' ? binWidth : binWidth / groupingKeys.length;\n\n const sideDistances = {\n left: margins.left + dimensions.left + padding.left,\n right: chartSizes.totalWidth - (margins.left + dimensions.left + padding.left),\n top: margins.top + dimensions.top + padding.top,\n bottom: chartSizes.totalHeight - (margins.top + dimensions.top + padding.top),\n };\n\n const dimmedBackground = activeElementContainer && tooltipsData.fixed;\n const debug = false;\n return (\n <g transform={`translate(${dimensions.left + padding.left},${dimensions.top + padding.top})`}>\n {debug && (\n <g fill=\"none\" stroke=\"green\" strokeWidth=\"2px\">\n <rect width={width} height={padding.top} x={0} y={-padding.top} />\n <rect width={width} height={padding.bottom} x={0} y={height} />\n <rect width={padding.left} height={height} x={-padding.left} y={0} />\n <rect width={padding.right} height={height} x={width} y={0} />\n </g>\n )}\n {facetTitle.length && (\n <g>\n {frameType === 'full' && (\n <rect x=\"0\" y={-padding.top} height={padding.top} width={width} fill=\"#F7F8FA\" stroke={BLACK} />\n )}\n {facetTitle.map((titleLine, idx) => {\n const linesCount = facetTitle.length;\n const topOffset = (padding.top - FACET_TITLE_LINE * linesCount) / 2;\n return (\n <text\n key={idx}\n fontSize=\"14px\"\n fontWeight=\"500\"\n fill={BLACK}\n x={width / 2}\n dy={topOffset + FACET_TITLE_LINE / 2 - padding.top}\n y={idx * FACET_TITLE_LINE}\n textAnchor=\"middle\"\n dominantBaseline=\"central\"\n >\n {titleLine}\n </text>\n );\n })}\n </g>\n )}\n <g dominantBaseline=\"central\" textAnchor=\"middle\" fontWeight=\"500\" fontSize=\"14px\" fill={BLACK}>\n {needBottomAxisTitle && xAxis.title && (\n <text x={width / 2} y={height + padding.bottom - TITLE_LINE / 2}>\n {getAxisTitle(xAxis.title)}\n </text>\n )}\n {debug && needBottomAxisTitle && (\n <rect\n x=\"0\"\n y={height + padding.bottom - TITLE_LINE}\n width={width}\n height={TITLE_LINE}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n </g>\n <ContinuousGrid\n width={width}\n height={height}\n scaleX={scales.x}\n scaleY={scales.y}\n axisX={xAxis}\n axisY={yAxis}\n frameType={frameType}\n />\n {needBottomAxis && (\n <g transform={`translate(0,${height})`}>\n <ContinuousAxis scale={scales.x} orient=\"bottom\" tickSize={tickSizeX} hiddenLabels={xAxis.hiddenLabels} />\n {debug && (\n <rect\n x=\"0\"\n y={tickSizeX + TICK_OFFSET}\n width={width}\n height={TITLE_LINE}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n </g>\n )}\n {needLeftAxis && (\n <g>\n <ContinuousAxis scale={scales.y} orient=\"left\" tickSize={tickSizeY} hiddenLabels={yAxis.hiddenLabels} />\n {debug && (\n <rect\n x={-tickSizeY - TICK_OFFSET - captionsSizes.yAxisCaptionsWidth}\n y=\"0\"\n width={captionsSizes.yAxisCaptionsWidth}\n height={height}\n fill=\"none\"\n stroke=\"black\"\n />\n )}\n </g>\n )}\n {layers.map(layer => groupingKeys.map((groupingKey, keyIdx) =>\n histogramData.histogramByGroupingKey[groupingKey].bins.map((bin) => {\n const highlighted = dimmedBackground && tooltipsData.selectedData === bin;\n const binElement = (\n <rect\n key={bin.x}\n x={getBinX(scales.x(bin.x), groupingStack, keyIdx, partialBinWidth)}\n y={getBinY(bin, scales.y, groupingStack, groupingDirection)}\n fill={bin.indexes.length > 0 ? aesColorGetter(layer.aes.fillColor, bin.indexes[0], bin.count) : ''}\n stroke={layer.aes.lineColor}\n width={partialBinWidth}\n height={scales.y(0) - scales.y(bin.count)}\n opacity={layer.aes.opacity ?? 1}\n onMouseOver={() => tooltipsData.onMouseEnter(bin, facetKey)}\n onMouseLeave={() => tooltipsData.onMouseLeave()}\n />\n );\n return highlighted ? createPortal(binElement, activeElementContainer) : binElement;\n })\n ))}\n {tooltipsData.fixed && <rect width={chartSizes.chartWidth} height={chartSizes.chartHeight} fill=\"rgba(255,255,255,0.8)\"/>}\n <g ref={node => {\n if (node && !activeElementContainer) {\n setActiveElementContainer(node);\n }\n }}\n />\n {tooltipsData.selectedData && tooltipsData.currentFacet === facetKey && (\n <Tooltip\n content={getTooltipContent(tooltipsData.selectedData, groupingLabels)}\n x={getBinX(scales.x(tooltipsData.selectedData.x), groupingStack, tooltipsData.selectedData.groupingKeyIdx, partialBinWidth) + partialBinWidth}\n y={getBinY(tooltipsData.selectedData, scales.y, groupingStack, groupingDirection) + scales.y(0) - scales.y(tooltipsData.selectedData.count / 2)}\n offset={0}\n active\n fixed={tooltipsData.fixed}\n sideDistances={sideDistances}\n container={tooltipsContainer}\n onClose={tooltipsData.onClose}\n />\n )}\n </g>\n );\n}\n"],"names":["getAxisTitle","title","getTooltipContent","bin","groupingLabels","lines","numberFormat","getBinX","xPx","groupingStack","keyIdx","width","getBinY","scaleY","groupingDirection","Chart","facetKey","height","dimensions","scales","xAxis","yAxis","frameType","histogramData","facetSettings","captionsSizes","facetTitle","layers","aesColorGetter","chartSizes","margins","tooltipsContainer","tooltipsData","activeElementContainer","setActiveElementContainer","useState","padding","tickSizeX","DEFAULT_TICKS_SIZE","tickSizeY","needLeftAxis","needBottomAxis","needBottomAxisTitle","groupingKeys","firstBin","binWidth","partialBinWidth","sideDistances","dimmedBackground","debug","jsxs","jsx","BLACK","titleLine","idx","linesCount","topOffset","FACET_TITLE_LINE","TITLE_LINE","ContinuousGrid","ContinuousAxis","layer","groupingKey","highlighted","binElement","createPortal","node","Tooltip"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import { AesMap, ContinuousAesHistogram, InheritAesHistogram, Row } from '../../types';
2
1
  import { ScaleLinear, ScaleLogarithmic, ScaleSymLog } from 'd3-scale';
2
+ import { RowIndex } from '../../DataFrame';
3
+ import { AesRecord, ContinuousAesHistogram, InheritAesHistogram } from '../../types';
3
4
  export interface Margins {
4
5
  top: number;
5
6
  bottom: number;
@@ -45,10 +46,10 @@ export interface CaptionsSizes {
45
46
  xAxisCaptionsWidth: number;
46
47
  yAxisCaptionsWidth: number;
47
48
  }
48
- export type AesGetter = (aesItem: string | InheritAesHistogram | ContinuousAesHistogram, row: Row, height: number) => string;
49
+ export type AesGetter = (aesItem: string | InheritAesHistogram | ContinuousAesHistogram, idx: RowIndex, height: number) => string;
49
50
  export type HistogramLegendInfo = Record<string, {
50
51
  values: string[];
51
- aesMap: AesMap;
52
+ aesMap: AesRecord;
52
53
  labels: Record<string, string>;
53
54
  }>;
54
55
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/histogram/components/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,EAAC,sBAAsB,EAAE,mBAAmB,EAAE,GAAG,EAAC,MAAM,aAAa,CAAC;AAClF,OAAO,KAAK,EAAC,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAC,MAAM,UAAU,CAAC;AAEzE,MAAM,WAAW,OAAO;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IACxB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChG,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnG;AAED,MAAM,WAAW,YAAY;IAEzB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE;QACH,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACH,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,cAAc,EAAE,CAAC,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;CAC3D;AAED,MAAM,WAAW,aAAa;IAC1B,kBAAkB,EAAC,MAAM,CAAC;IAC1B,kBAAkB,EAAC,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,GAAG,sBAAsB,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;AAE7H,MAAM,MAAM,mBAAmB,GAAG,MAAM,CACpC,MAAM,EACN;IACI,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CACJ,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/histogram/components/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC3E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE1F,MAAM,WAAW,OAAO;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IACxB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChG,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnG;AAED,MAAM,WAAW,YAAY;IAEzB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE;QACH,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACH,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,cAAc,EAAE,CAAC,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;CAC3D;AAED,MAAM,WAAW,aAAa;IAC1B,kBAAkB,EAAC,MAAM,CAAC;IAC1B,kBAAkB,EAAC,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,GAAG,sBAAsB,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;AAElI,MAAM,MAAM,mBAAmB,GAAG,MAAM,CACpC,MAAM,EACN;IACI,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CACJ,CAAC"}
@@ -1,13 +1,13 @@
1
- import { DataFrame } from '../DataFrame';
2
- import { ColumnName, Row } from '../types';
1
+ import { DataFrame, RowIndex } from '../DataFrame';
2
+ import { ColumnName } from '../types';
3
3
  export type BinData = {
4
- count: number;
4
+ indexes: RowIndex[];
5
+ x: number;
5
6
  y: {
6
7
  straight: number;
7
8
  reverse: number;
8
9
  };
9
- rows: Row[];
10
- x: number;
10
+ count: number;
11
11
  groupingKey: string;
12
12
  groupingKeyIdx: number;
13
13
  width: number;
@@ -24,7 +24,7 @@ export type GroupedHistogramData = {
24
24
  maxCount: number;
25
25
  maxCountFromGroups: number;
26
26
  };
27
- export declare function createHistogramDataLinear(rows: Row[], column: ColumnName, binsCount: number, domain: [number, number], key: string, keyIdx: number): HistogramData;
28
- export declare function createHistogramDataLog(rows: Row[], column: ColumnName, binsCount: number, domain: [number, number], key: string, keyIdx: number): HistogramData;
27
+ export declare function createHistogramDataLinear(dataFrame: DataFrame, indexes: RowIndex[], column: ColumnName, binsCount: number, domain: [number, number], key: string, keyIdx: number): HistogramData;
28
+ export declare function createHistogramDataLog(dataFrame: DataFrame, indexes: RowIndex[], column: ColumnName, binsCount: number, domain: [number, number], key: string, keyIdx: number): HistogramData;
29
29
  export declare function createHistogramDataByFacets(data: DataFrame, facetKeysCombinations: string[][], groupingKeys: string[], valueColumn: ColumnName, binsCount: number, scale: 'linear' | 'log'): Record<string, GroupedHistogramData>;
30
30
  //# sourceMappingURL=getHistogramData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getHistogramData.d.ts","sourceRoot":"","sources":["../../src/histogram/getHistogramData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,UAAU,EAAE,GAAG,EAAC,MAAM,UAAU,CAAC;AAK9C,MAAM,MAAM,OAAO,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE;QACC,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAA;KAClB,CAAC;IACF,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,CAAC,EAAE,MAAM,CAAC;IACV,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAA;CAChB,CAAA;AACD,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;CAC9B,CAAA;AAiCD,wBAAgB,yBAAyB,CAAC,IAAI,EAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAC,MAAM,EAAE,MAAM,EAAC,MAAM,GAAE,aAAa,CAU5J;AACD,wBAAgB,sBAAsB,CAAC,IAAI,EAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAC,MAAM,EAAE,MAAM,EAAC,MAAM,GAAE,aAAa,CAazJ;AAED,wBAAgB,2BAA2B,CACvC,IAAI,EAAC,SAAS,EACd,qBAAqB,EAAC,MAAM,EAAE,EAAE,EAChC,YAAY,EAAE,MAAM,EAAE,EACtB,WAAW,EAAC,UAAU,EACtB,SAAS,EAAC,MAAM,EAChB,KAAK,EAAE,QAAQ,GAAG,KAAK,wCAkD1B"}
1
+ {"version":3,"file":"getHistogramData.d.ts","sourceRoot":"","sources":["../../src/histogram/getHistogramData.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,MAAM,OAAO,GAAG;IAClB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE;QACC,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAA;KAClB,CAAC;IACF,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAA;CAChB,CAAA;AACD,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;CAC9B,CAAA;AAiCD,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAC,MAAM,EAAE,MAAM,EAAC,MAAM,GAAE,aAAa,CAU3L;AACD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAC,MAAM,EAAE,MAAM,EAAC,MAAM,GAAE,aAAa,CAaxL;AAED,wBAAgB,2BAA2B,CACvC,IAAI,EAAC,SAAS,EACd,qBAAqB,EAAC,MAAM,EAAE,EAAE,EAChC,YAAY,EAAE,MAAM,EAAE,EACtB,WAAW,EAAC,UAAU,EACtB,SAAS,EAAC,MAAM,EAChB,KAAK,EAAE,QAAQ,GAAG,KAAK,wCAkD1B"}
@@ -1,83 +1,82 @@
1
- import X from "../node_modules/d3-array/src/extent.js";
2
- import C from "../node_modules/d3-array/src/bin.js";
3
- import D from "../node_modules/d3-array/src/max.js";
4
- import k from "../node_modules/d3-scale/src/symlog.js";
5
- const E = (s, e) => {
6
- const r = Math.min(...e), t = Math.max(...e);
7
- if (r === t)
8
- return [r];
9
- if (s < 2)
10
- return [(r + t) / 2];
11
- const i = (t - r) / s, c = [];
12
- for (let n = 1; n < s; n++)
13
- c.push(r + i * n);
14
- return c;
1
+ import E from "../node_modules/d3-array/src/extent.js";
2
+ import V from "../node_modules/d3-array/src/bin.js";
3
+ import w from "../node_modules/d3-array/src/max.js";
4
+ import I from "../node_modules/d3-scale/src/symlog.js";
5
+ const F = (o, a) => {
6
+ const e = Math.min(...a), t = Math.max(...a);
7
+ if (e === t)
8
+ return [e];
9
+ if (o < 2)
10
+ return [(e + t) / 2];
11
+ const s = (t - e) / o, m = [];
12
+ for (let n = 1; n < o; n++)
13
+ m.push(e + s * n);
14
+ return m;
15
15
  };
16
- function L(s, e, r) {
17
- return s.map((t) => ({
18
- count: t.length,
16
+ function K(o, a, e) {
17
+ return o.map((t) => ({
18
+ indexes: t,
19
+ x: t.x0 ?? 0,
19
20
  y: {
20
21
  straight: t.length,
21
22
  reverse: t.length
22
23
  },
23
- rows: t,
24
- x: t.x0 ?? 0,
25
- groupingKey: e,
26
- groupingKeyIdx: r,
24
+ count: t.length,
25
+ groupingKey: a,
26
+ groupingKeyIdx: e,
27
27
  width: (t.x1 ?? 0) - (t.x0 ?? 0)
28
28
  }));
29
29
  }
30
- function I(s, e, r, t, i, c) {
31
- const n = E(r, t), m = C().domain(t).thresholds(n).value((o) => o[e.value])(s);
30
+ function L(o, a, e, t, s, m, n) {
31
+ const l = F(t, s), r = V().domain(s).thresholds(l).value((i) => o.getColumnValue(e.value, i))(a);
32
32
  return {
33
- bins: L(m, i, c),
34
- maxCount: D(m, (o) => o.length) ?? 0
33
+ bins: K(r, m, n),
34
+ maxCount: w(r, (i) => i.length) ?? 0
35
35
  };
36
36
  }
37
- function R(s, e, r, t, i, c) {
38
- const n = E(r, t), m = k().domain(t).range(t), o = n.map((a) => m.invert(a)), g = C().domain(t).thresholds(o).value((a) => a[e.value])(s);
37
+ function M(o, a, e, t, s, m, n) {
38
+ const l = F(t, s), r = I().domain(s).range(s), i = l.map((c) => r.invert(c)), x = V().domain(s).thresholds(i).value((c) => o.getColumnValue(e.value, c))(a);
39
39
  return {
40
- bins: L(g, i, c),
41
- maxCount: D(g, (a) => a.length) ?? 0
40
+ bins: K(x, m, n),
41
+ maxCount: w(x, (c) => c.length) ?? 0
42
42
  };
43
43
  }
44
- function S(s, e, r, t, i, c) {
44
+ function A(o, a, e, t, s, m) {
45
45
  const n = {};
46
- return e.forEach((m) => {
47
- var F, K;
48
- const o = m.join("_");
49
- n[o] = {
50
- groupingKeys: r,
46
+ return a.forEach((l) => {
47
+ const r = l.join("_");
48
+ n[r] = {
49
+ groupingKeys: e,
51
50
  histogramByGroupingKey: {},
52
51
  minX: 1 / 0,
53
52
  maxX: -1 / 0,
54
53
  maxCount: 0,
55
54
  maxCountFromGroups: 0
56
55
  };
57
- const g = s.getRowsByGrouping([...m]);
58
- let [a, v] = X(g, (u) => u[t.value]);
59
- a = a ?? ((F = g[0]) == null ? void 0 : F[t.value]) ?? 0, v = v ?? ((K = g[0]) == null ? void 0 : K[t.value]) ?? 0;
60
- const G = [a, v], B = [...r].reverse();
61
- B.forEach((u, h) => {
62
- const x = s.getRowsByGrouping([...m, u]), f = c === "linear" ? I(x, t, i, G, u, h) : R(x, t, i, G, u, h);
63
- n[o].histogramByGroupingKey[u] = f, n[o].minX = G[0], n[o].maxX = G[1], n[o].maxCountFromGroups = Math.max(n[o].maxCountFromGroups, f.maxCount);
64
- const l = h > 0 ? B[h - 1] : null, y = l !== null ? n[o].histogramByGroupingKey[l] : null;
65
- f.bins.forEach((p, M) => {
66
- p.y.straight = ((y == null ? void 0 : y.bins[M].y.straight) ?? 0) + p.count, n[o].maxCount = Math.max(n[o].maxCount, p.y.straight);
56
+ const i = o.getRowsByGrouping([...l]);
57
+ let [x, c] = E(i, (u) => o.getColumnValue(t.value, u));
58
+ x ?? (x = o.getColumnValue(t.value, i[0]) ?? 0), c ?? (c = o.getColumnValue(t.value, i[0]) ?? 0);
59
+ const v = [x, c], B = [...e].reverse();
60
+ B.forEach((u, g) => {
61
+ const f = Array.from(o.getRowsByGrouping([...l, u])), p = m === "linear" ? L(o, f, t, s, v, u, g) : M(o, f, t, s, v, u, g);
62
+ n[r].histogramByGroupingKey[u] = p, n[r].minX = v[0], n[r].maxX = v[1], n[r].maxCountFromGroups = Math.max(n[r].maxCountFromGroups, p.maxCount);
63
+ const h = g > 0 ? B[g - 1] : null, y = h !== null ? n[r].histogramByGroupingKey[h] : null;
64
+ p.bins.forEach((G, D) => {
65
+ G.y.straight = ((y == null ? void 0 : y.bins[D].y.straight) ?? 0) + G.count, n[r].maxCount = Math.max(n[r].maxCount, G.y.straight);
67
66
  });
68
67
  });
69
- const w = r;
70
- w.forEach((u, h) => {
71
- const x = h > 0 ? w[h - 1] : null, f = n[o].histogramByGroupingKey[u], l = x !== null ? n[o].histogramByGroupingKey[x] : null;
72
- f.bins.forEach((y, p) => {
73
- y.y.reverse = ((l == null ? void 0 : l.bins[p].y.reverse) ?? 0) + y.count;
68
+ const C = e;
69
+ C.forEach((u, g) => {
70
+ const f = g > 0 ? C[g - 1] : null, p = n[r].histogramByGroupingKey[u], h = f !== null ? n[r].histogramByGroupingKey[f] : null;
71
+ p.bins.forEach((y, G) => {
72
+ y.y.reverse = ((h == null ? void 0 : h.bins[G].y.reverse) ?? 0) + y.count;
74
73
  });
75
74
  });
76
75
  }), n;
77
76
  }
78
77
  export {
79
- S as createHistogramDataByFacets,
80
- I as createHistogramDataLinear,
81
- R as createHistogramDataLog
78
+ A as createHistogramDataByFacets,
79
+ L as createHistogramDataLinear,
80
+ M as createHistogramDataLog
82
81
  };
83
82
  //# sourceMappingURL=getHistogramData.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getHistogramData.js","sources":["../../src/histogram/getHistogramData.ts"],"sourcesContent":["import type {DataFrame} from '../DataFrame';\nimport type {ColumnName, Row} from '../types';\nimport type {Bin} from 'd3-array';\nimport {bin, extent, max} from 'd3-array';\nimport {scaleSymlog} from 'd3-scale';\n\nexport type BinData = {\n count: number,\n y: {\n straight: number,\n reverse: number\n },\n rows: Row[],\n x: number,\n groupingKey: string,\n groupingKeyIdx: number,\n width: number\n}\nexport type HistogramData = {\n bins: BinData[];\n maxCount: number;\n};\n\nexport type GroupedHistogramData = {\n groupingKeys: string[],\n histogramByGroupingKey: Record<string, HistogramData>\n minX: number;\n maxX: number;\n maxCount: number;\n maxCountFromGroups: number;\n}\n\nconst getSteps = (count: number, valueExtent: number[]) => {\n const min = Math.min(...valueExtent);\n const max = Math.max(...valueExtent);\n if (min === max) {\n return [min];\n }\n if (count < 2) {\n return [(min + max) / 2];\n }\n const step = (max - min) / count;\n const steps = [];\n for (let i = 1; i < count; i++) {\n steps.push(min + step * i);\n }\n return steps;\n};\n\nfunction createBinData (bins:Bin<Row, number>[], key:string, keyIdx:number):BinData[] {\n return bins.map((b) => ({\n count: b.length,\n y: {\n straight: b.length,\n reverse: b.length\n },\n rows: b,\n x: b.x0 ?? 0,\n groupingKey: key,\n groupingKeyIdx: keyIdx,\n width: (b.x1 ?? 0) - (b.x0 ?? 0)\n }));\n}\nexport function createHistogramDataLinear(rows:Row[], column: ColumnName, binsCount:number, domain:[number, number], key:string, keyIdx:number):HistogramData {\n const ticks= getSteps(binsCount, domain);\n const bins = bin<Row, number>()\n .domain(domain)\n .thresholds(ticks)\n .value((row:Row) => row[column.value] as number)(rows);\n return {\n bins: createBinData(bins, key, keyIdx),\n maxCount: max(bins, (bin) => bin.length) ?? 0\n };\n}\nexport function createHistogramDataLog(rows:Row[], column: ColumnName, binsCount:number, domain:[number, number], key:string, keyIdx:number):HistogramData {\n const ticks= getSteps(binsCount, domain);\n const convertLog = scaleSymlog().domain(domain).range(domain);\n const ticksLog = ticks.map(t => convertLog.invert(t));\n const bins = bin<Row, number>()\n .domain(domain)\n .thresholds(ticksLog)\n .value((row:Row) => row[column.value] as number)(rows);\n\n return {\n bins: createBinData(bins, key, keyIdx),\n maxCount: max(bins, (bin) => bin.length) ?? 0\n };\n}\n\nexport function createHistogramDataByFacets(\n data:DataFrame,\n facetKeysCombinations:string[][],\n groupingKeys: string[],\n valueColumn:ColumnName,\n binsCount:number,\n scale: 'linear' | 'log'\n) {\n const result:Record<string, GroupedHistogramData> = {};\n facetKeysCombinations.forEach((facetKeys) => {\n const facetKey = facetKeys.join('_');\n result[facetKey] = {\n groupingKeys,\n histogramByGroupingKey: {},\n minX: Infinity,\n maxX: -Infinity,\n maxCount: 0,\n maxCountFromGroups: 0\n };\n const allFacetRows = data.getRowsByGrouping([...facetKeys]);\n let [minV, maxV] = extent(allFacetRows, v => v[valueColumn.value] as number);\n minV = minV ?? allFacetRows[0]?.[valueColumn.value] as number ?? 0;\n maxV = maxV ?? allFacetRows[0]?.[valueColumn.value] as number ?? 0;\n const domain:[number, number] = [minV, maxV];\n const forwardKeys = [...groupingKeys].reverse();\n forwardKeys.forEach((groupingKey, idx) => {\n const rows = data.getRowsByGrouping([...facetKeys, groupingKey]);\n const histogram = scale === 'linear'\n ? createHistogramDataLinear(rows, valueColumn, binsCount, domain, groupingKey, idx)\n : createHistogramDataLog(rows, valueColumn, binsCount, domain, groupingKey, idx);\n result[facetKey].histogramByGroupingKey[groupingKey] = histogram;\n result[facetKey].minX = domain[0];\n result[facetKey].maxX = domain[1];\n result[facetKey].maxCountFromGroups = Math.max(result[facetKey].maxCountFromGroups, histogram.maxCount);\n\n const previousKey = idx > 0 ? forwardKeys[idx - 1] : null;\n const previousHistogram = previousKey !== null ? result[facetKey].histogramByGroupingKey[previousKey] : null;\n\n histogram.bins.forEach((bin, idx) => {\n bin.y.straight = (previousHistogram?.bins[idx].y.straight ?? 0) + bin.count;\n result[facetKey].maxCount = Math.max(result[facetKey].maxCount, bin.y.straight);\n });\n });\n\n const reversedKeys = groupingKeys;\n reversedKeys.forEach((groupingKey, idx) => {\n const previousKey = idx > 0 ? reversedKeys[idx - 1] : null;\n const histogram = result[facetKey].histogramByGroupingKey[groupingKey];\n const previousHistogram = previousKey !== null ? result[facetKey].histogramByGroupingKey[previousKey] : null;\n\n histogram.bins.forEach((bin, idx) => {\n bin.y.reverse = (previousHistogram?.bins[idx].y.reverse ?? 0) + bin.count;\n });\n });\n });\n return result;\n}"],"names":["getSteps","count","valueExtent","min","max","step","steps","i","createBinData","bins","key","keyIdx","b","createHistogramDataLinear","rows","column","binsCount","domain","ticks","bin","row","createHistogramDataLog","convertLog","scaleSymlog","ticksLog","t","createHistogramDataByFacets","data","facetKeysCombinations","groupingKeys","valueColumn","scale","result","facetKeys","facetKey","allFacetRows","minV","maxV","extent","v","_a","_b","forwardKeys","groupingKey","idx","histogram","previousKey","previousHistogram","reversedKeys"],"mappings":"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"}
1
+ {"version":3,"file":"getHistogramData.js","sources":["../../src/histogram/getHistogramData.ts"],"sourcesContent":["import type { Bin } from 'd3-array';\nimport { bin, extent, max } from 'd3-array';\nimport { scaleSymlog } from 'd3-scale';\nimport type { DataFrame, RowIndex } from '../DataFrame';\nimport type { ColumnName } from '../types';\n\nexport type BinData = {\n indexes: RowIndex[];\n x: number,\n y: {\n straight: number,\n reverse: number\n },\n count: number,\n groupingKey: string,\n groupingKeyIdx: number,\n width: number\n}\nexport type HistogramData = {\n bins: BinData[];\n maxCount: number;\n};\n\nexport type GroupedHistogramData = {\n groupingKeys: string[],\n histogramByGroupingKey: Record<string, HistogramData>\n minX: number;\n maxX: number;\n maxCount: number;\n maxCountFromGroups: number;\n}\n\nconst getSteps = (count: number, valueExtent: number[]) => {\n const min = Math.min(...valueExtent);\n const max = Math.max(...valueExtent);\n if (min === max) {\n return [min];\n }\n if (count < 2) {\n return [(min + max) / 2];\n }\n const step = (max - min) / count;\n const steps = [];\n for (let i = 1; i < count; i++) {\n steps.push(min + step * i);\n }\n return steps;\n};\n\nfunction createBinData (bins:Bin<RowIndex, number>[], key:string, keyIdx:number):BinData[] {\n return bins.map((b) => ({\n indexes: b,\n x: b.x0 ?? 0,\n y: {\n straight: b.length,\n reverse: b.length\n },\n count: b.length,\n groupingKey: key,\n groupingKeyIdx: keyIdx,\n width: (b.x1 ?? 0) - (b.x0 ?? 0)\n }));\n}\nexport function createHistogramDataLinear(dataFrame: DataFrame, indexes: RowIndex[], column: ColumnName, binsCount:number, domain:[number, number], key:string, keyIdx:number):HistogramData {\n const ticks= getSteps(binsCount, domain);\n const bins = bin<RowIndex, number>()\n .domain(domain)\n .thresholds(ticks)\n .value((idx: RowIndex) => dataFrame.getColumnValue(column.value, idx) as number)(indexes);\n return {\n bins: createBinData(bins, key, keyIdx),\n maxCount: max(bins, (bin) => bin.length) ?? 0\n };\n}\nexport function createHistogramDataLog(dataFrame: DataFrame, indexes: RowIndex[], column: ColumnName, binsCount:number, domain:[number, number], key:string, keyIdx:number):HistogramData {\n const ticks= getSteps(binsCount, domain);\n const convertLog = scaleSymlog().domain(domain).range(domain);\n const ticksLog = ticks.map(t => convertLog.invert(t));\n const bins = bin<RowIndex, number>()\n .domain(domain)\n .thresholds(ticksLog)\n .value((idx: RowIndex) => dataFrame.getColumnValue(column.value, idx) as number)(indexes);\n\n return {\n bins: createBinData(bins, key, keyIdx),\n maxCount: max(bins, (bin) => bin.length) ?? 0\n };\n}\n\nexport function createHistogramDataByFacets(\n data:DataFrame,\n facetKeysCombinations:string[][],\n groupingKeys: string[],\n valueColumn:ColumnName,\n binsCount:number,\n scale: 'linear' | 'log'\n) {\n const result:Record<string, GroupedHistogramData> = {};\n facetKeysCombinations.forEach((facetKeys) => {\n const facetKey = facetKeys.join('_');\n result[facetKey] = {\n groupingKeys,\n histogramByGroupingKey: {},\n minX: Infinity,\n maxX: -Infinity,\n maxCount: 0,\n maxCountFromGroups: 0\n };\n const allFacetRowsIndexes = data.getRowsByGrouping([...facetKeys]);\n let [minV, maxV] = extent(allFacetRowsIndexes, idx => data.getColumnValue(valueColumn.value, idx) as number);\n minV ??= (data.getColumnValue(valueColumn.value, allFacetRowsIndexes[0]) ?? 0) as number;\n maxV ??= (data.getColumnValue(valueColumn.value, allFacetRowsIndexes[0]) ?? 0) as number;\n const domain:[number, number] = [minV, maxV];\n const forwardKeys = [...groupingKeys].reverse();\n forwardKeys.forEach((groupingKey, idx) => {\n const indexes = Array.from(data.getRowsByGrouping([...facetKeys, groupingKey]));\n const histogram = scale === 'linear'\n ? createHistogramDataLinear(data, indexes, valueColumn, binsCount, domain, groupingKey, idx)\n : createHistogramDataLog(data, indexes, valueColumn, binsCount, domain, groupingKey, idx);\n result[facetKey].histogramByGroupingKey[groupingKey] = histogram;\n result[facetKey].minX = domain[0];\n result[facetKey].maxX = domain[1];\n result[facetKey].maxCountFromGroups = Math.max(result[facetKey].maxCountFromGroups, histogram.maxCount);\n\n const previousKey = idx > 0 ? forwardKeys[idx - 1] : null;\n const previousHistogram = previousKey !== null ? result[facetKey].histogramByGroupingKey[previousKey] : null;\n\n histogram.bins.forEach((bin, idx) => {\n bin.y.straight = (previousHistogram?.bins[idx].y.straight ?? 0) + bin.count;\n result[facetKey].maxCount = Math.max(result[facetKey].maxCount, bin.y.straight);\n });\n });\n\n const reversedKeys = groupingKeys;\n reversedKeys.forEach((groupingKey, idx) => {\n const previousKey = idx > 0 ? reversedKeys[idx - 1] : null;\n const histogram = result[facetKey].histogramByGroupingKey[groupingKey];\n const previousHistogram = previousKey !== null ? result[facetKey].histogramByGroupingKey[previousKey] : null;\n\n histogram.bins.forEach((bin, idx) => {\n bin.y.reverse = (previousHistogram?.bins[idx].y.reverse ?? 0) + bin.count;\n });\n });\n });\n return result;\n}"],"names":["getSteps","count","valueExtent","min","max","step","steps","i","createBinData","bins","key","keyIdx","b","createHistogramDataLinear","dataFrame","indexes","column","binsCount","domain","ticks","bin","idx","createHistogramDataLog","convertLog","scaleSymlog","ticksLog","t","createHistogramDataByFacets","data","facetKeysCombinations","groupingKeys","valueColumn","scale","result","facetKeys","facetKey","allFacetRowsIndexes","minV","maxV","extent","forwardKeys","groupingKey","histogram","previousKey","previousHistogram","reversedKeys"],"mappings":"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"}