@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,78 +1,79 @@
1
- var X = Object.defineProperty;
2
- var v = (o, i, t) => i in o ? X(o, i, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[i] = t;
3
- var p = (o, i, t) => v(o, typeof i != "symbol" ? i + "" : i, t);
1
+ var v = Object.defineProperty;
2
+ var j = (e, t, i) => t in e ? v(e, t, { enumerable: !0, configurable: !0, writable: !0, value: i }) : e[t] = i;
3
+ var g = (e, t, i) => j(e, typeof t != "symbol" ? t + "" : t, i);
4
4
  import { j as A } from "../node_modules/react/jsx-runtime.js";
5
- import { Error as G } from "../common/Error.js";
6
- import { DEFAULT_HEIGHT as w, DEFAULT_WIDTH as N, TITLE_LINE_HEIGHT as Y, TITLE_MARGIN as j } from "../constants.js";
7
- import { MIN_MARGIN as H, DEFAULT_TICKS_SIZE as b, TICK_OFFSET as D, MIN_PADDING as S, FACET_TITLE_OFFSET as O, FACET_TITLE_LINE as U, TITLE_LINE as P } from "./constants.js";
8
- import { splitTextByWidth as _ } from "../discrete/utils/splitTextByWidth.js";
5
+ import { createRoot as G } from "../node_modules/react-dom/client.js";
6
+ import { Error as Y } from "../common/Error.js";
7
+ import { DataFrameProvider as O } from "../common/useDataFrame.js";
8
+ import { DEFAULT_HEIGHT as w, DEFAULT_WIDTH as N, TITLE_LINE_HEIGHT as P, TITLE_MARGIN as U } from "../constants.js";
9
+ import { splitTextByWidth as D } from "../discrete/utils/splitTextByWidth.js";
9
10
  import { LEGEND_OFFSET as V, DEFAULT_COMMON_AES as B } from "../scatterplot/constants.js";
10
11
  import { getTicksAndFormat as Z } from "../scatterplot/utils/getTicksAndFormat.js";
11
12
  import { arrangeLegendParts as k } from "../utils/arrangeLegendParts.js";
12
13
  import { getContinuousColorScale as q } from "../utils/getContinuousColorScale.js";
13
- import { TextMeasurer as J } from "../utils/TextMeasurer.js";
14
- import { createRoot as Q } from "../node_modules/react-dom/client.js";
15
- import { ChartsGroup as $ } from "./components/ChartsGroup.js";
14
+ import { TextMeasurer as J } from "../utils/TextMeasurer/TextMeasurer.js";
15
+ import { ChartsGroup as Q } from "./components/ChartsGroup.js";
16
+ import { MIN_MARGIN as H, DEFAULT_TICKS_SIZE as _, TICK_OFFSET as R, MIN_PADDING as S, FACET_TITLE_OFFSET as $, FACET_TITLE_LINE as y, TITLE_LINE as K } from "./constants.js";
16
17
  import I from "../node_modules/d3-scale/src/linear.js";
17
- import R from "../node_modules/d3-scale/src/symlog.js";
18
- import y from "../node_modules/d3-scale/src/ordinal.js";
19
- function K(o, i, t, e) {
18
+ import F from "../node_modules/d3-scale/src/symlog.js";
19
+ import tt from "../node_modules/d3-scale/src/ordinal.js";
20
+ function it(e, t, i, o) {
20
21
  const s = [];
21
- return o % t === t - 1 && s.push("right"), o % t === 0 && s.push("left"), o < t && s.push("top"), (Math.ceil((o + 1) / t) === e || Math.ceil((o + 1) / t) === e - 1 && o % t > (i - 1) % t) && s.push("bottom"), s;
22
+ return e % i === i - 1 && s.push("right"), e % i === 0 && s.push("left"), e < i && s.push("top"), (Math.ceil((e + 1) / i) === o || Math.ceil((e + 1) / i) === o - 1 && e % i > (t - 1) % i) && s.push("bottom"), s;
22
23
  }
23
- function tt(o, i, t, e, s, r, a, n) {
24
- const h = r.includes("left") || !(n != null && n.sharedY), C = r.includes("bottom") || !(n != null && n.sharedX), g = r.includes("bottom") && o.title !== "", l = t.yAxisCaptionsWidth, E = (i.showTicks ? b : 0) + (i.hiddenLabels ? 0 : D), d = t.xAxisCaptionsWidth, x = (o.showTicks ? b : 0) + (o.hiddenLabels ? 0 : D), m = g ? P : 0, c = l + E, u = x + d + m, T = Math.max(...e.map((f) => s[f].length));
24
+ function st(e, t, i, o, s, h, d, n) {
25
+ const r = h.includes("left") || !(n != null && n.sharedY), u = h.includes("bottom") || !(n != null && n.sharedX), C = h.includes("bottom") && e.title !== "", a = i.yAxisCaptionsWidth, x = (t.showTicks ? _ : 0) + (t.hiddenLabels ? 0 : R), p = i.xAxisCaptionsWidth, E = (e.showTicks ? _ : 0) + (e.hiddenLabels ? 0 : R), c = C ? K : 0, l = a + x, m = E + p + c, T = Math.max(...o.map((f) => s[f].length));
25
26
  return {
26
- left: h ? c : S,
27
- top: T === 0 ? 0 : O * 2 + T * U,
28
- bottom: C ? u : S,
29
- right: a ? 0 : S
27
+ left: r ? l : S,
28
+ top: T === 0 ? 0 : $ * 2 + T * y,
29
+ bottom: u ? m : S,
30
+ right: d ? 0 : S
30
31
  };
31
32
  }
32
- function it(o, i, t) {
33
- const e = [];
34
- for (let s = 0; s < i; s++)
35
- e.push(o.slice(s * t, s * t + t));
36
- return e;
33
+ function et(e, t, i) {
34
+ const o = [];
35
+ for (let s = 0; s < t; s++)
36
+ o.push(e.slice(s * i, s * i + i));
37
+ return o;
37
38
  }
38
- function st(o, i) {
39
- const t = Math.floor(o / i), e = o - t * i;
40
- return [t, e];
39
+ function ot(e, t) {
40
+ const i = Math.floor(e / t), o = e - i * t;
41
+ return [i, o];
41
42
  }
42
- function F(o) {
43
- return typeof o == "object" && o !== null && "type" in o && "value" in o && o.type === "grouping";
43
+ function X(e) {
44
+ return typeof e == "object" && e !== null && "type" in e && "value" in e && e.type === "grouping";
44
45
  }
45
- function et(o) {
46
- return typeof o == "object" && o !== null && "range" in o;
46
+ function nt(e) {
47
+ return typeof e == "object" && e !== null && "range" in e;
47
48
  }
48
- function ot(o, i, t) {
49
- return function(e, s, r) {
50
- var a;
51
- if (et(e)) {
52
- const { domain: n = t, range: h, type: C = "linear" } = e, g = q(h, n, C);
53
- return g.clamp(!0), g(r);
49
+ function ht(e, t, i, o) {
50
+ return function(s, h, d) {
51
+ var n;
52
+ if (nt(s)) {
53
+ const { domain: r = o, range: u, type: C = "linear" } = s, a = q(u, r, C);
54
+ return a.clamp(!0), a(d);
54
55
  }
55
- if (F(e)) {
56
- const n = e.value, h = o[n];
57
- return (a = (h == null ? void 0 : h[String(s[n])]) ?? B) == null ? void 0 : a[i];
56
+ if (X(s)) {
57
+ const r = s.value, u = t[r];
58
+ return (n = (u == null ? void 0 : u[String(e.getColumnValue(r, h))]) ?? B) == null ? void 0 : n[i];
58
59
  }
59
- return e;
60
+ return s;
60
61
  };
61
62
  }
62
- class Mt {
63
+ class wt {
63
64
  constructor() {
64
- p(this, "reactRoot", null);
65
- p(this, "parentNode", null);
66
- p(this, "rootNode", null);
67
- p(this, "component", /* @__PURE__ */ A.jsx(A.Fragment, {}));
68
- p(this, "margins", {
65
+ g(this, "reactRoot", null);
66
+ g(this, "parentNode", null);
67
+ g(this, "rootNode", null);
68
+ g(this, "component", /* @__PURE__ */ A.jsx(A.Fragment, {}));
69
+ g(this, "margins", {
69
70
  top: H,
70
71
  bottom: H,
71
72
  left: H,
72
73
  right: H
73
74
  });
74
- p(this, "chartsDimensions", {});
75
- p(this, "chartSizes", {
75
+ g(this, "chartsDimensions", {});
76
+ g(this, "chartSizes", {
76
77
  chartWidth: N,
77
78
  // width of single chart
78
79
  chartHeight: w,
@@ -86,157 +87,157 @@ class Mt {
86
87
  totalHeight: w
87
88
  // width of all charts in charts height, plus bottom axis, plus top title
88
89
  });
89
- p(this, "columnsCount", 1);
90
- p(this, "rowsCount", 1);
91
- p(this, "scales", {
90
+ g(this, "columnsCount", 1);
91
+ g(this, "rowsCount", 1);
92
+ g(this, "scales", {
92
93
  x: { null: I().domain([0, 10]).range([0, N]) },
93
94
  y: { null: I().domain([0, 10]).range([w, 0]) }
94
95
  });
95
- p(this, "captionsSizes", {
96
+ g(this, "captionsSizes", {
96
97
  xAxisCaptionsWidth: 30,
97
98
  yAxisCaptionsWidth: 100
98
99
  });
99
- p(this, "facetTitles", {});
100
+ g(this, "facetTitles", {});
100
101
  // can be multiline
101
- p(this, "mainTitle", []);
102
+ g(this, "mainTitle", []);
102
103
  // can be multiline
103
- p(this, "legend", {
104
+ g(this, "legend", {
104
105
  width: 0,
105
106
  height: 0,
106
107
  items: []
107
108
  });
108
109
  }
109
110
  clear() {
110
- var i;
111
- this.parentNode && this.rootNode && ((i = this.parentNode) == null || i.removeChild(this.rootNode), this.parentNode = null, this.rootNode = null), setTimeout(() => {
112
- var t;
113
- (t = this.reactRoot) == null || t.unmount(), this.reactRoot = null;
111
+ var t;
112
+ this.parentNode && this.rootNode && ((t = this.parentNode) == null || t.removeChild(this.rootNode), this.parentNode = null, this.rootNode = null), setTimeout(() => {
113
+ var i;
114
+ (i = this.reactRoot) == null || i.unmount(), this.reactRoot = null;
114
115
  });
115
116
  }
116
- init(i) {
117
- this.parentNode === null && (this.parentNode = i, this.rootNode = document.createElement("div"), this.parentNode.appendChild(this.rootNode), this.reactRoot = Q(this.rootNode));
117
+ init(t) {
118
+ this.parentNode === null && (this.parentNode = t, this.rootNode = document.createElement("div"), this.parentNode.appendChild(this.rootNode), this.reactRoot = G(this.rootNode));
118
119
  }
119
- updateChartSizes(i) {
120
- this.chartSizes.chartWidth = i.width, this.chartSizes.chartHeight = i.height;
120
+ updateChartSizes(t) {
121
+ this.chartSizes.chartWidth = t.width, this.chartSizes.chartHeight = t.height;
121
122
  }
122
- updateChartDimensions(i, t, e, s) {
123
- const { chartWidth: r, chartHeight: a } = this.chartSizes;
124
- let n = 0, h = 0;
125
- this.chartsDimensions = i.reduce((l, E, d) => {
126
- const [x, m] = st(d, this.columnsCount), c = K(d, i.length, this.columnsCount, this.rowsCount), u = tt(
127
- e,
123
+ updateChartDimensions(t, i, o, s) {
124
+ const { chartWidth: h, chartHeight: d } = this.chartSizes;
125
+ let n = 0, r = 0;
126
+ this.chartsDimensions = t.reduce((a, x, p) => {
127
+ const [E, c] = ot(p, this.columnsCount), l = it(p, t.length, this.columnsCount, this.rowsCount), m = st(
128
+ o,
128
129
  s,
129
130
  this.captionsSizes,
130
- it(i, this.rowsCount, this.columnsCount)[x],
131
+ et(t, this.rowsCount, this.columnsCount)[E],
131
132
  this.facetTitles,
132
- c,
133
- m === this.columnsCount - 1,
134
- t
135
- ), T = r + u.left + u.right, f = a + u.top + u.bottom;
136
- return l[E] = {
133
+ l,
134
+ c === this.columnsCount - 1,
135
+ i
136
+ ), T = h + m.left + m.right, f = d + m.top + m.bottom;
137
+ return a[x] = {
137
138
  left: n,
138
- top: h,
139
- chartEdgeSides: c,
140
- padding: u,
141
- inner: { width: r, height: a },
139
+ top: r,
140
+ chartEdgeSides: l,
141
+ padding: m,
142
+ inner: { width: h, height: d },
142
143
  outer: { width: T, height: f }
143
- }, n += T, m === this.columnsCount - 1 && (n = 0, h += f), l;
144
+ }, n += T, c === this.columnsCount - 1 && (n = 0, r += f), a;
144
145
  }, {});
145
- const C = Math.max(
146
- ...i.map((l) => this.chartsDimensions[l].outer.width + this.chartsDimensions[l].left)
147
- ), g = Math.max(
148
- ...i.map((l) => this.chartsDimensions[l].outer.height + this.chartsDimensions[l].top)
146
+ const u = Math.max(
147
+ ...t.map((a) => this.chartsDimensions[a].outer.width + this.chartsDimensions[a].left)
148
+ ), C = Math.max(
149
+ ...t.map((a) => this.chartsDimensions[a].outer.height + this.chartsDimensions[a].top)
149
150
  );
150
- this.chartSizes.chartsWidth = C, this.chartSizes.chartsHeight = g;
151
+ this.chartSizes.chartsWidth = u, this.chartSizes.chartsHeight = C;
151
152
  }
152
- updateViewport(i, t, e, s, r, a, n) {
153
- const h = i.length, C = Math.min(t.nRows ?? h, h), g = Math.min(t.nCols ?? h, h);
154
- this.columnsCount = t.nRows ? Math.ceil(h / C) : g, this.rowsCount = Math.ceil(h / this.columnsCount);
155
- let [l, E] = [1 / 0, -1 / 0], d = -1 / 0;
156
- const x = i.reduce((m, c) => {
157
- const u = r[c], { minX: T, maxX: f, maxCount: z, maxCountFromGroups: M } = u;
158
- return l = Math.min(l, T), E = Math.max(E, f), d = Math.max(d, n === "vertical" ? z : M), m[c] = { minX: T, maxX: f, maxY: n === "vertical" ? z : M }, m;
153
+ updateViewport(t, i, o, s, h, d, n) {
154
+ const r = t.length, u = Math.min(i.nRows ?? r, r), C = Math.min(i.nCols ?? r, r);
155
+ this.columnsCount = i.nRows ? Math.ceil(r / u) : C, this.rowsCount = Math.ceil(r / this.columnsCount);
156
+ let [a, x] = [1 / 0, -1 / 0], p = -1 / 0;
157
+ const E = t.reduce((c, l) => {
158
+ const m = h[l], { minX: T, maxX: f, maxCount: z, maxCountFromGroups: M } = m;
159
+ return a = Math.min(a, T), x = Math.max(x, f), p = Math.max(p, n === "vertical" ? z : M), c[l] = { minX: T, maxX: f, maxY: n === "vertical" ? z : M }, c;
159
160
  }, {});
160
- i.forEach((m) => {
161
- const c = e.scale === "log" ? R() : I(), u = x[m], T = t.sharedX ? l : u.minX, f = t.sharedX ? E : u.maxX;
162
- c.domain([T, f]).range([0, this.chartSizes.chartWidth]), this.scales.x[m] = c;
163
- }), i.forEach((m) => {
164
- const c = s.scale === "log" ? R() : I(), u = x[m], T = 0, f = t.sharedY ? d : u.maxY, z = [this.chartSizes.chartHeight, 0], M = c.copy().domain([T, f]).range([
161
+ t.forEach((c) => {
162
+ const l = o.scale === "log" ? F() : I(), m = E[c], T = i.sharedX ? a : m.minX, f = i.sharedX ? x : m.maxX;
163
+ l.domain([T, f]).range([0, this.chartSizes.chartWidth]), this.scales.x[c] = l;
164
+ }), t.forEach((c) => {
165
+ const l = s.scale === "log" ? F() : I(), m = E[c], T = 0, f = i.sharedY ? p : m.maxY, z = [this.chartSizes.chartHeight, 0], M = l.copy().domain([T, f]).range([
165
166
  this.chartSizes.chartHeight,
166
- a.innerOffset
167
+ d.innerOffset
167
168
  ]);
168
- c.domain([M.invert(this.chartSizes.chartHeight), M.invert(0)]).range(
169
+ l.domain([M.invert(this.chartSizes.chartHeight), M.invert(0)]).range(
169
170
  z
170
- ), this.scales.y[m] = c;
171
+ ), this.scales.y[c] = l;
171
172
  });
172
173
  }
173
- updateCaptionsSize(i, t) {
174
- const e = new J("600 14px Arial");
174
+ updateCaptionsSize(t, i) {
175
+ const o = new J("600 14px Arial");
175
176
  let s = 0;
176
- function r(a) {
177
- return Math.max(...a.map((n) => e.getTextWidth(n)));
177
+ function h(d) {
178
+ return Math.max(...d.map((n) => o.getTextWidth(n)));
178
179
  }
179
- t.hiddenLabels || Object.values(this.scales.y).forEach((a) => {
180
- const { ticks: n, format: h } = Z(a, !1);
181
- s = Math.max(s, r(n.map(h)));
180
+ i.hiddenLabels || Object.values(this.scales.y).forEach((d) => {
181
+ const { ticks: n, format: r } = Z(d, !1);
182
+ s = Math.max(s, h(n.map(r)));
182
183
  }), this.captionsSizes = {
183
- xAxisCaptionsWidth: i.hiddenLabels ? 0 : 20,
184
+ xAxisCaptionsWidth: t.hiddenLabels ? 0 : 20,
184
185
  yAxisCaptionsWidth: s
185
186
  };
186
187
  }
187
- createMainTitle(i, t) {
188
- const e = this.chartsDimensions[i[0]], s = this.chartsDimensions[i[i.length - 1]];
189
- this.mainTitle = _(
190
- t.name,
191
- this.chartSizes.chartsWidth - e.padding.left - s.padding.right,
188
+ createMainTitle(t, i) {
189
+ const o = this.chartsDimensions[t[0]], s = this.chartsDimensions[t[t.length - 1]];
190
+ this.mainTitle = D(
191
+ i.name,
192
+ this.chartSizes.chartsWidth - o.padding.left - s.padding.right,
192
193
  20
193
194
  );
194
195
  }
195
- createFacetTitles(i, t) {
196
- this.facetTitles = i.reduce((e, s, r) => (t[r].length === 1 && t[r][0] === "null" ? e[s] = [] : e[s] = _(t[r].join(", "), this.chartSizes.chartWidth, 14), e), {});
196
+ createFacetTitles(t, i) {
197
+ this.facetTitles = t.reduce((o, s, h) => (i[h].length === 1 && i[h][0] === "null" ? o[s] = [] : o[s] = D(i[h].join(", "), this.chartSizes.chartWidth, 14), o), {});
197
198
  }
198
- updateLegendSize(i, t, e, s) {
199
- if (!i.show) {
199
+ updateLegendSize(t, i, o, s) {
200
+ if (!t.show) {
200
201
  this.legend = { width: 0, height: 0, items: [] };
201
202
  return;
202
203
  }
203
- const r = [], a = { width: 0, height: 0, left: 0, top: 0 };
204
- if (s.forEach((l) => {
205
- if (F(l.aes.fillColor) && e) {
206
- const E = l.aes.fillColor.value, d = t[e.value], x = e.label ?? e.value, m = y().domain(d.values).range(d.values.map((c) => d.aesMap[c].fillColor));
207
- r.push({ ...a, id: E, type: "discreteColor", title: x, scale: m, values: d.values, labels: d.labels });
204
+ const h = [], d = { width: 0, height: 0, left: 0, top: 0 };
205
+ if (s.forEach((a) => {
206
+ if (X(a.aes.fillColor) && o) {
207
+ const x = a.aes.fillColor.value, p = i[o.value], E = o.label ?? o.value, c = tt().domain(p.values).range(p.values.map((l) => p.aesMap[l].fillColor));
208
+ h.push({ ...d, id: x, type: "discreteColor", title: E, scale: c, values: p.values, labels: p.labels });
208
209
  }
209
- }), !r.length) {
210
+ }), !h.length) {
210
211
  this.legend = { width: 0, height: 0, items: [] };
211
212
  return;
212
213
  }
213
- const n = k(r, this.chartSizes.chartHeight), h = n[n.length - 1], C = h.left + h.width + V, g = this.chartSizes.chartHeight;
214
+ const n = k(h, this.chartSizes.chartHeight), r = n[n.length - 1], u = r.left + r.width + V, C = this.chartSizes.chartHeight;
214
215
  this.legend = {
215
- width: C,
216
- height: g,
216
+ width: u,
217
+ height: C,
217
218
  items: n
218
219
  };
219
220
  }
220
- updateMargins(i) {
221
- const t = Y * this.mainTitle.length, e = t > 0 ? t + j * 2 : 0, s = i.outerOffset;
221
+ updateMargins(t) {
222
+ const i = P * this.mainTitle.length, o = i > 0 ? i + U * 2 : 0, s = t.outerOffset;
222
223
  this.margins = {
223
- top: Math.max(e, s),
224
+ top: Math.max(o, s),
224
225
  bottom: s,
225
226
  left: s,
226
227
  right: this.legend.width + s
227
228
  }, this.chartSizes.totalWidth = this.margins.left + this.chartSizes.chartsWidth + this.margins.right, this.chartSizes.totalHeight = this.margins.top + this.chartSizes.chartsHeight + this.margins.bottom;
228
229
  }
229
- render(i, t, e, s, r, a, n, h, C, g, l, E, d) {
230
- var M;
231
- const { xAxis: x, yAxis: m, size: c, title: u } = t;
232
- this.updateChartSizes(c), this.updateViewport(s, e, x, m, a, c, l), this.updateCaptionsSize(x, m), this.createFacetTitles(s, r), this.updateChartDimensions(s, e, x, m), this.createMainTitle(s, u), this.updateLegendSize(t.legend, n, g, h), this.updateMargins(c);
233
- const T = s.reduce((W, L) => Math.min(W, a[L].minX), 1 / 0), f = s.reduce((W, L) => Math.max(W, a[L].maxX), -1 / 0), z = /* @__PURE__ */ A.jsx(
234
- $,
230
+ render(t, i, o, s, h, d, n, r, u, C, a, x, p, E) {
231
+ var b;
232
+ const { xAxis: c, yAxis: l, size: m, title: T } = o;
233
+ this.updateChartSizes(m), this.updateViewport(h, s, c, l, n, m, x), this.updateCaptionsSize(c, l), this.createFacetTitles(h, d), this.updateChartDimensions(h, s, c, l), this.createMainTitle(h, T), this.updateLegendSize(o.legend, r, a, u), this.updateMargins(m);
234
+ const f = h.reduce((W, L) => Math.min(W, n[L].minX), 1 / 0), z = h.reduce((W, L) => Math.max(W, n[L].maxX), -1 / 0), M = /* @__PURE__ */ A.jsx(O, { dataFrame: t, children: /* @__PURE__ */ A.jsx(
235
+ Q,
235
236
  {
236
237
  settingsId: i,
237
- chartSettings: t,
238
- facetKeys: s,
239
- facetSettings: e,
238
+ chartSettings: o,
239
+ facetKeys: h,
240
+ facetSettings: s,
240
241
  chartSizes: this.chartSizes,
241
242
  chartsDimensions: this.chartsDimensions,
242
243
  scales: this.scales,
@@ -245,24 +246,24 @@ class Mt {
245
246
  mainTitle: this.mainTitle,
246
247
  facetTitles: this.facetTitles,
247
248
  captionsSizes: this.captionsSizes,
248
- histogramDataByFacets: a,
249
- layers: h,
250
- aesColorGetter: ot(C, "fillColor", [T, f]),
251
- groupingDirection: E,
252
- groupingStack: l,
253
- groupingLabels: g ? n[g.value].labels : {},
249
+ histogramDataByFacets: n,
250
+ layers: u,
251
+ aesColorGetter: ht(t, C, "fillColor", [f, z]),
252
+ groupingDirection: p,
253
+ groupingStack: x,
254
+ groupingLabels: a ? r[a.value].labels : {},
254
255
  legend: this.legend,
255
- onTooltipHintSwitch: d
256
+ onTooltipHintSwitch: E
256
257
  }
257
- );
258
- this.component = z, (M = this.reactRoot) == null || M.render(z);
258
+ ) });
259
+ this.component = M, (b = this.reactRoot) == null || b.render(M);
259
260
  }
260
- renderError(i) {
261
- var t;
262
- (t = this.reactRoot) == null || t.render(/* @__PURE__ */ A.jsx(G, { message: i }));
261
+ renderError(t) {
262
+ var i;
263
+ (i = this.reactRoot) == null || i.render(/* @__PURE__ */ A.jsx(Y, { message: t }));
263
264
  }
264
265
  }
265
266
  export {
266
- Mt as default
267
+ wt as default
267
268
  };
268
269
  //# sourceMappingURL=ChartRenderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChartRenderer.js","sources":["../../src/histogram/ChartRenderer.tsx"],"sourcesContent":["import {Error} from '../common/Error';\nimport type {LegendData, LegendItem} from '../common/types';\nimport {DEFAULT_HEIGHT, DEFAULT_WIDTH, TITLE_LINE_HEIGHT, TITLE_MARGIN} from '../constants';\nimport {FACET_TITLE_LINE} from './constants';\nimport {splitTextByWidth} from '../discrete/utils';\nimport type {HistogramLegendInfo, Margins} from './components/types';\nimport type {CaptionsSizes} from './components/types';\nimport {\n FACET_TITLE_OFFSET,\n MIN_MARGIN,\n MIN_PADDING,\n TICK_OFFSET,\n TITLE_LINE,\n} from './constants';\nimport type {GroupedHistogramData} from './getHistogramData';\nimport type {HistogramLayer, HistogramSettingsImpl} from './HistogramSettingsImpl';\nimport {DEFAULT_COMMON_AES, LEGEND_OFFSET} from '../scatterplot/constants';\nimport {getTicksAndFormat} from '../scatterplot/utils/getTicksAndFormat';\nimport type {ColumnName, ContinuousAesHistogram} from '../types';\nimport type {AesItem, InheritAesHistogram, Row} from '../types';\nimport {arrangeLegendParts} from '../utils/arrangeLegendParts';\nimport {getContinuousColorScale} from '../utils/getContinuousColorScale';\nimport {TextMeasurer} from '../utils/TextMeasurer';\nimport type {ScaleLogarithmic, ScaleOrdinal} from 'd3-scale';\nimport {scaleLinear, scaleOrdinal, scaleSymlog} from 'd3-scale';\nimport {DEFAULT_TICKS_SIZE} from './constants';\nimport type {ReactElement} from 'react';\nimport React from 'react';\nimport type {Root} from 'react-dom/client';\nimport {createRoot} from 'react-dom/client';\nimport {ChartsGroup} from './components/ChartsGroup';\nimport type {ChartDimensionsData, ChartScales, ChartSizes, ChartsScales} from './components/types';\n\nfunction getChartEdgeSides(index: number, facetsCount: number, columnsCount: number, rowsCount: number) {\n const chartSides: ('left' | 'right' | 'top' | 'bottom')[] = [];\n if (index % columnsCount === columnsCount - 1) {\n chartSides.push('right');\n }\n if (index % columnsCount === 0) {\n chartSides.push('left');\n }\n if (index < columnsCount) {\n chartSides.push('top');\n }\n if (\n Math.ceil((index + 1) / columnsCount) === rowsCount ||\n (Math.ceil((index + 1) / columnsCount) === rowsCount - 1 &&\n index % columnsCount > (facetsCount - 1) % columnsCount)\n ) {\n chartSides.push('bottom');\n }\n return chartSides;\n}\n\nfunction calculatePaddings(\n xAxis: HistogramSettingsImpl['chartSettings']['xAxis'],\n yAxis: HistogramSettingsImpl['chartSettings']['yAxis'],\n captionsSizes: CaptionsSizes,\n currentRowFacetKeys: string[],\n facetTitles: Record<string, string[]>,\n chartEdgeSides: ('left' | 'right' | 'top' | 'bottom')[],\n lastInRow: boolean,\n facetSettings?: HistogramSettingsImpl['facetSettings']\n) {\n const needLeftAxis = chartEdgeSides.includes('left') || !facetSettings?.sharedY;\n const needBottomAxis = chartEdgeSides.includes('bottom') || !facetSettings?.sharedX;\n const needBottomAxisTitle = chartEdgeSides.includes('bottom') && xAxis.title !== '';\n\n const yCaptions = captionsSizes.yAxisCaptionsWidth;\n const yTicks = (yAxis.showTicks ? DEFAULT_TICKS_SIZE : 0) + (yAxis.hiddenLabels ? 0 : TICK_OFFSET);\n\n const xCaptions = captionsSizes.xAxisCaptionsWidth;\n const xTicks = (xAxis.showTicks ? DEFAULT_TICKS_SIZE : 0) + (xAxis.hiddenLabels ? 0 : TICK_OFFSET);\n const xAxisTitle = needBottomAxisTitle ? TITLE_LINE : 0;\n\n const leftAxisElements = yCaptions + yTicks;\n const bottomAxisElements = xTicks + xCaptions + xAxisTitle;\n\n const facetTitlesLinesCount = Math.max(...currentRowFacetKeys.map(key => facetTitles[key].length));\n return {\n left: needLeftAxis ? leftAxisElements : MIN_PADDING,\n top: facetTitlesLinesCount === 0 ? 0 : FACET_TITLE_OFFSET * 2 + facetTitlesLinesCount * FACET_TITLE_LINE,\n bottom: needBottomAxis ? bottomAxisElements : MIN_PADDING,\n right: lastInRow ? 0 : MIN_PADDING,\n };\n}\n\n// facet keys grouped by rows\nfunction getFacetRows(facetKeys: string[], nRows: number, nColumns: number): string[][] {\n const result: string[][] = [];\n for (let i = 0; i < nRows; i++) {\n result.push(facetKeys.slice(i * nColumns, i * nColumns + nColumns));\n }\n return result;\n}\n\nfunction getRowColumn(idx: number, columnsCount: number) {\n const row = Math.floor(idx / columnsCount);\n const column = idx - row * columnsCount;\n return [row, column];\n}\n\nfunction isInheritedAes(v: InheritAesHistogram | unknown): v is InheritAesHistogram {\n return typeof v === 'object' && v !== null && 'type' in v && 'value' in v && v.type === 'grouping';\n}\nfunction isContinuousAes(v: ContinuousAesHistogram | unknown): v is ContinuousAesHistogram {\n return typeof v === 'object' && v !== null && 'range' in v;\n}\nfunction createAesGetter(aesData: HistogramSettingsImpl['inheritedAes'], field: keyof AesItem, defaultDomain:number[]) {\n return function (aesItem: string | InheritAesHistogram | ContinuousAesHistogram, row: Row, height:number) {\n if (isContinuousAes(aesItem)) {\n const {domain = defaultDomain, range, type = 'linear'} = aesItem;\n const scale = getContinuousColorScale(range as string[], domain, type);\n scale.clamp(true);\n return scale(height);\n }\n if (isInheritedAes(aesItem)) {\n const columnId = aesItem.value;\n const mapping = aesData[columnId];\n return (mapping?.[String(row[columnId])] ?? DEFAULT_COMMON_AES)?.[field] as string;\n }\n return aesItem;\n };\n}\n\nclass ChartRenderer {\n reactRoot: Root | null = null;\n parentNode: HTMLElement | null = null;\n rootNode: HTMLElement | null = null;\n component: ReactElement = (<></>);\n margins: Margins = {\n top: MIN_MARGIN,\n bottom: MIN_MARGIN,\n left: MIN_MARGIN,\n right: MIN_MARGIN,\n };\n chartsDimensions: Record<string, ChartDimensionsData> = {};\n chartSizes: ChartSizes = {\n chartWidth: DEFAULT_WIDTH, // width of single chart\n chartHeight: DEFAULT_HEIGHT, // height of single chart\n chartsWidth: DEFAULT_WIDTH, // width of all charts in charts row\n chartsHeight: DEFAULT_HEIGHT, // width of all charts in charts column, without axes\n totalWidth: DEFAULT_WIDTH, // width of all charts in charts row, plus left axis, plus legend\n totalHeight: DEFAULT_HEIGHT, // width of all charts in charts height, plus bottom axis, plus top title\n };\n columnsCount = 1;\n rowsCount = 1;\n scales: ChartsScales = {\n x: {null: scaleLinear().domain([0, 10]).range([0, DEFAULT_WIDTH])},\n y: {null: scaleLinear().domain([0, 10]).range([DEFAULT_HEIGHT, 0])},\n };\n captionsSizes: CaptionsSizes = {\n xAxisCaptionsWidth: 30,\n yAxisCaptionsWidth: 100,\n };\n facetTitles: Record<string, string[]> = {}; // can be multiline\n mainTitle: string[] = []; // can be multiline\n legend: LegendData = {\n width: 0,\n height: 0,\n items: [],\n };\n\n clear() {\n if (this.parentNode && this.rootNode) {\n this.parentNode?.removeChild(this.rootNode);\n this.parentNode = null;\n this.rootNode = null;\n }\n // timeout to avoid trying to unmount during rendering\n setTimeout(() => {\n this.reactRoot?.unmount();\n this.reactRoot = null;\n });\n }\n\n init(node: HTMLElement) {\n if (this.parentNode === null) {\n this.parentNode = node;\n this.rootNode = document.createElement('div');\n this.parentNode.appendChild(this.rootNode);\n this.reactRoot = createRoot(this.rootNode);\n }\n }\n\n updateChartSizes(size: HistogramSettingsImpl['chartSettings']['size']) {\n this.chartSizes.chartWidth = size.width;\n this.chartSizes.chartHeight = size.height;\n }\n\n updateChartDimensions(\n facetKeys: string[],\n facetSettings: HistogramSettingsImpl['facetSettings'],\n xAxis: HistogramSettingsImpl['chartSettings']['xAxis'],\n yAxis: HistogramSettingsImpl['chartSettings']['yAxis']\n ) {\n const {chartWidth, chartHeight} = this.chartSizes;\n let currentLeft = 0;\n let currentTop = 0;\n this.chartsDimensions = facetKeys.reduce((res: Record<string, ChartDimensionsData>, key: string, index) => {\n const [currentRow, currentColumn] = getRowColumn(index, this.columnsCount);\n const chartEdgeSides = getChartEdgeSides(index, facetKeys.length, this.columnsCount, this.rowsCount);\n const padding = calculatePaddings(\n xAxis,\n yAxis,\n this.captionsSizes,\n getFacetRows(facetKeys, this.rowsCount, this.columnsCount)[currentRow],\n this.facetTitles,\n chartEdgeSides,\n currentColumn === this.columnsCount - 1,\n facetSettings\n );\n const outerWidth = chartWidth + padding.left + padding.right;\n const outerHeight = chartHeight + padding.top + padding.bottom;\n res[key] = {\n left: currentLeft,\n top: currentTop,\n chartEdgeSides,\n padding,\n inner: {width: chartWidth, height: chartHeight},\n outer: {width: outerWidth, height: outerHeight},\n };\n currentLeft += outerWidth;\n if (currentColumn === this.columnsCount - 1) {\n currentLeft = 0;\n currentTop += outerHeight;\n }\n return res;\n }, {});\n\n const chartsWidth = Math.max(\n ...facetKeys.map(key => this.chartsDimensions[key].outer.width + this.chartsDimensions[key].left)\n );\n const chartsHeight = Math.max(\n ...facetKeys.map(key => this.chartsDimensions[key].outer.height + this.chartsDimensions[key].top)\n );\n this.chartSizes.chartsWidth = chartsWidth;\n this.chartSizes.chartsHeight = chartsHeight;\n }\n\n updateViewport(\n facetKeys: string[],\n facetSettings: HistogramSettingsImpl['facetSettings'],\n xAxis: HistogramSettingsImpl['chartSettings']['xAxis'],\n yAxis: HistogramSettingsImpl['chartSettings']['yAxis'],\n histogramDataByFacets: Record<string, GroupedHistogramData>,\n size: HistogramSettingsImpl['chartSettings']['size'],\n groupingStack: HistogramSettingsImpl['groupingStack'],\n ) {\n const facetCount = facetKeys.length;\n const maxNRows = Math.min(facetSettings.nRows ?? facetCount, facetCount);\n const maxNCols = Math.min(facetSettings.nCols ?? facetCount, facetCount);\n // Use columns/rows count from settings if some of them defined, else make 1 column\n this.columnsCount = facetSettings.nRows ? Math.ceil(facetCount / maxNRows) : maxNCols;\n this.rowsCount = Math.ceil(facetCount / this.columnsCount);\n\n let [minXAll, maxXAll] = [Infinity, -Infinity];\n let maxYAll = -Infinity;\n const histogramExtentsByKeys = facetKeys.reduce((res: Record<string, Record<string, number>>, key) => {\n const histogramData = histogramDataByFacets[key];\n const {minX, maxX, maxCount, maxCountFromGroups} = histogramData;\n minXAll = Math.min(minXAll, minX);\n maxXAll = Math.max(maxXAll, maxX);\n maxYAll = Math.max(maxYAll, groupingStack === 'vertical' ? maxCount : maxCountFromGroups);\n res[key] = {minX, maxX, maxY: groupingStack === 'vertical' ? maxCount : maxCountFromGroups};\n return res;\n }, {});\n\n facetKeys.forEach(key => {\n const scaleX: ChartScales['x'] = xAxis.scale === 'log' ? scaleSymlog() : scaleLinear();\n\n const extents = histogramExtentsByKeys[key];\n const minX = facetSettings.sharedX ? minXAll : extents.minX;\n const maxX = facetSettings.sharedX ? maxXAll : extents.maxX;\n\n (scaleX.domain([minX, maxX]) as ChartScales['x']).range([0, this.chartSizes.chartWidth]);\n this.scales.x[key] = scaleX;\n });\n facetKeys.forEach(key => {\n const scaleY = yAxis.scale === 'log' ? scaleSymlog() : scaleLinear();\n const extents = histogramExtentsByKeys[key];\n\n const minY = 0;\n const maxY = facetSettings.sharedY ? maxYAll : extents.maxY;\n\n const rangeV = [this.chartSizes.chartHeight, 0];\n // supporting scale, it needs to add offsets of fixed size in pixels to general scale Y\n const tempY: ChartScales['y'] = (scaleY.copy().domain([minY, maxY]) as ChartScales['y']).range([\n this.chartSizes.chartHeight,\n size.innerOffset,\n ]) as ChartScales['y'];\n (scaleY.domain([tempY.invert(this.chartSizes.chartHeight), tempY.invert(0)]) as ChartScales['y']).range(\n rangeV\n );\n this.scales.y[key] = scaleY;\n });\n }\n\n updateCaptionsSize(\n xAxis: HistogramSettingsImpl['chartSettings']['xAxis'],\n yAxis: HistogramSettingsImpl['chartSettings']['yAxis']\n ) {\n const textMeasurer = new TextMeasurer('600 14px Arial');\n\n let maxYTick = 0;\n\n function getMaxTickWidth(ticks: string[]) {\n return Math.max(...ticks.map(key => textMeasurer.getTextWidth(key)));\n }\n\n if (!yAxis.hiddenLabels) {\n Object.values(this.scales.y).forEach(scale => {\n const {ticks, format} = getTicksAndFormat(scale as ScaleLogarithmic<number, number>, false);\n maxYTick = Math.max(maxYTick, getMaxTickWidth(ticks.map(format)));\n });\n }\n this.captionsSizes = {\n xAxisCaptionsWidth: xAxis.hiddenLabels ? 0 : 20,\n yAxisCaptionsWidth: maxYTick,\n };\n }\n\n createMainTitle(facetKeys: string[], title: HistogramSettingsImpl['chartSettings']['title']) {\n const firstChart = this.chartsDimensions[facetKeys[0]];\n const lastChart = this.chartsDimensions[facetKeys[facetKeys.length - 1]];\n\n this.mainTitle = splitTextByWidth(\n title.name,\n this.chartSizes.chartsWidth - firstChart.padding.left - lastChart.padding.right,\n 20\n );\n }\n\n createFacetTitles(facetKeys: string[], facetLabels: string[][]) {\n this.facetTitles = facetKeys.reduce((res: Record<string, string[]>, key, idx) => {\n if (facetLabels[idx].length === 1 && facetLabels[idx][0] === 'null') {\n res[key] = [];\n } else {\n res[key] = splitTextByWidth(facetLabels[idx].join(', '), this.chartSizes.chartWidth, 14);\n }\n return res;\n }, {});\n }\n\n updateLegendSize(\n legend: HistogramSettingsImpl['chartSettings']['legend'],\n legendInfo: HistogramLegendInfo,\n grouping: ColumnName | null,\n layers: HistogramLayer[]\n ) {\n if (!legend.show) {\n this.legend = {width: 0, height: 0, items: []};\n return;\n }\n\n const legendItems: LegendItem[] = [];\n const emptySizes = {width:0, height:0, left:0, top: 0};\n\n layers.forEach(layer => {\n if (isInheritedAes(layer.aes.fillColor) && grouping) {\n const columnId = layer.aes.fillColor.value;\n const info = legendInfo[grouping.value];\n const title = grouping.label ?? grouping.value;\n const scale:ScaleOrdinal<string, string> = scaleOrdinal<string, string>()\n .domain(info.values)\n .range(info.values.map(value => info.aesMap[value].fillColor as string));\n legendItems.push({...emptySizes, id: columnId, type: 'discreteColor', title, scale, values: info.values, labels: info.labels});\n }\n });\n\n if (!legendItems.length) {\n this.legend = {width: 0, height: 0, items: []};\n return;\n }\n\n const items = arrangeLegendParts(legendItems, this.chartSizes.chartHeight);\n\n const lastItem = items[items.length - 1];\n const legendWidth = lastItem.left + lastItem.width + LEGEND_OFFSET;\n const legendHeight = this.chartSizes.chartHeight;\n\n this.legend = {\n width: legendWidth,\n height: legendHeight,\n items,\n };\n }\n\n updateMargins(size:HistogramSettingsImpl['chartSettings']['size']) {\n const titleTextHeight = TITLE_LINE_HEIGHT * this.mainTitle.length;\n const titleHeight = titleTextHeight > 0 ? titleTextHeight + TITLE_MARGIN * 2 : 0;\n\n const minMargin = size.outerOffset;\n\n this.margins = {\n top: Math.max(titleHeight, minMargin),\n bottom: minMargin,\n left: minMargin,\n right: this.legend.width + minMargin,\n };\n this.chartSizes.totalWidth = this.margins.left + this.chartSizes.chartsWidth + this.margins.right;\n this.chartSizes.totalHeight = this.margins.top + this.chartSizes.chartsHeight + this.margins.bottom;\n }\n\n render(\n settingsId: string,\n chartSettings: HistogramSettingsImpl['chartSettings'],\n facetSettings: HistogramSettingsImpl['facetSettings'],\n facetKeys: string[],\n facetLabels: string[][],\n histogramDataByFacets: Record<string, GroupedHistogramData>,\n legendInfo: HistogramLegendInfo,\n layers: HistogramLayer[],\n inheritedAes: HistogramSettingsImpl['inheritedAes'],\n grouping: ColumnName | null,\n groupingStack: HistogramSettingsImpl['groupingStack'],\n groupingDirection: HistogramSettingsImpl['groupingDirection'],\n onTooltipHintSwitch: (v:boolean) => void,\n ) {\n const {xAxis, yAxis, size, title} = chartSettings;\n this.updateChartSizes(size);\n this.updateViewport(facetKeys, facetSettings, xAxis, yAxis, histogramDataByFacets, size, groupingStack);\n this.updateCaptionsSize(xAxis, yAxis);\n this.createFacetTitles(facetKeys, facetLabels);\n this.updateChartDimensions(facetKeys, facetSettings, xAxis, yAxis);\n this.createMainTitle(facetKeys, title);\n this.updateLegendSize(chartSettings.legend, legendInfo, grouping, layers);\n this.updateMargins(size);\n const minHeight = facetKeys.reduce((v, key) => {\n return Math.min(v, histogramDataByFacets[key].minX);\n }, Infinity);\n const maxHeight = facetKeys.reduce((v, key) => {\n return Math.max(v, histogramDataByFacets[key].maxX);\n }, -Infinity);\n const component = (\n <ChartsGroup\n settingsId={settingsId}\n chartSettings={chartSettings}\n facetKeys={facetKeys}\n facetSettings={facetSettings}\n chartSizes={this.chartSizes}\n chartsDimensions={this.chartsDimensions}\n scales={this.scales}\n columnsCount={this.columnsCount}\n margins={this.margins}\n mainTitle={this.mainTitle}\n facetTitles={this.facetTitles}\n captionsSizes={this.captionsSizes}\n histogramDataByFacets={histogramDataByFacets}\n layers={layers}\n aesColorGetter={createAesGetter(inheritedAes, 'fillColor', [minHeight, maxHeight])}\n groupingDirection={groupingDirection}\n groupingStack={groupingStack}\n groupingLabels={grouping ? legendInfo[grouping.value].labels : {}}\n legend={this.legend}\n onTooltipHintSwitch={onTooltipHintSwitch}\n />\n );\n this.component = component;\n this.reactRoot?.render(component);\n }\n\n renderError(message: string) {\n this.reactRoot?.render(<Error message={message} />);\n }\n}\n\nexport default ChartRenderer;\n"],"names":["getChartEdgeSides","index","facetsCount","columnsCount","rowsCount","chartSides","calculatePaddings","xAxis","yAxis","captionsSizes","currentRowFacetKeys","facetTitles","chartEdgeSides","lastInRow","facetSettings","needLeftAxis","needBottomAxis","needBottomAxisTitle","yCaptions","yTicks","DEFAULT_TICKS_SIZE","TICK_OFFSET","xCaptions","xTicks","xAxisTitle","TITLE_LINE","leftAxisElements","bottomAxisElements","facetTitlesLinesCount","key","MIN_PADDING","FACET_TITLE_OFFSET","FACET_TITLE_LINE","getFacetRows","facetKeys","nRows","nColumns","result","i","getRowColumn","idx","row","column","isInheritedAes","v","isContinuousAes","createAesGetter","aesData","field","defaultDomain","aesItem","height","domain","range","type","scale","getContinuousColorScale","columnId","mapping","_a","DEFAULT_COMMON_AES","ChartRenderer","__publicField","jsx","Fragment","MIN_MARGIN","DEFAULT_WIDTH","DEFAULT_HEIGHT","scaleLinear","node","createRoot","size","chartWidth","chartHeight","currentLeft","currentTop","res","currentRow","currentColumn","padding","outerWidth","outerHeight","chartsWidth","chartsHeight","histogramDataByFacets","groupingStack","facetCount","maxNRows","maxNCols","minXAll","maxXAll","maxYAll","histogramExtentsByKeys","histogramData","minX","maxX","maxCount","maxCountFromGroups","scaleX","scaleSymlog","extents","scaleY","minY","maxY","rangeV","tempY","textMeasurer","TextMeasurer","maxYTick","getMaxTickWidth","ticks","format","getTicksAndFormat","title","firstChart","lastChart","splitTextByWidth","facetLabels","legend","legendInfo","grouping","layers","legendItems","emptySizes","layer","info","scaleOrdinal","value","items","arrangeLegendParts","lastItem","legendWidth","LEGEND_OFFSET","legendHeight","titleTextHeight","TITLE_LINE_HEIGHT","titleHeight","TITLE_MARGIN","minMargin","settingsId","chartSettings","inheritedAes","groupingDirection","onTooltipHintSwitch","minHeight","maxHeight","component","ChartsGroup","message","Error"],"mappings":"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"}
1
+ {"version":3,"file":"ChartRenderer.js","sources":["../../src/histogram/ChartRenderer.tsx"],"sourcesContent":["import type { ScaleLogarithmic, ScaleOrdinal } from 'd3-scale';\nimport { scaleLinear, scaleOrdinal, scaleSymlog } from 'd3-scale';\nimport type { ReactElement } from 'react';\nimport type { Root } from 'react-dom/client';\nimport { createRoot } from 'react-dom/client';\nimport { Error } from '../common/Error';\nimport type { LegendData, LegendItem } from '../common/types';\nimport { DataFrameProvider } from '../common/useDataFrame';\nimport { DEFAULT_HEIGHT, DEFAULT_WIDTH, TITLE_LINE_HEIGHT, TITLE_MARGIN } from '../constants';\nimport type { DataFrame, RowIndex } from '../DataFrame';\nimport { splitTextByWidth } from '../discrete/utils';\nimport { DEFAULT_COMMON_AES, LEGEND_OFFSET } from '../scatterplot/constants';\nimport { getTicksAndFormat } from '../scatterplot/utils/getTicksAndFormat';\nimport type { AesItem, ColumnName, ContinuousAesHistogram, InheritAesHistogram } from '../types';\nimport { arrangeLegendParts } from '../utils/arrangeLegendParts';\nimport { getContinuousColorScale } from '../utils/getContinuousColorScale';\nimport { TextMeasurer } from '../utils/TextMeasurer/TextMeasurer';\nimport { ChartsGroup } from './components/ChartsGroup';\nimport type { CaptionsSizes, ChartDimensionsData, ChartScales, ChartSizes, ChartsScales, HistogramLegendInfo, Margins } from './components/types';\nimport {\n DEFAULT_TICKS_SIZE, FACET_TITLE_LINE, FACET_TITLE_OFFSET,\n MIN_MARGIN,\n MIN_PADDING,\n TICK_OFFSET,\n TITLE_LINE\n} from './constants';\nimport type { GroupedHistogramData } from './getHistogramData';\nimport type { HistogramLayer, HistogramSettingsImpl } from './HistogramSettingsImpl';\n\nfunction getChartEdgeSides(index: number, facetsCount: number, columnsCount: number, rowsCount: number) {\n const chartSides: ('left' | 'right' | 'top' | 'bottom')[] = [];\n if (index % columnsCount === columnsCount - 1) {\n chartSides.push('right');\n }\n if (index % columnsCount === 0) {\n chartSides.push('left');\n }\n if (index < columnsCount) {\n chartSides.push('top');\n }\n if (\n Math.ceil((index + 1) / columnsCount) === rowsCount ||\n (Math.ceil((index + 1) / columnsCount) === rowsCount - 1 &&\n index % columnsCount > (facetsCount - 1) % columnsCount)\n ) {\n chartSides.push('bottom');\n }\n return chartSides;\n}\n\nfunction calculatePaddings(\n xAxis: HistogramSettingsImpl['chartSettings']['xAxis'],\n yAxis: HistogramSettingsImpl['chartSettings']['yAxis'],\n captionsSizes: CaptionsSizes,\n currentRowFacetKeys: string[],\n facetTitles: Record<string, string[]>,\n chartEdgeSides: ('left' | 'right' | 'top' | 'bottom')[],\n lastInRow: boolean,\n facetSettings?: HistogramSettingsImpl['facetSettings']\n) {\n const needLeftAxis = chartEdgeSides.includes('left') || !facetSettings?.sharedY;\n const needBottomAxis = chartEdgeSides.includes('bottom') || !facetSettings?.sharedX;\n const needBottomAxisTitle = chartEdgeSides.includes('bottom') && xAxis.title !== '';\n\n const yCaptions = captionsSizes.yAxisCaptionsWidth;\n const yTicks = (yAxis.showTicks ? DEFAULT_TICKS_SIZE : 0) + (yAxis.hiddenLabels ? 0 : TICK_OFFSET);\n\n const xCaptions = captionsSizes.xAxisCaptionsWidth;\n const xTicks = (xAxis.showTicks ? DEFAULT_TICKS_SIZE : 0) + (xAxis.hiddenLabels ? 0 : TICK_OFFSET);\n const xAxisTitle = needBottomAxisTitle ? TITLE_LINE : 0;\n\n const leftAxisElements = yCaptions + yTicks;\n const bottomAxisElements = xTicks + xCaptions + xAxisTitle;\n\n const facetTitlesLinesCount = Math.max(...currentRowFacetKeys.map(key => facetTitles[key].length));\n return {\n left: needLeftAxis ? leftAxisElements : MIN_PADDING,\n top: facetTitlesLinesCount === 0 ? 0 : FACET_TITLE_OFFSET * 2 + facetTitlesLinesCount * FACET_TITLE_LINE,\n bottom: needBottomAxis ? bottomAxisElements : MIN_PADDING,\n right: lastInRow ? 0 : MIN_PADDING,\n };\n}\n\n// facet keys grouped by rows\nfunction getFacetRows(facetKeys: string[], nRows: number, nColumns: number): string[][] {\n const result: string[][] = [];\n for (let i = 0; i < nRows; i++) {\n result.push(facetKeys.slice(i * nColumns, i * nColumns + nColumns));\n }\n return result;\n}\n\nfunction getRowColumn(idx: number, columnsCount: number) {\n const row = Math.floor(idx / columnsCount);\n const column = idx - row * columnsCount;\n return [row, column];\n}\n\nfunction isInheritedAes(v: InheritAesHistogram | unknown): v is InheritAesHistogram {\n return typeof v === 'object' && v !== null && 'type' in v && 'value' in v && v.type === 'grouping';\n}\nfunction isContinuousAes(v: ContinuousAesHistogram | unknown): v is ContinuousAesHistogram {\n return typeof v === 'object' && v !== null && 'range' in v;\n}\nfunction createAesGetter(dataFrame: DataFrame, aesData: HistogramSettingsImpl['inheritedAes'], field: keyof AesItem, defaultDomain:number[]) {\n return function (aesItem: string | InheritAesHistogram | ContinuousAesHistogram, idx: RowIndex, height:number) {\n if (isContinuousAes(aesItem)) {\n const {domain = defaultDomain, range, type = 'linear'} = aesItem;\n const scale = getContinuousColorScale(range as string[], domain, type);\n scale.clamp(true);\n return scale(height);\n }\n if (isInheritedAes(aesItem)) {\n const columnId = aesItem.value;\n const mapping = aesData[columnId];\n return (mapping?.[String(dataFrame.getColumnValue(columnId, idx))] ?? DEFAULT_COMMON_AES)?.[field] as string;\n }\n return aesItem;\n };\n}\n\nclass ChartRenderer {\n reactRoot: Root | null = null;\n parentNode: HTMLElement | null = null;\n rootNode: HTMLElement | null = null;\n component: ReactElement = (<></>);\n margins: Margins = {\n top: MIN_MARGIN,\n bottom: MIN_MARGIN,\n left: MIN_MARGIN,\n right: MIN_MARGIN,\n };\n chartsDimensions: Record<string, ChartDimensionsData> = {};\n chartSizes: ChartSizes = {\n chartWidth: DEFAULT_WIDTH, // width of single chart\n chartHeight: DEFAULT_HEIGHT, // height of single chart\n chartsWidth: DEFAULT_WIDTH, // width of all charts in charts row\n chartsHeight: DEFAULT_HEIGHT, // width of all charts in charts column, without axes\n totalWidth: DEFAULT_WIDTH, // width of all charts in charts row, plus left axis, plus legend\n totalHeight: DEFAULT_HEIGHT, // width of all charts in charts height, plus bottom axis, plus top title\n };\n columnsCount = 1;\n rowsCount = 1;\n scales: ChartsScales = {\n x: {null: scaleLinear().domain([0, 10]).range([0, DEFAULT_WIDTH])},\n y: {null: scaleLinear().domain([0, 10]).range([DEFAULT_HEIGHT, 0])},\n };\n captionsSizes: CaptionsSizes = {\n xAxisCaptionsWidth: 30,\n yAxisCaptionsWidth: 100,\n };\n facetTitles: Record<string, string[]> = {}; // can be multiline\n mainTitle: string[] = []; // can be multiline\n legend: LegendData = {\n width: 0,\n height: 0,\n items: [],\n };\n\n clear() {\n if (this.parentNode && this.rootNode) {\n this.parentNode?.removeChild(this.rootNode);\n this.parentNode = null;\n this.rootNode = null;\n }\n // timeout to avoid trying to unmount during rendering\n setTimeout(() => {\n this.reactRoot?.unmount();\n this.reactRoot = null;\n });\n }\n\n init(node: HTMLElement) {\n if (this.parentNode === null) {\n this.parentNode = node;\n this.rootNode = document.createElement('div');\n this.parentNode.appendChild(this.rootNode);\n this.reactRoot = createRoot(this.rootNode);\n }\n }\n\n updateChartSizes(size: HistogramSettingsImpl['chartSettings']['size']) {\n this.chartSizes.chartWidth = size.width;\n this.chartSizes.chartHeight = size.height;\n }\n\n updateChartDimensions(\n facetKeys: string[],\n facetSettings: HistogramSettingsImpl['facetSettings'],\n xAxis: HistogramSettingsImpl['chartSettings']['xAxis'],\n yAxis: HistogramSettingsImpl['chartSettings']['yAxis']\n ) {\n const {chartWidth, chartHeight} = this.chartSizes;\n let currentLeft = 0;\n let currentTop = 0;\n this.chartsDimensions = facetKeys.reduce((res: Record<string, ChartDimensionsData>, key: string, index) => {\n const [currentRow, currentColumn] = getRowColumn(index, this.columnsCount);\n const chartEdgeSides = getChartEdgeSides(index, facetKeys.length, this.columnsCount, this.rowsCount);\n const padding = calculatePaddings(\n xAxis,\n yAxis,\n this.captionsSizes,\n getFacetRows(facetKeys, this.rowsCount, this.columnsCount)[currentRow],\n this.facetTitles,\n chartEdgeSides,\n currentColumn === this.columnsCount - 1,\n facetSettings\n );\n const outerWidth = chartWidth + padding.left + padding.right;\n const outerHeight = chartHeight + padding.top + padding.bottom;\n res[key] = {\n left: currentLeft,\n top: currentTop,\n chartEdgeSides,\n padding,\n inner: {width: chartWidth, height: chartHeight},\n outer: {width: outerWidth, height: outerHeight},\n };\n currentLeft += outerWidth;\n if (currentColumn === this.columnsCount - 1) {\n currentLeft = 0;\n currentTop += outerHeight;\n }\n return res;\n }, {});\n\n const chartsWidth = Math.max(\n ...facetKeys.map(key => this.chartsDimensions[key].outer.width + this.chartsDimensions[key].left)\n );\n const chartsHeight = Math.max(\n ...facetKeys.map(key => this.chartsDimensions[key].outer.height + this.chartsDimensions[key].top)\n );\n this.chartSizes.chartsWidth = chartsWidth;\n this.chartSizes.chartsHeight = chartsHeight;\n }\n\n updateViewport(\n facetKeys: string[],\n facetSettings: HistogramSettingsImpl['facetSettings'],\n xAxis: HistogramSettingsImpl['chartSettings']['xAxis'],\n yAxis: HistogramSettingsImpl['chartSettings']['yAxis'],\n histogramDataByFacets: Record<string, GroupedHistogramData>,\n size: HistogramSettingsImpl['chartSettings']['size'],\n groupingStack: HistogramSettingsImpl['groupingStack'],\n ) {\n const facetCount = facetKeys.length;\n const maxNRows = Math.min(facetSettings.nRows ?? facetCount, facetCount);\n const maxNCols = Math.min(facetSettings.nCols ?? facetCount, facetCount);\n // Use columns/rows count from settings if some of them defined, else make 1 column\n this.columnsCount = facetSettings.nRows ? Math.ceil(facetCount / maxNRows) : maxNCols;\n this.rowsCount = Math.ceil(facetCount / this.columnsCount);\n\n let [minXAll, maxXAll] = [Infinity, -Infinity];\n let maxYAll = -Infinity;\n const histogramExtentsByKeys = facetKeys.reduce((res: Record<string, Record<string, number>>, key) => {\n const histogramData = histogramDataByFacets[key];\n const {minX, maxX, maxCount, maxCountFromGroups} = histogramData;\n minXAll = Math.min(minXAll, minX);\n maxXAll = Math.max(maxXAll, maxX);\n maxYAll = Math.max(maxYAll, groupingStack === 'vertical' ? maxCount : maxCountFromGroups);\n res[key] = {minX, maxX, maxY: groupingStack === 'vertical' ? maxCount : maxCountFromGroups};\n return res;\n }, {});\n\n facetKeys.forEach(key => {\n const scaleX: ChartScales['x'] = xAxis.scale === 'log' ? scaleSymlog() : scaleLinear();\n\n const extents = histogramExtentsByKeys[key];\n const minX = facetSettings.sharedX ? minXAll : extents.minX;\n const maxX = facetSettings.sharedX ? maxXAll : extents.maxX;\n\n (scaleX.domain([minX, maxX]) as ChartScales['x']).range([0, this.chartSizes.chartWidth]);\n this.scales.x[key] = scaleX;\n });\n facetKeys.forEach(key => {\n const scaleY = yAxis.scale === 'log' ? scaleSymlog() : scaleLinear();\n const extents = histogramExtentsByKeys[key];\n\n const minY = 0;\n const maxY = facetSettings.sharedY ? maxYAll : extents.maxY;\n\n const rangeV = [this.chartSizes.chartHeight, 0];\n // supporting scale, it needs to add offsets of fixed size in pixels to general scale Y\n const tempY: ChartScales['y'] = (scaleY.copy().domain([minY, maxY]) as ChartScales['y']).range([\n this.chartSizes.chartHeight,\n size.innerOffset,\n ]) as ChartScales['y'];\n (scaleY.domain([tempY.invert(this.chartSizes.chartHeight), tempY.invert(0)]) as ChartScales['y']).range(\n rangeV\n );\n this.scales.y[key] = scaleY;\n });\n }\n\n updateCaptionsSize(\n xAxis: HistogramSettingsImpl['chartSettings']['xAxis'],\n yAxis: HistogramSettingsImpl['chartSettings']['yAxis']\n ) {\n const textMeasurer = new TextMeasurer('600 14px Arial');\n\n let maxYTick = 0;\n\n function getMaxTickWidth(ticks: string[]) {\n return Math.max(...ticks.map(key => textMeasurer.getTextWidth(key)));\n }\n\n if (!yAxis.hiddenLabels) {\n Object.values(this.scales.y).forEach(scale => {\n const {ticks, format} = getTicksAndFormat(scale as ScaleLogarithmic<number, number>, false);\n maxYTick = Math.max(maxYTick, getMaxTickWidth(ticks.map(format)));\n });\n }\n this.captionsSizes = {\n xAxisCaptionsWidth: xAxis.hiddenLabels ? 0 : 20,\n yAxisCaptionsWidth: maxYTick,\n };\n }\n\n createMainTitle(facetKeys: string[], title: HistogramSettingsImpl['chartSettings']['title']) {\n const firstChart = this.chartsDimensions[facetKeys[0]];\n const lastChart = this.chartsDimensions[facetKeys[facetKeys.length - 1]];\n\n this.mainTitle = splitTextByWidth(\n title.name,\n this.chartSizes.chartsWidth - firstChart.padding.left - lastChart.padding.right,\n 20\n );\n }\n\n createFacetTitles(facetKeys: string[], facetLabels: string[][]) {\n this.facetTitles = facetKeys.reduce((res: Record<string, string[]>, key, idx) => {\n if (facetLabels[idx].length === 1 && facetLabels[idx][0] === 'null') {\n res[key] = [];\n } else {\n res[key] = splitTextByWidth(facetLabels[idx].join(', '), this.chartSizes.chartWidth, 14);\n }\n return res;\n }, {});\n }\n\n updateLegendSize(\n legend: HistogramSettingsImpl['chartSettings']['legend'],\n legendInfo: HistogramLegendInfo,\n grouping: ColumnName | null,\n layers: HistogramLayer[]\n ) {\n if (!legend.show) {\n this.legend = {width: 0, height: 0, items: []};\n return;\n }\n\n const legendItems: LegendItem[] = [];\n const emptySizes = {width:0, height:0, left:0, top: 0};\n\n layers.forEach(layer => {\n if (isInheritedAes(layer.aes.fillColor) && grouping) {\n const columnId = layer.aes.fillColor.value;\n const info = legendInfo[grouping.value];\n const title = grouping.label ?? grouping.value;\n const scale:ScaleOrdinal<string, string> = scaleOrdinal<string, string>()\n .domain(info.values)\n .range(info.values.map(value => info.aesMap[value].fillColor as string));\n legendItems.push({...emptySizes, id: columnId, type: 'discreteColor', title, scale, values: info.values, labels: info.labels});\n }\n });\n\n if (!legendItems.length) {\n this.legend = {width: 0, height: 0, items: []};\n return;\n }\n\n const items = arrangeLegendParts(legendItems, this.chartSizes.chartHeight);\n\n const lastItem = items[items.length - 1];\n const legendWidth = lastItem.left + lastItem.width + LEGEND_OFFSET;\n const legendHeight = this.chartSizes.chartHeight;\n\n this.legend = {\n width: legendWidth,\n height: legendHeight,\n items,\n };\n }\n\n updateMargins(size:HistogramSettingsImpl['chartSettings']['size']) {\n const titleTextHeight = TITLE_LINE_HEIGHT * this.mainTitle.length;\n const titleHeight = titleTextHeight > 0 ? titleTextHeight + TITLE_MARGIN * 2 : 0;\n\n const minMargin = size.outerOffset;\n\n this.margins = {\n top: Math.max(titleHeight, minMargin),\n bottom: minMargin,\n left: minMargin,\n right: this.legend.width + minMargin,\n };\n this.chartSizes.totalWidth = this.margins.left + this.chartSizes.chartsWidth + this.margins.right;\n this.chartSizes.totalHeight = this.margins.top + this.chartSizes.chartsHeight + this.margins.bottom;\n }\n\n render(\n dataFrame: DataFrame,\n settingsId: string,\n chartSettings: HistogramSettingsImpl['chartSettings'],\n facetSettings: HistogramSettingsImpl['facetSettings'],\n facetKeys: string[],\n facetLabels: string[][],\n histogramDataByFacets: Record<string, GroupedHistogramData>,\n legendInfo: HistogramLegendInfo,\n layers: HistogramLayer[],\n inheritedAes: HistogramSettingsImpl['inheritedAes'],\n grouping: ColumnName | null,\n groupingStack: HistogramSettingsImpl['groupingStack'],\n groupingDirection: HistogramSettingsImpl['groupingDirection'],\n onTooltipHintSwitch: (v:boolean) => void,\n ) {\n const {xAxis, yAxis, size, title} = chartSettings;\n this.updateChartSizes(size);\n this.updateViewport(facetKeys, facetSettings, xAxis, yAxis, histogramDataByFacets, size, groupingStack);\n this.updateCaptionsSize(xAxis, yAxis);\n this.createFacetTitles(facetKeys, facetLabels);\n this.updateChartDimensions(facetKeys, facetSettings, xAxis, yAxis);\n this.createMainTitle(facetKeys, title);\n this.updateLegendSize(chartSettings.legend, legendInfo, grouping, layers);\n this.updateMargins(size);\n const minHeight = facetKeys.reduce((v, key) => {\n return Math.min(v, histogramDataByFacets[key].minX);\n }, Infinity);\n const maxHeight = facetKeys.reduce((v, key) => {\n return Math.max(v, histogramDataByFacets[key].maxX);\n }, -Infinity);\n const component = (\n <DataFrameProvider dataFrame={dataFrame}>\n <ChartsGroup\n settingsId={settingsId}\n chartSettings={chartSettings}\n facetKeys={facetKeys}\n facetSettings={facetSettings}\n chartSizes={this.chartSizes}\n chartsDimensions={this.chartsDimensions}\n scales={this.scales}\n columnsCount={this.columnsCount}\n margins={this.margins}\n mainTitle={this.mainTitle}\n facetTitles={this.facetTitles}\n captionsSizes={this.captionsSizes}\n histogramDataByFacets={histogramDataByFacets}\n layers={layers}\n aesColorGetter={createAesGetter(dataFrame, inheritedAes, 'fillColor', [minHeight, maxHeight])}\n groupingDirection={groupingDirection}\n groupingStack={groupingStack}\n groupingLabels={grouping ? legendInfo[grouping.value].labels : {}}\n legend={this.legend}\n onTooltipHintSwitch={onTooltipHintSwitch}\n />\n </DataFrameProvider>\n );\n this.component = component;\n this.reactRoot?.render(component);\n }\n\n renderError(message: string) {\n this.reactRoot?.render(<Error message={message} />);\n }\n}\n\nexport default ChartRenderer;\n"],"names":["getChartEdgeSides","index","facetsCount","columnsCount","rowsCount","chartSides","calculatePaddings","xAxis","yAxis","captionsSizes","currentRowFacetKeys","facetTitles","chartEdgeSides","lastInRow","facetSettings","needLeftAxis","needBottomAxis","needBottomAxisTitle","yCaptions","yTicks","DEFAULT_TICKS_SIZE","TICK_OFFSET","xCaptions","xTicks","xAxisTitle","TITLE_LINE","leftAxisElements","bottomAxisElements","facetTitlesLinesCount","key","MIN_PADDING","FACET_TITLE_OFFSET","FACET_TITLE_LINE","getFacetRows","facetKeys","nRows","nColumns","result","i","getRowColumn","idx","row","column","isInheritedAes","v","isContinuousAes","createAesGetter","dataFrame","aesData","field","defaultDomain","aesItem","height","domain","range","type","scale","getContinuousColorScale","columnId","mapping","_a","DEFAULT_COMMON_AES","ChartRenderer","__publicField","jsx","Fragment","MIN_MARGIN","DEFAULT_WIDTH","DEFAULT_HEIGHT","scaleLinear","node","createRoot","size","chartWidth","chartHeight","currentLeft","currentTop","res","currentRow","currentColumn","padding","outerWidth","outerHeight","chartsWidth","chartsHeight","histogramDataByFacets","groupingStack","facetCount","maxNRows","maxNCols","minXAll","maxXAll","maxYAll","histogramExtentsByKeys","histogramData","minX","maxX","maxCount","maxCountFromGroups","scaleX","scaleSymlog","extents","scaleY","minY","maxY","rangeV","tempY","textMeasurer","TextMeasurer","maxYTick","getMaxTickWidth","ticks","format","getTicksAndFormat","title","firstChart","lastChart","splitTextByWidth","facetLabels","legend","legendInfo","grouping","layers","legendItems","emptySizes","layer","info","scaleOrdinal","value","items","arrangeLegendParts","lastItem","legendWidth","LEGEND_OFFSET","legendHeight","titleTextHeight","TITLE_LINE_HEIGHT","titleHeight","TITLE_MARGIN","minMargin","settingsId","chartSettings","inheritedAes","groupingDirection","onTooltipHintSwitch","minHeight","maxHeight","component","DataFrameProvider","ChartsGroup","message","Error"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ColumnName, FrameType, HistogramSettings, InheritAesHistogram, LegendPosition, BinsLayer as OuterBinsLayer, BinsLineLayer as OuterLineLayer, SettingsInterface, TitlePosition, AesMap, ContinuousAesHistogram } from '../types';
1
+ import { ColumnName, FrameType, HistogramSettings, InheritAesHistogram, LegendPosition, BinsLayer as OuterBinsLayer, BinsLineLayer as OuterLineLayer, SettingsInterface, TitlePosition, AesRecord, ContinuousAesHistogram } from '../types';
2
2
  export declare class BinsLayer {
3
3
  readonly type = "bins";
4
4
  readonly aes: {
@@ -66,7 +66,7 @@ export declare class HistogramSettingsImpl implements SettingsInterface {
66
66
  position: LegendPosition;
67
67
  };
68
68
  };
69
- readonly inheritedAes: Record<string, AesMap>;
69
+ readonly inheritedAes: Record<string, AesRecord>;
70
70
  readonly layers: HistogramLayer[];
71
71
  constructor(settings: HistogramSettings);
72
72
  }