@milaboratories/miplots4 1.0.173 → 1.0.175

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 (440) 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 +2 -1
  4. package/dist/DataFrame.d.ts.map +1 -0
  5. package/dist/DataFrame.js +52 -51
  6. package/dist/DataFrame.js.map +1 -1
  7. package/dist/MiPlots.d.ts +1 -0
  8. package/dist/MiPlots.d.ts.map +1 -0
  9. package/dist/bubble/BubbleSettingsImpl.d.ts +4 -0
  10. package/dist/bubble/BubbleSettingsImpl.d.ts.map +1 -0
  11. package/dist/bubble/BubbleSettingsImpl.js +16 -16
  12. package/dist/bubble/BubbleSettingsImpl.js.map +1 -1
  13. package/dist/bubble/ChartRenderer.d.ts +1 -0
  14. package/dist/bubble/ChartRenderer.d.ts.map +1 -0
  15. package/dist/bubble/components/AxisCaptions.d.ts +1 -0
  16. package/dist/bubble/components/AxisCaptions.d.ts.map +1 -0
  17. package/dist/bubble/components/Chart.d.ts +1 -0
  18. package/dist/bubble/components/Chart.d.ts.map +1 -0
  19. package/dist/bubble/components/ChartsGroup.d.ts +1 -0
  20. package/dist/bubble/components/ChartsGroup.d.ts.map +1 -0
  21. package/dist/bubble/components/types.d.ts +1 -0
  22. package/dist/bubble/components/types.d.ts.map +1 -0
  23. package/dist/bubble/constants.d.ts +1 -0
  24. package/dist/bubble/constants.d.ts.map +1 -0
  25. package/dist/bubble/getCellTooltip.d.ts +1 -0
  26. package/dist/bubble/getCellTooltip.d.ts.map +1 -0
  27. package/dist/bubble/getGroupedCellsData.d.ts +2 -1
  28. package/dist/bubble/getGroupedCellsData.d.ts.map +1 -0
  29. package/dist/bubble/getGroupedCellsData.js +12 -11
  30. package/dist/bubble/getGroupedCellsData.js.map +1 -1
  31. package/dist/bubble/index.d.ts +1 -0
  32. package/dist/bubble/index.d.ts.map +1 -0
  33. package/dist/bubble/index.js +61 -69
  34. package/dist/bubble/index.js.map +1 -1
  35. package/dist/bubble/utils/calculateCaptionTails.d.ts +1 -0
  36. package/dist/bubble/utils/calculateCaptionTails.d.ts.map +1 -0
  37. package/dist/bubble/utils/calculateChartSideElementSizes.d.ts +1 -0
  38. package/dist/bubble/utils/calculateChartSideElementSizes.d.ts.map +1 -0
  39. package/dist/bubble/utils/calculateSideElementsBBoxes.d.ts +1 -0
  40. package/dist/bubble/utils/calculateSideElementsBBoxes.d.ts.map +1 -0
  41. package/dist/bubble/utils/index.d.ts +1 -0
  42. package/dist/bubble/utils/index.d.ts.map +1 -0
  43. package/dist/common/BandAxis.d.ts +1 -0
  44. package/dist/common/BandAxis.d.ts.map +1 -0
  45. package/dist/common/ChartsTitle.d.ts +1 -0
  46. package/dist/common/ChartsTitle.d.ts.map +1 -0
  47. package/dist/common/ContinuousAxis.d.ts +1 -0
  48. package/dist/common/ContinuousAxis.d.ts.map +1 -0
  49. package/dist/common/ContinuousGrid.d.ts +1 -0
  50. package/dist/common/ContinuousGrid.d.ts.map +1 -0
  51. package/dist/common/Error.d.ts +1 -0
  52. package/dist/common/Error.d.ts.map +1 -0
  53. package/dist/common/ErrorBoundary.d.ts +1 -0
  54. package/dist/common/ErrorBoundary.d.ts.map +1 -0
  55. package/dist/common/Legend.d.ts +1 -0
  56. package/dist/common/Legend.d.ts.map +1 -0
  57. package/dist/common/Tooltip.d.ts +1 -0
  58. package/dist/common/Tooltip.d.ts.map +1 -0
  59. package/dist/common/fonts.d.ts +1 -0
  60. package/dist/common/fonts.d.ts.map +1 -0
  61. package/dist/common/types.d.ts +1 -0
  62. package/dist/common/types.d.ts.map +1 -0
  63. package/dist/common/useDataFrame.d.ts +1 -0
  64. package/dist/common/useDataFrame.d.ts.map +1 -0
  65. package/dist/constants.d.ts +1 -0
  66. package/dist/constants.d.ts.map +1 -0
  67. package/dist/constants.js +9 -11
  68. package/dist/constants.js.map +1 -1
  69. package/dist/dendro/ChartRenderer.d.ts +1 -0
  70. package/dist/dendro/ChartRenderer.d.ts.map +1 -0
  71. package/dist/dendro/DendroSettingsImpl.d.ts +1 -0
  72. package/dist/dendro/DendroSettingsImpl.d.ts.map +1 -0
  73. package/dist/dendro/components/Chart.d.ts +1 -0
  74. package/dist/dendro/components/Chart.d.ts.map +1 -0
  75. package/dist/dendro/components/Heatmap.d.ts +1 -0
  76. package/dist/dendro/components/Heatmap.d.ts.map +1 -0
  77. package/dist/dendro/components/Legend.d.ts +1 -0
  78. package/dist/dendro/components/Legend.d.ts.map +1 -0
  79. package/dist/dendro/components/LinksGroup.d.ts +1 -0
  80. package/dist/dendro/components/LinksGroup.d.ts.map +1 -0
  81. package/dist/dendro/components/NodesGroup.d.ts +1 -0
  82. package/dist/dendro/components/NodesGroup.d.ts.map +1 -0
  83. package/dist/dendro/components/types.d.ts +1 -0
  84. package/dist/dendro/components/types.d.ts.map +1 -0
  85. package/dist/dendro/constants.d.ts +1 -0
  86. package/dist/dendro/constants.d.ts.map +1 -0
  87. package/dist/dendro/getHeatmapData.d.ts +1 -0
  88. package/dist/dendro/getHeatmapData.d.ts.map +1 -0
  89. package/dist/dendro/getHierarchyData.d.ts +1 -0
  90. package/dist/dendro/getHierarchyData.d.ts.map +1 -0
  91. package/dist/dendro/index.d.ts +1 -0
  92. package/dist/dendro/index.d.ts.map +1 -0
  93. package/dist/discrete/ChartRenderer.d.ts +1 -0
  94. package/dist/discrete/ChartRenderer.d.ts.map +1 -0
  95. package/dist/discrete/DiscreteSettingsImpl.d.ts +3 -1
  96. package/dist/discrete/DiscreteSettingsImpl.d.ts.map +1 -0
  97. package/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
  98. package/dist/discrete/components/Chart.d.ts +1 -0
  99. package/dist/discrete/components/Chart.d.ts.map +1 -0
  100. package/dist/discrete/components/ChartsGroup.d.ts +1 -0
  101. package/dist/discrete/components/ChartsGroup.d.ts.map +1 -0
  102. package/dist/discrete/components/Grid.d.ts +1 -0
  103. package/dist/discrete/components/Grid.d.ts.map +1 -0
  104. package/dist/discrete/components/NumberAxis.d.ts +1 -0
  105. package/dist/discrete/components/NumberAxis.d.ts.map +1 -0
  106. package/dist/discrete/components/layers/BarElement.d.ts +1 -0
  107. package/dist/discrete/components/layers/BarElement.d.ts.map +1 -0
  108. package/dist/discrete/components/layers/BinnedDotsElement.d.ts +1 -0
  109. package/dist/discrete/components/layers/BinnedDotsElement.d.ts.map +1 -0
  110. package/dist/discrete/components/layers/BoxElement.d.ts +1 -0
  111. package/dist/discrete/components/layers/BoxElement.d.ts.map +1 -0
  112. package/dist/discrete/components/layers/DotsGroupElement.d.ts +1 -0
  113. package/dist/discrete/components/layers/DotsGroupElement.d.ts.map +1 -0
  114. package/dist/discrete/components/layers/ErrorBarElement.d.ts +1 -0
  115. package/dist/discrete/components/layers/ErrorBarElement.d.ts.map +1 -0
  116. package/dist/discrete/components/layers/LineElement.d.ts +1 -0
  117. package/dist/discrete/components/layers/LineElement.d.ts.map +1 -0
  118. package/dist/discrete/components/layers/LogoElement.d.ts +1 -0
  119. package/dist/discrete/components/layers/LogoElement.d.ts.map +1 -0
  120. package/dist/discrete/components/layers/PairedPointsElement.d.ts +1 -0
  121. package/dist/discrete/components/layers/PairedPointsElement.d.ts.map +1 -0
  122. package/dist/discrete/components/layers/SinaElement.d.ts +1 -0
  123. package/dist/discrete/components/layers/SinaElement.d.ts.map +1 -0
  124. package/dist/discrete/components/layers/StackedAreaElement.d.ts +1 -0
  125. package/dist/discrete/components/layers/StackedAreaElement.d.ts.map +1 -0
  126. package/dist/discrete/components/layers/StackedBarElement.d.ts +1 -0
  127. package/dist/discrete/components/layers/StackedBarElement.d.ts.map +1 -0
  128. package/dist/discrete/components/layers/StatsPValue.d.ts +1 -0
  129. package/dist/discrete/components/layers/StatsPValue.d.ts.map +1 -0
  130. package/dist/discrete/components/layers/ViolinElement.d.ts +1 -0
  131. package/dist/discrete/components/layers/ViolinElement.d.ts.map +1 -0
  132. package/dist/discrete/components/layers/seqAlphabet.d.ts +1 -0
  133. package/dist/discrete/components/layers/seqAlphabet.d.ts.map +1 -0
  134. package/dist/discrete/components/types.d.ts +1 -0
  135. package/dist/discrete/components/types.d.ts.map +1 -0
  136. package/dist/discrete/constants.d.ts +1 -0
  137. package/dist/discrete/constants.d.ts.map +1 -0
  138. package/dist/discrete/index.d.ts +1 -0
  139. package/dist/discrete/index.d.ts.map +1 -0
  140. package/dist/discrete/index.js +151 -165
  141. package/dist/discrete/index.js.map +1 -1
  142. package/dist/discrete/layers/bar.d.ts +1 -0
  143. package/dist/discrete/layers/bar.d.ts.map +1 -0
  144. package/dist/discrete/layers/binnedDots.d.ts +1 -0
  145. package/dist/discrete/layers/binnedDots.d.ts.map +1 -0
  146. package/dist/discrete/layers/boxes.d.ts +1 -0
  147. package/dist/discrete/layers/boxes.d.ts.map +1 -0
  148. package/dist/discrete/layers/dots.d.ts +1 -0
  149. package/dist/discrete/layers/dots.d.ts.map +1 -0
  150. package/dist/discrete/layers/errorbars.d.ts +1 -0
  151. package/dist/discrete/layers/errorbars.d.ts.map +1 -0
  152. package/dist/discrete/layers/index.d.ts +1 -0
  153. package/dist/discrete/layers/index.d.ts.map +1 -0
  154. package/dist/discrete/layers/lines.d.ts +1 -0
  155. package/dist/discrete/layers/lines.d.ts.map +1 -0
  156. package/dist/discrete/layers/logo.d.ts +1 -0
  157. package/dist/discrete/layers/logo.d.ts.map +1 -0
  158. package/dist/discrete/layers/pairedPoints.d.ts +1 -0
  159. package/dist/discrete/layers/pairedPoints.d.ts.map +1 -0
  160. package/dist/discrete/layers/sina.d.ts +1 -0
  161. package/dist/discrete/layers/sina.d.ts.map +1 -0
  162. package/dist/discrete/layers/stackedArea.d.ts +1 -0
  163. package/dist/discrete/layers/stackedArea.d.ts.map +1 -0
  164. package/dist/discrete/layers/stackedBar.d.ts +1 -0
  165. package/dist/discrete/layers/stackedBar.d.ts.map +1 -0
  166. package/dist/discrete/layers/stats/MannWhitneyU.d.ts +1 -0
  167. package/dist/discrete/layers/stats/MannWhitneyU.d.ts.map +1 -0
  168. package/dist/discrete/layers/stats/index.d.ts +1 -0
  169. package/dist/discrete/layers/stats/index.d.ts.map +1 -0
  170. package/dist/discrete/layers/stats/pValueCalculation.d.ts +1 -0
  171. package/dist/discrete/layers/stats/pValueCalculation.d.ts.map +1 -0
  172. package/dist/discrete/layers/stats/pValueCorrection.d.ts +1 -0
  173. package/dist/discrete/layers/stats/pValueCorrection.d.ts.map +1 -0
  174. package/dist/discrete/layers/types.d.ts +1 -0
  175. package/dist/discrete/layers/types.d.ts.map +1 -0
  176. package/dist/discrete/layers/violins.d.ts +1 -0
  177. package/dist/discrete/layers/violins.d.ts.map +1 -0
  178. package/dist/discrete/utils/getChartStatsPadding.d.ts +1 -0
  179. package/dist/discrete/utils/getChartStatsPadding.d.ts.map +1 -0
  180. package/dist/discrete/utils/getFacetLabels.d.ts +1 -0
  181. package/dist/discrete/utils/getFacetLabels.d.ts.map +1 -0
  182. package/dist/discrete/utils/getFacetStringKey.d.ts +1 -0
  183. package/dist/discrete/utils/getFacetStringKey.d.ts.map +1 -0
  184. package/dist/discrete/utils/getOutliersBounds.d.ts +1 -0
  185. package/dist/discrete/utils/getOutliersBounds.d.ts.map +1 -0
  186. package/dist/discrete/utils/index.d.ts +1 -0
  187. package/dist/discrete/utils/index.d.ts.map +1 -0
  188. package/dist/discrete/utils/statsPValue.d.ts +1 -0
  189. package/dist/discrete/utils/statsPValue.d.ts.map +1 -0
  190. package/dist/heatmap/ChartRenderer.d.ts +1 -0
  191. package/dist/heatmap/ChartRenderer.d.ts.map +1 -0
  192. package/dist/heatmap/HeatmapSettingsImpl.d.ts +2 -0
  193. package/dist/heatmap/HeatmapSettingsImpl.d.ts.map +1 -0
  194. package/dist/heatmap/HeatmapSettingsImpl.js +29 -28
  195. package/dist/heatmap/HeatmapSettingsImpl.js.map +1 -1
  196. package/dist/heatmap/components/Annotations/Annotation.d.ts +1 -0
  197. package/dist/heatmap/components/Annotations/Annotation.d.ts.map +1 -0
  198. package/dist/heatmap/components/Annotations/AnnotationCellsCanvas.d.ts +1 -0
  199. package/dist/heatmap/components/Annotations/AnnotationCellsCanvas.d.ts.map +1 -0
  200. package/dist/heatmap/components/Annotations/AnnotationCellsSvg.d.ts +1 -0
  201. package/dist/heatmap/components/Annotations/AnnotationCellsSvg.d.ts.map +1 -0
  202. package/dist/heatmap/components/Annotations/index.d.ts +1 -0
  203. package/dist/heatmap/components/Annotations/index.d.ts.map +1 -0
  204. package/dist/heatmap/components/CanvasCells.d.ts +1 -0
  205. package/dist/heatmap/components/CanvasCells.d.ts.map +1 -0
  206. package/dist/heatmap/components/Captions/AxisCaptions.d.ts +1 -0
  207. package/dist/heatmap/components/Captions/AxisCaptions.d.ts.map +1 -0
  208. package/dist/heatmap/components/Captions/GroupCaptions.d.ts +1 -0
  209. package/dist/heatmap/components/Captions/GroupCaptions.d.ts.map +1 -0
  210. package/dist/heatmap/components/Captions/index.d.ts +1 -0
  211. package/dist/heatmap/components/Captions/index.d.ts.map +1 -0
  212. package/dist/heatmap/components/Chart.d.ts +1 -0
  213. package/dist/heatmap/components/Chart.d.ts.map +1 -0
  214. package/dist/heatmap/components/ChartsGroup.d.ts +1 -0
  215. package/dist/heatmap/components/ChartsGroup.d.ts.map +1 -0
  216. package/dist/heatmap/components/Dendrograms.d.ts +1 -0
  217. package/dist/heatmap/components/Dendrograms.d.ts.map +1 -0
  218. package/dist/heatmap/components/Frames.d.ts +1 -0
  219. package/dist/heatmap/components/Frames.d.ts.map +1 -0
  220. package/dist/heatmap/components/SvgCells.d.ts +1 -0
  221. package/dist/heatmap/components/SvgCells.d.ts.map +1 -0
  222. package/dist/heatmap/components/tooltipUtils.d.ts +1 -0
  223. package/dist/heatmap/components/tooltipUtils.d.ts.map +1 -0
  224. package/dist/heatmap/components/types.d.ts +1 -0
  225. package/dist/heatmap/components/types.d.ts.map +1 -0
  226. package/dist/heatmap/constants.d.ts +1 -0
  227. package/dist/heatmap/constants.d.ts.map +1 -0
  228. package/dist/heatmap/fillCellsData.d.ts +2 -1
  229. package/dist/heatmap/fillCellsData.d.ts.map +1 -0
  230. package/dist/heatmap/fillCellsData.js +185 -173
  231. package/dist/heatmap/fillCellsData.js.map +1 -1
  232. package/dist/heatmap/getCells.d.ts +2 -1
  233. package/dist/heatmap/getCells.d.ts.map +1 -0
  234. package/dist/heatmap/getCells.js +10 -9
  235. package/dist/heatmap/getCells.js.map +1 -1
  236. package/dist/heatmap/getClusters.d.ts +1 -0
  237. package/dist/heatmap/getClusters.d.ts.map +1 -0
  238. package/dist/heatmap/getDendrograms.d.ts +1 -0
  239. package/dist/heatmap/getDendrograms.d.ts.map +1 -0
  240. package/dist/heatmap/index.d.ts +1 -0
  241. package/dist/heatmap/index.d.ts.map +1 -0
  242. package/dist/heatmap/index.js +95 -102
  243. package/dist/heatmap/index.js.map +1 -1
  244. package/dist/heatmap/utils/calculateAnnotationTitleSizes.d.ts +1 -0
  245. package/dist/heatmap/utils/calculateAnnotationTitleSizes.d.ts.map +1 -0
  246. package/dist/heatmap/utils/calculateCaptionTails.d.ts +1 -0
  247. package/dist/heatmap/utils/calculateCaptionTails.d.ts.map +1 -0
  248. package/dist/heatmap/utils/calculateChartSideElementSizes.d.ts +1 -0
  249. package/dist/heatmap/utils/calculateChartSideElementSizes.d.ts.map +1 -0
  250. package/dist/heatmap/utils/calculateSideElementsBBoxes.d.ts +1 -0
  251. package/dist/heatmap/utils/calculateSideElementsBBoxes.d.ts.map +1 -0
  252. package/dist/heatmap/utils/createColorScales.d.ts +1 -0
  253. package/dist/heatmap/utils/createColorScales.d.ts.map +1 -0
  254. package/dist/heatmap/utils/index.d.ts +1 -0
  255. package/dist/heatmap/utils/index.d.ts.map +1 -0
  256. package/dist/histogram/ChartRenderer.d.ts +1 -0
  257. package/dist/histogram/ChartRenderer.d.ts.map +1 -0
  258. package/dist/histogram/HistogramSettingsImpl.d.ts +2 -0
  259. package/dist/histogram/HistogramSettingsImpl.d.ts.map +1 -0
  260. package/dist/histogram/HistogramSettingsImpl.js +43 -43
  261. package/dist/histogram/HistogramSettingsImpl.js.map +1 -1
  262. package/dist/histogram/components/Chart.d.ts +1 -0
  263. package/dist/histogram/components/Chart.d.ts.map +1 -0
  264. package/dist/histogram/components/Chart.js +53 -53
  265. package/dist/histogram/components/Chart.js.map +1 -1
  266. package/dist/histogram/components/ChartsGroup.d.ts +1 -0
  267. package/dist/histogram/components/ChartsGroup.d.ts.map +1 -0
  268. package/dist/histogram/components/types.d.ts +1 -0
  269. package/dist/histogram/components/types.d.ts.map +1 -0
  270. package/dist/histogram/constants.d.ts +1 -0
  271. package/dist/histogram/constants.d.ts.map +1 -0
  272. package/dist/histogram/getHistogramData.d.ts +3 -2
  273. package/dist/histogram/getHistogramData.d.ts.map +1 -0
  274. package/dist/histogram/getHistogramData.js +51 -50
  275. package/dist/histogram/getHistogramData.js.map +1 -1
  276. package/dist/histogram/index.d.ts +1 -1
  277. package/dist/histogram/index.d.ts.map +1 -0
  278. package/dist/histogram/index.js +89 -90
  279. package/dist/histogram/index.js.map +1 -1
  280. package/dist/index.d.ts +4 -1
  281. package/dist/index.d.ts.map +1 -0
  282. package/dist/index.js +8 -4
  283. package/dist/index.js.map +1 -1
  284. package/dist/scatterplot/ChartRenderer.d.ts +1 -0
  285. package/dist/scatterplot/ChartRenderer.d.ts.map +1 -0
  286. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts +3 -0
  287. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts.map +1 -0
  288. package/dist/scatterplot/ScatterplotSettingsImpl.js.map +1 -1
  289. package/dist/scatterplot/components/Chart.d.ts +1 -0
  290. package/dist/scatterplot/components/Chart.d.ts.map +1 -0
  291. package/dist/scatterplot/components/ChartAxis.d.ts +1 -0
  292. package/dist/scatterplot/components/ChartAxis.d.ts.map +1 -0
  293. package/dist/scatterplot/components/ChartAxisTitles.d.ts +1 -0
  294. package/dist/scatterplot/components/ChartAxisTitles.d.ts.map +1 -0
  295. package/dist/scatterplot/components/ChartFacetTitle.d.ts +1 -0
  296. package/dist/scatterplot/components/ChartFacetTitle.d.ts.map +1 -0
  297. package/dist/scatterplot/components/ChartLayersData.d.ts +1 -0
  298. package/dist/scatterplot/components/ChartLayersData.d.ts.map +1 -0
  299. package/dist/scatterplot/components/ChartTooltip.d.ts +1 -0
  300. package/dist/scatterplot/components/ChartTooltip.d.ts.map +1 -0
  301. package/dist/scatterplot/components/ChartTrendsData.d.ts +1 -0
  302. package/dist/scatterplot/components/ChartTrendsData.d.ts.map +1 -0
  303. package/dist/scatterplot/components/ChartsGroup.d.ts +1 -0
  304. package/dist/scatterplot/components/ChartsGroup.d.ts.map +1 -0
  305. package/dist/scatterplot/components/Grid.d.ts +1 -0
  306. package/dist/scatterplot/components/Grid.d.ts.map +1 -0
  307. package/dist/scatterplot/components/types.d.ts +1 -0
  308. package/dist/scatterplot/components/types.d.ts.map +1 -0
  309. package/dist/scatterplot/constants.d.ts +1 -0
  310. package/dist/scatterplot/constants.d.ts.map +1 -0
  311. package/dist/scatterplot/dots.d.ts +3 -2
  312. package/dist/scatterplot/dots.d.ts.map +1 -0
  313. package/dist/scatterplot/dots.js +17 -16
  314. package/dist/scatterplot/dots.js.map +1 -1
  315. package/dist/scatterplot/getLayersData.d.ts +1 -0
  316. package/dist/scatterplot/getLayersData.d.ts.map +1 -0
  317. package/dist/scatterplot/index.d.ts +1 -1
  318. package/dist/scatterplot/index.d.ts.map +1 -0
  319. package/dist/scatterplot/index.js +100 -106
  320. package/dist/scatterplot/index.js.map +1 -1
  321. package/dist/scatterplot/linearRegression.d.ts +1 -0
  322. package/dist/scatterplot/linearRegression.d.ts.map +1 -0
  323. package/dist/scatterplot/utils/createAesGetter.d.ts +1 -0
  324. package/dist/scatterplot/utils/createAesGetter.d.ts.map +1 -0
  325. package/dist/scatterplot/utils/createLegendInfo.d.ts +1 -0
  326. package/dist/scatterplot/utils/createLegendInfo.d.ts.map +1 -0
  327. package/dist/scatterplot/utils/createLegendInfo.js +41 -41
  328. package/dist/scatterplot/utils/createLegendInfo.js.map +1 -1
  329. package/dist/scatterplot/utils/formatColumnValue.d.ts +1 -0
  330. package/dist/scatterplot/utils/formatColumnValue.d.ts.map +1 -0
  331. package/dist/scatterplot/utils/formatColumnValue.js +7 -6
  332. package/dist/scatterplot/utils/formatColumnValue.js.map +1 -1
  333. package/dist/scatterplot/utils/getTicksAndFormat.d.ts +1 -0
  334. package/dist/scatterplot/utils/getTicksAndFormat.d.ts.map +1 -0
  335. package/dist/scatterplot/utils/getVisibleLabels.d.ts +1 -0
  336. package/dist/scatterplot/utils/getVisibleLabels.d.ts.map +1 -0
  337. package/dist/scatterplot/utils/isNumericScale.d.ts +1 -0
  338. package/dist/scatterplot/utils/isNumericScale.d.ts.map +1 -0
  339. package/dist/scatterplot/utils/sortDotsByGrouping.d.ts +1 -0
  340. package/dist/scatterplot/utils/sortDotsByGrouping.d.ts.map +1 -0
  341. package/dist/scatterplot-umap/ChartRenderer.d.ts +1 -0
  342. package/dist/scatterplot-umap/ChartRenderer.d.ts.map +1 -0
  343. package/dist/scatterplot-umap/SettingsImpl.d.ts +1 -0
  344. package/dist/scatterplot-umap/SettingsImpl.d.ts.map +1 -0
  345. package/dist/scatterplot-umap/colors.d.ts +1 -0
  346. package/dist/scatterplot-umap/colors.d.ts.map +1 -0
  347. package/dist/scatterplot-umap/components/Lasso.d.ts +1 -0
  348. package/dist/scatterplot-umap/components/Lasso.d.ts.map +1 -0
  349. package/dist/scatterplot-umap/components/LowerSVG.d.ts +1 -0
  350. package/dist/scatterplot-umap/components/LowerSVG.d.ts.map +1 -0
  351. package/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
  352. package/dist/scatterplot-umap/components/SVGLayer.d.ts +1 -0
  353. package/dist/scatterplot-umap/components/SVGLayer.d.ts.map +1 -0
  354. package/dist/scatterplot-umap/components/UpperSVG.d.ts +1 -0
  355. package/dist/scatterplot-umap/components/UpperSVG.d.ts.map +1 -0
  356. package/dist/scatterplot-umap/constants.d.ts +1 -0
  357. package/dist/scatterplot-umap/constants.d.ts.map +1 -0
  358. package/dist/scatterplot-umap/index.d.ts +1 -0
  359. package/dist/scatterplot-umap/index.d.ts.map +1 -0
  360. package/dist/scatterplot-umap/index.js +77 -74
  361. package/dist/scatterplot-umap/index.js.map +1 -1
  362. package/dist/scatterplot-umap/types.d.ts +1 -0
  363. package/dist/scatterplot-umap/types.d.ts.map +1 -0
  364. package/dist/types/bubble.d.ts +48 -0
  365. package/dist/types/bubble.d.ts.map +1 -0
  366. package/dist/types/bubble.js +19 -18
  367. package/dist/types/bubble.js.map +1 -1
  368. package/dist/types/common.d.ts +39 -0
  369. package/dist/types/common.d.ts.map +1 -0
  370. package/dist/types/common.js +31 -30
  371. package/dist/types/common.js.map +1 -1
  372. package/dist/types/dendro.d.ts +109 -0
  373. package/dist/types/dendro.d.ts.map +1 -0
  374. package/dist/types/dendro.js +10 -9
  375. package/dist/types/dendro.js.map +1 -1
  376. package/dist/types/discrete.d.ts +176 -5
  377. package/dist/types/discrete.d.ts.map +1 -0
  378. package/dist/types/discrete.js +12 -11
  379. package/dist/types/discrete.js.map +1 -1
  380. package/dist/types/heatmap.d.ts +165 -0
  381. package/dist/types/heatmap.d.ts.map +1 -0
  382. package/dist/types/heatmap.js +2 -1
  383. package/dist/types/heatmap.js.map +1 -1
  384. package/dist/types/histogram.d.ts +28 -0
  385. package/dist/types/histogram.d.ts.map +1 -0
  386. package/dist/types/histogram.js +43 -42
  387. package/dist/types/histogram.js.map +1 -1
  388. package/dist/types/index.d.ts +1 -0
  389. package/dist/types/index.d.ts.map +1 -0
  390. package/dist/types/scatterplot-umap.d.ts +141 -0
  391. package/dist/types/scatterplot-umap.d.ts.map +1 -0
  392. package/dist/types/scatterplot.d.ts +189 -0
  393. package/dist/types/scatterplot.d.ts.map +1 -0
  394. package/dist/types/scatterplot.js +21 -19
  395. package/dist/types/scatterplot.js.map +1 -1
  396. package/dist/utils/TextMeasurer/TextMeasurer.d.ts +1 -0
  397. package/dist/utils/TextMeasurer/TextMeasurer.d.ts.map +1 -0
  398. package/dist/utils/WorkerFactory.d.ts +1 -0
  399. package/dist/utils/WorkerFactory.d.ts.map +1 -0
  400. package/dist/utils/arrangeLegendParts.d.ts +1 -0
  401. package/dist/utils/arrangeLegendParts.d.ts.map +1 -0
  402. package/dist/utils/arraysAreDifferent.d.ts +1 -0
  403. package/dist/utils/arraysAreDifferent.d.ts.map +1 -0
  404. package/dist/utils/createMultilineDiscreteLabels.d.ts +1 -0
  405. package/dist/utils/createMultilineDiscreteLabels.d.ts.map +1 -0
  406. package/dist/utils/getChartEdgeSides.d.ts +1 -0
  407. package/dist/utils/getChartEdgeSides.d.ts.map +1 -0
  408. package/dist/utils/getContinuousColorScale.d.ts +1 -0
  409. package/dist/utils/getContinuousColorScale.d.ts.map +1 -0
  410. package/dist/utils/getContinuousLegendTicks.d.ts +1 -0
  411. package/dist/utils/getContinuousLegendTicks.d.ts.map +1 -0
  412. package/dist/utils/getFacetKeysFromValueLists.d.ts +6 -0
  413. package/dist/utils/getFacetKeysFromValueLists.d.ts.map +1 -0
  414. package/dist/utils/getFacetKeysFromValueLists.js +9 -0
  415. package/dist/utils/getFacetKeysFromValueLists.js.map +1 -0
  416. package/dist/utils/getFacetOrGroupKey.d.ts +1 -0
  417. package/dist/utils/getFacetOrGroupKey.d.ts.map +1 -0
  418. package/dist/utils/getFacetRowsColumns.d.ts +1 -0
  419. package/dist/utils/getFacetRowsColumns.d.ts.map +1 -0
  420. package/dist/utils/getKeysCombination.d.ts +1 -0
  421. package/dist/utils/getKeysCombination.d.ts.map +1 -0
  422. package/dist/utils/getLegendWidth.d.ts +1 -0
  423. package/dist/utils/getLegendWidth.d.ts.map +1 -0
  424. package/dist/utils/getLineShape.d.ts +1 -0
  425. package/dist/utils/getLineShape.d.ts.map +1 -0
  426. package/dist/utils/getPointShape.d.ts +2 -1
  427. package/dist/utils/getPointShape.d.ts.map +1 -0
  428. package/dist/utils/getSizeLegendItem.d.ts +1 -0
  429. package/dist/utils/getSizeLegendItem.d.ts.map +1 -0
  430. package/dist/utils/hooks/useFunction.d.ts +1 -0
  431. package/dist/utils/hooks/useFunction.d.ts.map +1 -0
  432. package/dist/utils/index.d.ts +1 -0
  433. package/dist/utils/index.d.ts.map +1 -0
  434. package/dist/utils/measureMultilineDiscreteLabels.d.ts +1 -0
  435. package/dist/utils/measureMultilineDiscreteLabels.d.ts.map +1 -0
  436. package/dist/utils/numberFormat.d.ts +1 -0
  437. package/dist/utils/numberFormat.d.ts.map +1 -0
  438. package/dist/utils/splitTextByWidth.d.ts +1 -0
  439. package/dist/utils/splitTextByWidth.d.ts.map +1 -0
  440. package/package.json +5 -5
@@ -1,19 +1,20 @@
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);
13
- return l;
1
+ import { getFacetStringKey as E } from "../discrete/utils/getFacetStringKey.js";
2
+ import S from "../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/bin.js";
3
+ import d from "../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/max.js";
4
+ import L from "../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/symlog.js";
5
+ const F = (e, a) => {
6
+ const r = Math.min(...a), t = Math.max(...a);
7
+ if (r === t)
8
+ return [r];
9
+ if (e < 2)
10
+ return [(r + t) / 2];
11
+ const s = (t - r) / e, g = [];
12
+ for (let n = 1; n < e; n++)
13
+ g.push(r + s * n);
14
+ return g;
14
15
  };
15
- function w(o, i, e) {
16
- return o.map((t) => ({
16
+ function V(e, a, r) {
17
+ return e.map((t) => ({
17
18
  indexes: t,
18
19
  x: t.x0 ?? 0,
19
20
  y: {
@@ -21,63 +22,63 @@ function w(o, i, e) {
21
22
  reverse: t.length
22
23
  },
23
24
  count: t.length,
24
- groupingKey: i,
25
- groupingKeyIdx: e,
25
+ groupingKey: a,
26
+ groupingKeyIdx: r,
26
27
  width: (t.x1 ?? 0) - (t.x0 ?? 0)
27
28
  }));
28
29
  }
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);
30
+ function M(e, a, r, t, s, g, n) {
31
+ const y = F(t, s), o = S().domain(s).thresholds(y).value((c) => e.getColumnValue(r.value, c))(a);
31
32
  return {
32
- bins: w(r, l, n),
33
- maxCount: K(r, (m) => m.length) ?? 0
33
+ bins: V(o, g, n),
34
+ maxCount: d(o, (c) => c.length) ?? 0
34
35
  };
35
36
  }
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);
37
+ function X(e, a, r, t, s, g, n) {
38
+ const y = F(t, s), o = L().domain(s).range(s), c = y.map((m) => o.invert(m)), l = S().domain(s).thresholds(c).value((m) => e.getColumnValue(r.value, m))(a);
38
39
  return {
39
- bins: w(g, l, n),
40
- maxCount: K(g, (u) => u.length) ?? 0
40
+ bins: V(l, g, n),
41
+ maxCount: d(l, (m) => m.length) ?? 0
41
42
  };
42
43
  }
43
- function I(o, i, e, t, a, l) {
44
+ function H(e, a, r, t, s, g) {
44
45
  const n = {};
45
- return i.forEach((h) => {
46
- const r = h.join("_");
47
- n[r] = {
48
- groupingKeys: e,
46
+ return a.forEach((y) => {
47
+ const o = E(y);
48
+ n[o] = {
49
+ groupingKeys: r.map(String),
49
50
  histogramByGroupingKey: {},
50
51
  minX: 1 / 0,
51
52
  maxX: -1 / 0,
52
53
  maxCount: 0,
53
54
  maxCountFromGroups: 0
54
- }, o.getRowsByGrouping([...h]);
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);
55
+ };
56
+ let c, l;
57
+ for (let u = 0; u < e.getColumn(t.value).length; u++) {
58
+ const i = e.getColumnValue(t.value, u);
59
+ i !== null && (c === void 0 || c > i) && (c = i), i !== null && (l === void 0 || l < i) && (l = i);
59
60
  }
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);
61
+ const m = [c ?? 0, l ?? 0], B = [...r].reverse();
62
+ B.forEach((u, i) => {
63
+ const f = Array.from(e.getRowsByGrouping([...y, u])), p = r.indexOf(u), h = String(u), x = g === "linear" ? M(e, f, t, s, m, h, p) : X(e, f, t, s, m, h, p);
64
+ n[o].histogramByGroupingKey[h] = x, n[o].minX = m[0], n[o].maxX = m[1], n[o].maxCountFromGroups = Math.max(n[o].maxCountFromGroups, x.maxCount);
65
+ const v = i > 0 ? B[i - 1] : null, K = v !== null ? n[o].histogramByGroupingKey[String(v)] : null;
66
+ x.bins.forEach((G, D) => {
67
+ G.y.straight = ((K == null ? void 0 : K.bins[D].y.straight) ?? 0) + G.count, n[o].maxCount = Math.max(n[o].maxCount, G.y.straight);
67
68
  });
68
69
  });
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;
70
+ const C = r;
71
+ C.forEach((u, i) => {
72
+ const f = i > 0 ? C[i - 1] : null, p = n[o].histogramByGroupingKey[String(u)], h = f !== null ? n[o].histogramByGroupingKey[String(f)] : null;
73
+ p.bins.forEach((x, v) => {
74
+ x.y.reverse = ((h == null ? void 0 : h.bins[v].y.reverse) ?? 0) + x.count;
74
75
  });
75
76
  });
76
77
  }), n;
77
78
  }
78
79
  export {
79
- I as createHistogramDataByFacets,
80
- F as createHistogramDataLinear,
81
- L as createHistogramDataLog
80
+ H as createHistogramDataByFacets,
81
+ M as createHistogramDataLinear,
82
+ X as createHistogramDataLog
82
83
  };
83
84
  //# 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, GroupKey, RowIndex } from '../DataFrame';\nimport type { ColumnName } from '../types';\nimport { getFacetStringKey } from '../discrete/utils/getFacetStringKey';\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: GroupKey[][],\n groupingKeys: GroupKey[],\n valueColumn:ColumnName,\n binsCount:number,\n scale: 'linear' | 'log'\n) {\n const result:Record<string, GroupedHistogramData> = {};\n facetKeysCombinations.forEach((facetKeyCombination) => {\n const facetKey = getFacetStringKey(facetKeyCombination);\n result[facetKey] = {\n groupingKeys: groupingKeys.map(String),\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 forwardKeys.forEach((groupingKey, _forwardIdx) => {\n const indexes = Array.from(data.getRowsByGrouping([...facetKeyCombination, groupingKey]));\n const groupingKeyIdx = groupingKeys.indexOf(groupingKey);\n const groupingKeyStr = String(groupingKey);\n const histogram = scale === 'linear'\n ? createHistogramDataLinear(data, indexes, valueColumn, binsCount, domain, groupingKeyStr, groupingKeyIdx)\n : createHistogramDataLog(data, indexes, valueColumn, binsCount, domain, groupingKeyStr, groupingKeyIdx);\n result[facetKey].histogramByGroupingKey[groupingKeyStr] = 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[String(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[String(groupingKey)];\n const previousHistogram = previousKey !== null ? result[facetKey].histogramByGroupingKey[String(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","facetKeyCombination","facetKey","getFacetStringKey","minV","maxV","v","forwardKeys","groupingKey","_forwardIdx","groupingKeyIdx","groupingKeyStr","histogram","previousKey","previousHistogram","binIdx","reversedKeys"],"mappings":"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"}
@@ -11,7 +11,6 @@ export declare class ChartHistogram extends AbstractChart {
11
11
  onTooltipHintSwitch: (v: boolean) => void;
12
12
  calculatedData: {
13
13
  facetKeys: string[];
14
- facetKeysCombinations: string[][];
15
14
  histogramDataByFacets: Record<string, GroupedHistogramData>;
16
15
  legendInfo: HistogramLegendInfo;
17
16
  facetLabels: Record<string, string[]>;
@@ -28,3 +27,4 @@ export declare class ChartHistogram extends AbstractChart {
28
27
  _updateAesInData(): void;
29
28
  _updateChart(): void;
30
29
  }
30
+ //# 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,EAAC,MAAM,cAAc,CAAC;AAG7C,OAAO,EAAuD,KAAK,sBAAsB,EAAE,KAAK,iBAAiB,EAAe,MAAM,UAAU,CAAC;AAEjJ,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;AA0ChE,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,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;IAgBxG,+BAA+B,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS;IAUpE,WAAW;IA2CX,gBAAgB;IAOhB,YAAY;CA0Bf"}
@@ -1,115 +1,114 @@
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";
1
+ var B = Object.defineProperty;
2
+ var O = (l, u, e) => u in l ? B(l, u, { enumerable: !0, configurable: !0, writable: !0, value: e }) : l[u] = e;
3
+ var y = (l, u, e) => O(l, typeof u != "symbol" ? u + "" : u, e);
4
+ import { l as b } from "../_virtual/lodash.js";
5
+ import { s as R } from "../_virtual/server.browser.js";
6
+ import { AbstractChart as V } from "../AbstractChart.js";
7
+ import { NO_GROUPED as I } from "../DataFrame.js";
8
+ import { getUnknownErrorInfo as E, isErrorInfo as S } from "../types/common.js";
8
9
  import "../types/discrete.js";
9
10
  import "../types/scatterplot.js";
10
11
  import "../types/heatmap.js";
11
12
  import "../types/dendro.js";
12
13
  import "../types/histogram.js";
13
14
  import "../types/bubble.js";
14
- import { getKeysCombinations as O } from "../utils/getKeysCombination.js";
15
- import R from "./ChartRenderer.js";
16
- import { createHistogramDataByFacets as K } from "./getHistogramData.js";
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(
23
- e.valueLabels,
24
- u.getColumnCategoryRowIndex(e.value, r)
25
- )) : r, i = n.reduce((r, o) => (r[o] = l(o), r), {});
26
- return t[e.value] = {
27
- values: n.sort((r, o) => i[r].localeCompare(i[o], "en", { numeric: !0 })),
28
- aesMap: a[e.value],
29
- labels: i
15
+ import { getKeysCombinations as k } from "../utils/getKeysCombination.js";
16
+ import F from "./ChartRenderer.js";
17
+ import { createHistogramDataByFacets as U } from "./getHistogramData.js";
18
+ import { HistogramSettingsImpl as x } from "./HistogramSettingsImpl.js";
19
+ import { getFacetLabels as G } from "../discrete/utils/getFacetLabels.js";
20
+ import { getFacetStringKey as D } from "../discrete/utils/getFacetStringKey.js";
21
+ import { arraysAreDifferent as H } from "../utils/arraysAreDifferent.js";
22
+ function T(l, u, e = null) {
23
+ const t = u.value, a = l.getColumnCategories(t);
24
+ return b.intersection(e ?? a, a).map(String);
25
+ }
26
+ function K(l, u, e) {
27
+ return u.reduce((t, a) => {
28
+ const r = a.nullValueLabel ?? "NA", n = l.getColumnCategories(a.value, !1), d = (s) => a.valueLabels ? String(l.getColumnValue(
29
+ a.valueLabels,
30
+ l.getColumnCategoryRowIndex(a.value, s)
31
+ )) : s, c = n.reduce((s, o) => (s[o] = d(o), s[o] === "null" && (s[o] = r), s), {});
32
+ return t[a.value] = {
33
+ values: n.sort((s, o) => c[s].localeCompare(c[o], "en", { numeric: !0 })),
34
+ aesMap: e[a.value],
35
+ labels: c
30
36
  }, t;
31
37
  }, {});
32
38
  }
33
- class Y extends S {
34
- constructor(a, t, e) {
35
- super(a, t);
36
- g(this, "settings");
37
- g(this, "chartRenderer", new R());
38
- g(this, "onTooltipHintSwitch", () => {
39
+ class nt extends V {
40
+ constructor(e, t, a) {
41
+ super(e, t);
42
+ y(this, "settings");
43
+ y(this, "chartRenderer", new F());
44
+ y(this, "onTooltipHintSwitch", () => {
39
45
  });
40
- g(this, "calculatedData", null);
41
- this.settings = new D(t), e && (this.onTooltipHintSwitch = e[0]);
46
+ y(this, "calculatedData", null);
47
+ this.settings = new x(t), a && (this.onTooltipHintSwitch = a[0]);
42
48
  }
43
- mount(a) {
49
+ mount(e) {
44
50
  try {
45
- this.chartRenderer.init(a), this._updateData(), this._updateChart(), this.hasError = !1, this.errorInfo = null;
51
+ this.chartRenderer.init(e), this._updateData(), this._updateChart(), this.hasError = !1, this.errorInfo = null;
46
52
  } 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));
53
+ this.hasError = !0, t instanceof Error && (this.errorInfo = S(t.cause) ? t.cause : E(t), this.chartRenderer.renderError(t.message), console.error(t));
48
54
  }
49
55
  }
50
56
  unmount() {
51
57
  this.chartRenderer.clear();
52
58
  }
53
- updateSettingsAndData(a, t) {
59
+ updateSettingsAndData(e, t) {
54
60
  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;
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));
61
+ const a = this.settings, r = this.data;
62
+ this.settings = new x(t), this.data = e, this._needUpdateCalculatedDataBySettings(a, this.settings) || this._needUpdateCalculatedDataByData(r, this.data) ? this._updateData() : this._updateAesInData(), this._updateChart(), this.hasError = !1, this.errorInfo = null;
63
+ } catch (a) {
64
+ this.hasError = !0, a instanceof Error && (this.errorInfo = S(a.cause) ? a.cause : E(a), this.chartRenderer.renderError(a.message), console.error(a));
59
65
  }
60
66
  }
61
- updateChartState(a, t) {
67
+ updateChartState(e, t) {
62
68
  console.warn("no chart state for histogram");
63
69
  }
64
70
  export() {
65
- return this._updateChart(), B.renderToString(this.chartRenderer.component);
71
+ return this._updateChart(), R.renderToString(this.chartRenderer.component);
66
72
  }
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]);
73
+ _needUpdateCalculatedDataBySettings(e, t) {
74
+ var a, r, n, d, c, s, o, i;
75
+ return e.valueColumn.value !== t.valueColumn.value || e.facetBy.some((h, p) => {
76
+ var g;
77
+ return h.value !== ((g = t.facetBy[p]) == null ? void 0 : g.value);
78
+ }) || H(((a = e.facetSettings) == null ? void 0 : a.order) ?? [], ((r = t.facetSettings) == null ? void 0 : r.order) ?? []) || ((n = e.grouping) == null ? void 0 : n.value) !== ((d = t.grouping) == null ? void 0 : d.value) || ((c = e.grouping) == null ? void 0 : c.nullValueLabel) !== ((s = t.grouping) == null ? void 0 : s.nullValueLabel) || e.layers.length !== t.layers.length || e.layers.some((h, p) => h.type !== t.layers[p].type) || e.binsCount !== t.binsCount || e.chartSettings.xAxis.scale !== t.chartSettings.xAxis.scale || ((o = e.groupingOrder) == null ? void 0 : o.some((h, p) => {
79
+ var g;
80
+ return h !== ((g = t.groupingOrder) == null ? void 0 : g[p]);
81
+ })) || ((i = t.groupingOrder) == null ? void 0 : i.some((h, p) => {
82
+ var g;
83
+ return h !== ((g = e.groupingOrder) == null ? void 0 : g[p]);
78
84
  }));
79
85
  }
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);
86
+ _needUpdateCalculatedDataByData(e, t) {
87
+ const a = Object.keys(e.data), r = Object.keys(t.data);
88
+ return e.id !== t.id || a.length !== r.length || a.some((n) => {
89
+ var d;
90
+ return e.data[n].length !== ((d = t.data[n]) == null ? void 0 : d.length);
85
91
  });
86
92
  }
87
93
  _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 > _) {
90
- const c = {
91
- type: "tooManyFacets",
92
- info: { count: s.length, maxCount: _ }
93
- };
94
- throw Error(c.type, { cause: c });
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) {
99
- const c = {
100
- type: "tooManyHistogramGroups",
101
- info: { count: d.length, maxCount: b }
102
- };
103
- throw Error(c.type, { cause: c });
94
+ var _;
95
+ const { valueColumn: e, facetBy: t, facetSettings: a, grouping: r, binsCount: n, chartSettings: d, inheritedAes: c, groupingOrder: s } = this.settings, o = t.length ? t.map((m) => m.value) : [null];
96
+ let i = k(
97
+ t.map((m) => T(this.data, m))
98
+ );
99
+ if (i.length === 0 && (i = [[I]]), (_ = a == null ? void 0 : a.order) != null && _.length) {
100
+ const m = i.map(D);
101
+ i = b.intersection(a.order, m).map((f) => i.find((A) => D(A) === f)).filter((f) => f != null);
104
102
  }
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);
103
+ const h = i.map(D), p = G(this.data, t, h, i), g = t.length ? o.map((m, v) => [...new Set(i.map((f) => f[v]))]) : [void 0], L = [(r == null ? void 0 : r.value) ?? null];
104
+ let C = r ? this.data.getColumnCategories(r.value, !1).map(String) : [I];
105
+ r && s && (C = b.intersection(s, C.map(String))), this.data.setGrouping([...o, ...L], g);
106
+ const w = U(this.data, i, C, e, n, d.xAxis.scale);
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: h,
109
+ facetLabels: p,
110
+ histogramDataByFacets: w,
111
+ legendInfo: K(this.data, r ? [r] : [], c)
113
112
  };
114
113
  }
115
114
  _updateAesInData() {
@@ -118,27 +117,27 @@ class Y extends S {
118
117
  _updateChart() {
119
118
  if (!this.calculatedData)
120
119
  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(
120
+ const { facetLabels: e } = this.calculatedData, { id: t, chartSettings: a, facetSettings: r, inheritedAes: n, layers: d, grouping: c, groupingDirection: s, groupingStack: o, facetBy: i } = this.settings;
121
+ this.calculatedData.legendInfo = K(this.data, c ? [c] : [], n), this.chartRenderer.render(
123
122
  this.data,
124
123
  t,
125
- e,
126
- n,
124
+ a,
125
+ r,
127
126
  this.calculatedData.facetKeys,
128
- this.calculatedData.facetKeys.map((p) => a[p]),
127
+ this.calculatedData.facetKeys.map((h) => e[h]),
129
128
  //for titles, if facet by more than 1 column
130
129
  this.calculatedData.histogramDataByFacets,
131
130
  this.calculatedData.legendInfo,
132
- i,
133
- l,
134
- r,
135
- s,
131
+ d,
132
+ n,
133
+ c,
136
134
  o,
135
+ s,
137
136
  this.onTooltipHintSwitch
138
137
  );
139
138
  }
140
139
  }
141
140
  export {
142
- Y as ChartHistogram
141
+ nt as ChartHistogram
143
142
  };
144
143
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/histogram/index.ts"],"sourcesContent":["import {\n intersection\n} from 'lodash';\nimport { renderToString } from 'react-dom/server.browser';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame } from '../DataFrame';\nimport type { ErrorInfoHistogramGroups} from '../types';\nimport { type Category, type ColumnName, type ErrorInfoFacets, getUnknownErrorInfo, type HistogramEventHandlers, type HistogramSettings, isErrorInfo } from '../types';\nimport { getKeysCombinations } from '../utils/getKeysCombination';\nimport ChartRenderer from './ChartRenderer';\nimport type { HistogramLegendInfo } from './components/types';\nimport type { GroupedHistogramData } from './getHistogramData';\nimport { createHistogramDataByFacets } from './getHistogramData';\nimport { HistogramSettingsImpl } from './HistogramSettingsImpl';\nimport { MAX_FACETS_COUNT, MAX_GROUPS_COUNT } from '../constants';\nimport { getFacetLabels } from '../discrete/utils/getFacetLabels';\n\nfunction getLegendInfo(\n data: DataFrame,\n grouping: ColumnName[],\n inheritedAes: HistogramSettingsImpl['inheritedAes']\n): HistogramLegendInfo {\n return grouping.reduce((res: HistogramLegendInfo, column) => {\n const categories = data.getColumnCategories(column.value, false);\n const getValueLabel = (category: Category) => (column.valueLabels\n ? String(data.getColumnValue(\n column.valueLabels,\n data.getColumnCategoryRowIndex(column.value, category)\n ))\n : category\n );\n const labels = categories.reduce((res: Record<string, string>, category) => {\n res[category] = getValueLabel(category);\n return res;\n }, {});\n res[column.value] = {\n values: categories.sort((a, b) => labels[a].localeCompare(labels[b], 'en', {numeric: true})),\n aesMap: inheritedAes[column.value],\n labels,\n };\n return res;\n }, {});\n}\n\nexport class ChartHistogram extends AbstractChart {\n settings: HistogramSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v:boolean) => void = () => undefined;\n calculatedData: {\n facetKeys: string[];\n facetKeysCombinations: string[][];\n histogramDataByFacets: Record<string, GroupedHistogramData>\n legendInfo: HistogramLegendInfo;\n facetLabels: Record<string, string[]>;\n } | null = null;\n\n constructor(data: DataFrame, settings: HistogramSettings, eventHandlers?: HistogramEventHandlers) {\n super(data, settings);\n\n this.settings = new HistogramSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers[0];\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n this.hasError = false;\n this.errorInfo = null;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.errorInfo = isErrorInfo(err.cause) ? err.cause : getUnknownErrorInfo(err);\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n unmount() {\n this.chartRenderer.clear();\n }\n\n updateSettingsAndData(data: DataFrame, settings: HistogramSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new HistogramSettingsImpl(settings);\n this.data = data;\n if (\n this._needUpdateCalculatedDataBySettings(previousSettings, this.settings) ||\n this._needUpdateCalculatedDataByData(previousData, this.data)\n ) {\n this._updateData();\n } else {\n this._updateAesInData();\n }\n this._updateChart();\n this.hasError = false;\n this.errorInfo = null;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.errorInfo = isErrorInfo(err.cause) ? err.cause : getUnknownErrorInfo(err);\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n updateChartState(_field: string, _value: unknown) {\n console.warn('no chart state for histogram');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: HistogramSettingsImpl, settings: HistogramSettingsImpl) {\n return (\n prevSettings.valueColumn.value !== settings.valueColumn.value ||\n prevSettings.facetBy.some((el, idx) => el.value !== settings.facetBy[idx]?.value) ||\n prevSettings.grouping?.value !== settings.grouping?.value ||\n prevSettings.layers.length !== settings.layers.length ||\n prevSettings.layers.some((l, idx) => l.type !== settings.layers[idx].type) ||\n prevSettings.binsCount !== settings.binsCount ||\n prevSettings.chartSettings.xAxis.scale !== settings.chartSettings.xAxis.scale ||\n prevSettings.groupingOrder?.some((key, idx) => key !== settings.groupingOrder?.[idx]) ||\n settings.groupingOrder?.some((key, idx) => key !== prevSettings.groupingOrder?.[idx])\n );\n }\n\n _needUpdateCalculatedDataByData(prevData: DataFrame, data: DataFrame) {\n const prevKeys = Object.keys(prevData.data);\n const keys = Object.keys(data.data);\n return (\n prevData.id !== data.id ||\n prevKeys.length !== keys.length ||\n prevKeys.some(key => prevData.data[key].length !== data.data[key]?.length)\n );\n }\n\n _updateData() {\n const {valueColumn, facetBy, grouping, binsCount, chartSettings, inheritedAes, groupingOrder} = this.settings;\n\n const facetKeysLists = facetBy.map(column => this.data.getColumnCategories(column.value));\n const facetKeysCombinations = facetKeysLists.length ? getKeysCombinations([...facetKeysLists]) : [['null']];\n\n if (facetKeysCombinations.length > MAX_FACETS_COUNT) {\n const errorInfo: ErrorInfoFacets = {\n type: 'tooManyFacets',\n info: {count: facetKeysCombinations.length, maxCount: MAX_FACETS_COUNT}\n };\n throw Error(errorInfo.type, {cause: errorInfo});\n }\n\n const facetGroupingValues = facetBy.map(column => column.value) ?? null;\n const groupingValues = grouping ? [grouping.value] : [];\n let groupingKeys = grouping ? this.data.getColumnCategories(grouping.value) : ['null'];\n if (groupingKeys.length > MAX_GROUPS_COUNT) {\n const errorInfo: ErrorInfoHistogramGroups = {\n type: 'tooManyHistogramGroups',\n info: {count: groupingKeys.length, maxCount: MAX_GROUPS_COUNT}\n };\n throw Error(errorInfo.type, {cause: errorInfo});\n }\n if (groupingOrder) {\n groupingKeys = intersection(groupingOrder, groupingKeys);\n }\n\n this.data.setGrouping([...facetGroupingValues, ...groupingValues]);\n const histogramDataByFacets = createHistogramDataByFacets(this.data, facetKeysCombinations, groupingKeys, valueColumn, binsCount, chartSettings.xAxis.scale);\n\n const facetKeys = facetKeysCombinations.map(v => v.join(', '));\n const facetLabels = getFacetLabels(this.data, facetBy, facetKeys, facetKeysCombinations);\n this.calculatedData = {\n facetKeys,\n facetKeysCombinations,\n facetLabels,\n histogramDataByFacets,\n legendInfo: getLegendInfo(this.data, grouping ? [grouping] : [], inheritedAes)\n };\n }\n\n _updateAesInData() {\n const calculated = this.calculatedData;\n if (!calculated) {\n return;\n }\n }\n\n _updateChart() {\n if (!this.calculatedData) {\n return;\n }\n const {facetLabels} = this.calculatedData;\n const {id, chartSettings, facetSettings, inheritedAes, layers, grouping, groupingDirection, groupingStack, facetBy} = this.settings;\n this.calculatedData.legendInfo = getLegendInfo(this.data, grouping ? [grouping] : [], inheritedAes);\n\n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n facetSettings,\n this.calculatedData.facetKeys,\n this.calculatedData.facetKeys.map(key => facetLabels[key]),\n //for titles, if facet by more than 1 column\n this.calculatedData.histogramDataByFacets,\n this.calculatedData.legendInfo,\n layers,\n inheritedAes,\n grouping,\n groupingStack,\n groupingDirection,\n this.onTooltipHintSwitch\n );\n }\n}\n"],"names":["getLegendInfo","data","grouping","inheritedAes","res","column","categories","getValueLabel","category","labels","a","b","ChartHistogram","AbstractChart","settings","eventHandlers","__publicField","ChartRenderer","HistogramSettingsImpl","node","err","isErrorInfo","getUnknownErrorInfo","previousSettings","previousData","_field","_value","renderToString","prevSettings","el","idx","_a","_b","l","_c","key","_d","prevData","prevKeys","keys","valueColumn","facetBy","binsCount","chartSettings","groupingOrder","facetKeysLists","facetKeysCombinations","getKeysCombinations","MAX_FACETS_COUNT","errorInfo","facetGroupingValues","groupingValues","groupingKeys","MAX_GROUPS_COUNT","intersection","histogramDataByFacets","createHistogramDataByFacets","facetKeys","v","facetLabels","getFacetLabels","id","facetSettings","layers","groupingDirection","groupingStack"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/histogram/index.ts"],"sourcesContent":["import { intersection } from 'lodash';\nimport { renderToString } from 'react-dom/server.browser';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame} from '../DataFrame';\nimport { type GroupKey, NO_GROUPED } from '../DataFrame';\nimport type { DataValue} from '../types';\nimport { type Category, type ColumnName, getUnknownErrorInfo, type HistogramEventHandlers, type HistogramSettings, isErrorInfo } from '../types';\nimport { getKeysCombinations } from '../utils/getKeysCombination';\nimport ChartRenderer from './ChartRenderer';\nimport type { HistogramLegendInfo } from './components/types';\nimport type { GroupedHistogramData } from './getHistogramData';\nimport { createHistogramDataByFacets } from './getHistogramData';\nimport { HistogramSettingsImpl } from './HistogramSettingsImpl';\nimport { getFacetLabels } from '../discrete/utils/getFacetLabels';\nimport { getFacetStringKey } from '../discrete/utils/getFacetStringKey';\nimport { arraysAreDifferent } from '../utils/arraysAreDifferent';\n\nfunction getGroupingKeys(data: DataFrame, column: ColumnName, order: DataValue[] | null = null) {\n const groupingColumn = column.value;\n const availableKeys = data.getColumnCategories(groupingColumn);\n return intersection(order ?? availableKeys, availableKeys).map(String);\n}\n\nfunction getLegendInfo(\n data: DataFrame,\n grouping: ColumnName[],\n inheritedAes: HistogramSettingsImpl['inheritedAes']\n): HistogramLegendInfo {\n return grouping.reduce((res: HistogramLegendInfo, column) => {\n const nullValueLabel = column.nullValueLabel ?? 'NA';\n const categories = data.getColumnCategories(column.value, false);\n const getValueLabel = (category: Category) => (column.valueLabels\n ? String(data.getColumnValue(\n column.valueLabels,\n data.getColumnCategoryRowIndex(column.value, category)\n ))\n : category\n );\n const labels = categories.reduce((res: Record<string, string>, category) => {\n res[category] = getValueLabel(category);\n if (res[category] === 'null') {\n res[category] = nullValueLabel;\n }\n return res;\n }, {});\n res[column.value] = {\n values: categories.sort((a, b) => labels[a].localeCompare(labels[b], 'en', {numeric: true})),\n aesMap: inheritedAes[column.value],\n labels,\n };\n return res;\n }, {});\n}\n\nexport class ChartHistogram extends AbstractChart {\n settings: HistogramSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v:boolean) => void = () => undefined;\n calculatedData: {\n facetKeys: string[];\n histogramDataByFacets: Record<string, GroupedHistogramData>\n legendInfo: HistogramLegendInfo;\n facetLabels: Record<string, string[]>;\n } | null = null;\n\n constructor(data: DataFrame, settings: HistogramSettings, eventHandlers?: HistogramEventHandlers) {\n super(data, settings);\n\n this.settings = new HistogramSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers[0];\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n this.hasError = false;\n this.errorInfo = null;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.errorInfo = isErrorInfo(err.cause) ? err.cause : getUnknownErrorInfo(err);\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n unmount() {\n this.chartRenderer.clear();\n }\n\n updateSettingsAndData(data: DataFrame, settings: HistogramSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new HistogramSettingsImpl(settings);\n this.data = data;\n if (\n this._needUpdateCalculatedDataBySettings(previousSettings, this.settings) ||\n this._needUpdateCalculatedDataByData(previousData, this.data)\n ) {\n this._updateData();\n } else {\n this._updateAesInData();\n }\n this._updateChart();\n this.hasError = false;\n this.errorInfo = null;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.errorInfo = isErrorInfo(err.cause) ? err.cause : getUnknownErrorInfo(err);\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n updateChartState(_field: string, _value: unknown) {\n console.warn('no chart state for histogram');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: HistogramSettingsImpl, settings: HistogramSettingsImpl) {\n return (\n prevSettings.valueColumn.value !== settings.valueColumn.value ||\n prevSettings.facetBy.some((el, idx) => el.value !== settings.facetBy[idx]?.value) ||\n arraysAreDifferent(prevSettings.facetSettings?.order ?? [], settings.facetSettings?.order ?? []) ||\n prevSettings.grouping?.value !== settings.grouping?.value ||\n prevSettings.grouping?.nullValueLabel !== settings.grouping?.nullValueLabel ||\n prevSettings.layers.length !== settings.layers.length ||\n prevSettings.layers.some((l, idx) => l.type !== settings.layers[idx].type) ||\n prevSettings.binsCount !== settings.binsCount ||\n prevSettings.chartSettings.xAxis.scale !== settings.chartSettings.xAxis.scale ||\n prevSettings.groupingOrder?.some((key, idx) => key !== settings.groupingOrder?.[idx]) ||\n settings.groupingOrder?.some((key, idx) => key !== prevSettings.groupingOrder?.[idx])\n );\n }\n\n _needUpdateCalculatedDataByData(prevData: DataFrame, data: DataFrame) {\n const prevKeys = Object.keys(prevData.data);\n const keys = Object.keys(data.data);\n return (\n prevData.id !== data.id ||\n prevKeys.length !== keys.length ||\n prevKeys.some(key => prevData.data[key].length !== data.data[key]?.length)\n );\n }\n\n _updateData() {\n const {valueColumn, facetBy, facetSettings, grouping, binsCount, chartSettings, inheritedAes, groupingOrder} = this.settings;\n\n const facetGroupingValues = facetBy.length ? facetBy.map(column => column.value) : [null];\n\n // if facet created by more than 1 data column facet key contains all of them, and all keys are used in data grouping;\n // after data preparing we need only complex keys from concatenated strings\n let facetKeyLists: (GroupKey)[][] = getKeysCombinations(\n facetBy.map(column => getGroupingKeys(this.data, column))\n );\n if (facetKeyLists.length === 0) {\n facetKeyLists = [[NO_GROUPED]];\n }\n if (facetSettings?.order?.length) {\n const allFacetKeys = facetKeyLists.map(getFacetStringKey);\n const keyOrder = intersection(facetSettings.order, allFacetKeys);\n facetKeyLists = keyOrder\n .map((keyStr) => facetKeyLists.find((fkl) => getFacetStringKey(fkl) === keyStr))\n .filter((x): x is GroupKey[] => x != null);\n }\n const facetKeys = facetKeyLists.map(getFacetStringKey);\n const facetLabels = getFacetLabels(this.data, facetBy, facetKeys, facetKeyLists);\n const facetGroupingKeys = facetBy.length\n ? facetGroupingValues.map((_, idx) => [...new Set(facetKeyLists.map(fkl => fkl[idx]))])\n : [undefined];\n const groupingValues = [grouping?.value ?? null];\n \n let groupingKeys: GroupKey[] = grouping ? this.data.getColumnCategories(grouping.value, false).map(String) : [NO_GROUPED];\n if (grouping && groupingOrder) {\n groupingKeys = intersection(groupingOrder, groupingKeys.map(String));\n }\n\n this.data.setGrouping([...facetGroupingValues, ...groupingValues], facetGroupingKeys);\n const histogramDataByFacets = createHistogramDataByFacets(this.data, facetKeyLists, groupingKeys, valueColumn, binsCount, chartSettings.xAxis.scale);\n\n this.calculatedData = {\n facetKeys,\n facetLabels,\n histogramDataByFacets,\n legendInfo: getLegendInfo(this.data, grouping ? [grouping] : [], inheritedAes)\n };\n }\n\n _updateAesInData() {\n const calculated = this.calculatedData;\n if (!calculated) {\n return;\n }\n }\n\n _updateChart() {\n if (!this.calculatedData) {\n return;\n }\n const {facetLabels} = this.calculatedData;\n const {id, chartSettings, facetSettings, inheritedAes, layers, grouping, groupingDirection, groupingStack, facetBy} = this.settings;\n this.calculatedData.legendInfo = getLegendInfo(this.data, grouping ? [grouping] : [], inheritedAes);\n\n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n facetSettings,\n this.calculatedData.facetKeys,\n this.calculatedData.facetKeys.map(key => facetLabels[key]),\n //for titles, if facet by more than 1 column\n this.calculatedData.histogramDataByFacets,\n this.calculatedData.legendInfo,\n layers,\n inheritedAes,\n grouping,\n groupingStack,\n groupingDirection,\n this.onTooltipHintSwitch\n );\n }\n}\n"],"names":["getGroupingKeys","data","column","order","groupingColumn","availableKeys","intersection","getLegendInfo","grouping","inheritedAes","res","nullValueLabel","categories","getValueLabel","category","labels","a","b","ChartHistogram","AbstractChart","settings","eventHandlers","__publicField","ChartRenderer","HistogramSettingsImpl","node","err","isErrorInfo","getUnknownErrorInfo","previousSettings","previousData","_field","_value","renderToString","prevSettings","el","idx","_a","arraysAreDifferent","_b","_c","_d","_e","_f","l","_g","key","_h","prevData","prevKeys","keys","valueColumn","facetBy","facetSettings","binsCount","chartSettings","groupingOrder","facetGroupingValues","facetKeyLists","getKeysCombinations","NO_GROUPED","allFacetKeys","getFacetStringKey","keyStr","fkl","x","facetKeys","facetLabels","getFacetLabels","facetGroupingKeys","_","groupingValues","groupingKeys","histogramDataByFacets","createHistogramDataByFacets","id","layers","groupingDirection","groupingStack"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -4,4 +4,7 @@ import { MiPlots } from './MiPlots';
4
4
  import { BubbleSettings, DendroSettings, DiscreteSettings, ErrorInfo, ErrorInfoUnknown, HeatmapSettings, HistogramSettings, ScatterplotSettings, ScatterplotUmapSettings, Settings, AxisSettingsContinuous, AxisSettingsDiscrete } from './types';
5
5
  import { LassoControlsState, Polygon } from './scatterplot-umap/types';
6
6
  import { SCATTERPLOT_CONTROLS_EVENTS } from './scatterplot-umap/constants';
7
- export { BubbleSettings, ChartInterface, DataByColumns, DendroSettings, DiscreteSettings, HeatmapSettings, HistogramSettings, MiPlots, ScatterplotSettings, ScatterplotUmapSettings, Settings, AxisSettingsDiscrete, AxisSettingsContinuous, SCATTERPLOT_CONTROLS_EVENTS, LassoControlsState, Polygon, ErrorInfo, ErrorInfoUnknown };
7
+ import { getFacetKeysFromValueLists } from './utils/getFacetKeysFromValueLists';
8
+ import { getKeysCombinations } from './utils/getKeysCombination';
9
+ export { BubbleSettings, ChartInterface, DataByColumns, DendroSettings, DiscreteSettings, getFacetKeysFromValueLists, getKeysCombinations, HeatmapSettings, HistogramSettings, MiPlots, ScatterplotSettings, ScatterplotUmapSettings, Settings, AxisSettingsDiscrete, AxisSettingsContinuous, SCATTERPLOT_CONTROLS_EVENTS, LassoControlsState, Polygon, ErrorInfo, ErrorInfoUnknown };
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACzM,OAAO,KAAK,EAAC,kBAAkB,EAAE,OAAO,EAAC,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAC,2BAA2B,EAAC,MAAM,8BAA8B,CAAC;AACzE,OAAO,KAAK,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EACH,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,mBAAmB,EAChI,eAAe,EAAE,iBAAiB,EAAE,OAAO,EAAE,mBAAmB,EAChE,uBAAuB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,sBAAsB,EAC/E,2BAA2B,EAAE,kBAAkB,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EACxF,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,11 @@
1
- import { MiPlots as r } from "./MiPlots.js";
2
- import { SCATTERPLOT_CONTROLS_EVENTS as E } from "./scatterplot-umap/constants.js";
1
+ import { MiPlots as t } from "./MiPlots.js";
2
+ import { SCATTERPLOT_CONTROLS_EVENTS as m } from "./scatterplot-umap/constants.js";
3
+ import { getFacetKeysFromValueLists as T } from "./utils/getFacetKeysFromValueLists.js";
4
+ import { getKeysCombinations as i } from "./utils/getKeysCombination.js";
3
5
  export {
4
- r as MiPlots,
5
- E as SCATTERPLOT_CONTROLS_EVENTS
6
+ t as MiPlots,
7
+ m as SCATTERPLOT_CONTROLS_EVENTS,
8
+ T as getFacetKeysFromValueLists,
9
+ i as getKeysCombinations
6
10
  };
7
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -45,3 +45,4 @@ declare class ChartRenderer {
45
45
  renderError(message: string): void;
46
46
  }
47
47
  export default ChartRenderer;
48
+ //# sourceMappingURL=ChartRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChartRenderer.d.ts","sourceRoot":"","sources":["../../src/scatterplot/ChartRenderer.tsx"],"names":[],"mappings":"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"}
@@ -33,6 +33,8 @@ export declare class ScatterplotSettingsImpl implements SettingsInterface {
33
33
  readonly facetSettings: {
34
34
  sharedX: boolean;
35
35
  sharedY: boolean;
36
+ /** Ordered list of facet keys; only these facets are shown, in this order */
37
+ order?: string[];
36
38
  nRows?: number;
37
39
  nCols?: number;
38
40
  titlePosition: 'left' | 'center' | 'right';
@@ -86,3 +88,4 @@ export declare class ScatterplotSettingsImpl implements SettingsInterface {
86
88
  readonly layers: ScatterplotLayer[];
87
89
  constructor(settings: ScatterplotSettings);
88
90
  }
91
+ //# sourceMappingURL=ScatterplotSettingsImpl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ScatterplotSettingsImpl.d.ts","sourceRoot":"","sources":["../../src/scatterplot/ScatterplotSettingsImpl.ts"],"names":[],"mappings":"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"}