@milaboratories/miplots4 1.0.173 → 1.0.174

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 (400) hide show
  1. package/dist/AbstractChart.d.ts +1 -0
  2. package/dist/AbstractChart.d.ts.map +1 -0
  3. package/dist/DataFrame.d.ts +1 -0
  4. package/dist/DataFrame.d.ts.map +1 -0
  5. package/dist/MiPlots.d.ts +1 -0
  6. package/dist/MiPlots.d.ts.map +1 -0
  7. package/dist/bubble/BubbleSettingsImpl.d.ts +1 -0
  8. package/dist/bubble/BubbleSettingsImpl.d.ts.map +1 -0
  9. package/dist/bubble/ChartRenderer.d.ts +1 -0
  10. package/dist/bubble/ChartRenderer.d.ts.map +1 -0
  11. package/dist/bubble/components/AxisCaptions.d.ts +1 -0
  12. package/dist/bubble/components/AxisCaptions.d.ts.map +1 -0
  13. package/dist/bubble/components/Chart.d.ts +1 -0
  14. package/dist/bubble/components/Chart.d.ts.map +1 -0
  15. package/dist/bubble/components/ChartsGroup.d.ts +1 -0
  16. package/dist/bubble/components/ChartsGroup.d.ts.map +1 -0
  17. package/dist/bubble/components/types.d.ts +1 -0
  18. package/dist/bubble/components/types.d.ts.map +1 -0
  19. package/dist/bubble/constants.d.ts +1 -0
  20. package/dist/bubble/constants.d.ts.map +1 -0
  21. package/dist/bubble/getCellTooltip.d.ts +1 -0
  22. package/dist/bubble/getCellTooltip.d.ts.map +1 -0
  23. package/dist/bubble/getGroupedCellsData.d.ts +1 -0
  24. package/dist/bubble/getGroupedCellsData.d.ts.map +1 -0
  25. package/dist/bubble/index.d.ts +1 -0
  26. package/dist/bubble/index.d.ts.map +1 -0
  27. package/dist/bubble/utils/calculateCaptionTails.d.ts +1 -0
  28. package/dist/bubble/utils/calculateCaptionTails.d.ts.map +1 -0
  29. package/dist/bubble/utils/calculateChartSideElementSizes.d.ts +1 -0
  30. package/dist/bubble/utils/calculateChartSideElementSizes.d.ts.map +1 -0
  31. package/dist/bubble/utils/calculateSideElementsBBoxes.d.ts +1 -0
  32. package/dist/bubble/utils/calculateSideElementsBBoxes.d.ts.map +1 -0
  33. package/dist/bubble/utils/index.d.ts +1 -0
  34. package/dist/bubble/utils/index.d.ts.map +1 -0
  35. package/dist/common/BandAxis.d.ts +1 -0
  36. package/dist/common/BandAxis.d.ts.map +1 -0
  37. package/dist/common/ChartsTitle.d.ts +1 -0
  38. package/dist/common/ChartsTitle.d.ts.map +1 -0
  39. package/dist/common/ContinuousAxis.d.ts +1 -0
  40. package/dist/common/ContinuousAxis.d.ts.map +1 -0
  41. package/dist/common/ContinuousGrid.d.ts +1 -0
  42. package/dist/common/ContinuousGrid.d.ts.map +1 -0
  43. package/dist/common/Error.d.ts +1 -0
  44. package/dist/common/Error.d.ts.map +1 -0
  45. package/dist/common/ErrorBoundary.d.ts +1 -0
  46. package/dist/common/ErrorBoundary.d.ts.map +1 -0
  47. package/dist/common/Legend.d.ts +1 -0
  48. package/dist/common/Legend.d.ts.map +1 -0
  49. package/dist/common/Tooltip.d.ts +1 -0
  50. package/dist/common/Tooltip.d.ts.map +1 -0
  51. package/dist/common/fonts.d.ts +1 -0
  52. package/dist/common/fonts.d.ts.map +1 -0
  53. package/dist/common/types.d.ts +1 -0
  54. package/dist/common/types.d.ts.map +1 -0
  55. package/dist/common/useDataFrame.d.ts +1 -0
  56. package/dist/common/useDataFrame.d.ts.map +1 -0
  57. package/dist/constants.d.ts +1 -0
  58. package/dist/constants.d.ts.map +1 -0
  59. package/dist/dendro/ChartRenderer.d.ts +1 -0
  60. package/dist/dendro/ChartRenderer.d.ts.map +1 -0
  61. package/dist/dendro/DendroSettingsImpl.d.ts +1 -0
  62. package/dist/dendro/DendroSettingsImpl.d.ts.map +1 -0
  63. package/dist/dendro/components/Chart.d.ts +1 -0
  64. package/dist/dendro/components/Chart.d.ts.map +1 -0
  65. package/dist/dendro/components/Heatmap.d.ts +1 -0
  66. package/dist/dendro/components/Heatmap.d.ts.map +1 -0
  67. package/dist/dendro/components/Legend.d.ts +1 -0
  68. package/dist/dendro/components/Legend.d.ts.map +1 -0
  69. package/dist/dendro/components/LinksGroup.d.ts +1 -0
  70. package/dist/dendro/components/LinksGroup.d.ts.map +1 -0
  71. package/dist/dendro/components/NodesGroup.d.ts +1 -0
  72. package/dist/dendro/components/NodesGroup.d.ts.map +1 -0
  73. package/dist/dendro/components/types.d.ts +1 -0
  74. package/dist/dendro/components/types.d.ts.map +1 -0
  75. package/dist/dendro/constants.d.ts +1 -0
  76. package/dist/dendro/constants.d.ts.map +1 -0
  77. package/dist/dendro/getHeatmapData.d.ts +1 -0
  78. package/dist/dendro/getHeatmapData.d.ts.map +1 -0
  79. package/dist/dendro/getHierarchyData.d.ts +1 -0
  80. package/dist/dendro/getHierarchyData.d.ts.map +1 -0
  81. package/dist/dendro/index.d.ts +1 -0
  82. package/dist/dendro/index.d.ts.map +1 -0
  83. package/dist/discrete/ChartRenderer.d.ts +1 -0
  84. package/dist/discrete/ChartRenderer.d.ts.map +1 -0
  85. package/dist/discrete/DiscreteSettingsImpl.d.ts +1 -0
  86. package/dist/discrete/DiscreteSettingsImpl.d.ts.map +1 -0
  87. package/dist/discrete/components/Chart.d.ts +1 -0
  88. package/dist/discrete/components/Chart.d.ts.map +1 -0
  89. package/dist/discrete/components/ChartsGroup.d.ts +1 -0
  90. package/dist/discrete/components/ChartsGroup.d.ts.map +1 -0
  91. package/dist/discrete/components/Grid.d.ts +1 -0
  92. package/dist/discrete/components/Grid.d.ts.map +1 -0
  93. package/dist/discrete/components/NumberAxis.d.ts +1 -0
  94. package/dist/discrete/components/NumberAxis.d.ts.map +1 -0
  95. package/dist/discrete/components/layers/BarElement.d.ts +1 -0
  96. package/dist/discrete/components/layers/BarElement.d.ts.map +1 -0
  97. package/dist/discrete/components/layers/BinnedDotsElement.d.ts +1 -0
  98. package/dist/discrete/components/layers/BinnedDotsElement.d.ts.map +1 -0
  99. package/dist/discrete/components/layers/BoxElement.d.ts +1 -0
  100. package/dist/discrete/components/layers/BoxElement.d.ts.map +1 -0
  101. package/dist/discrete/components/layers/DotsGroupElement.d.ts +1 -0
  102. package/dist/discrete/components/layers/DotsGroupElement.d.ts.map +1 -0
  103. package/dist/discrete/components/layers/ErrorBarElement.d.ts +1 -0
  104. package/dist/discrete/components/layers/ErrorBarElement.d.ts.map +1 -0
  105. package/dist/discrete/components/layers/LineElement.d.ts +1 -0
  106. package/dist/discrete/components/layers/LineElement.d.ts.map +1 -0
  107. package/dist/discrete/components/layers/LogoElement.d.ts +1 -0
  108. package/dist/discrete/components/layers/LogoElement.d.ts.map +1 -0
  109. package/dist/discrete/components/layers/PairedPointsElement.d.ts +1 -0
  110. package/dist/discrete/components/layers/PairedPointsElement.d.ts.map +1 -0
  111. package/dist/discrete/components/layers/SinaElement.d.ts +1 -0
  112. package/dist/discrete/components/layers/SinaElement.d.ts.map +1 -0
  113. package/dist/discrete/components/layers/StackedAreaElement.d.ts +1 -0
  114. package/dist/discrete/components/layers/StackedAreaElement.d.ts.map +1 -0
  115. package/dist/discrete/components/layers/StackedBarElement.d.ts +1 -0
  116. package/dist/discrete/components/layers/StackedBarElement.d.ts.map +1 -0
  117. package/dist/discrete/components/layers/StatsPValue.d.ts +1 -0
  118. package/dist/discrete/components/layers/StatsPValue.d.ts.map +1 -0
  119. package/dist/discrete/components/layers/ViolinElement.d.ts +1 -0
  120. package/dist/discrete/components/layers/ViolinElement.d.ts.map +1 -0
  121. package/dist/discrete/components/layers/seqAlphabet.d.ts +1 -0
  122. package/dist/discrete/components/layers/seqAlphabet.d.ts.map +1 -0
  123. package/dist/discrete/components/types.d.ts +1 -0
  124. package/dist/discrete/components/types.d.ts.map +1 -0
  125. package/dist/discrete/constants.d.ts +1 -0
  126. package/dist/discrete/constants.d.ts.map +1 -0
  127. package/dist/discrete/index.d.ts +1 -0
  128. package/dist/discrete/index.d.ts.map +1 -0
  129. package/dist/discrete/index.js +130 -124
  130. package/dist/discrete/index.js.map +1 -1
  131. package/dist/discrete/layers/bar.d.ts +1 -0
  132. package/dist/discrete/layers/bar.d.ts.map +1 -0
  133. package/dist/discrete/layers/binnedDots.d.ts +1 -0
  134. package/dist/discrete/layers/binnedDots.d.ts.map +1 -0
  135. package/dist/discrete/layers/boxes.d.ts +1 -0
  136. package/dist/discrete/layers/boxes.d.ts.map +1 -0
  137. package/dist/discrete/layers/dots.d.ts +1 -0
  138. package/dist/discrete/layers/dots.d.ts.map +1 -0
  139. package/dist/discrete/layers/errorbars.d.ts +1 -0
  140. package/dist/discrete/layers/errorbars.d.ts.map +1 -0
  141. package/dist/discrete/layers/index.d.ts +1 -0
  142. package/dist/discrete/layers/index.d.ts.map +1 -0
  143. package/dist/discrete/layers/lines.d.ts +1 -0
  144. package/dist/discrete/layers/lines.d.ts.map +1 -0
  145. package/dist/discrete/layers/logo.d.ts +1 -0
  146. package/dist/discrete/layers/logo.d.ts.map +1 -0
  147. package/dist/discrete/layers/pairedPoints.d.ts +1 -0
  148. package/dist/discrete/layers/pairedPoints.d.ts.map +1 -0
  149. package/dist/discrete/layers/sina.d.ts +1 -0
  150. package/dist/discrete/layers/sina.d.ts.map +1 -0
  151. package/dist/discrete/layers/stackedArea.d.ts +1 -0
  152. package/dist/discrete/layers/stackedArea.d.ts.map +1 -0
  153. package/dist/discrete/layers/stackedBar.d.ts +1 -0
  154. package/dist/discrete/layers/stackedBar.d.ts.map +1 -0
  155. package/dist/discrete/layers/stats/MannWhitneyU.d.ts +1 -0
  156. package/dist/discrete/layers/stats/MannWhitneyU.d.ts.map +1 -0
  157. package/dist/discrete/layers/stats/index.d.ts +1 -0
  158. package/dist/discrete/layers/stats/index.d.ts.map +1 -0
  159. package/dist/discrete/layers/stats/pValueCalculation.d.ts +1 -0
  160. package/dist/discrete/layers/stats/pValueCalculation.d.ts.map +1 -0
  161. package/dist/discrete/layers/stats/pValueCorrection.d.ts +1 -0
  162. package/dist/discrete/layers/stats/pValueCorrection.d.ts.map +1 -0
  163. package/dist/discrete/layers/types.d.ts +1 -0
  164. package/dist/discrete/layers/types.d.ts.map +1 -0
  165. package/dist/discrete/layers/violins.d.ts +1 -0
  166. package/dist/discrete/layers/violins.d.ts.map +1 -0
  167. package/dist/discrete/utils/getChartStatsPadding.d.ts +1 -0
  168. package/dist/discrete/utils/getChartStatsPadding.d.ts.map +1 -0
  169. package/dist/discrete/utils/getFacetLabels.d.ts +1 -0
  170. package/dist/discrete/utils/getFacetLabels.d.ts.map +1 -0
  171. package/dist/discrete/utils/getFacetStringKey.d.ts +1 -0
  172. package/dist/discrete/utils/getFacetStringKey.d.ts.map +1 -0
  173. package/dist/discrete/utils/getOutliersBounds.d.ts +1 -0
  174. package/dist/discrete/utils/getOutliersBounds.d.ts.map +1 -0
  175. package/dist/discrete/utils/index.d.ts +1 -0
  176. package/dist/discrete/utils/index.d.ts.map +1 -0
  177. package/dist/discrete/utils/statsPValue.d.ts +1 -0
  178. package/dist/discrete/utils/statsPValue.d.ts.map +1 -0
  179. package/dist/heatmap/ChartRenderer.d.ts +1 -0
  180. package/dist/heatmap/ChartRenderer.d.ts.map +1 -0
  181. package/dist/heatmap/HeatmapSettingsImpl.d.ts +1 -0
  182. package/dist/heatmap/HeatmapSettingsImpl.d.ts.map +1 -0
  183. package/dist/heatmap/components/Annotations/Annotation.d.ts +1 -0
  184. package/dist/heatmap/components/Annotations/Annotation.d.ts.map +1 -0
  185. package/dist/heatmap/components/Annotations/AnnotationCellsCanvas.d.ts +1 -0
  186. package/dist/heatmap/components/Annotations/AnnotationCellsCanvas.d.ts.map +1 -0
  187. package/dist/heatmap/components/Annotations/AnnotationCellsSvg.d.ts +1 -0
  188. package/dist/heatmap/components/Annotations/AnnotationCellsSvg.d.ts.map +1 -0
  189. package/dist/heatmap/components/Annotations/index.d.ts +1 -0
  190. package/dist/heatmap/components/Annotations/index.d.ts.map +1 -0
  191. package/dist/heatmap/components/CanvasCells.d.ts +1 -0
  192. package/dist/heatmap/components/CanvasCells.d.ts.map +1 -0
  193. package/dist/heatmap/components/Captions/AxisCaptions.d.ts +1 -0
  194. package/dist/heatmap/components/Captions/AxisCaptions.d.ts.map +1 -0
  195. package/dist/heatmap/components/Captions/GroupCaptions.d.ts +1 -0
  196. package/dist/heatmap/components/Captions/GroupCaptions.d.ts.map +1 -0
  197. package/dist/heatmap/components/Captions/index.d.ts +1 -0
  198. package/dist/heatmap/components/Captions/index.d.ts.map +1 -0
  199. package/dist/heatmap/components/Chart.d.ts +1 -0
  200. package/dist/heatmap/components/Chart.d.ts.map +1 -0
  201. package/dist/heatmap/components/ChartsGroup.d.ts +1 -0
  202. package/dist/heatmap/components/ChartsGroup.d.ts.map +1 -0
  203. package/dist/heatmap/components/Dendrograms.d.ts +1 -0
  204. package/dist/heatmap/components/Dendrograms.d.ts.map +1 -0
  205. package/dist/heatmap/components/Frames.d.ts +1 -0
  206. package/dist/heatmap/components/Frames.d.ts.map +1 -0
  207. package/dist/heatmap/components/SvgCells.d.ts +1 -0
  208. package/dist/heatmap/components/SvgCells.d.ts.map +1 -0
  209. package/dist/heatmap/components/tooltipUtils.d.ts +1 -0
  210. package/dist/heatmap/components/tooltipUtils.d.ts.map +1 -0
  211. package/dist/heatmap/components/types.d.ts +1 -0
  212. package/dist/heatmap/components/types.d.ts.map +1 -0
  213. package/dist/heatmap/constants.d.ts +1 -0
  214. package/dist/heatmap/constants.d.ts.map +1 -0
  215. package/dist/heatmap/fillCellsData.d.ts +1 -0
  216. package/dist/heatmap/fillCellsData.d.ts.map +1 -0
  217. package/dist/heatmap/fillCellsData.js +106 -106
  218. package/dist/heatmap/fillCellsData.js.map +1 -1
  219. package/dist/heatmap/getCells.d.ts +1 -0
  220. package/dist/heatmap/getCells.d.ts.map +1 -0
  221. package/dist/heatmap/getClusters.d.ts +1 -0
  222. package/dist/heatmap/getClusters.d.ts.map +1 -0
  223. package/dist/heatmap/getDendrograms.d.ts +1 -0
  224. package/dist/heatmap/getDendrograms.d.ts.map +1 -0
  225. package/dist/heatmap/index.d.ts +1 -0
  226. package/dist/heatmap/index.d.ts.map +1 -0
  227. package/dist/heatmap/utils/calculateAnnotationTitleSizes.d.ts +1 -0
  228. package/dist/heatmap/utils/calculateAnnotationTitleSizes.d.ts.map +1 -0
  229. package/dist/heatmap/utils/calculateCaptionTails.d.ts +1 -0
  230. package/dist/heatmap/utils/calculateCaptionTails.d.ts.map +1 -0
  231. package/dist/heatmap/utils/calculateChartSideElementSizes.d.ts +1 -0
  232. package/dist/heatmap/utils/calculateChartSideElementSizes.d.ts.map +1 -0
  233. package/dist/heatmap/utils/calculateSideElementsBBoxes.d.ts +1 -0
  234. package/dist/heatmap/utils/calculateSideElementsBBoxes.d.ts.map +1 -0
  235. package/dist/heatmap/utils/createColorScales.d.ts +1 -0
  236. package/dist/heatmap/utils/createColorScales.d.ts.map +1 -0
  237. package/dist/heatmap/utils/index.d.ts +1 -0
  238. package/dist/heatmap/utils/index.d.ts.map +1 -0
  239. package/dist/histogram/ChartRenderer.d.ts +1 -0
  240. package/dist/histogram/ChartRenderer.d.ts.map +1 -0
  241. package/dist/histogram/HistogramSettingsImpl.d.ts +1 -0
  242. package/dist/histogram/HistogramSettingsImpl.d.ts.map +1 -0
  243. package/dist/histogram/components/Chart.d.ts +1 -0
  244. package/dist/histogram/components/Chart.d.ts.map +1 -0
  245. package/dist/histogram/components/Chart.js +53 -53
  246. package/dist/histogram/components/Chart.js.map +1 -1
  247. package/dist/histogram/components/ChartsGroup.d.ts +1 -0
  248. package/dist/histogram/components/ChartsGroup.d.ts.map +1 -0
  249. package/dist/histogram/components/types.d.ts +1 -0
  250. package/dist/histogram/components/types.d.ts.map +1 -0
  251. package/dist/histogram/constants.d.ts +1 -0
  252. package/dist/histogram/constants.d.ts.map +1 -0
  253. package/dist/histogram/getHistogramData.d.ts +1 -0
  254. package/dist/histogram/getHistogramData.d.ts.map +1 -0
  255. package/dist/histogram/getHistogramData.js +46 -46
  256. package/dist/histogram/getHistogramData.js.map +1 -1
  257. package/dist/histogram/index.d.ts +1 -0
  258. package/dist/histogram/index.d.ts.map +1 -0
  259. package/dist/histogram/index.js +61 -61
  260. package/dist/histogram/index.js.map +1 -1
  261. package/dist/index.d.ts +1 -0
  262. package/dist/index.d.ts.map +1 -0
  263. package/dist/scatterplot/ChartRenderer.d.ts +1 -0
  264. package/dist/scatterplot/ChartRenderer.d.ts.map +1 -0
  265. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts +1 -0
  266. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts.map +1 -0
  267. package/dist/scatterplot/components/Chart.d.ts +1 -0
  268. package/dist/scatterplot/components/Chart.d.ts.map +1 -0
  269. package/dist/scatterplot/components/ChartAxis.d.ts +1 -0
  270. package/dist/scatterplot/components/ChartAxis.d.ts.map +1 -0
  271. package/dist/scatterplot/components/ChartAxisTitles.d.ts +1 -0
  272. package/dist/scatterplot/components/ChartAxisTitles.d.ts.map +1 -0
  273. package/dist/scatterplot/components/ChartFacetTitle.d.ts +1 -0
  274. package/dist/scatterplot/components/ChartFacetTitle.d.ts.map +1 -0
  275. package/dist/scatterplot/components/ChartLayersData.d.ts +1 -0
  276. package/dist/scatterplot/components/ChartLayersData.d.ts.map +1 -0
  277. package/dist/scatterplot/components/ChartTooltip.d.ts +1 -0
  278. package/dist/scatterplot/components/ChartTooltip.d.ts.map +1 -0
  279. package/dist/scatterplot/components/ChartTrendsData.d.ts +1 -0
  280. package/dist/scatterplot/components/ChartTrendsData.d.ts.map +1 -0
  281. package/dist/scatterplot/components/ChartsGroup.d.ts +1 -0
  282. package/dist/scatterplot/components/ChartsGroup.d.ts.map +1 -0
  283. package/dist/scatterplot/components/Grid.d.ts +1 -0
  284. package/dist/scatterplot/components/Grid.d.ts.map +1 -0
  285. package/dist/scatterplot/components/types.d.ts +1 -0
  286. package/dist/scatterplot/components/types.d.ts.map +1 -0
  287. package/dist/scatterplot/constants.d.ts +1 -0
  288. package/dist/scatterplot/constants.d.ts.map +1 -0
  289. package/dist/scatterplot/dots.d.ts +1 -0
  290. package/dist/scatterplot/dots.d.ts.map +1 -0
  291. package/dist/scatterplot/getLayersData.d.ts +1 -0
  292. package/dist/scatterplot/getLayersData.d.ts.map +1 -0
  293. package/dist/scatterplot/index.d.ts +1 -0
  294. package/dist/scatterplot/index.d.ts.map +1 -0
  295. package/dist/scatterplot/index.js +74 -71
  296. package/dist/scatterplot/index.js.map +1 -1
  297. package/dist/scatterplot/linearRegression.d.ts +1 -0
  298. package/dist/scatterplot/linearRegression.d.ts.map +1 -0
  299. package/dist/scatterplot/utils/createAesGetter.d.ts +1 -0
  300. package/dist/scatterplot/utils/createAesGetter.d.ts.map +1 -0
  301. package/dist/scatterplot/utils/createLegendInfo.d.ts +1 -0
  302. package/dist/scatterplot/utils/createLegendInfo.d.ts.map +1 -0
  303. package/dist/scatterplot/utils/createLegendInfo.js +41 -41
  304. package/dist/scatterplot/utils/createLegendInfo.js.map +1 -1
  305. package/dist/scatterplot/utils/formatColumnValue.d.ts +1 -0
  306. package/dist/scatterplot/utils/formatColumnValue.d.ts.map +1 -0
  307. package/dist/scatterplot/utils/formatColumnValue.js +7 -6
  308. package/dist/scatterplot/utils/formatColumnValue.js.map +1 -1
  309. package/dist/scatterplot/utils/getTicksAndFormat.d.ts +1 -0
  310. package/dist/scatterplot/utils/getTicksAndFormat.d.ts.map +1 -0
  311. package/dist/scatterplot/utils/getVisibleLabels.d.ts +1 -0
  312. package/dist/scatterplot/utils/getVisibleLabels.d.ts.map +1 -0
  313. package/dist/scatterplot/utils/isNumericScale.d.ts +1 -0
  314. package/dist/scatterplot/utils/isNumericScale.d.ts.map +1 -0
  315. package/dist/scatterplot/utils/sortDotsByGrouping.d.ts +1 -0
  316. package/dist/scatterplot/utils/sortDotsByGrouping.d.ts.map +1 -0
  317. package/dist/scatterplot-umap/ChartRenderer.d.ts +1 -0
  318. package/dist/scatterplot-umap/ChartRenderer.d.ts.map +1 -0
  319. package/dist/scatterplot-umap/SettingsImpl.d.ts +1 -0
  320. package/dist/scatterplot-umap/SettingsImpl.d.ts.map +1 -0
  321. package/dist/scatterplot-umap/colors.d.ts +1 -0
  322. package/dist/scatterplot-umap/colors.d.ts.map +1 -0
  323. package/dist/scatterplot-umap/components/Lasso.d.ts +1 -0
  324. package/dist/scatterplot-umap/components/Lasso.d.ts.map +1 -0
  325. package/dist/scatterplot-umap/components/LowerSVG.d.ts +1 -0
  326. package/dist/scatterplot-umap/components/LowerSVG.d.ts.map +1 -0
  327. package/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
  328. package/dist/scatterplot-umap/components/SVGLayer.d.ts +1 -0
  329. package/dist/scatterplot-umap/components/SVGLayer.d.ts.map +1 -0
  330. package/dist/scatterplot-umap/components/UpperSVG.d.ts +1 -0
  331. package/dist/scatterplot-umap/components/UpperSVG.d.ts.map +1 -0
  332. package/dist/scatterplot-umap/constants.d.ts +1 -0
  333. package/dist/scatterplot-umap/constants.d.ts.map +1 -0
  334. package/dist/scatterplot-umap/index.d.ts +1 -0
  335. package/dist/scatterplot-umap/index.d.ts.map +1 -0
  336. package/dist/scatterplot-umap/index.js +77 -74
  337. package/dist/scatterplot-umap/index.js.map +1 -1
  338. package/dist/scatterplot-umap/types.d.ts +1 -0
  339. package/dist/scatterplot-umap/types.d.ts.map +1 -0
  340. package/dist/types/bubble.d.ts +43 -0
  341. package/dist/types/bubble.d.ts.map +1 -0
  342. package/dist/types/common.d.ts +39 -0
  343. package/dist/types/common.d.ts.map +1 -0
  344. package/dist/types/common.js +31 -30
  345. package/dist/types/common.js.map +1 -1
  346. package/dist/types/dendro.d.ts +104 -0
  347. package/dist/types/dendro.d.ts.map +1 -0
  348. package/dist/types/discrete.d.ts +168 -0
  349. package/dist/types/discrete.d.ts.map +1 -0
  350. package/dist/types/heatmap.d.ts +160 -0
  351. package/dist/types/heatmap.d.ts.map +1 -0
  352. package/dist/types/histogram.d.ts +23 -0
  353. package/dist/types/histogram.d.ts.map +1 -0
  354. package/dist/types/index.d.ts +1 -0
  355. package/dist/types/index.d.ts.map +1 -0
  356. package/dist/types/scatterplot-umap.d.ts +141 -0
  357. package/dist/types/scatterplot-umap.d.ts.map +1 -0
  358. package/dist/types/scatterplot.d.ts +183 -0
  359. package/dist/types/scatterplot.d.ts.map +1 -0
  360. package/dist/utils/TextMeasurer/TextMeasurer.d.ts +1 -0
  361. package/dist/utils/TextMeasurer/TextMeasurer.d.ts.map +1 -0
  362. package/dist/utils/WorkerFactory.d.ts +1 -0
  363. package/dist/utils/WorkerFactory.d.ts.map +1 -0
  364. package/dist/utils/arrangeLegendParts.d.ts +1 -0
  365. package/dist/utils/arrangeLegendParts.d.ts.map +1 -0
  366. package/dist/utils/arraysAreDifferent.d.ts +1 -0
  367. package/dist/utils/arraysAreDifferent.d.ts.map +1 -0
  368. package/dist/utils/createMultilineDiscreteLabels.d.ts +1 -0
  369. package/dist/utils/createMultilineDiscreteLabels.d.ts.map +1 -0
  370. package/dist/utils/getChartEdgeSides.d.ts +1 -0
  371. package/dist/utils/getChartEdgeSides.d.ts.map +1 -0
  372. package/dist/utils/getContinuousColorScale.d.ts +1 -0
  373. package/dist/utils/getContinuousColorScale.d.ts.map +1 -0
  374. package/dist/utils/getContinuousLegendTicks.d.ts +1 -0
  375. package/dist/utils/getContinuousLegendTicks.d.ts.map +1 -0
  376. package/dist/utils/getFacetOrGroupKey.d.ts +1 -0
  377. package/dist/utils/getFacetOrGroupKey.d.ts.map +1 -0
  378. package/dist/utils/getFacetRowsColumns.d.ts +1 -0
  379. package/dist/utils/getFacetRowsColumns.d.ts.map +1 -0
  380. package/dist/utils/getKeysCombination.d.ts +1 -0
  381. package/dist/utils/getKeysCombination.d.ts.map +1 -0
  382. package/dist/utils/getLegendWidth.d.ts +1 -0
  383. package/dist/utils/getLegendWidth.d.ts.map +1 -0
  384. package/dist/utils/getLineShape.d.ts +1 -0
  385. package/dist/utils/getLineShape.d.ts.map +1 -0
  386. package/dist/utils/getPointShape.d.ts +1 -0
  387. package/dist/utils/getPointShape.d.ts.map +1 -0
  388. package/dist/utils/getSizeLegendItem.d.ts +1 -0
  389. package/dist/utils/getSizeLegendItem.d.ts.map +1 -0
  390. package/dist/utils/hooks/useFunction.d.ts +1 -0
  391. package/dist/utils/hooks/useFunction.d.ts.map +1 -0
  392. package/dist/utils/index.d.ts +1 -0
  393. package/dist/utils/index.d.ts.map +1 -0
  394. package/dist/utils/measureMultilineDiscreteLabels.d.ts +1 -0
  395. package/dist/utils/measureMultilineDiscreteLabels.d.ts.map +1 -0
  396. package/dist/utils/numberFormat.d.ts +1 -0
  397. package/dist/utils/numberFormat.d.ts.map +1 -0
  398. package/dist/utils/splitTextByWidth.d.ts +1 -0
  399. package/dist/utils/splitTextByWidth.d.ts.map +1 -0
  400. package/package.json +5 -5
@@ -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.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
+ {"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={`${groupingKey}-${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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"}
@@ -26,3 +26,4 @@ interface ChartsGroupProps {
26
26
  }
27
27
  export declare function ChartsGroup({ settingsId, chartSettings, chartSizes, chartsDimensions, columnsCount, facetKeys, facetSettings, scales, margins, mainTitle, facetTitles, captionsSizes, histogramDataByFacets, layers, aesColorGetter, groupingDirection, groupingStack, groupingLabels, legend, onTooltipHintSwitch, }: ChartsGroupProps): import("react/jsx-runtime").JSX.Element;
28
28
  export {};
29
+ //# sourceMappingURL=ChartsGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartsGroup.d.ts","sourceRoot":"","sources":["../../../src/histogram/components/ChartsGroup.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAU,oBAAoB,EAAC,MAAM,qBAAqB,CAAC;AACvE,OAAO,KAAK,EAAC,cAAc,EAAE,qBAAqB,EAAC,MAAM,0BAA0B,CAAC;AAGpF,OAAO,KAAK,EACR,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,YAAY,EACZ,OAAO,EACV,MAAM,SAAS,CAAC;AAGjB,UAAU,gBAAgB;IACtB,aAAa,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC;IACtD,aAAa,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC;IACtD,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IACtD,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACtC,aAAa,EAAE,aAAa,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAC5D,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,cAAc,EAAE,SAAS,CAAC;IAC1B,iBAAiB,EAAE,qBAAqB,CAAC,mBAAmB,CAAC,CAAC;IAC9D,aAAa,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC;IACtD,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,EAAE,UAAU,CAAC;IACnB,mBAAmB,EAAE,CAAC,CAAC,EAAC,OAAO,KAAK,IAAI,CAAC;CAC5C;AAED,wBAAgB,WAAW,CAAC,EACxB,UAAU,EACV,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,aAAa,EACb,MAAM,EACN,OAAO,EACP,SAAS,EACT,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,MAAM,EACN,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,MAAM,EACN,mBAAmB,GACtB,EAAE,gBAAgB,2CAqElB"}
@@ -52,3 +52,4 @@ export type HistogramLegendInfo = Record<string, {
52
52
  aesMap: AesRecord;
53
53
  labels: Record<string, string>;
54
54
  }>;
55
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -13,3 +13,4 @@ export declare const PADDINGS: {
13
13
  LEFT: number;
14
14
  RIGHT: number;
15
15
  };
16
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/histogram/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B,eAAO,MAAM,aAAa,KAAK,CAAC;AAGhC,eAAO,MAAM,QAAQ;;;;;CAKpB,CAAC"}
@@ -27,3 +27,4 @@ export type GroupedHistogramData = {
27
27
  export declare function createHistogramDataLinear(dataFrame: DataFrame, indexes: RowIndex[], column: ColumnName, binsCount: number, domain: [number, number], key: string, keyIdx: number): HistogramData;
28
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
+ //# sourceMappingURL=getHistogramData.d.ts.map
@@ -0,0 +1 @@
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,wCA8D1B"}
@@ -1,19 +1,19 @@
1
- import C from "../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/bin.js";
2
- import K from "../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/max.js";
3
- import E from "../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/symlog.js";
4
- const V = (o, i) => {
5
- const e = Math.min(...i), t = Math.max(...i);
6
- if (e === t)
7
- return [e];
8
- if (o < 2)
9
- return [(e + t) / 2];
10
- const a = (t - e) / o, l = [];
11
- for (let n = 1; n < o; n++)
12
- l.push(e + a * n);
1
+ import d from "../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/bin.js";
2
+ import F from "../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/max.js";
3
+ import X from "../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/symlog.js";
4
+ const V = (e, c) => {
5
+ const o = Math.min(...c), t = Math.max(...c);
6
+ if (o === t)
7
+ return [o];
8
+ if (e < 2)
9
+ return [(o + t) / 2];
10
+ const i = (t - o) / e, l = [];
11
+ for (let n = 1; n < e; n++)
12
+ l.push(o + i * n);
13
13
  return l;
14
14
  };
15
- function w(o, i, e) {
16
- return o.map((t) => ({
15
+ function D(e, c, o) {
16
+ return e.map((t) => ({
17
17
  indexes: t,
18
18
  x: t.x0 ?? 0,
19
19
  y: {
@@ -21,63 +21,63 @@ function w(o, i, e) {
21
21
  reverse: t.length
22
22
  },
23
23
  count: t.length,
24
- groupingKey: i,
25
- groupingKeyIdx: e,
24
+ groupingKey: c,
25
+ groupingKeyIdx: o,
26
26
  width: (t.x1 ?? 0) - (t.x0 ?? 0)
27
27
  }));
28
28
  }
29
- function F(o, i, e, t, a, l, n) {
30
- const h = V(t, a), r = C().domain(a).thresholds(h).value((m) => o.getColumnValue(e.value, m))(i);
29
+ function k(e, c, o, t, i, l, n) {
30
+ const h = V(t, i), r = d().domain(i).thresholds(h).value((m) => e.getColumnValue(o.value, m))(c);
31
31
  return {
32
- bins: w(r, l, n),
33
- maxCount: K(r, (m) => m.length) ?? 0
32
+ bins: D(r, l, n),
33
+ maxCount: F(r, (m) => m.length) ?? 0
34
34
  };
35
35
  }
36
- function L(o, i, e, t, a, l, n) {
37
- const h = V(t, a), r = E().domain(a).range(a), m = h.map((u) => r.invert(u)), g = C().domain(a).thresholds(m).value((u) => o.getColumnValue(e.value, u))(i);
36
+ function I(e, c, o, t, i, l, n) {
37
+ const h = V(t, i), r = X().domain(i).range(i), m = h.map((u) => r.invert(u)), g = d().domain(i).thresholds(m).value((u) => e.getColumnValue(o.value, u))(c);
38
38
  return {
39
- bins: w(g, l, n),
40
- maxCount: K(g, (u) => u.length) ?? 0
39
+ bins: D(g, l, n),
40
+ maxCount: F(g, (u) => u.length) ?? 0
41
41
  };
42
42
  }
43
- function I(o, i, e, t, a, l) {
43
+ function A(e, c, o, t, i, l) {
44
44
  const n = {};
45
- return i.forEach((h) => {
45
+ return c.forEach((h) => {
46
46
  const r = h.join("_");
47
47
  n[r] = {
48
- groupingKeys: e,
48
+ groupingKeys: o,
49
49
  histogramByGroupingKey: {},
50
50
  minX: 1 / 0,
51
51
  maxX: -1 / 0,
52
52
  maxCount: 0,
53
53
  maxCountFromGroups: 0
54
- }, o.getRowsByGrouping([...h]);
54
+ };
55
55
  let m, g;
56
- for (let c = 0; c < o.getColumn(t.value).length; c++) {
57
- const s = o.getColumnValue(t.value, c);
58
- s !== null && (m === void 0 || m > s) && (m = s), s !== null && (g === void 0 || g < s) && (g = s);
56
+ for (let s = 0; s < e.getColumn(t.value).length; s++) {
57
+ const a = e.getColumnValue(t.value, s);
58
+ a !== null && (m === void 0 || m > a) && (m = a), a !== null && (g === void 0 || g < a) && (g = a);
59
59
  }
60
- const u = [m ?? 0, g ?? 0], G = [...e].reverse();
61
- G.forEach((c, s) => {
62
- const x = Array.from(o.getRowsByGrouping([...h, c])), p = l === "linear" ? F(o, x, t, a, u, c, s) : L(o, x, t, a, u, c, s);
63
- n[r].histogramByGroupingKey[c] = p, n[r].minX = u[0], n[r].maxX = u[1], n[r].maxCountFromGroups = Math.max(n[r].maxCountFromGroups, p.maxCount);
64
- const y = s > 0 ? G[s - 1] : null, f = y !== null ? n[r].histogramByGroupingKey[y] : null;
65
- p.bins.forEach((v, D) => {
66
- v.y.straight = ((f == null ? void 0 : f.bins[D].y.straight) ?? 0) + v.count, n[r].maxCount = Math.max(n[r].maxCount, v.y.straight);
60
+ const u = [m ?? 0, g ?? 0], C = [...o].reverse(), E = h.length === 1 && h[0] === "null", L = (s) => E ? [s] : [...h, s];
61
+ C.forEach((s, a) => {
62
+ const f = Array.from(e.getRowsByGrouping(L(s))), v = o.indexOf(s), x = l === "linear" ? k(e, f, t, i, u, s, v) : I(e, f, t, i, u, s, v);
63
+ n[r].histogramByGroupingKey[s] = x, n[r].minX = u[0], n[r].maxX = u[1], n[r].maxCountFromGroups = Math.max(n[r].maxCountFromGroups, x.maxCount);
64
+ const y = a > 0 ? C[a - 1] : null, p = y !== null ? n[r].histogramByGroupingKey[y] : null;
65
+ x.bins.forEach((G, M) => {
66
+ G.y.straight = ((p == null ? void 0 : p.bins[M].y.straight) ?? 0) + G.count, n[r].maxCount = Math.max(n[r].maxCount, G.y.straight);
67
67
  });
68
68
  });
69
- const B = e;
70
- B.forEach((c, s) => {
71
- const x = s > 0 ? B[s - 1] : null, p = n[r].histogramByGroupingKey[c], y = x !== null ? n[r].histogramByGroupingKey[x] : null;
72
- p.bins.forEach((f, v) => {
73
- f.y.reverse = ((y == null ? void 0 : y.bins[v].y.reverse) ?? 0) + f.count;
69
+ const B = o;
70
+ B.forEach((s, a) => {
71
+ const f = a > 0 ? B[a - 1] : null, v = n[r].histogramByGroupingKey[s], x = f !== null ? n[r].histogramByGroupingKey[f] : null;
72
+ v.bins.forEach((y, p) => {
73
+ y.y.reverse = ((x == null ? void 0 : x.bins[p].y.reverse) ?? 0) + y.count;
74
74
  });
75
75
  });
76
76
  }), n;
77
77
  }
78
78
  export {
79
- I as createHistogramDataByFacets,
80
- F as createHistogramDataLinear,
81
- L as createHistogramDataLog
79
+ A as createHistogramDataByFacets,
80
+ k as createHistogramDataLinear,
81
+ I as createHistogramDataLog
82
82
  };
83
83
  //# sourceMappingURL=getHistogramData.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getHistogramData.js","sources":["../../src/histogram/getHistogramData.ts"],"sourcesContent":["import type { Bin } from 'd3-array';\nimport { bin, 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: number | undefined;\n let maxV: number | undefined;\n for (let i = 0; i < data.getColumn(valueColumn.value).length; i++) {\n const v = data.getColumnValue(valueColumn.value, i) as number;\n if (v !== null && (minV === undefined || minV > v)) {\n minV = v;\n }\n if (v !== null && (maxV === undefined || maxV < v)) {\n maxV = v;\n }\n }\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 ?? 0, maxV ?? 0];\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","minV","maxV","v","forwardKeys","groupingKey","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, 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 let minV: number | undefined;\n let maxV: number | undefined;\n for (let i = 0; i < data.getColumn(valueColumn.value).length; i++) {\n const v = data.getColumnValue(valueColumn.value, i) as number;\n if (v !== null && (minV === undefined || minV > v)) {\n minV = v;\n }\n if (v !== null && (maxV === undefined || maxV < v)) {\n maxV = v;\n }\n }\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 ?? 0, maxV ?? 0];\n const forwardKeys = [...groupingKeys].reverse();\n const isNoFacets = facetKeys.length === 1 && facetKeys[0] === 'null';\n const getGroupingPath = (groupingKey: string) => isNoFacets ? [groupingKey] : [...facetKeys, groupingKey];\n forwardKeys.forEach((groupingKey, _forwardIdx) => {\n const indexes = Array.from(data.getRowsByGrouping(getGroupingPath(groupingKey)));\n const groupingKeyIdx = groupingKeys.indexOf(groupingKey);\n const histogram = scale === 'linear'\n ? createHistogramDataLinear(data, indexes, valueColumn, binsCount, domain, groupingKey, groupingKeyIdx)\n : createHistogramDataLog(data, indexes, valueColumn, binsCount, domain, groupingKey, groupingKeyIdx);\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 = _forwardIdx > 0 ? forwardKeys[_forwardIdx - 1] : null;\n const previousHistogram = previousKey !== null ? result[facetKey].histogramByGroupingKey[previousKey] : null;\n\n histogram.bins.forEach((bin, binIdx) => {\n bin.y.straight = (previousHistogram?.bins[binIdx].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, binIdx) => {\n bin.y.reverse = (previousHistogram?.bins[binIdx].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","minV","maxV","v","forwardKeys","isNoFacets","getGroupingPath","groupingKey","_forwardIdx","groupingKeyIdx","histogram","previousKey","previousHistogram","binIdx","reversedKeys"],"mappings":"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"}
@@ -28,3 +28,4 @@ export declare class ChartHistogram extends AbstractChart {
28
28
  _updateAesInData(): void;
29
29
  _updateChart(): void;
30
30
  }
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/histogram/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAA6E,KAAK,sBAAsB,EAAE,KAAK,iBAAiB,EAAe,MAAM,UAAU,CAAC;AAEvK,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAmChE,qBAAa,cAAe,SAAQ,aAAa;IAC7C,QAAQ,EAAE,qBAAqB,CAAC;IAChC,aAAa,gBAAuB;IAEpC,mBAAmB,EAAE,CAAC,CAAC,EAAC,OAAO,KAAK,IAAI,CAAmB;IAC3D,cAAc,EAAE;QACZ,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,qBAAqB,EAAE,MAAM,EAAE,EAAE,CAAC;QAClC,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;QAC3D,UAAU,EAAE,mBAAmB,CAAC;QAChC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KACzC,GAAG,IAAI,CAAQ;gBAEJ,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,sBAAsB;IAShG,KAAK,CAAC,IAAI,EAAE,WAAW;IAiBvB,OAAO;IAIP,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB;IA2BlE,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IAIhD,MAAM,IAAI,MAAM;IAKhB,mCAAmC,CAAC,YAAY,EAAE,qBAAqB,EAAE,QAAQ,EAAE,qBAAqB;IAexG,+BAA+B,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS;IAUpE,WAAW;IA0CX,gBAAgB;IAOhB,YAAY;CA0Bf"}
@@ -1,10 +1,10 @@
1
1
  var x = Object.defineProperty;
2
- var w = (u, h, a) => h in u ? x(u, h, { enumerable: !0, configurable: !0, writable: !0, value: a }) : u[h] = a;
3
- var g = (u, h, a) => w(u, typeof h != "symbol" ? h + "" : h, a);
4
- import { l as A } from "../_virtual/lodash.js";
5
- import { s as B } from "../_virtual/server.browser.js";
6
- import { AbstractChart as S } from "../AbstractChart.js";
7
- import { getUnknownErrorInfo as y, isErrorInfo as C } from "../types/common.js";
2
+ var A = (h, d, a) => d in h ? x(h, d, { enumerable: !0, configurable: !0, writable: !0, value: a }) : h[d] = a;
3
+ var f = (h, d, a) => A(h, typeof d != "symbol" ? d + "" : d, a);
4
+ import { l as w } from "../_virtual/lodash.js";
5
+ import { s as L } from "../_virtual/server.browser.js";
6
+ import { AbstractChart as B } from "../AbstractChart.js";
7
+ import { getUnknownErrorInfo as C, isErrorInfo as y } from "../types/common.js";
8
8
  import "../types/discrete.js";
9
9
  import "../types/scatterplot.js";
10
10
  import "../types/heatmap.js";
@@ -13,38 +13,38 @@ import "../types/histogram.js";
13
13
  import "../types/bubble.js";
14
14
  import { getKeysCombinations as O } from "../utils/getKeysCombination.js";
15
15
  import R from "./ChartRenderer.js";
16
- import { createHistogramDataByFacets as K } from "./getHistogramData.js";
16
+ import { createHistogramDataByFacets as S } from "./getHistogramData.js";
17
17
  import { HistogramSettingsImpl as D } from "./HistogramSettingsImpl.js";
18
- import { MAX_FACETS_COUNT as _, MAX_GROUPS_COUNT as b } from "../constants.js";
19
- import { getFacetLabels as L } from "../discrete/utils/getFacetLabels.js";
20
- function I(u, h, a) {
21
- return h.reduce((t, e) => {
22
- const n = u.getColumnCategories(e.value, !1), l = (r) => e.valueLabels ? String(u.getColumnValue(
18
+ import { MAX_FACETS_COUNT as b, MAX_GROUPS_COUNT as _ } from "../constants.js";
19
+ import { getFacetLabels as K } from "../discrete/utils/getFacetLabels.js";
20
+ function I(h, d, a) {
21
+ return d.reduce((t, e) => {
22
+ const i = e.nullValueLabel ?? "NA", s = h.getColumnCategories(e.value, !1), u = (o) => e.valueLabels ? String(h.getColumnValue(
23
23
  e.valueLabels,
24
- u.getColumnCategoryRowIndex(e.value, r)
25
- )) : r, i = n.reduce((r, o) => (r[o] = l(o), r), {});
24
+ h.getColumnCategoryRowIndex(e.value, o)
25
+ )) : o, n = s.reduce((o, r) => (o[r] = u(r), o[r] === "null" && (o[r] = i), o), {});
26
26
  return t[e.value] = {
27
- values: n.sort((r, o) => i[r].localeCompare(i[o], "en", { numeric: !0 })),
27
+ values: s.sort((o, r) => n[o].localeCompare(n[r], "en", { numeric: !0 })),
28
28
  aesMap: a[e.value],
29
- labels: i
29
+ labels: n
30
30
  }, t;
31
31
  }, {});
32
32
  }
33
- class Y extends S {
33
+ class Y extends B {
34
34
  constructor(a, t, e) {
35
35
  super(a, t);
36
- g(this, "settings");
37
- g(this, "chartRenderer", new R());
38
- g(this, "onTooltipHintSwitch", () => {
36
+ f(this, "settings");
37
+ f(this, "chartRenderer", new R());
38
+ f(this, "onTooltipHintSwitch", () => {
39
39
  });
40
- g(this, "calculatedData", null);
40
+ f(this, "calculatedData", null);
41
41
  this.settings = new D(t), e && (this.onTooltipHintSwitch = e[0]);
42
42
  }
43
43
  mount(a) {
44
44
  try {
45
45
  this.chartRenderer.init(a), this._updateData(), this._updateChart(), this.hasError = !1, this.errorInfo = null;
46
46
  } catch (t) {
47
- this.hasError = !0, t instanceof Error && (this.errorInfo = C(t.cause) ? t.cause : y(t), this.chartRenderer.renderError(t.message), console.error(t));
47
+ this.hasError = !0, t instanceof Error && (this.errorInfo = y(t.cause) ? t.cause : C(t), this.chartRenderer.renderError(t.message), console.error(t));
48
48
  }
49
49
  }
50
50
  unmount() {
@@ -52,64 +52,64 @@ class Y extends S {
52
52
  }
53
53
  updateSettingsAndData(a, t) {
54
54
  try {
55
- const e = this.settings, n = this.data;
56
- this.settings = new D(t), this.data = a, this._needUpdateCalculatedDataBySettings(e, this.settings) || this._needUpdateCalculatedDataByData(n, this.data) ? this._updateData() : this._updateAesInData(), this._updateChart(), this.hasError = !1, this.errorInfo = null;
55
+ const e = this.settings, i = this.data;
56
+ this.settings = new D(t), this.data = a, this._needUpdateCalculatedDataBySettings(e, this.settings) || this._needUpdateCalculatedDataByData(i, this.data) ? this._updateData() : this._updateAesInData(), this._updateChart(), this.hasError = !1, this.errorInfo = null;
57
57
  } catch (e) {
58
- this.hasError = !0, e instanceof Error && (this.errorInfo = C(e.cause) ? e.cause : y(e), this.chartRenderer.renderError(e.message), console.error(e));
58
+ this.hasError = !0, e instanceof Error && (this.errorInfo = y(e.cause) ? e.cause : C(e), this.chartRenderer.renderError(e.message), console.error(e));
59
59
  }
60
60
  }
61
61
  updateChartState(a, t) {
62
62
  console.warn("no chart state for histogram");
63
63
  }
64
64
  export() {
65
- return this._updateChart(), B.renderToString(this.chartRenderer.component);
65
+ return this._updateChart(), L.renderToString(this.chartRenderer.component);
66
66
  }
67
67
  _needUpdateCalculatedDataBySettings(a, t) {
68
- var e, n, l, i;
69
- return a.valueColumn.value !== t.valueColumn.value || a.facetBy.some((r, o) => {
70
- var s;
71
- return r.value !== ((s = t.facetBy[o]) == null ? void 0 : s.value);
72
- }) || ((e = a.grouping) == null ? void 0 : e.value) !== ((n = t.grouping) == null ? void 0 : n.value) || a.layers.length !== t.layers.length || a.layers.some((r, o) => r.type !== t.layers[o].type) || a.binsCount !== t.binsCount || a.chartSettings.xAxis.scale !== t.chartSettings.xAxis.scale || ((l = a.groupingOrder) == null ? void 0 : l.some((r, o) => {
73
- var s;
74
- return r !== ((s = t.groupingOrder) == null ? void 0 : s[o]);
75
- })) || ((i = t.groupingOrder) == null ? void 0 : i.some((r, o) => {
76
- var s;
77
- return r !== ((s = a.groupingOrder) == null ? void 0 : s[o]);
68
+ var e, i, s, u, n, o;
69
+ return a.valueColumn.value !== t.valueColumn.value || a.facetBy.some((r, g) => {
70
+ var l;
71
+ return r.value !== ((l = t.facetBy[g]) == null ? void 0 : l.value);
72
+ }) || ((e = a.grouping) == null ? void 0 : e.value) !== ((i = t.grouping) == null ? void 0 : i.value) || ((s = a.grouping) == null ? void 0 : s.nullValueLabel) !== ((u = t.grouping) == null ? void 0 : u.nullValueLabel) || a.layers.length !== t.layers.length || a.layers.some((r, g) => r.type !== t.layers[g].type) || a.binsCount !== t.binsCount || a.chartSettings.xAxis.scale !== t.chartSettings.xAxis.scale || ((n = a.groupingOrder) == null ? void 0 : n.some((r, g) => {
73
+ var l;
74
+ return r !== ((l = t.groupingOrder) == null ? void 0 : l[g]);
75
+ })) || ((o = t.groupingOrder) == null ? void 0 : o.some((r, g) => {
76
+ var l;
77
+ return r !== ((l = a.groupingOrder) == null ? void 0 : l[g]);
78
78
  }));
79
79
  }
80
80
  _needUpdateCalculatedDataByData(a, t) {
81
- const e = Object.keys(a.data), n = Object.keys(t.data);
82
- return a.id !== t.id || e.length !== n.length || e.some((l) => {
83
- var i;
84
- return a.data[l].length !== ((i = t.data[l]) == null ? void 0 : i.length);
81
+ const e = Object.keys(a.data), i = Object.keys(t.data);
82
+ return a.id !== t.id || e.length !== i.length || e.some((s) => {
83
+ var u;
84
+ return a.data[s].length !== ((u = t.data[s]) == null ? void 0 : u.length);
85
85
  });
86
86
  }
87
87
  _updateData() {
88
- const { valueColumn: a, facetBy: t, grouping: e, binsCount: n, chartSettings: l, inheritedAes: i, groupingOrder: r } = this.settings, o = t.map((c) => this.data.getColumnCategories(c.value)), s = o.length ? O([...o]) : [["null"]];
89
- if (s.length > _) {
88
+ const { valueColumn: a, facetBy: t, grouping: e, binsCount: i, chartSettings: s, inheritedAes: u, groupingOrder: n } = this.settings, o = t.map((c) => this.data.getColumnCategories(c.value)), r = o.length ? O([...o]) : [["null"]];
89
+ if (r.length > b) {
90
90
  const c = {
91
91
  type: "tooManyFacets",
92
- info: { count: s.length, maxCount: _ }
92
+ info: { count: r.length, maxCount: b }
93
93
  };
94
94
  throw Error(c.type, { cause: c });
95
95
  }
96
- const m = t.map((c) => c.value) ?? null, p = e ? [e.value] : [];
97
- let d = e ? this.data.getColumnCategories(e.value) : ["null"];
98
- if (d.length > b) {
96
+ const g = t.map((c) => c.value) ?? null, l = e ? [e.value] : [];
97
+ let p = e ? this.data.getColumnCategories(e.value, !1) : ["null"];
98
+ if (p.length > _) {
99
99
  const c = {
100
100
  type: "tooManyHistogramGroups",
101
- info: { count: d.length, maxCount: b }
101
+ info: { count: p.length, maxCount: _ }
102
102
  };
103
103
  throw Error(c.type, { cause: c });
104
104
  }
105
- r && (d = A.intersection(r, d)), this.data.setGrouping([...m, ...p]);
106
- const v = K(this.data, s, d, a, n, l.xAxis.scale), f = s.map((c) => c.join(", ")), E = L(this.data, t, f, s);
105
+ n && (p = w.intersection(n, p)), this.data.setGrouping([...g, ...l]);
106
+ const E = S(this.data, r, p, a, i, s.xAxis.scale), m = r.map((c) => c.join(", ")), v = K(this.data, t, m, r);
107
107
  this.calculatedData = {
108
- facetKeys: f,
109
- facetKeysCombinations: s,
110
- facetLabels: E,
111
- histogramDataByFacets: v,
112
- legendInfo: I(this.data, e ? [e] : [], i)
108
+ facetKeys: m,
109
+ facetKeysCombinations: r,
110
+ facetLabels: v,
111
+ histogramDataByFacets: E,
112
+ legendInfo: I(this.data, e ? [e] : [], u)
113
113
  };
114
114
  }
115
115
  _updateAesInData() {
@@ -118,21 +118,21 @@ class Y extends S {
118
118
  _updateChart() {
119
119
  if (!this.calculatedData)
120
120
  return;
121
- const { facetLabels: a } = this.calculatedData, { id: t, chartSettings: e, facetSettings: n, inheritedAes: l, layers: i, grouping: r, groupingDirection: o, groupingStack: s, facetBy: m } = this.settings;
122
- this.calculatedData.legendInfo = I(this.data, r ? [r] : [], l), this.chartRenderer.render(
121
+ const { facetLabels: a } = this.calculatedData, { id: t, chartSettings: e, facetSettings: i, inheritedAes: s, layers: u, grouping: n, groupingDirection: o, groupingStack: r, facetBy: g } = this.settings;
122
+ this.calculatedData.legendInfo = I(this.data, n ? [n] : [], s), this.chartRenderer.render(
123
123
  this.data,
124
124
  t,
125
125
  e,
126
- n,
126
+ i,
127
127
  this.calculatedData.facetKeys,
128
- this.calculatedData.facetKeys.map((p) => a[p]),
128
+ this.calculatedData.facetKeys.map((l) => a[l]),
129
129
  //for titles, if facet by more than 1 column
130
130
  this.calculatedData.histogramDataByFacets,
131
131
  this.calculatedData.legendInfo,
132
- i,
133
- l,
134
- r,
132
+ u,
135
133
  s,
134
+ n,
135
+ r,
136
136
  o,
137
137
  this.onTooltipHintSwitch
138
138
  );