@milaboratories/miplots4 1.0.128 → 1.0.130

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 (365) hide show
  1. package/dist/DataFrame.d.ts +15 -9
  2. package/dist/DataFrame.d.ts.map +1 -1
  3. package/dist/DataFrame.js +105 -81
  4. package/dist/DataFrame.js.map +1 -1
  5. package/dist/bubble/ChartRenderer.d.ts +6 -5
  6. package/dist/bubble/ChartRenderer.d.ts.map +1 -1
  7. package/dist/bubble/ChartRenderer.js +123 -121
  8. package/dist/bubble/ChartRenderer.js.map +1 -1
  9. package/dist/bubble/components/Chart.d.ts +3 -2
  10. package/dist/bubble/components/Chart.d.ts.map +1 -1
  11. package/dist/bubble/components/Chart.js +78 -97
  12. package/dist/bubble/components/Chart.js.map +1 -1
  13. package/dist/bubble/components/ChartsGroup.d.ts +6 -5
  14. package/dist/bubble/components/ChartsGroup.d.ts.map +1 -1
  15. package/dist/bubble/components/ChartsGroup.js +39 -37
  16. package/dist/bubble/components/ChartsGroup.js.map +1 -1
  17. package/dist/bubble/getCellTooltip.d.ts +5 -0
  18. package/dist/bubble/getCellTooltip.d.ts.map +1 -0
  19. package/dist/bubble/getCellTooltip.js +28 -0
  20. package/dist/bubble/getCellTooltip.js.map +1 -0
  21. package/dist/bubble/{getCells.d.ts → getGroupedCellsData.d.ts} +4 -4
  22. package/dist/bubble/getGroupedCellsData.d.ts.map +1 -0
  23. package/dist/bubble/getGroupedCellsData.js +94 -0
  24. package/dist/bubble/getGroupedCellsData.js.map +1 -0
  25. package/dist/bubble/index.d.ts +4 -4
  26. package/dist/bubble/index.d.ts.map +1 -1
  27. package/dist/bubble/index.js +47 -42
  28. package/dist/bubble/index.js.map +1 -1
  29. package/dist/bubble/utils/calculateCaptionTails.d.ts +2 -2
  30. package/dist/bubble/utils/calculateCaptionTails.d.ts.map +1 -1
  31. package/dist/bubble/utils/calculateCaptionTails.js.map +1 -1
  32. package/dist/common/Legend.d.ts.map +1 -1
  33. package/dist/common/Legend.js.map +1 -1
  34. package/dist/common/Tooltip.js +1 -1
  35. package/dist/common/Tooltip.js.map +1 -1
  36. package/dist/common/types.d.ts +1 -1
  37. package/dist/common/types.d.ts.map +1 -1
  38. package/dist/common/useDataFrame.d.ts +11 -0
  39. package/dist/common/useDataFrame.d.ts.map +1 -0
  40. package/dist/common/useDataFrame.js +20 -0
  41. package/dist/common/useDataFrame.js.map +1 -0
  42. package/dist/dendro/ChartRenderer.d.ts +9 -8
  43. package/dist/dendro/ChartRenderer.d.ts.map +1 -1
  44. package/dist/dendro/ChartRenderer.js +187 -187
  45. package/dist/dendro/ChartRenderer.js.map +1 -1
  46. package/dist/dendro/components/Chart.d.ts +8 -8
  47. package/dist/dendro/components/Chart.d.ts.map +1 -1
  48. package/dist/dendro/components/Chart.js +35 -35
  49. package/dist/dendro/components/Chart.js.map +1 -1
  50. package/dist/dendro/components/Heatmap.d.ts +3 -3
  51. package/dist/dendro/components/Heatmap.d.ts.map +1 -1
  52. package/dist/dendro/components/Heatmap.js +23 -23
  53. package/dist/dendro/components/Heatmap.js.map +1 -1
  54. package/dist/dendro/components/Legend.d.ts.map +1 -1
  55. package/dist/dendro/components/Legend.js.map +1 -1
  56. package/dist/dendro/components/LinksGroup.d.ts +6 -6
  57. package/dist/dendro/components/LinksGroup.d.ts.map +1 -1
  58. package/dist/dendro/components/LinksGroup.js +17 -17
  59. package/dist/dendro/components/LinksGroup.js.map +1 -1
  60. package/dist/dendro/components/NodesGroup.d.ts +7 -7
  61. package/dist/dendro/components/NodesGroup.d.ts.map +1 -1
  62. package/dist/dendro/components/NodesGroup.js +29 -29
  63. package/dist/dendro/components/NodesGroup.js.map +1 -1
  64. package/dist/dendro/components/types.d.ts +2 -2
  65. package/dist/dendro/components/types.d.ts.map +1 -1
  66. package/dist/dendro/getHeatmapData.d.ts +2 -2
  67. package/dist/dendro/getHeatmapData.d.ts.map +1 -1
  68. package/dist/dendro/getHeatmapData.js +48 -44
  69. package/dist/dendro/getHeatmapData.js.map +1 -1
  70. package/dist/dendro/getHierarchyData.d.ts +3 -3
  71. package/dist/dendro/getHierarchyData.d.ts.map +1 -1
  72. package/dist/dendro/getHierarchyData.js +31 -31
  73. package/dist/dendro/getHierarchyData.js.map +1 -1
  74. package/dist/dendro/index.d.ts +5 -5
  75. package/dist/dendro/index.d.ts.map +1 -1
  76. package/dist/dendro/index.js +86 -89
  77. package/dist/dendro/index.js.map +1 -1
  78. package/dist/discrete/ChartRenderer.d.ts +6 -6
  79. package/dist/discrete/ChartRenderer.d.ts.map +1 -1
  80. package/dist/discrete/ChartRenderer.js +197 -196
  81. package/dist/discrete/ChartRenderer.js.map +1 -1
  82. package/dist/discrete/DiscreteSettingsImpl.d.ts +3 -3
  83. package/dist/discrete/DiscreteSettingsImpl.d.ts.map +1 -1
  84. package/dist/discrete/DiscreteSettingsImpl.js +8 -8
  85. package/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
  86. package/dist/discrete/components/layers/BoxElement.js.map +1 -1
  87. package/dist/discrete/index.d.ts +1 -1
  88. package/dist/discrete/index.d.ts.map +1 -1
  89. package/dist/discrete/index.js +109 -106
  90. package/dist/discrete/index.js.map +1 -1
  91. package/dist/discrete/layers/bar.d.ts +2 -2
  92. package/dist/discrete/layers/bar.d.ts.map +1 -1
  93. package/dist/discrete/layers/bar.js +32 -37
  94. package/dist/discrete/layers/bar.js.map +1 -1
  95. package/dist/discrete/layers/binnedDots.d.ts +3 -3
  96. package/dist/discrete/layers/binnedDots.d.ts.map +1 -1
  97. package/dist/discrete/layers/binnedDots.js +66 -78
  98. package/dist/discrete/layers/binnedDots.js.map +1 -1
  99. package/dist/discrete/layers/boxes.d.ts +3 -4
  100. package/dist/discrete/layers/boxes.d.ts.map +1 -1
  101. package/dist/discrete/layers/boxes.js +59 -60
  102. package/dist/discrete/layers/boxes.js.map +1 -1
  103. package/dist/discrete/layers/dots.d.ts +2 -3
  104. package/dist/discrete/layers/dots.d.ts.map +1 -1
  105. package/dist/discrete/layers/dots.js +30 -30
  106. package/dist/discrete/layers/dots.js.map +1 -1
  107. package/dist/discrete/layers/lines.js +11 -10
  108. package/dist/discrete/layers/lines.js.map +1 -1
  109. package/dist/discrete/layers/logo.d.ts +2 -2
  110. package/dist/discrete/layers/logo.d.ts.map +1 -1
  111. package/dist/discrete/layers/logo.js +21 -21
  112. package/dist/discrete/layers/logo.js.map +1 -1
  113. package/dist/discrete/layers/pairedPoints.d.ts +2 -2
  114. package/dist/discrete/layers/pairedPoints.d.ts.map +1 -1
  115. package/dist/discrete/layers/pairedPoints.js +62 -62
  116. package/dist/discrete/layers/pairedPoints.js.map +1 -1
  117. package/dist/discrete/layers/sina.d.ts +3 -4
  118. package/dist/discrete/layers/sina.d.ts.map +1 -1
  119. package/dist/discrete/layers/sina.js +67 -71
  120. package/dist/discrete/layers/sina.js.map +1 -1
  121. package/dist/discrete/layers/stackedBar.d.ts +1 -1
  122. package/dist/discrete/layers/stackedBar.d.ts.map +1 -1
  123. package/dist/discrete/layers/stackedBar.js +25 -25
  124. package/dist/discrete/layers/stackedBar.js.map +1 -1
  125. package/dist/discrete/layers/violins.js +13 -13
  126. package/dist/discrete/utils/getOutliersBounds.d.ts +1 -1
  127. package/dist/discrete/utils/getOutliersBounds.d.ts.map +1 -1
  128. package/dist/discrete/utils/getOutliersBounds.js +5 -5
  129. package/dist/discrete/utils/getOutliersBounds.js.map +1 -1
  130. package/dist/discrete/utils/splitTextByWidth.js +1 -1
  131. package/dist/discrete/utils/splitTextByWidth.js.map +1 -1
  132. package/dist/heatmap/ChartRenderer.d.ts +7 -6
  133. package/dist/heatmap/ChartRenderer.d.ts.map +1 -1
  134. package/dist/heatmap/ChartRenderer.js +286 -266
  135. package/dist/heatmap/ChartRenderer.js.map +1 -1
  136. package/dist/heatmap/HeatmapSettingsImpl.d.ts +2 -2
  137. package/dist/heatmap/HeatmapSettingsImpl.d.ts.map +1 -1
  138. package/dist/heatmap/HeatmapSettingsImpl.js +1 -1
  139. package/dist/heatmap/HeatmapSettingsImpl.js.map +1 -1
  140. package/dist/heatmap/components/Annotations/Annotation.d.ts.map +1 -1
  141. package/dist/heatmap/components/Annotations/Annotation.js +40 -39
  142. package/dist/heatmap/components/Annotations/Annotation.js.map +1 -1
  143. package/dist/heatmap/components/Captions/GroupCaptions.d.ts.map +1 -1
  144. package/dist/heatmap/components/Captions/GroupCaptions.js +45 -36
  145. package/dist/heatmap/components/Captions/GroupCaptions.js.map +1 -1
  146. package/dist/heatmap/components/Chart.d.ts.map +1 -1
  147. package/dist/heatmap/components/Chart.js +104 -101
  148. package/dist/heatmap/components/Chart.js.map +1 -1
  149. package/dist/heatmap/components/ChartsGroup.d.ts +2 -2
  150. package/dist/heatmap/components/ChartsGroup.d.ts.map +1 -1
  151. package/dist/heatmap/components/ChartsGroup.js +14 -14
  152. package/dist/heatmap/components/ChartsGroup.js.map +1 -1
  153. package/dist/heatmap/components/Dendrograms.d.ts +3 -1
  154. package/dist/heatmap/components/Dendrograms.d.ts.map +1 -1
  155. package/dist/heatmap/components/Dendrograms.js +54 -48
  156. package/dist/heatmap/components/Dendrograms.js.map +1 -1
  157. package/dist/heatmap/components/types.d.ts +5 -4
  158. package/dist/heatmap/components/types.d.ts.map +1 -1
  159. package/dist/heatmap/getCells.d.ts +3 -2
  160. package/dist/heatmap/getCells.d.ts.map +1 -1
  161. package/dist/heatmap/getCells.js +97 -93
  162. package/dist/heatmap/getCells.js.map +1 -1
  163. package/dist/heatmap/getDendrograms.d.ts +2 -2
  164. package/dist/heatmap/getDendrograms.d.ts.map +1 -1
  165. package/dist/heatmap/getDendrograms.js +36 -36
  166. package/dist/heatmap/getDendrograms.js.map +1 -1
  167. package/dist/heatmap/index.d.ts +3 -3
  168. package/dist/heatmap/index.d.ts.map +1 -1
  169. package/dist/heatmap/index.js +13 -12
  170. package/dist/heatmap/index.js.map +1 -1
  171. package/dist/heatmap/utils/calculateAnnotationTitleSizes.d.ts.map +1 -1
  172. package/dist/heatmap/utils/calculateAnnotationTitleSizes.js +1 -1
  173. package/dist/heatmap/utils/calculateAnnotationTitleSizes.js.map +1 -1
  174. package/dist/heatmap/utils/calculateCaptionTails.d.ts +3 -3
  175. package/dist/heatmap/utils/calculateCaptionTails.d.ts.map +1 -1
  176. package/dist/heatmap/utils/calculateCaptionTails.js +89 -54
  177. package/dist/heatmap/utils/calculateCaptionTails.js.map +1 -1
  178. package/dist/heatmap/utils/calculateChartSideElementSizes.js +19 -19
  179. package/dist/heatmap/utils/calculateChartSideElementSizes.js.map +1 -1
  180. package/dist/histogram/ChartRenderer.d.ts +6 -5
  181. package/dist/histogram/ChartRenderer.d.ts.map +1 -1
  182. package/dist/histogram/ChartRenderer.js +154 -153
  183. package/dist/histogram/ChartRenderer.js.map +1 -1
  184. package/dist/histogram/HistogramSettingsImpl.d.ts +2 -2
  185. package/dist/histogram/HistogramSettingsImpl.d.ts.map +1 -1
  186. package/dist/histogram/HistogramSettingsImpl.js.map +1 -1
  187. package/dist/histogram/components/Chart.js +48 -48
  188. package/dist/histogram/components/Chart.js.map +1 -1
  189. package/dist/histogram/components/types.d.ts +4 -3
  190. package/dist/histogram/components/types.d.ts.map +1 -1
  191. package/dist/histogram/getHistogramData.d.ts +7 -7
  192. package/dist/histogram/getHistogramData.d.ts.map +1 -1
  193. package/dist/histogram/getHistogramData.js +52 -53
  194. package/dist/histogram/getHistogramData.js.map +1 -1
  195. package/dist/histogram/index.d.ts +3 -3
  196. package/dist/histogram/index.d.ts.map +1 -1
  197. package/dist/histogram/index.js +49 -45
  198. package/dist/histogram/index.js.map +1 -1
  199. package/dist/node_modules/@d3fc/d3fc-axis/src/axisBase.js +10 -10
  200. package/dist/node_modules/d3-array/src/min.js +5 -11
  201. package/dist/node_modules/d3-array/src/min.js.map +1 -1
  202. package/dist/node_modules/d3-shape/src/area.js +30 -30
  203. package/dist/node_modules/d3-shape/src/line.js +6 -6
  204. package/dist/node_modules/d3-shape/src/line.js.map +1 -1
  205. package/dist/node_modules/kdbush/index.js +148 -0
  206. package/dist/node_modules/kdbush/index.js.map +1 -0
  207. package/dist/scatterplot/ChartRenderer.d.ts +7 -6
  208. package/dist/scatterplot/ChartRenderer.d.ts.map +1 -1
  209. package/dist/scatterplot/ChartRenderer.js +212 -195
  210. package/dist/scatterplot/ChartRenderer.js.map +1 -1
  211. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts +2 -2
  212. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts.map +1 -1
  213. package/dist/scatterplot/ScatterplotSettingsImpl.js +8 -8
  214. package/dist/scatterplot/ScatterplotSettingsImpl.js.map +1 -1
  215. package/dist/scatterplot/components/ChartAxisTitles.d.ts.map +1 -1
  216. package/dist/scatterplot/components/ChartAxisTitles.js +31 -30
  217. package/dist/scatterplot/components/ChartAxisTitles.js.map +1 -1
  218. package/dist/scatterplot/components/ChartLayersData.d.ts.map +1 -1
  219. package/dist/scatterplot/components/ChartLayersData.js +138 -156
  220. package/dist/scatterplot/components/ChartLayersData.js.map +1 -1
  221. package/dist/scatterplot/components/ChartTooltip.d.ts.map +1 -1
  222. package/dist/scatterplot/components/ChartTooltip.js +28 -27
  223. package/dist/scatterplot/components/ChartTooltip.js.map +1 -1
  224. package/dist/scatterplot/components/ChartTrendsData.js +21 -21
  225. package/dist/scatterplot/components/ChartTrendsData.js.map +1 -1
  226. package/dist/scatterplot/components/ChartsGroup.js +3 -3
  227. package/dist/scatterplot/components/ChartsGroup.js.map +1 -1
  228. package/dist/scatterplot/components/types.d.ts +7 -7
  229. package/dist/scatterplot/components/types.d.ts.map +1 -1
  230. package/dist/scatterplot/constants.d.ts +1 -1
  231. package/dist/scatterplot/constants.d.ts.map +1 -1
  232. package/dist/scatterplot/constants.js.map +1 -1
  233. package/dist/scatterplot/dots.d.ts +2 -2
  234. package/dist/scatterplot/dots.d.ts.map +1 -1
  235. package/dist/scatterplot/dots.js +21 -21
  236. package/dist/scatterplot/dots.js.map +1 -1
  237. package/dist/scatterplot/getLayersData.d.ts +3 -3
  238. package/dist/scatterplot/getLayersData.d.ts.map +1 -1
  239. package/dist/scatterplot/getLayersData.js +12 -15
  240. package/dist/scatterplot/getLayersData.js.map +1 -1
  241. package/dist/scatterplot/index.d.ts +4 -4
  242. package/dist/scatterplot/index.d.ts.map +1 -1
  243. package/dist/scatterplot/index.js +71 -72
  244. package/dist/scatterplot/index.js.map +1 -1
  245. package/dist/scatterplot/linearRegression.d.ts +5 -4
  246. package/dist/scatterplot/linearRegression.d.ts.map +1 -1
  247. package/dist/scatterplot/linearRegression.js +88 -86
  248. package/dist/scatterplot/linearRegression.js.map +1 -1
  249. package/dist/scatterplot/utils/createAesGetter.d.ts +3 -2
  250. package/dist/scatterplot/utils/createAesGetter.d.ts.map +1 -1
  251. package/dist/scatterplot/utils/createAesGetter.js +21 -21
  252. package/dist/scatterplot/utils/createAesGetter.js.map +1 -1
  253. package/dist/scatterplot/utils/createLegendInfo.d.ts +2 -10
  254. package/dist/scatterplot/utils/createLegendInfo.d.ts.map +1 -1
  255. package/dist/scatterplot/utils/createLegendInfo.js +44 -37
  256. package/dist/scatterplot/utils/createLegendInfo.js.map +1 -1
  257. package/dist/scatterplot/utils/getVisibleLabels.d.ts +6 -9
  258. package/dist/scatterplot/utils/getVisibleLabels.d.ts.map +1 -1
  259. package/dist/scatterplot/utils/getVisibleLabels.js +46 -56
  260. package/dist/scatterplot/utils/getVisibleLabels.js.map +1 -1
  261. package/dist/scatterplot-umap/ChartRenderer.d.ts +18 -15
  262. package/dist/scatterplot-umap/ChartRenderer.d.ts.map +1 -1
  263. package/dist/scatterplot-umap/ChartRenderer.js +231 -214
  264. package/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
  265. package/dist/scatterplot-umap/SettingsImpl.d.ts +2 -2
  266. package/dist/scatterplot-umap/SettingsImpl.d.ts.map +1 -1
  267. package/dist/scatterplot-umap/SettingsImpl.js +6 -6
  268. package/dist/scatterplot-umap/SettingsImpl.js.map +1 -1
  269. package/dist/scatterplot-umap/colors.d.ts +6 -0
  270. package/dist/scatterplot-umap/colors.d.ts.map +1 -0
  271. package/dist/scatterplot-umap/colors.js +42 -0
  272. package/dist/scatterplot-umap/colors.js.map +1 -0
  273. package/dist/scatterplot-umap/components/Lasso.d.ts.map +1 -1
  274. package/dist/scatterplot-umap/components/Lasso.js +148 -124
  275. package/dist/scatterplot-umap/components/Lasso.js.map +1 -1
  276. package/dist/scatterplot-umap/components/LowerSVG.d.ts +2 -2
  277. package/dist/scatterplot-umap/components/LowerSVG.d.ts.map +1 -1
  278. package/dist/scatterplot-umap/components/LowerSVG.js +88 -87
  279. package/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
  280. package/dist/scatterplot-umap/components/UpperSVG.d.ts.map +1 -1
  281. package/dist/scatterplot-umap/components/UpperSVG.js +20 -19
  282. package/dist/scatterplot-umap/components/UpperSVG.js.map +1 -1
  283. package/dist/scatterplot-umap/index.d.ts +0 -2
  284. package/dist/scatterplot-umap/index.d.ts.map +1 -1
  285. package/dist/scatterplot-umap/index.js +77 -104
  286. package/dist/scatterplot-umap/index.js.map +1 -1
  287. package/dist/scatterplot-umap/types.d.ts +7 -10
  288. package/dist/scatterplot-umap/types.d.ts.map +1 -1
  289. package/dist/types/bubble.d.ts +12 -12
  290. package/dist/types/common.d.ts +4 -3
  291. package/dist/types/common.d.ts.map +1 -1
  292. package/dist/types/common.js +1 -1
  293. package/dist/types/common.js.map +1 -1
  294. package/dist/types/dendro.d.ts +10 -10
  295. package/dist/types/dendro.d.ts.map +1 -1
  296. package/dist/types/dendro.js +1 -1
  297. package/dist/types/dendro.js.map +1 -1
  298. package/dist/types/discrete.d.ts +14 -14
  299. package/dist/types/discrete.d.ts.map +1 -1
  300. package/dist/types/discrete.js +3 -3
  301. package/dist/types/discrete.js.map +1 -1
  302. package/dist/types/heatmap.d.ts +28 -28
  303. package/dist/types/heatmap.d.ts.map +1 -1
  304. package/dist/types/heatmap.js +1 -1
  305. package/dist/types/heatmap.js.map +1 -1
  306. package/dist/types/histogram.d.ts +8 -8
  307. package/dist/types/histogram.d.ts.map +1 -1
  308. package/dist/types/histogram.js +1 -1
  309. package/dist/types/histogram.js.map +1 -1
  310. package/dist/types/scatterplot-umap.d.ts +11 -15
  311. package/dist/types/scatterplot-umap.d.ts.map +1 -1
  312. package/dist/types/scatterplot-umap.js +9 -9
  313. package/dist/types/scatterplot-umap.js.map +1 -1
  314. package/dist/types/scatterplot.d.ts +12 -12
  315. package/dist/types/scatterplot.d.ts.map +1 -1
  316. package/dist/types/scatterplot.js +1 -1
  317. package/dist/types/scatterplot.js.map +1 -1
  318. package/dist/utils/TextMeasurer/TextMeasurer.d.ts +7 -0
  319. package/dist/utils/TextMeasurer/TextMeasurer.d.ts.map +1 -0
  320. package/dist/utils/TextMeasurer/TextMeasurer.js +42 -0
  321. package/dist/utils/TextMeasurer/TextMeasurer.js.map +1 -0
  322. package/dist/utils/TextMeasurer/charToWidth.json.js +155 -0
  323. package/dist/utils/TextMeasurer/charToWidth.json.js.map +1 -0
  324. package/dist/utils/arrangeLegendParts.js +1 -1
  325. package/dist/utils/arrangeLegendParts.js.map +1 -1
  326. package/dist/utils/getChartEdgeSides.d.ts +1 -1
  327. package/dist/utils/getLegendWidth.d.ts.map +1 -1
  328. package/dist/utils/getLegendWidth.js +1 -1
  329. package/dist/utils/getLegendWidth.js.map +1 -1
  330. package/package.json +5 -3
  331. package/dist/bubble/getCells.d.ts.map +0 -1
  332. package/dist/bubble/getCells.js +0 -91
  333. package/dist/bubble/getCells.js.map +0 -1
  334. package/dist/node_modules/d3-quadtree/src/add.js +0 -30
  335. package/dist/node_modules/d3-quadtree/src/add.js.map +0 -1
  336. package/dist/node_modules/d3-quadtree/src/cover.js +0 -29
  337. package/dist/node_modules/d3-quadtree/src/cover.js.map +0 -1
  338. package/dist/node_modules/d3-quadtree/src/data.js +0 -12
  339. package/dist/node_modules/d3-quadtree/src/data.js.map +0 -1
  340. package/dist/node_modules/d3-quadtree/src/extent.js +0 -7
  341. package/dist/node_modules/d3-quadtree/src/extent.js.map +0 -1
  342. package/dist/node_modules/d3-quadtree/src/find.js +0 -26
  343. package/dist/node_modules/d3-quadtree/src/find.js.map +0 -1
  344. package/dist/node_modules/d3-quadtree/src/quad.js +0 -7
  345. package/dist/node_modules/d3-quadtree/src/quad.js.map +0 -1
  346. package/dist/node_modules/d3-quadtree/src/quadtree.js +0 -51
  347. package/dist/node_modules/d3-quadtree/src/quadtree.js.map +0 -1
  348. package/dist/node_modules/d3-quadtree/src/remove.js +0 -21
  349. package/dist/node_modules/d3-quadtree/src/remove.js.map +0 -1
  350. package/dist/node_modules/d3-quadtree/src/root.js +0 -7
  351. package/dist/node_modules/d3-quadtree/src/root.js.map +0 -1
  352. package/dist/node_modules/d3-quadtree/src/size.js +0 -12
  353. package/dist/node_modules/d3-quadtree/src/size.js.map +0 -1
  354. package/dist/node_modules/d3-quadtree/src/visit.js +0 -14
  355. package/dist/node_modules/d3-quadtree/src/visit.js.map +0 -1
  356. package/dist/node_modules/d3-quadtree/src/visitAfter.js +0 -19
  357. package/dist/node_modules/d3-quadtree/src/visitAfter.js.map +0 -1
  358. package/dist/node_modules/d3-quadtree/src/x.js +0 -11
  359. package/dist/node_modules/d3-quadtree/src/x.js.map +0 -1
  360. package/dist/node_modules/d3-quadtree/src/y.js +0 -11
  361. package/dist/node_modules/d3-quadtree/src/y.js.map +0 -1
  362. package/dist/utils/TextMeasurer.d.ts +0 -8
  363. package/dist/utils/TextMeasurer.d.ts.map +0 -1
  364. package/dist/utils/TextMeasurer.js +0 -27
  365. package/dist/utils/TextMeasurer.js.map +0 -1
@@ -1,103 +1,99 @@
1
- var v = Object.defineProperty;
2
- var E = (t, n, e) => n in t ? v(t, n, { enumerable: !0, configurable: !0, writable: !0, value: e }) : t[n] = e;
3
- var m = (t, n, e) => E(t, typeof n != "symbol" ? n + "" : n, e);
1
+ var Y = Object.defineProperty;
2
+ var q = (t, n, o) => n in t ? Y(t, n, { enumerable: !0, configurable: !0, writable: !0, value: o }) : t[n] = o;
3
+ var u = (t, n, o) => q(t, typeof n != "symbol" ? n + "" : n, o);
4
+ import E from "../../node_modules/lodash/lodash.js";
4
5
  import { getOutliersBounds as k } from "../utils/getOutliersBounds.js";
5
- import { getFacetStringKey as F } from "../utils/getFacetStringKey.js";
6
- import T from "../../node_modules/lodash/lodash.js";
7
- import V from "../../node_modules/d3-random/src/lcg.js";
8
- import _ from "../../node_modules/d3-scale/src/linear.js";
9
- import B from "../../node_modules/d3-array/src/max.js";
10
- import { quantileSorted as q } from "../../node_modules/d3-array/src/quantile.js";
11
- import G from "../../node_modules/d3-array/src/mean.js";
12
- const I = 30;
13
- function N(t, n) {
14
- return function(e) {
15
- return n.map(function(i) {
16
- return G(e, (a) => t(i - a));
6
+ import "../../utils/TextMeasurer/TextMeasurer.js";
7
+ import { getFacetStringKey as V } from "../utils/getFacetStringKey.js";
8
+ import F from "../../node_modules/d3-random/src/lcg.js";
9
+ import T from "../../node_modules/d3-scale/src/linear.js";
10
+ import _ from "../../node_modules/d3-array/src/max.js";
11
+ import { quantileSorted as G } from "../../node_modules/d3-array/src/quantile.js";
12
+ import D from "../../node_modules/d3-array/src/mean.js";
13
+ const v = 30;
14
+ function B(t, n) {
15
+ return function(o) {
16
+ return n.map(function(l) {
17
+ return D(o, (e) => t(l - e));
17
18
  });
18
19
  };
19
20
  }
20
- function O(t) {
21
+ function C(t) {
21
22
  return function(n) {
22
23
  return 1 / Math.sqrt(2 * Math.PI) * Math.pow(Math.E, -0.5 * Math.pow(n / t, 2));
23
24
  };
24
25
  }
25
- function R(t) {
26
- const n = G(t);
27
- return G(t.map((e) => Math.pow(e - n, 2)));
26
+ function I(t) {
27
+ const n = D(t);
28
+ return D(t.map((o) => Math.pow(o - n, 2)));
28
29
  }
29
- function U(t) {
30
- return Math.sqrt(R(t));
30
+ function O(t) {
31
+ return Math.sqrt(I(t));
31
32
  }
32
- function C(t) {
33
- const n = q(t, 0.25), a = (q(t, 0.75) - n) / 1.34, c = U(t);
34
- return 1.06 * Math.min(c, a) * Math.pow(t.length, -1 / 5);
33
+ function R(t) {
34
+ const n = G(t, 0.25), e = (G(t, 0.75) - n) / 1.34, c = O(t);
35
+ return 1.06 * Math.min(c, e) * Math.pow(t.length, -1 / 5);
35
36
  }
36
- class P {
37
- constructor(n, e, i, a, c, f) {
38
- m(this, "key");
39
- m(this, "maxDensity");
40
- m(this, "primaryGrouping");
41
- m(this, "secondaryGrouping");
42
- m(this, "points");
43
- m(this, "boundsY");
44
- const g = I;
37
+ class U {
38
+ constructor(n, o, l, e, c) {
39
+ u(this, "key");
40
+ u(this, "maxDensity");
41
+ u(this, "primaryGrouping");
42
+ u(this, "secondaryGrouping");
43
+ u(this, "points");
44
+ u(this, "boundsY");
45
+ const f = v;
45
46
  if (n.length === 0)
46
47
  throw Error("Unable to calculate sina on empty data");
47
- this.primaryGrouping = String(a), this.secondaryGrouping = String(c), this.key = `sina_${this.primaryGrouping}_${this.secondaryGrouping}`;
48
- const l = (o) => i === "log" ? Math.log10(o) : o, w = (o) => i === "log" ? Math.pow(10, o) : o, r = (o) => Number(o[e.value]), h = n.filter((o) => i === "log" && r(o) === 0 ? (console.warn("Value = 0 on chart with log scale, it was removed from calculation"), !1) : !0).sort((o, D) => l(r(o)) - l(r(D))), u = h.map((o) => l(r(o))), p = u[0], d = u[h.length - 1], x = (d - p) / g, s = C(u), M = T.range(p + x, d, x);
48
+ this.primaryGrouping = String(l), this.secondaryGrouping = String(e), this.key = `sina_${this.primaryGrouping}_${this.secondaryGrouping}`;
49
+ const i = (r) => o === "log" ? Math.log10(r) : r, x = (r) => o === "log" ? Math.pow(10, r) : r, y = n.filter((r) => o === "log" && r === 0 ? (console.warn("Value = 0 on chart with log scale, it was removed from calculation"), !1) : !0).sort((r, b) => i(r) - i(b)), s = y.map(i), h = s[0], p = s[y.length - 1], g = (p - h) / f, w = R(s), m = E.range(h + g, p, g);
49
50
  this.boundsY = {
50
- min: w(p),
51
- max: w(d)
51
+ min: x(h),
52
+ max: x(p)
52
53
  };
53
- const S = N(O(s), M)(u), b = _().domain(M).range(S).clamp(!0);
54
- this.maxDensity = B(S), this.points = h.map((o, D) => ({
55
- x: r(o),
56
- y: b(l(r(o))) / this.maxDensity,
57
- id: String(D),
58
- jitter: f(),
59
- data: o
54
+ const d = B(C(w), m)(s), S = T().domain(m).range(d).clamp(!0);
55
+ this.maxDensity = _(d), this.points = y.map((r, b) => ({
56
+ x: r,
57
+ y: S(i(r)) / this.maxDensity,
58
+ id: String(b),
59
+ jitter: c()
60
60
  }));
61
61
  }
62
62
  }
63
- function X(t, n, e, i, a) {
64
- let c = 0, f = 1 / 0, g = -1 / 0;
65
- const l = V(1);
63
+ function W(t, n, o, l, e) {
64
+ let c = 0, f = 1 / 0, i = -1 / 0;
65
+ const x = F(1);
66
66
  return {
67
67
  type: "sina",
68
- geoms: n.facet.reduce((r, h) => {
69
- const u = F(h);
70
- return r[u] = [], n.primary.forEach((p) => {
71
- n.secondary.forEach((d) => {
72
- const y = e.getRowsByGrouping([...h, p, d]);
73
- if (!y.length)
68
+ geoms: n.facet.reduce((s, h) => {
69
+ const p = V(h);
70
+ return s[p] = [], n.primary.forEach((M) => {
71
+ n.secondary.forEach((g) => {
72
+ const w = o.getRowsByGrouping([...h, M, g]);
73
+ if (!w.length)
74
74
  return;
75
- let x = y;
75
+ let m = Array.from(w).map((d) => Number(o.getColumnValue(l.value, d)));
76
76
  if (!t.aes.showOutliers) {
77
- const M = (b) => Number(b[i.value]), [Y, S] = k(y, a.scale, M);
78
- x = y.filter((b) => {
79
- const o = M(b);
80
- return o >= Y && o <= S;
81
- });
77
+ const [d, S] = k(m, e.scale);
78
+ m = m.filter((r) => r >= d && r <= S);
82
79
  }
83
- const s = new P(
84
- x,
85
- i,
86
- a.scale,
87
- p,
88
- d,
89
- l
80
+ const a = new U(
81
+ m,
82
+ e.scale,
83
+ M,
84
+ g,
85
+ x
90
86
  );
91
- s.maxDensity > c && (c = s.maxDensity), s.boundsY.min < f && (f = s.boundsY.min), s.boundsY.max > g && (g = s.boundsY.max), r[u].push(s);
87
+ a.maxDensity > c && (c = a.maxDensity), a.boundsY.min < f && (f = a.boundsY.min), a.boundsY.max > i && (i = a.boundsY.max), s[p].push(a);
92
88
  });
93
- }), r;
89
+ }), s;
94
90
  }, {}),
95
- meta: { maxDensity: c, minY: f, maxY: g },
91
+ meta: { maxDensity: c, minY: f, maxY: i },
96
92
  aes: t.aes
97
93
  };
98
94
  }
99
95
  export {
100
- P as Sina,
101
- X as getSinaData
96
+ U as Sina,
97
+ W as getSinaData
102
98
  };
103
99
  //# sourceMappingURL=sina.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sina.js","sources":["../../../src/discrete/layers/sina.ts"],"sourcesContent":["import type {GroupKey, NO_GROUPED} from '../../DataFrame';\nimport type {DataFrame} from '../../DataFrame';\nimport type {DiscreteSettingsImpl, SinaLayer} from '../DiscreteSettingsImpl';\nimport type {SinaData} from './types';\nimport {getOutliersBounds} from '../utils';\nimport {getFacetStringKey} from '../utils/getFacetStringKey';\nimport type {ColumnName, DataValue, Row} from '../../types';\nimport {max, mean, quantileSorted} from 'd3-array';\nimport {randomLcg} from 'd3-random';\nimport {scaleLinear} from 'd3-scale';\nimport lodash from 'lodash';\n\nconst DEFAULT_STEPS_COUNT = 30;\n\nfunction kernelDensityEstimator(kernel: (v: number) => number, thresholds: number[]) {\n return function (arr: number[]) {\n return thresholds.map(function (x):number {\n return mean(arr, v => kernel(x - v)) as number;\n });\n };\n}\n\nfunction kernelGaussian(bandwidth: number) {\n return function (v: number) {\n return (1 / Math.sqrt(2 * Math.PI)) * Math.pow(Math.E, -0.5 * Math.pow(v / bandwidth, 2));\n };\n}\n\nfunction getVariance(arr: number[]) {\n const vMean = mean(arr) as number;\n\n return mean(arr.map(v => Math.pow(v - vMean, 2))) as number;\n}\nfunction getStandardDeviation(arr: number[]) {\n return Math.sqrt(getVariance(arr));\n}\nfunction nrdBandwidth(arr: number[]) {\n const q1 = quantileSorted(arr, 0.25) as number;\n const q3 = quantileSorted(arr, 0.75) as number;\n const iqr = q3 - q1;\n const h = iqr / 1.34;\n const sigma = getStandardDeviation(arr);\n\n return 1.06 * Math.min(sigma, h) * Math.pow(arr.length, -1 / 5);\n}\n\nexport class Sina {\n key: string;\n maxDensity: number;\n primaryGrouping: string;\n secondaryGrouping: string;\n\n points: {x: number, y: number, jitter: number, id: string, data: Row}[];\n\n boundsY: {\n min: number;\n max: number;\n };\n\n constructor(\n rowValues: Row[],\n y:ColumnName,\n scale: 'linear' | 'log',\n primaryGrouping: DataValue | typeof NO_GROUPED,\n secondaryGrouping: DataValue | typeof NO_GROUPED,\n getJitter: () => number\n ) {\n const stepsCount = DEFAULT_STEPS_COUNT;\n if (rowValues.length === 0) {\n throw Error('Unable to calculate sina on empty data');\n }\n\n this.primaryGrouping = String(primaryGrouping);\n this.secondaryGrouping = String(secondaryGrouping);\n this.key = `sina_${this.primaryGrouping}_${this.secondaryGrouping}`;\n\n const convertToScale = (v: number) => (scale === 'log' ? Math.log10(v) : v);\n const convertFromScale = (v: number) => (scale === 'log' ? Math.pow(10, v) : v);\n const getterY = (r:Row) => Number(r[y.value]);\n\n const sortedGroup = rowValues\n .filter((r:Row) => {\n if (scale === 'log' && getterY(r) === 0) {\n console.warn('Value = 0 on chart with log scale, it was removed from calculation');\n return false;\n }\n return true;\n })\n .sort((a, b) => convertToScale(getterY(a)) - convertToScale(getterY(b)));\n const sortedValues = sortedGroup.map((r) => convertToScale(getterY(r)));\n const minV = sortedValues[0];\n const maxV = sortedValues[sortedGroup.length - 1];\n const xRange = maxV - minV;\n const step = xRange / stepsCount;\n const bandwidth = nrdBandwidth(sortedValues);\n const thresholds = lodash.range(minV + step, maxV, step);\n\n this.boundsY = {\n min: convertFromScale(minV),\n max: convertFromScale(maxV),\n };\n\n const kde = kernelDensityEstimator(kernelGaussian(bandwidth), thresholds);\n const density = kde(sortedValues);\n const scaleY = scaleLinear().domain(thresholds).range(density).clamp(true);\n\n this.maxDensity = max(density) as number;\n\n this.points = sortedGroup.map((row:Row, idx) => {\n return {\n x: getterY(row),\n y: scaleY(convertToScale(getterY(row))) / this.maxDensity,\n id: String(idx),\n jitter: getJitter(),\n data: row\n };\n });\n }\n}\n\nexport function getSinaData(\n layer: SinaLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: DiscreteSettingsImpl['y'],\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis']\n): SinaData {\n let maxDensity = 0;\n let minY = Infinity;\n let maxY = -Infinity;\n const getJitter = randomLcg(1);\n\n const geoms = groupingKeys.facet.reduce((res: Record<string, Sina[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\n groupingKeys.primary.forEach(primaryKey => {\n groupingKeys.secondary.forEach(secondaryKey => {\n const values = data.getRowsByGrouping([...facetKey, primaryKey, secondaryKey]);\n if (!values.length) {\n return;\n }\n let valuesFiltered = values;\n if (!layer.aes.showOutliers) {\n const yGetter = (r:Row) => Number(r[y.value]);\n const [boundsMin, boundMax] = getOutliersBounds(values, yAxis.scale, yGetter);\n valuesFiltered = values.filter((row: Row) => {\n const value = yGetter(row);\n return value >= boundsMin && value <= boundMax;\n });\n }\n const sina = new Sina(\n valuesFiltered,\n y,\n yAxis.scale,\n primaryKey,\n secondaryKey,\n getJitter\n );\n\n if (sina.maxDensity > maxDensity) {\n maxDensity = sina.maxDensity;\n }\n if (sina.boundsY.min < minY) {\n minY = sina.boundsY.min;\n }\n if (sina.boundsY.max > maxY) {\n maxY = sina.boundsY.max;\n }\n res[strFacetKey].push(sina);\n });\n });\n return res;\n }, {});\n\n return {\n type: 'sina',\n geoms,\n meta: {maxDensity, minY, maxY},\n aes: layer.aes,\n };\n}\n"],"names":["DEFAULT_STEPS_COUNT","kernelDensityEstimator","kernel","thresholds","arr","x","mean","v","kernelGaussian","bandwidth","getVariance","vMean","getStandardDeviation","nrdBandwidth","q1","quantileSorted","h","sigma","Sina","rowValues","y","scale","primaryGrouping","secondaryGrouping","getJitter","__publicField","stepsCount","convertToScale","convertFromScale","getterY","r","sortedGroup","a","b","sortedValues","minV","maxV","step","lodash","density","scaleY","scaleLinear","max","row","idx","getSinaData","layer","groupingKeys","data","yAxis","maxDensity","minY","maxY","randomLcg","res","facetKey","strFacetKey","getFacetStringKey","primaryKey","secondaryKey","values","valuesFiltered","yGetter","boundsMin","boundMax","getOutliersBounds","value","sina"],"mappings":"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"}
1
+ {"version":3,"file":"sina.js","sources":["../../../src/discrete/layers/sina.ts"],"sourcesContent":["import { max, mean, quantileSorted } from 'd3-array';\nimport { randomLcg } from 'd3-random';\nimport { scaleLinear } from 'd3-scale';\nimport lodash from 'lodash';\nimport type { DataFrame, GroupKey, NO_GROUPED } from '../../DataFrame';\nimport type { DataValue } from '../../types';\nimport type { DiscreteSettingsImpl, SinaLayer } from '../DiscreteSettingsImpl';\nimport { getOutliersBounds } from '../utils';\nimport { getFacetStringKey } from '../utils/getFacetStringKey';\nimport type { SinaData } from './types';\n\nconst DEFAULT_STEPS_COUNT = 30;\n\nfunction kernelDensityEstimator(kernel: (v: number) => number, thresholds: number[]) {\n return function (arr: number[]) {\n return thresholds.map(function (x):number {\n return mean(arr, v => kernel(x - v)) as number;\n });\n };\n}\n\nfunction kernelGaussian(bandwidth: number) {\n return function (v: number) {\n return (1 / Math.sqrt(2 * Math.PI)) * Math.pow(Math.E, -0.5 * Math.pow(v / bandwidth, 2));\n };\n}\n\nfunction getVariance(arr: number[]) {\n const vMean = mean(arr) as number;\n\n return mean(arr.map(v => Math.pow(v - vMean, 2))) as number;\n}\nfunction getStandardDeviation(arr: number[]) {\n return Math.sqrt(getVariance(arr));\n}\nfunction nrdBandwidth(arr: number[]) {\n const q1 = quantileSorted(arr, 0.25) as number;\n const q3 = quantileSorted(arr, 0.75) as number;\n const iqr = q3 - q1;\n const h = iqr / 1.34;\n const sigma = getStandardDeviation(arr);\n\n return 1.06 * Math.min(sigma, h) * Math.pow(arr.length, -1 / 5);\n}\n\nexport class Sina {\n key: string;\n maxDensity: number;\n primaryGrouping: string;\n secondaryGrouping: string;\n\n points: {x: number, y: number, jitter: number, id: string}[];\n\n boundsY: {\n min: number;\n max: number;\n };\n\n constructor(\n values: number[],\n scale: 'linear' | 'log',\n primaryGrouping: DataValue | typeof NO_GROUPED,\n secondaryGrouping: DataValue | typeof NO_GROUPED,\n getJitter: () => number\n ) {\n const stepsCount = DEFAULT_STEPS_COUNT;\n if (values.length === 0) {\n throw Error('Unable to calculate sina on empty data');\n }\n\n this.primaryGrouping = String(primaryGrouping);\n this.secondaryGrouping = String(secondaryGrouping);\n this.key = `sina_${this.primaryGrouping}_${this.secondaryGrouping}`;\n\n const convertToScale = (v: number) => (scale === 'log' ? Math.log10(v) : v);\n const convertFromScale = (v: number) => (scale === 'log' ? Math.pow(10, v) : v);\n\n const sortedGroup = values\n .filter((v: number) => {\n if (scale === 'log' && v === 0) {\n console.warn('Value = 0 on chart with log scale, it was removed from calculation');\n return false;\n }\n return true;\n })\n .sort((a, b) => convertToScale(a) - convertToScale(b));\n const sortedValues = sortedGroup.map(convertToScale);\n const minV = sortedValues[0];\n const maxV = sortedValues[sortedGroup.length - 1];\n const xRange = maxV - minV;\n const step = xRange / stepsCount;\n const bandwidth = nrdBandwidth(sortedValues);\n const thresholds = lodash.range(minV + step, maxV, step);\n\n this.boundsY = {\n min: convertFromScale(minV),\n max: convertFromScale(maxV),\n };\n\n const kde = kernelDensityEstimator(kernelGaussian(bandwidth), thresholds);\n const density = kde(sortedValues);\n const scaleY = scaleLinear().domain(thresholds).range(density).clamp(true);\n\n this.maxDensity = max(density) as number;\n\n this.points = sortedGroup.map((y:number, idx) => {\n return {\n x: y,\n y: scaleY(convertToScale(y)) / this.maxDensity,\n id: String(idx),\n jitter: getJitter(),\n };\n });\n }\n}\n\nexport function getSinaData(\n layer: SinaLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: DiscreteSettingsImpl['y'],\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis']\n): SinaData {\n let maxDensity = 0;\n let minY = Infinity;\n let maxY = -Infinity;\n const getJitter = randomLcg(1);\n\n const geoms = groupingKeys.facet.reduce((res: Record<string, Sina[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\n groupingKeys.primary.forEach(primaryKey => {\n groupingKeys.secondary.forEach(secondaryKey => {\n const indexes = data.getRowsByGrouping([...facetKey, primaryKey, secondaryKey]);\n if (!indexes.length) {\n return;\n }\n let valuesFiltered = Array.from(indexes).map(idx => Number(data.getColumnValue(y.value, idx)));\n if (!layer.aes.showOutliers) {\n const [boundsMin, boundMax] = getOutliersBounds(valuesFiltered, yAxis.scale);\n valuesFiltered = valuesFiltered.filter((value: number) => {\n return value >= boundsMin && value <= boundMax;\n });\n }\n const sina = new Sina(\n valuesFiltered,\n yAxis.scale,\n primaryKey,\n secondaryKey,\n getJitter\n );\n\n if (sina.maxDensity > maxDensity) {\n maxDensity = sina.maxDensity;\n }\n if (sina.boundsY.min < minY) {\n minY = sina.boundsY.min;\n }\n if (sina.boundsY.max > maxY) {\n maxY = sina.boundsY.max;\n }\n res[strFacetKey].push(sina);\n });\n });\n return res;\n }, {});\n\n return {\n type: 'sina',\n geoms,\n meta: {maxDensity, minY, maxY},\n aes: layer.aes,\n };\n}\n"],"names":["DEFAULT_STEPS_COUNT","kernelDensityEstimator","kernel","thresholds","arr","x","mean","v","kernelGaussian","bandwidth","getVariance","vMean","getStandardDeviation","nrdBandwidth","q1","quantileSorted","h","sigma","Sina","values","scale","primaryGrouping","secondaryGrouping","getJitter","__publicField","stepsCount","convertToScale","convertFromScale","sortedGroup","a","sortedValues","minV","maxV","step","lodash","density","scaleY","scaleLinear","max","y","idx","getSinaData","layer","groupingKeys","data","yAxis","maxDensity","minY","maxY","randomLcg","res","facetKey","strFacetKey","getFacetStringKey","primaryKey","secondaryKey","indexes","valuesFiltered","boundsMin","boundMax","getOutliersBounds","value","sina"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { DataFrame, GroupKey } from '../../DataFrame';
2
+ import { ColumnName } from '../../types';
2
3
  import { StackedBarLayer } from '../DiscreteSettingsImpl';
3
4
  import { StackedBarsData } from './types';
4
- import { ColumnName } from '../../types';
5
5
  type BarPart = {
6
6
  height: number;
7
7
  key: string;
@@ -1 +1 @@
1
- {"version":3,"file":"stackedBar.d.ts","sourceRoot":"","sources":["../../../src/discrete/layers/stackedBar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAE,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AAEzD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,SAAS,CAAC;AAE7C,OAAO,KAAK,EAAC,UAAU,EAAM,MAAM,aAAa,CAAC;AAGjD,KAAK,OAAO,GAAG;IACX,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;CACL,CAAC;AAEF,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE;IACV,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC;IACpB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,SAAS,EAAE,QAAQ,EAAE,CAAA;CACxB,EACD,IAAI,EAAE,SAAS,EACf,CAAC,EAAE,UAAU,GACd,eAAe,CAkDjB"}
1
+ {"version":3,"file":"stackedBar.d.ts","sourceRoot":"","sources":["../../../src/discrete/layers/stackedBar.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,KAAK,OAAO,GAAG;IACX,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;CACL,CAAC;AAEF,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE;IACV,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC;IACpB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,SAAS,EAAE,QAAQ,EAAE,CAAA;CACxB,EACD,IAAI,EAAE,SAAS,EACf,CAAC,EAAE,UAAU,GACd,eAAe,CAkDjB"}
@@ -1,40 +1,40 @@
1
- import { NO_GROUPED as x } from "../../DataFrame.js";
1
+ import { NO_GROUPED as S } from "../../DataFrame.js";
2
2
  import { getFacetStringKey as z } from "../utils/getFacetStringKey.js";
3
3
  import M from "../../node_modules/d3-array/src/sum.js";
4
- function E(t, e, S, k) {
5
- let i = -1 / 0, m = 1 / 0;
4
+ function E(t, r, h, k) {
5
+ let o = -1 / 0, m = 1 / 0;
6
6
  return {
7
7
  type: "stackedBar",
8
- geoms: e.facet.reduce((c, h) => {
9
- const u = z(h);
10
- return c[u] = [], e.primary.forEach((s) => {
11
- let o = 0;
12
- const r = {};
13
- e.secondary.forEach((n) => {
14
- const a = n === x ? "null" : n, g = S.getRowsByGrouping([...h, s, n]);
15
- if (!g.length)
8
+ geoms: r.facet.reduce((c, u) => {
9
+ const l = z(u);
10
+ return c[l] = [], r.primary.forEach((s) => {
11
+ let i = 0;
12
+ const a = {};
13
+ r.secondary.forEach((n) => {
14
+ const e = n === S ? "null" : n, x = h.getRowsByGrouping([...u, s, n]);
15
+ if (!x.length)
16
16
  return;
17
- const d = M(g, (p) => Number(p[k.value]));
18
- r[a] = {
17
+ const d = M(x, (p) => Number(h.getColumnValue(k.value, p)));
18
+ a[e] = {
19
19
  height: d,
20
- key: String(a)
21
- }, o += d;
20
+ key: String(e)
21
+ }, i += d;
22
22
  });
23
- const f = o;
24
- t.normalize && e.secondary.forEach((n) => {
25
- const a = n === x ? "null" : n;
26
- r[a] && (r[a].height = r[a].height / f * 100);
27
- }), i = Math.max(i, 0, o), m = Math.min(m, 0, o);
28
- const l = t.normalize ? 100 : f;
29
- c[u].push({
23
+ const f = i;
24
+ t.normalize && r.secondary.forEach((n) => {
25
+ const e = n === S ? "null" : n;
26
+ a[e] && (a[e].height = a[e].height / f * 100);
27
+ }), o = Math.max(o, 0, i), m = Math.min(m, 0, i);
28
+ const g = t.normalize ? 100 : f;
29
+ c[l].push({
30
30
  key: `stackedBar_${String(s)}`,
31
- valuesMap: r,
31
+ valuesMap: a,
32
32
  primaryGrouping: s,
33
- boundsY: { min: Math.min(l, 0), max: Math.max(l, 0) }
33
+ boundsY: { min: Math.min(g, 0), max: Math.max(g, 0) }
34
34
  });
35
35
  }), c;
36
36
  }, {}),
37
- meta: { minY: t.normalize ? 0 : m, maxY: t.normalize ? 100 : i, normalize: t.normalize },
37
+ meta: { minY: t.normalize ? 0 : m, maxY: t.normalize ? 100 : o, normalize: t.normalize },
38
38
  aes: t.aes
39
39
  };
40
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stackedBar.js","sources":["../../../src/discrete/layers/stackedBar.ts"],"sourcesContent":["import type {DataFrame, GroupKey} from '../../DataFrame';\nimport {NO_GROUPED} from '../../DataFrame';\nimport type {StackedBarLayer} from '../DiscreteSettingsImpl';\nimport type {StackedBarsData} from './types';\nimport {getFacetStringKey} from '../utils/getFacetStringKey';\nimport type {ColumnName, Row} from '../../types';\nimport {sum} from 'd3-array';\n\ntype BarPart = {\n height: number;\n key: string;\n};\n\nexport type StackedBar = {\n key: string;\n valuesMap: Record<string, BarPart>;\n primaryGrouping: string;\n boundsY: {\n min: number;\n max: number;\n };\n};\n\nexport function getStackedBarsData(\n layer: StackedBarLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: ColumnName,\n): StackedBarsData {\n let maxY = -Infinity;\n let minY = Infinity;\n\n return {\n type: 'stackedBar',\n geoms: groupingKeys.facet.reduce((res: Record<string, StackedBar[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\n groupingKeys.primary.forEach(primaryKey => {\n let currentHeight = 0;\n const barParts:Record<string, BarPart> = {};\n groupingKeys.secondary.forEach(secondaryKey => {\n const secondaryKeyStr = secondaryKey === NO_GROUPED ? 'null' : secondaryKey;\n const rows = data.getRowsByGrouping([...facetKey, primaryKey, secondaryKey]);\n if (!rows.length) {\n return;\n }\n const height = sum(rows, (row:Row) => Number(row[y.value]));\n barParts[secondaryKeyStr] = {\n height,\n key: String(secondaryKeyStr),\n };\n currentHeight += height;\n });\n const maxStackHeight = currentHeight;\n if (layer.normalize) { // show in percents of every stack\n groupingKeys.secondary.forEach(secondaryKey => {\n const secondaryKeyStr = secondaryKey === NO_GROUPED ? 'null' : secondaryKey;\n if (!barParts[secondaryKeyStr]) {\n return;\n }\n barParts[secondaryKeyStr].height = barParts[secondaryKeyStr].height / maxStackHeight * 100;\n });\n }\n maxY = Math.max(maxY, 0, currentHeight);\n minY = Math.min(minY, 0, currentHeight);\n const bound = layer.normalize ? 100 : maxStackHeight;\n res[strFacetKey].push({\n key: `stackedBar_${String(primaryKey)}`,\n valuesMap: barParts,\n primaryGrouping: primaryKey,\n boundsY: {min: Math.min(bound, 0), max: Math.max(bound, 0)},\n } as StackedBar);\n });\n return res;\n }, {}),\n meta: {minY: layer.normalize ? 0 : minY, maxY: layer.normalize ? 100 : maxY, normalize: layer.normalize},\n aes: layer.aes,\n };\n}\n"],"names":["getStackedBarsData","layer","groupingKeys","data","y","maxY","minY","res","facetKey","strFacetKey","getFacetStringKey","primaryKey","currentHeight","barParts","secondaryKey","secondaryKeyStr","NO_GROUPED","rows","height","sum","row","maxStackHeight","bound"],"mappings":";;;AAuBO,SAASA,EACZC,GACAC,GAKAC,GACAC,GACe;AACf,MAAIC,IAAO,QACPC,IAAO;AAEX,SAAO;AAAA,IACH,MAAM;AAAA,IACN,OAAOJ,EAAa,MAAM,OAAO,CAACK,GAAmCC,MAAa;AAC9E,YAAMC,IAAcC,EAAkBF,CAAQ;AAC9C,aAAAD,EAAIE,CAAW,IAAI,CAAA,GACnBP,EAAa,QAAQ,QAAQ,CAAAS,MAAc;AACvC,YAAIC,IAAgB;AACpB,cAAMC,IAAmC,CAAA;AACzC,QAAAX,EAAa,UAAU,QAAQ,CAAAY,MAAgB;AAC3C,gBAAMC,IAAkBD,MAAiBE,IAAa,SAASF,GACzDG,IAAOd,EAAK,kBAAkB,CAAC,GAAGK,GAAUG,GAAYG,CAAY,CAAC;AAC3E,cAAI,CAACG,EAAK;AACN;AAEJ,gBAAMC,IAASC,EAAIF,GAAM,CAACG,MAAY,OAAOA,EAAIhB,EAAE,KAAK,CAAC,CAAC;AAC1D,UAAAS,EAASE,CAAe,IAAI;AAAA,YACxB,QAAAG;AAAA,YACA,KAAK,OAAOH,CAAe;AAAA,UAAA,GAE/BH,KAAiBM;AAAA,QACrB,CAAC;AACD,cAAMG,IAAiBT;AACvB,QAAIX,EAAM,aACNC,EAAa,UAAU,QAAQ,CAAAY,MAAgB;AAC3C,gBAAMC,IAAkBD,MAAiBE,IAAa,SAASF;AAC/D,UAAKD,EAASE,CAAe,MAG7BF,EAASE,CAAe,EAAE,SAASF,EAASE,CAAe,EAAE,SAAUM,IAAiB;AAAA,QAC5F,CAAC,GAELhB,IAAO,KAAK,IAAIA,GAAM,GAAGO,CAAa,GACtCN,IAAO,KAAK,IAAIA,GAAM,GAAGM,CAAa;AACtC,cAAMU,IAAQrB,EAAM,YAAY,MAAMoB;AACtC,QAAAd,EAAIE,CAAW,EAAE,KAAK;AAAA,UAClB,KAAK,cAAc,OAAOE,CAAU,CAAC;AAAA,UACrC,WAAWE;AAAA,UACX,iBAAiBF;AAAA,UACjB,SAAS,EAAC,KAAK,KAAK,IAAIW,GAAO,CAAC,GAAG,KAAK,KAAK,IAAIA,GAAO,CAAC,EAAA;AAAA,QAAC,CAC/C;AAAA,MACnB,CAAC,GACMf;AAAA,IACX,GAAG,CAAA,CAAE;AAAA,IACL,MAAM,EAAC,MAAMN,EAAM,YAAY,IAAIK,GAAM,MAAML,EAAM,YAAY,MAAMI,GAAM,WAAWJ,EAAM,UAAA;AAAA,IAC9F,KAAKA,EAAM;AAAA,EAAA;AAEnB;"}
1
+ {"version":3,"file":"stackedBar.js","sources":["../../../src/discrete/layers/stackedBar.ts"],"sourcesContent":["import { sum } from 'd3-array';\nimport type { DataFrame, GroupKey } from '../../DataFrame';\nimport { NO_GROUPED } from '../../DataFrame';\nimport type { ColumnName } from '../../types';\nimport type { StackedBarLayer } from '../DiscreteSettingsImpl';\nimport { getFacetStringKey } from '../utils/getFacetStringKey';\nimport type { StackedBarsData } from './types';\n\ntype BarPart = {\n height: number;\n key: string;\n};\n\nexport type StackedBar = {\n key: string;\n valuesMap: Record<string, BarPart>;\n primaryGrouping: string;\n boundsY: {\n min: number;\n max: number;\n };\n};\n\nexport function getStackedBarsData(\n layer: StackedBarLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: ColumnName,\n): StackedBarsData {\n let maxY = -Infinity;\n let minY = Infinity;\n\n return {\n type: 'stackedBar',\n geoms: groupingKeys.facet.reduce((res: Record<string, StackedBar[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\n groupingKeys.primary.forEach(primaryKey => {\n let currentHeight = 0;\n const barParts:Record<string, BarPart> = {};\n groupingKeys.secondary.forEach(secondaryKey => {\n const secondaryKeyStr = secondaryKey === NO_GROUPED ? 'null' : secondaryKey;\n const indexes = data.getRowsByGrouping([...facetKey, primaryKey, secondaryKey]);\n if (!indexes.length) {\n return;\n }\n const height = sum(indexes, (i) => Number(data.getColumnValue(y.value, i)));\n barParts[secondaryKeyStr] = {\n height,\n key: String(secondaryKeyStr),\n };\n currentHeight += height;\n });\n const maxStackHeight = currentHeight;\n if (layer.normalize) { // show in percents of every stack\n groupingKeys.secondary.forEach(secondaryKey => {\n const secondaryKeyStr = secondaryKey === NO_GROUPED ? 'null' : secondaryKey;\n if (!barParts[secondaryKeyStr]) {\n return;\n }\n barParts[secondaryKeyStr].height = barParts[secondaryKeyStr].height / maxStackHeight * 100;\n });\n }\n maxY = Math.max(maxY, 0, currentHeight);\n minY = Math.min(minY, 0, currentHeight);\n const bound = layer.normalize ? 100 : maxStackHeight;\n res[strFacetKey].push({\n key: `stackedBar_${String(primaryKey)}`,\n valuesMap: barParts,\n primaryGrouping: primaryKey,\n boundsY: {min: Math.min(bound, 0), max: Math.max(bound, 0)},\n } as StackedBar);\n });\n return res;\n }, {}),\n meta: {minY: layer.normalize ? 0 : minY, maxY: layer.normalize ? 100 : maxY, normalize: layer.normalize},\n aes: layer.aes,\n };\n}\n"],"names":["getStackedBarsData","layer","groupingKeys","data","y","maxY","minY","res","facetKey","strFacetKey","getFacetStringKey","primaryKey","currentHeight","barParts","secondaryKey","secondaryKeyStr","NO_GROUPED","indexes","height","sum","i","maxStackHeight","bound"],"mappings":";;;AAuBO,SAASA,EACZC,GACAC,GAKAC,GACAC,GACe;AACf,MAAIC,IAAO,QACPC,IAAO;AAEX,SAAO;AAAA,IACH,MAAM;AAAA,IACN,OAAOJ,EAAa,MAAM,OAAO,CAACK,GAAmCC,MAAa;AAC9E,YAAMC,IAAcC,EAAkBF,CAAQ;AAC9C,aAAAD,EAAIE,CAAW,IAAI,CAAA,GACnBP,EAAa,QAAQ,QAAQ,CAAAS,MAAc;AACvC,YAAIC,IAAgB;AACpB,cAAMC,IAAmC,CAAA;AACzC,QAAAX,EAAa,UAAU,QAAQ,CAAAY,MAAgB;AAC3C,gBAAMC,IAAkBD,MAAiBE,IAAa,SAASF,GACzDG,IAAUd,EAAK,kBAAkB,CAAC,GAAGK,GAAUG,GAAYG,CAAY,CAAC;AAC9E,cAAI,CAACG,EAAQ;AACT;AAEJ,gBAAMC,IAASC,EAAIF,GAAS,CAACG,MAAM,OAAOjB,EAAK,eAAeC,EAAE,OAAOgB,CAAC,CAAC,CAAC;AAC1E,UAAAP,EAASE,CAAe,IAAI;AAAA,YACxB,QAAAG;AAAA,YACA,KAAK,OAAOH,CAAe;AAAA,UAAA,GAE/BH,KAAiBM;AAAA,QACrB,CAAC;AACD,cAAMG,IAAiBT;AACvB,QAAIX,EAAM,aACNC,EAAa,UAAU,QAAQ,CAAAY,MAAgB;AAC3C,gBAAMC,IAAkBD,MAAiBE,IAAa,SAASF;AAC/D,UAAKD,EAASE,CAAe,MAG7BF,EAASE,CAAe,EAAE,SAASF,EAASE,CAAe,EAAE,SAAUM,IAAiB;AAAA,QAC5F,CAAC,GAELhB,IAAO,KAAK,IAAIA,GAAM,GAAGO,CAAa,GACtCN,IAAO,KAAK,IAAIA,GAAM,GAAGM,CAAa;AACtC,cAAMU,IAAQrB,EAAM,YAAY,MAAMoB;AACtC,QAAAd,EAAIE,CAAW,EAAE,KAAK;AAAA,UAClB,KAAK,cAAc,OAAOE,CAAU,CAAC;AAAA,UACrC,WAAWE;AAAA,UACX,iBAAiBF;AAAA,UACjB,SAAS,EAAC,KAAK,KAAK,IAAIW,GAAO,CAAC,GAAG,KAAK,KAAK,IAAIA,GAAO,CAAC,EAAA;AAAA,QAAC,CAC/C;AAAA,MACnB,CAAC,GACMf;AAAA,IACX,GAAG,CAAA,CAAE;AAAA,IACL,MAAM,EAAC,MAAMN,EAAM,YAAY,IAAIK,GAAM,MAAML,EAAM,YAAY,MAAMI,GAAM,WAAWJ,EAAM,UAAA;AAAA,IAC9F,KAAKA,EAAM;AAAA,EAAA;AAEnB;"}
@@ -6,7 +6,7 @@ import { quantileSorted as Y } from "../../node_modules/d3-array/src/quantile.js
6
6
  import k from "../../node_modules/d3-scale/src/linear.js";
7
7
  import N from "../../node_modules/d3-array/src/max.js";
8
8
  import C from "../../node_modules/d3-shape/src/area.js";
9
- import E from "../../node_modules/d3-shape/src/curve/basis.js";
9
+ import S from "../../node_modules/d3-shape/src/curve/basis.js";
10
10
  import F from "../../node_modules/d3-shape/src/line.js";
11
11
  import T from "../../node_modules/d3-array/src/mean.js";
12
12
  const U = 40;
@@ -48,20 +48,20 @@ class z {
48
48
  if (a !== "auto" && a < 1)
49
49
  throw Error(`Unable to calculate violin with ${a} steps`);
50
50
  this.primaryGrouping = String(h), this.secondaryGrouping = String(x), this.key = `violin_${this.primaryGrouping}_${this.secondaryGrouping}`;
51
- const v = (i) => r === "log" ? Math.log10(i) : i, f = (i) => r === "log" ? Math.pow(10, i) : i, e = o.filter((i) => r === "log" && Number(i) === 0 ? (console.warn("Value = 0 on chart with log scale, it was removed from calculation"), !1) : !0).map(v).sort((i, s) => i - s), p = e[0], g = e[e.length - 1], y = g - p, q = Y(e, 0.25), G = Y(e, 0.5), c = Y(e, 0.75);
51
+ const v = (i) => r === "log" ? Math.log10(i) : i, f = (i) => r === "log" ? Math.pow(10, i) : i, e = o.filter((i) => r === "log" && Number(i) === 0 ? (console.warn("Value = 0 on chart with log scale, it was removed from calculation"), !1) : !0).map(v).sort((i, s) => i - s), g = e[0], p = e[e.length - 1], y = p - g, q = Y(e, 0.25), G = Y(e, 0.5), c = Y(e, 0.75);
52
52
  this.quartiles = { q1: f(q), q2: f(G), q3: f(c) };
53
- const w = j(e, q, c), _ = a !== "auto" ? a : w / 3 > y / U ? U : y / (w / 3), A = l ? p : p - 3 * w, B = l ? g : g + 3 * w, S = k().domain([A, B]).ticks(_);
53
+ const w = j(e, q, c), _ = a !== "auto" ? a : w / 3 > y / U ? U : y / (w / 3), A = l ? g : g - 3 * w, B = l ? p : p + 3 * w, E = k().domain([A, B]).ticks(_);
54
54
  this.boundsY = {
55
- min: f(S[0]),
56
- max: f(S[S.length - 1])
55
+ min: f(E[0]),
56
+ max: f(E[E.length - 1])
57
57
  };
58
- const M = P(X(w), S)(e).map(([i, s]) => [f(i), s]);
58
+ const M = P(X(w), E)(e).map(([i, s]) => [f(i), s]);
59
59
  this.maxDensity = N(M, ([, i]) => i), this.getArea = (i, s, D, V) => {
60
60
  const d = i === "vertical", b = V ?? this.maxDensity, m = k().domain([-b, b]).range([-D / 2, D / 2]);
61
- return d ? C().curve(E).x0((t) => m(t[1])).x1((t) => m(-t[1])).y((t) => s(t[0]))(M) : C().curve(E).y0((t) => m(t[1])).y1((t) => m(-t[1])).x((t) => s(t[0]))(M);
61
+ return d ? C().curve(S).x0((t) => m(t[1])).x1((t) => m(-t[1])).y((t) => s(t[0]))(M) : C().curve(S).y0((t) => m(t[1])).y1((t) => m(-t[1])).x((t) => s(t[0]))(M);
62
62
  }, this.getLine = (i, s, D, V) => {
63
63
  const d = i === "vertical", b = V ?? this.maxDensity, m = k().domain([-b, b]).range([-D / 2, D / 2]);
64
- return F().curve(E).x(d ? (t) => m(t[1]) : (t) => s(t[0])).y(d ? (t) => s(t[0]) : (t) => m(t[1]))(M) + " " + F().curve(E).x(d ? (t) => m(-t[1]) : (t) => s(t[0])).y(d ? (t) => s(t[0]) : (t) => m(-t[1]))(M);
64
+ return F().curve(S).x(d ? (t) => m(t[1]) : (t) => s(t[0])).y(d ? (t) => s(t[0]) : (t) => m(t[1]))(M) + " " + F().curve(S).x(d ? (t) => m(-t[1]) : (t) => s(t[0])).y(d ? (t) => s(t[0]) : (t) => m(-t[1]))(M);
65
65
  };
66
66
  }
67
67
  }
@@ -69,11 +69,11 @@ function rt(n, o, r, l, a) {
69
69
  let h = 0, x = 1 / 0, v = -1 / 0;
70
70
  return {
71
71
  type: "violin",
72
- geoms: o.facet.reduce((e, p) => {
73
- const g = $(p);
74
- return e[g] = [], o.primary.forEach((y) => {
72
+ geoms: o.facet.reduce((e, g) => {
73
+ const p = $(g);
74
+ return e[p] = [], o.primary.forEach((y) => {
75
75
  o.secondary.forEach((q) => {
76
- const G = r.getColumnByGrouping([...p, y, q], l.value);
76
+ const G = r.getColumnByGrouping([...g, y, q], l.value);
77
77
  if (!G.length)
78
78
  return;
79
79
  const c = new z(
@@ -84,7 +84,7 @@ function rt(n, o, r, l, a) {
84
84
  y,
85
85
  q
86
86
  );
87
- c.maxDensity > h && (h = c.maxDensity), c.boundsY.min < x && (x = c.boundsY.min), c.boundsY.max > v && (v = c.boundsY.max), e[g].push(c);
87
+ c.maxDensity > h && (h = c.maxDensity), c.boundsY.min < x && (x = c.boundsY.min), c.boundsY.max > v && (v = c.boundsY.max), e[p].push(c);
88
88
  });
89
89
  }), e;
90
90
  }, {}),
@@ -1,2 +1,2 @@
1
- export declare function getOutliersBounds<ValueType>(values: ValueType[], scale: 'linear' | 'log', yGetter?: (v: ValueType) => number): number[];
1
+ export declare function getOutliersBounds(values: number[], scale: 'linear' | 'log'): number[];
2
2
  //# sourceMappingURL=getOutliersBounds.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getOutliersBounds.d.ts","sourceRoot":"","sources":["../../../src/discrete/utils/getOutliersBounds.ts"],"names":[],"mappings":"AAEA,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,OAAO,GAAE,CAAC,CAAC,EAAE,SAAS,KAAK,MAA2B,YAchJ"}
1
+ {"version":3,"file":"getOutliersBounds.d.ts","sourceRoot":"","sources":["../../../src/discrete/utils/getOutliersBounds.ts"],"names":[],"mappings":"AAEA,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,GAAG,KAAK,YAa1E"}
@@ -1,9 +1,9 @@
1
- import { quantileSorted as u } from "../../node_modules/d3-array/src/quantile.js";
2
- function d(i, n, g = (t) => t) {
3
- const t = (o) => n === "log" ? Math.log10(o) : o, e = (o) => n === "log" ? Math.pow(10, o) : o, r = i.map(g).map(t).sort((o, m) => o - m), c = u(r, 0.25), s = u(r, 0.75), a = s - c, l = 1.5;
4
- return [e(c - l * a), e(s + l * a)];
1
+ import { quantileSorted as l } from "../../node_modules/d3-array/src/quantile.js";
2
+ function m(u, t) {
3
+ const i = (o) => t === "log" ? Math.log10(o) : o, n = (o) => t === "log" ? Math.pow(10, o) : o, e = u.map(i).sort((o, g) => o - g), r = l(e, 0.25), c = l(e, 0.75), s = c - r, a = 1.5;
4
+ return [n(r - a * s), n(c + a * s)];
5
5
  }
6
6
  export {
7
- d as getOutliersBounds
7
+ m as getOutliersBounds
8
8
  };
9
9
  //# sourceMappingURL=getOutliersBounds.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getOutliersBounds.js","sources":["../../../src/discrete/utils/getOutliersBounds.ts"],"sourcesContent":["import {quantileSorted} from 'd3-array';\n\nexport function getOutliersBounds<ValueType>(values: ValueType[], scale: 'linear' | 'log', yGetter: (v: ValueType) => number = (v) => v as number) {\n const convertToScale = (v: number) => (scale === 'log' ? Math.log10(v) : v);\n const convertFromScale = (v: number) => (scale === 'log' ? Math.pow(10, v) : v);\n const valuesSortedConverted = values\n .map(yGetter)\n .map(convertToScale)\n .sort((a, b) => a - b);\n\n const q1 = quantileSorted(valuesSortedConverted, 0.25) as number;\n const q3 = quantileSorted(valuesSortedConverted, 0.75) as number;\n const interQuantileRange = q3 - q1;\n\n const k = 1.5;\n return [convertFromScale(q1 - k * interQuantileRange), convertFromScale(q3 + k * interQuantileRange)];\n}\n"],"names":["getOutliersBounds","values","scale","yGetter","v","convertToScale","convertFromScale","valuesSortedConverted","a","b","q1","quantileSorted","q3","interQuantileRange","k"],"mappings":";AAEO,SAASA,EAA6BC,GAAqBC,GAAyBC,IAAoC,CAACC,MAAMA,GAAa;AAC/I,QAAMC,IAAiB,CAACD,MAAeF,MAAU,QAAQ,KAAK,MAAME,CAAC,IAAIA,GACnEE,IAAmB,CAACF,MAAeF,MAAU,QAAQ,KAAK,IAAI,IAAIE,CAAC,IAAIA,GACvEG,IAAwBN,EACzB,IAAIE,CAAO,EACX,IAAIE,CAAc,EAClB,KAAK,CAACG,GAAGC,MAAMD,IAAIC,CAAC,GAEnBC,IAAKC,EAAeJ,GAAuB,IAAI,GAC/CK,IAAKD,EAAeJ,GAAuB,IAAI,GAC/CM,IAAqBD,IAAKF,GAE1BI,IAAI;AACV,SAAO,CAACR,EAAiBI,IAAKI,IAAID,CAAkB,GAAGP,EAAiBM,IAAKE,IAAID,CAAkB,CAAC;AACxG;"}
1
+ {"version":3,"file":"getOutliersBounds.js","sources":["../../../src/discrete/utils/getOutliersBounds.ts"],"sourcesContent":["import { quantileSorted } from 'd3-array';\n\nexport function getOutliersBounds(values: number[], scale: 'linear' | 'log') {\n const convertToScale = (v: number) => (scale === 'log' ? Math.log10(v) : v);\n const convertFromScale = (v: number) => (scale === 'log' ? Math.pow(10, v) : v);\n const valuesSortedConverted = values\n .map(convertToScale)\n .sort((a, b) => a - b);\n\n const q1 = quantileSorted(valuesSortedConverted, 0.25) as number;\n const q3 = quantileSorted(valuesSortedConverted, 0.75) as number;\n const interQuantileRange = q3 - q1;\n\n const k = 1.5;\n return [convertFromScale(q1 - k * interQuantileRange), convertFromScale(q3 + k * interQuantileRange)];\n}\n"],"names":["getOutliersBounds","values","scale","convertToScale","v","convertFromScale","valuesSortedConverted","a","b","q1","quantileSorted","q3","interQuantileRange","k"],"mappings":";AAEO,SAASA,EAAkBC,GAAkBC,GAAyB;AACzE,QAAMC,IAAiB,CAACC,MAAeF,MAAU,QAAQ,KAAK,MAAME,CAAC,IAAIA,GACnEC,IAAmB,CAACD,MAAeF,MAAU,QAAQ,KAAK,IAAI,IAAIE,CAAC,IAAIA,GACvEE,IAAwBL,EACzB,IAAIE,CAAc,EAClB,KAAK,CAACI,GAAGC,MAAMD,IAAIC,CAAC,GAEnBC,IAAKC,EAAeJ,GAAuB,IAAI,GAC/CK,IAAKD,EAAeJ,GAAuB,IAAI,GAC/CM,IAAqBD,IAAKF,GAE1BI,IAAI;AACV,SAAO,CAACR,EAAiBI,IAAKI,IAAID,CAAkB,GAAGP,EAAiBM,IAAKE,IAAID,CAAkB,CAAC;AACxG;"}
@@ -1,4 +1,4 @@
1
- import { TextMeasurer as f } from "../../utils/TextMeasurer.js";
1
+ import { TextMeasurer as f } from "../../utils/TextMeasurer/TextMeasurer.js";
2
2
  function x(o, l, h, u = 14) {
3
3
  const i = new f(`600 ${u}px Manrope`), n = [];
4
4
  o.split(new RegExp("(?=[_-])|(?<=[_-])")).forEach((r) => {
@@ -1 +1 @@
1
- {"version":3,"file":"splitTextByWidth.js","sources":["../../../src/discrete/utils/splitTextByWidth.ts"],"sourcesContent":["import {TextMeasurer} from '../../utils/TextMeasurer';\n\nfunction splitWord(word:string, startLineLength:number, maxLength:number, fontSize = 14) {\n const textMeasurer = new TextMeasurer(`600 ${fontSize}px Manrope`);\n // \"_\" and \"-\" symbols have priority as separation bounds, if this is not enough split by single symbols\n const parts:string[] = [];\n word\n .split(/(?=[_-])|(?<=[_-])/)\n .forEach((part) => {\n const length = textMeasurer.getTextWidth(part);\n if (length > maxLength) {\n parts.push(...part.split(''));\n } else {\n parts.push(part);\n }\n });\n let currentLine = '';\n let currentLineLength = 0;\n let i = 0;\n let firstPart = '';\n while (currentLineLength <= startLineLength) {\n const nextLength = textMeasurer.getTextWidth(currentLine + parts[i]);\n if (nextLength < startLineLength) {\n currentLine += parts[i];\n firstPart = currentLine;\n i++;\n }\n currentLineLength = nextLength;\n }\n currentLine = '';\n currentLineLength = 0;\n const lines:string[] = [];\n for (i; i < parts.length; i++) {\n const nextLength = textMeasurer.getTextWidth(currentLine + parts[i]);\n if (nextLength < maxLength) {\n currentLine += parts[i];\n currentLineLength = nextLength;\n } else {\n lines.push(currentLine);\n currentLine = parts[i];\n currentLineLength = textMeasurer.getTextWidth(parts[i]);\n }\n }\n return {\n firstPart,\n lines,\n lastPart: currentLine,\n lastPartLength: currentLineLength\n };\n}\n\nexport function splitTextByWidth (text:string, maxWidth: number, fontSize: number) {\n const textMeasurer = new TextMeasurer(`600 ${fontSize}px Manrope`);\n if (text.trim() === '') {\n return [];\n }\n if (textMeasurer.getTextWidth(text) <= maxWidth) {\n return [text];\n }\n const words = text.split(/\\s+/);\n const result:string[] = [];\n let currentLine = '';\n let currentLineLength = 0;\n for (let i = 0; i < words.length; i++) {\n const tempLine = `${currentLine} ${words[i]}`;\n const tempLineLength = textMeasurer.getTextWidth(tempLine);\n if (tempLineLength <= maxWidth) {\n currentLine = tempLine;\n currentLineLength = tempLineLength;\n } else {\n const wordLength = textMeasurer.getTextWidth(words[i]);\n if (wordLength > maxWidth) {\n const {\n firstPart,\n lines,\n lastPart,\n lastPartLength\n } = splitWord(words[i], maxWidth - currentLineLength, maxWidth, fontSize);\n result.push(`${currentLine} ${firstPart}`);\n result.push(...lines);\n currentLine = lastPart;\n currentLineLength = lastPartLength;\n } else {\n result.push(currentLine);\n currentLine = words[i];\n currentLineLength = wordLength;\n }\n }\n }\n result.push(currentLine);\n return result.filter((line) => {\n return line.length > 0;\n });\n}\n"],"names":["splitWord","word","startLineLength","maxLength","fontSize","textMeasurer","TextMeasurer","parts","part","currentLine","currentLineLength","i","firstPart","nextLength","lines","splitTextByWidth","text","maxWidth","words","result","tempLine","tempLineLength","wordLength","lastPart","lastPartLength","line"],"mappings":";AAEA,SAASA,EAAUC,GAAaC,GAAwBC,GAAkBC,IAAW,IAAI;AACrF,QAAMC,IAAe,IAAIC,EAAa,OAAOF,CAAQ,YAAY,GAE3DG,IAAiB,CAAA;AACvB,EAAAN,EACK,MAAM,WAAA,oBAAoB,GAC1B,QAAQ,CAACO,MAAS;AAEf,IADeH,EAAa,aAAaG,CAAI,IAChCL,IACTI,EAAM,KAAK,GAAGC,EAAK,MAAM,EAAE,CAAC,IAE5BD,EAAM,KAAKC,CAAI;AAAA,EAEvB,CAAC;AACL,MAAIC,IAAc,IACdC,IAAoB,GACpBC,IAAI,GACJC,IAAY;AAChB,SAAOF,KAAqBR,KAAiB;AACzC,UAAMW,IAAaR,EAAa,aAAaI,IAAcF,EAAMI,CAAC,CAAC;AACnE,IAAIE,IAAaX,MACbO,KAAeF,EAAMI,CAAC,GACtBC,IAAYH,GACZE,MAEJD,IAAoBG;AAAA,EACxB;AACA,EAAAJ,IAAc,IACdC,IAAoB;AACpB,QAAMI,IAAiB,CAAA;AACvB,OAAKH,GAAGA,IAAIJ,EAAM,QAAQI,KAAK;AAC3B,UAAME,IAAaR,EAAa,aAAaI,IAAcF,EAAMI,CAAC,CAAC;AACnE,IAAIE,IAAaV,KACbM,KAAeF,EAAMI,CAAC,GACtBD,IAAoBG,MAEpBC,EAAM,KAAKL,CAAW,GACtBA,IAAcF,EAAMI,CAAC,GACrBD,IAAoBL,EAAa,aAAaE,EAAMI,CAAC,CAAC;AAAA,EAE9D;AACA,SAAO;AAAA,IACH,WAAAC;AAAA,IACA,OAAAE;AAAA,IACA,UAAUL;AAAA,IACV,gBAAgBC;AAAA,EAAA;AAExB;AAEO,SAASK,EAAkBC,GAAaC,GAAkBb,GAAkB;AAC/E,QAAMC,IAAe,IAAIC,EAAa,OAAOF,CAAQ,YAAY;AACjE,MAAIY,EAAK,KAAA,MAAW;AAChB,WAAO,CAAA;AAEX,MAAIX,EAAa,aAAaW,CAAI,KAAKC;AACnC,WAAO,CAACD,CAAI;AAEhB,QAAME,IAAQF,EAAK,MAAM,KAAK,GACxBG,IAAkB,CAAA;AACxB,MAAIV,IAAc,IACdC,IAAoB;AACxB,WAASC,IAAI,GAAGA,IAAIO,EAAM,QAAQP,KAAK;AACnC,UAAMS,IAAW,GAAGX,CAAW,IAAIS,EAAMP,CAAC,CAAC,IACrCU,IAAiBhB,EAAa,aAAae,CAAQ;AACzD,QAAIC,KAAkBJ;AAClB,MAAAR,IAAcW,GACdV,IAAoBW;AAAA,SACjB;AACH,YAAMC,IAAajB,EAAa,aAAaa,EAAMP,CAAC,CAAC;AACrD,UAAIW,IAAaL,GAAU;AACvB,cAAM;AAAA,UACF,WAAAL;AAAA,UACA,OAAAE;AAAA,UACA,UAAAS;AAAA,UACA,gBAAAC;AAAA,QAAA,IACAxB,EAAUkB,EAAMP,CAAC,GAAGM,IAAWP,GAAmBO,GAAUb,CAAQ;AACxE,QAAAe,EAAO,KAAK,GAAGV,CAAW,IAAIG,CAAS,EAAE,GACzCO,EAAO,KAAK,GAAGL,CAAK,GACpBL,IAAcc,GACdb,IAAoBc;AAAA,MACxB;AACI,QAAAL,EAAO,KAAKV,CAAW,GACvBA,IAAcS,EAAMP,CAAC,GACrBD,IAAoBY;AAAA,IAE5B;AAAA,EACJ;AACA,SAAAH,EAAO,KAAKV,CAAW,GAChBU,EAAO,OAAO,CAACM,MACXA,EAAK,SAAS,CACxB;AACL;"}
1
+ {"version":3,"file":"splitTextByWidth.js","sources":["../../../src/discrete/utils/splitTextByWidth.ts"],"sourcesContent":["import { TextMeasurer } from '../../utils/TextMeasurer/TextMeasurer';\n\nfunction splitWord(word:string, startLineLength:number, maxLength:number, fontSize = 14) {\n const textMeasurer = new TextMeasurer(`600 ${fontSize}px Manrope`);\n // \"_\" and \"-\" symbols have priority as separation bounds, if this is not enough split by single symbols\n const parts:string[] = [];\n word\n .split(/(?=[_-])|(?<=[_-])/)\n .forEach((part) => {\n const length = textMeasurer.getTextWidth(part);\n if (length > maxLength) {\n parts.push(...part.split(''));\n } else {\n parts.push(part);\n }\n });\n let currentLine = '';\n let currentLineLength = 0;\n let i = 0;\n let firstPart = '';\n while (currentLineLength <= startLineLength) {\n const nextLength = textMeasurer.getTextWidth(currentLine + parts[i]);\n if (nextLength < startLineLength) {\n currentLine += parts[i];\n firstPart = currentLine;\n i++;\n }\n currentLineLength = nextLength;\n }\n currentLine = '';\n currentLineLength = 0;\n const lines:string[] = [];\n for (i; i < parts.length; i++) {\n const nextLength = textMeasurer.getTextWidth(currentLine + parts[i]);\n if (nextLength < maxLength) {\n currentLine += parts[i];\n currentLineLength = nextLength;\n } else {\n lines.push(currentLine);\n currentLine = parts[i];\n currentLineLength = textMeasurer.getTextWidth(parts[i]);\n }\n }\n return {\n firstPart,\n lines,\n lastPart: currentLine,\n lastPartLength: currentLineLength\n };\n}\n\nexport function splitTextByWidth (text:string, maxWidth: number, fontSize: number) {\n const textMeasurer = new TextMeasurer(`600 ${fontSize}px Manrope`);\n if (text.trim() === '') {\n return [];\n }\n if (textMeasurer.getTextWidth(text) <= maxWidth) {\n return [text];\n }\n const words = text.split(/\\s+/);\n const result:string[] = [];\n let currentLine = '';\n let currentLineLength = 0;\n for (let i = 0; i < words.length; i++) {\n const tempLine = `${currentLine} ${words[i]}`;\n const tempLineLength = textMeasurer.getTextWidth(tempLine);\n if (tempLineLength <= maxWidth) {\n currentLine = tempLine;\n currentLineLength = tempLineLength;\n } else {\n const wordLength = textMeasurer.getTextWidth(words[i]);\n if (wordLength > maxWidth) {\n const {\n firstPart,\n lines,\n lastPart,\n lastPartLength\n } = splitWord(words[i], maxWidth - currentLineLength, maxWidth, fontSize);\n result.push(`${currentLine} ${firstPart}`);\n result.push(...lines);\n currentLine = lastPart;\n currentLineLength = lastPartLength;\n } else {\n result.push(currentLine);\n currentLine = words[i];\n currentLineLength = wordLength;\n }\n }\n }\n result.push(currentLine);\n return result.filter((line) => {\n return line.length > 0;\n });\n}\n"],"names":["splitWord","word","startLineLength","maxLength","fontSize","textMeasurer","TextMeasurer","parts","part","currentLine","currentLineLength","i","firstPart","nextLength","lines","splitTextByWidth","text","maxWidth","words","result","tempLine","tempLineLength","wordLength","lastPart","lastPartLength","line"],"mappings":";AAEA,SAASA,EAAUC,GAAaC,GAAwBC,GAAkBC,IAAW,IAAI;AACrF,QAAMC,IAAe,IAAIC,EAAa,OAAOF,CAAQ,YAAY,GAE3DG,IAAiB,CAAA;AACvB,EAAAN,EACK,MAAM,WAAA,oBAAoB,GAC1B,QAAQ,CAACO,MAAS;AAEf,IADeH,EAAa,aAAaG,CAAI,IAChCL,IACTI,EAAM,KAAK,GAAGC,EAAK,MAAM,EAAE,CAAC,IAE5BD,EAAM,KAAKC,CAAI;AAAA,EAEvB,CAAC;AACL,MAAIC,IAAc,IACdC,IAAoB,GACpBC,IAAI,GACJC,IAAY;AAChB,SAAOF,KAAqBR,KAAiB;AACzC,UAAMW,IAAaR,EAAa,aAAaI,IAAcF,EAAMI,CAAC,CAAC;AACnE,IAAIE,IAAaX,MACbO,KAAeF,EAAMI,CAAC,GACtBC,IAAYH,GACZE,MAEJD,IAAoBG;AAAA,EACxB;AACA,EAAAJ,IAAc,IACdC,IAAoB;AACpB,QAAMI,IAAiB,CAAA;AACvB,OAAKH,GAAGA,IAAIJ,EAAM,QAAQI,KAAK;AAC3B,UAAME,IAAaR,EAAa,aAAaI,IAAcF,EAAMI,CAAC,CAAC;AACnE,IAAIE,IAAaV,KACbM,KAAeF,EAAMI,CAAC,GACtBD,IAAoBG,MAEpBC,EAAM,KAAKL,CAAW,GACtBA,IAAcF,EAAMI,CAAC,GACrBD,IAAoBL,EAAa,aAAaE,EAAMI,CAAC,CAAC;AAAA,EAE9D;AACA,SAAO;AAAA,IACH,WAAAC;AAAA,IACA,OAAAE;AAAA,IACA,UAAUL;AAAA,IACV,gBAAgBC;AAAA,EAAA;AAExB;AAEO,SAASK,EAAkBC,GAAaC,GAAkBb,GAAkB;AAC/E,QAAMC,IAAe,IAAIC,EAAa,OAAOF,CAAQ,YAAY;AACjE,MAAIY,EAAK,KAAA,MAAW;AAChB,WAAO,CAAA;AAEX,MAAIX,EAAa,aAAaW,CAAI,KAAKC;AACnC,WAAO,CAACD,CAAI;AAEhB,QAAME,IAAQF,EAAK,MAAM,KAAK,GACxBG,IAAkB,CAAA;AACxB,MAAIV,IAAc,IACdC,IAAoB;AACxB,WAASC,IAAI,GAAGA,IAAIO,EAAM,QAAQP,KAAK;AACnC,UAAMS,IAAW,GAAGX,CAAW,IAAIS,EAAMP,CAAC,CAAC,IACrCU,IAAiBhB,EAAa,aAAae,CAAQ;AACzD,QAAIC,KAAkBJ;AAClB,MAAAR,IAAcW,GACdV,IAAoBW;AAAA,SACjB;AACH,YAAMC,IAAajB,EAAa,aAAaa,EAAMP,CAAC,CAAC;AACrD,UAAIW,IAAaL,GAAU;AACvB,cAAM;AAAA,UACF,WAAAL;AAAA,UACA,OAAAE;AAAA,UACA,UAAAS;AAAA,UACA,gBAAAC;AAAA,QAAA,IACAxB,EAAUkB,EAAMP,CAAC,GAAGM,IAAWP,GAAmBO,GAAUb,CAAQ;AACxE,QAAAe,EAAO,KAAK,GAAGV,CAAW,IAAIG,CAAS,EAAE,GACzCO,EAAO,KAAK,GAAGL,CAAK,GACpBL,IAAcc,GACdb,IAAoBc;AAAA,MACxB;AACI,QAAAL,EAAO,KAAKV,CAAW,GACvBA,IAAcS,EAAMP,CAAC,GACrBD,IAAoBY;AAAA,IAE5B;AAAA,EACJ;AACA,SAAAH,EAAO,KAAKV,CAAW,GAChBU,EAAO,OAAO,CAACM,MACXA,EAAK,SAAS,CACxB;AACL;"}
@@ -1,12 +1,13 @@
1
- import { AnnotationColorScales, CaptionsSizes, ChartDendrograms, ChartDimensionsData, ChartSizes, ChartsScales, DendrogramAesScales, LabelAngles, Margins } from './components/types';
2
- import { GroupedCellsData } from './getCells';
3
- import { DendrogramsData } from './getDendrograms';
4
- import { HeatmapSettingsImpl } from './HeatmapSettingsImpl';
5
- import { ColumnName, DataValue } from '../types';
6
1
  import { ScaleLinear, ScaleOrdinal } from 'd3-scale';
7
2
  import { ReactElement } from 'react';
8
3
  import { Root } from 'react-dom/client';
9
4
  import { LegendData } from '../common/types';
5
+ import { DataFrame } from '../DataFrame';
6
+ import { ColumnName, DataValue } from '../types';
7
+ import { AnnotationColorScales, CaptionsSizes, ChartDendrograms, ChartDimensionsData, ChartSizes, ChartsScales, DendrogramAesScales, LabelAngles, Margins } from './components/types';
8
+ import { GroupedCellsData } from './getCells';
9
+ import { DendrogramsData } from './getDendrograms';
10
+ import { HeatmapSettingsImpl } from './HeatmapSettingsImpl';
10
11
  declare class ChartRenderer {
11
12
  reactRoot: Root | null;
12
13
  parentNode: HTMLElement | null;
@@ -40,7 +41,7 @@ declare class ChartRenderer {
40
41
  updateAesScale(valueType: 'discrete' | 'continuous', valueExtent: [number, number], aes: HeatmapSettingsImpl['aes'], annotations: HeatmapSettingsImpl['annotations'], groupedCellsData: GroupedCellsData, cellUniqValues: DataValue[], normalization: HeatmapSettingsImpl['normalization']): void;
41
42
  updateDendrogram(facetKeys: string[], xGroupKeys: string[], yGroupKeys: string[], groups: GroupedCellsData['facets'], dendrogramsData: DendrogramsData, dendrogramX: HeatmapSettingsImpl['dendrogramX'], dendrogramY: HeatmapSettingsImpl['dendrogramY']): void;
42
43
  updateDendrogramAesScales(inheritedAes: HeatmapSettingsImpl['inheritedDendrogramAes']): void;
43
- render(settingsId: string, chartSettings: HeatmapSettingsImpl['chartSettings'], facetSettings: HeatmapSettingsImpl['facetSettings'], aes: HeatmapSettingsImpl['aes'], groupedCellsData: GroupedCellsData, annotations: HeatmapSettingsImpl['annotations'], valueColumn: ColumnName, dendrogramX: HeatmapSettingsImpl['dendrogramX'], dendrogramY: HeatmapSettingsImpl['dendrogramY'], dendrogramsData: DendrogramsData, inheritedDendrogramAes: HeatmapSettingsImpl['inheritedDendrogramAes'], cellUniqValues: DataValue[], normalization: HeatmapSettingsImpl['normalization'], onTooltipHintSwitch: (v: boolean) => void): void;
44
+ render(dataFrame: DataFrame, settingsId: string, chartSettings: HeatmapSettingsImpl['chartSettings'], facetSettings: HeatmapSettingsImpl['facetSettings'], aes: HeatmapSettingsImpl['aes'], groupedCellsData: GroupedCellsData, annotations: HeatmapSettingsImpl['annotations'], valueColumn: ColumnName, dendrogramX: HeatmapSettingsImpl['dendrogramX'], dendrogramY: HeatmapSettingsImpl['dendrogramY'], dendrogramsData: DendrogramsData, inheritedDendrogramAes: HeatmapSettingsImpl['inheritedDendrogramAes'], cellUniqValues: DataValue[], normalization: HeatmapSettingsImpl['normalization'], onTooltipHintSwitch: (v: boolean) => void): void;
44
45
  renderError(message: string): void;
45
46
  }
46
47
  export default ChartRenderer;
@@ -1 +1 @@
1
- {"version":3,"file":"ChartRenderer.d.ts","sourceRoot":"","sources":["../../src/heatmap/ChartRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,EACV,YAAY,EAEZ,mBAAmB,EACnB,WAAW,EACX,OAAO,EACV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,uBAAuB,CAAC;AAS/D,OAAO,KAAK,EAAU,UAAU,EAAE,SAAS,EAAC,MAAM,UAAU,CAAC;AAM7D,OAAO,KAAK,EAAC,WAAW,EAAE,YAAY,EAAC,MAAM,UAAU,CAAC;AAKxD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,kBAAkB,CAAC;AAI3C,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,iBAAiB,CAAC;AAgE9D,cAAM,aAAa;IACf,SAAS,EAAE,IAAI,GAAG,IAAI,CAAQ;IAC9B,UAAU,EAAE,WAAW,GAAG,IAAI,CAAQ;IACtC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAQ;IACpC,SAAS,EAAE,YAAY,CAAW;IAClC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAM;IAC3D,UAAU,EAAE,UAAU,CAOpB;IACF,OAAO,EAAE,OAAO,CAKd;IACF,aAAa,EAAE,aAAa,CAO1B;IACF,WAAW,EAAE,WAAW,CAKtB;IACF,YAAY,SAAK;IACjB,SAAS,SAAK;IACd,MAAM,EAAE,YAAY,CAIlB;IACF,IAAI,EAAE;QACF,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1B,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC7B,CAAkB;IACnB,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAE/C;IAC/B,qBAAqB,EAAE,qBAAqB,CAAM;IAClD,mBAAmB,EAAE,mBAAmB,CAAM;IAC9C,MAAM,EAAE,UAAU,CAIhB;IACF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAM;IAEnD,KAAK;IAaL,IAAI,CAAC,IAAI,EAAE,WAAW;IAStB,aAAa,CAAC,KAAK,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC;IAYlE,gBAAgB,CACZ,SAAS,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,EAC5D,MAAM,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,EACtD,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC,EAC/C,WAAW,EAAE,UAAU,EACvB,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IAmEjC,kBAAkB,CACd,YAAY,EAAE,gBAAgB,EAC9B,KAAK,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EACpD,KAAK,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EACpD,aAAa,EAAE,mBAAmB,CAAC,eAAe,CAAC;IAsEvD,qBAAqB,CACjB,IAAI,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,EAClD,SAAS,EAAE,MAAM,EAAE,EACnB,UAAU,EAAE,MAAM,EAAE,EACpB,UAAU,EAAE,MAAM,EAAE,EACpB,aAAa,EAAE,mBAAmB,CAAC,eAAe,CAAC,EACnD,KAAK,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EACpD,KAAK,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EACpD,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC,EAC/C,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC,EAC/C,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC;IAuFnD,iBAAiB,CAAC,IAAI,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC;IAOpE,YAAY,CACR,SAAS,EAAE,MAAM,EAAE,EACnB,YAAY,EAAE,gBAAgB,EAC9B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,mBAAmB,CAAC,eAAe,CAAC,EACnD,IAAI,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,EAClD,KAAK,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EACpD,KAAK,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EACpD,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC,EAC/C,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC;IAsEnD,cAAc,CACV,SAAS,EAAE,UAAU,GAAG,YAAY,EACpC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,GAAG,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAC/B,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC,EAC/C,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,SAAS,EAAE,EAC3B,aAAa,EAAE,mBAAmB,CAAC,eAAe,CAAC;IAgDvD,gBAAgB,CACZ,SAAS,EAAE,MAAM,EAAE,EACnB,UAAU,EAAE,MAAM,EAAE,EACpB,UAAU,EAAE,MAAM,EAAE,EACpB,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EAClC,eAAe,EAAE,eAAe,EAChC,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC,EAC/C,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC;IAiDnD,yBAAyB,CAAC,YAAY,EAAE,mBAAmB,CAAC,wBAAwB,CAAC;IAqBrF,MAAM,CACF,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,mBAAmB,CAAC,eAAe,CAAC,EACnD,aAAa,EAAE,mBAAmB,CAAC,eAAe,CAAC,EACnD,GAAG,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAC/B,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC,EAC/C,WAAW,EAAE,UAAU,EACvB,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC,EAC/C,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC,EAC/C,eAAe,EAAE,eAAe,EAChC,sBAAsB,EAAE,mBAAmB,CAAC,wBAAwB,CAAC,EACrE,cAAc,EAAE,SAAS,EAAE,EAC3B,aAAa,EAAE,mBAAmB,CAAC,eAAe,CAAC,EACnD,mBAAmB,EAAE,CAAC,CAAC,EAAC,OAAO,KAAK,IAAI;IA0D5C,WAAW,CAAC,OAAO,EAAE,MAAM;CAG9B;AAED,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"ChartRenderer.d.ts","sourceRoot":"","sources":["../../src/heatmap/ChartRenderer.tsx"],"names":[],"mappings":"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"}