@milaboratories/miplots4 1.0.129 → 1.0.131

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. package/dist/DataFrame.d.ts +15 -9
  2. package/dist/DataFrame.d.ts.map +1 -1
  3. package/dist/DataFrame.js +105 -81
  4. package/dist/DataFrame.js.map +1 -1
  5. package/dist/bubble/ChartRenderer.d.ts +6 -5
  6. package/dist/bubble/ChartRenderer.d.ts.map +1 -1
  7. package/dist/bubble/ChartRenderer.js +123 -121
  8. package/dist/bubble/ChartRenderer.js.map +1 -1
  9. package/dist/bubble/components/Chart.d.ts +3 -2
  10. package/dist/bubble/components/Chart.d.ts.map +1 -1
  11. package/dist/bubble/components/Chart.js +78 -97
  12. package/dist/bubble/components/Chart.js.map +1 -1
  13. package/dist/bubble/components/ChartsGroup.d.ts +6 -5
  14. package/dist/bubble/components/ChartsGroup.d.ts.map +1 -1
  15. package/dist/bubble/components/ChartsGroup.js +39 -37
  16. package/dist/bubble/components/ChartsGroup.js.map +1 -1
  17. package/dist/bubble/getCellTooltip.d.ts +5 -0
  18. package/dist/bubble/getCellTooltip.d.ts.map +1 -0
  19. package/dist/bubble/getCellTooltip.js +28 -0
  20. package/dist/bubble/getCellTooltip.js.map +1 -0
  21. package/dist/bubble/{getCells.d.ts → getGroupedCellsData.d.ts} +4 -4
  22. package/dist/bubble/getGroupedCellsData.d.ts.map +1 -0
  23. package/dist/bubble/getGroupedCellsData.js +94 -0
  24. package/dist/bubble/getGroupedCellsData.js.map +1 -0
  25. package/dist/bubble/index.d.ts +4 -4
  26. package/dist/bubble/index.d.ts.map +1 -1
  27. package/dist/bubble/index.js +47 -42
  28. package/dist/bubble/index.js.map +1 -1
  29. package/dist/bubble/utils/calculateCaptionTails.d.ts +2 -2
  30. package/dist/bubble/utils/calculateCaptionTails.d.ts.map +1 -1
  31. package/dist/bubble/utils/calculateCaptionTails.js.map +1 -1
  32. package/dist/common/Legend.d.ts.map +1 -1
  33. package/dist/common/Legend.js.map +1 -1
  34. package/dist/common/Tooltip.js +1 -1
  35. package/dist/common/Tooltip.js.map +1 -1
  36. package/dist/common/types.d.ts +1 -1
  37. package/dist/common/types.d.ts.map +1 -1
  38. package/dist/common/useDataFrame.d.ts +11 -0
  39. package/dist/common/useDataFrame.d.ts.map +1 -0
  40. package/dist/common/useDataFrame.js +20 -0
  41. package/dist/common/useDataFrame.js.map +1 -0
  42. package/dist/dendro/ChartRenderer.d.ts +9 -8
  43. package/dist/dendro/ChartRenderer.d.ts.map +1 -1
  44. package/dist/dendro/ChartRenderer.js +187 -187
  45. package/dist/dendro/ChartRenderer.js.map +1 -1
  46. package/dist/dendro/components/Chart.d.ts +8 -8
  47. package/dist/dendro/components/Chart.d.ts.map +1 -1
  48. package/dist/dendro/components/Chart.js +35 -35
  49. package/dist/dendro/components/Chart.js.map +1 -1
  50. package/dist/dendro/components/Heatmap.d.ts +3 -3
  51. package/dist/dendro/components/Heatmap.d.ts.map +1 -1
  52. package/dist/dendro/components/Heatmap.js +23 -23
  53. package/dist/dendro/components/Heatmap.js.map +1 -1
  54. package/dist/dendro/components/Legend.d.ts.map +1 -1
  55. package/dist/dendro/components/Legend.js.map +1 -1
  56. package/dist/dendro/components/LinksGroup.d.ts +6 -6
  57. package/dist/dendro/components/LinksGroup.d.ts.map +1 -1
  58. package/dist/dendro/components/LinksGroup.js +17 -17
  59. package/dist/dendro/components/LinksGroup.js.map +1 -1
  60. package/dist/dendro/components/NodesGroup.d.ts +7 -7
  61. package/dist/dendro/components/NodesGroup.d.ts.map +1 -1
  62. package/dist/dendro/components/NodesGroup.js +29 -29
  63. package/dist/dendro/components/NodesGroup.js.map +1 -1
  64. package/dist/dendro/components/types.d.ts +2 -2
  65. package/dist/dendro/components/types.d.ts.map +1 -1
  66. package/dist/dendro/getHeatmapData.d.ts +2 -2
  67. package/dist/dendro/getHeatmapData.d.ts.map +1 -1
  68. package/dist/dendro/getHeatmapData.js +48 -44
  69. package/dist/dendro/getHeatmapData.js.map +1 -1
  70. package/dist/dendro/getHierarchyData.d.ts +3 -3
  71. package/dist/dendro/getHierarchyData.d.ts.map +1 -1
  72. package/dist/dendro/getHierarchyData.js +31 -31
  73. package/dist/dendro/getHierarchyData.js.map +1 -1
  74. package/dist/dendro/index.d.ts +5 -5
  75. package/dist/dendro/index.d.ts.map +1 -1
  76. package/dist/dendro/index.js +86 -89
  77. package/dist/dendro/index.js.map +1 -1
  78. package/dist/discrete/ChartRenderer.d.ts +6 -6
  79. package/dist/discrete/ChartRenderer.d.ts.map +1 -1
  80. package/dist/discrete/ChartRenderer.js +197 -196
  81. package/dist/discrete/ChartRenderer.js.map +1 -1
  82. package/dist/discrete/DiscreteSettingsImpl.d.ts +3 -3
  83. package/dist/discrete/DiscreteSettingsImpl.d.ts.map +1 -1
  84. package/dist/discrete/DiscreteSettingsImpl.js +8 -8
  85. package/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
  86. package/dist/discrete/components/layers/BoxElement.js.map +1 -1
  87. package/dist/discrete/index.d.ts +1 -1
  88. package/dist/discrete/index.d.ts.map +1 -1
  89. package/dist/discrete/index.js +109 -106
  90. package/dist/discrete/index.js.map +1 -1
  91. package/dist/discrete/layers/bar.d.ts +2 -2
  92. package/dist/discrete/layers/bar.d.ts.map +1 -1
  93. package/dist/discrete/layers/bar.js +32 -37
  94. package/dist/discrete/layers/bar.js.map +1 -1
  95. package/dist/discrete/layers/binnedDots.d.ts +3 -3
  96. package/dist/discrete/layers/binnedDots.d.ts.map +1 -1
  97. package/dist/discrete/layers/binnedDots.js +66 -78
  98. package/dist/discrete/layers/binnedDots.js.map +1 -1
  99. package/dist/discrete/layers/boxes.d.ts +3 -4
  100. package/dist/discrete/layers/boxes.d.ts.map +1 -1
  101. package/dist/discrete/layers/boxes.js +59 -60
  102. package/dist/discrete/layers/boxes.js.map +1 -1
  103. package/dist/discrete/layers/dots.d.ts +2 -3
  104. package/dist/discrete/layers/dots.d.ts.map +1 -1
  105. package/dist/discrete/layers/dots.js +30 -30
  106. package/dist/discrete/layers/dots.js.map +1 -1
  107. package/dist/discrete/layers/lines.js +11 -10
  108. package/dist/discrete/layers/lines.js.map +1 -1
  109. package/dist/discrete/layers/logo.d.ts +2 -2
  110. package/dist/discrete/layers/logo.d.ts.map +1 -1
  111. package/dist/discrete/layers/logo.js +21 -21
  112. package/dist/discrete/layers/logo.js.map +1 -1
  113. package/dist/discrete/layers/pairedPoints.d.ts +2 -2
  114. package/dist/discrete/layers/pairedPoints.d.ts.map +1 -1
  115. package/dist/discrete/layers/pairedPoints.js +62 -62
  116. package/dist/discrete/layers/pairedPoints.js.map +1 -1
  117. package/dist/discrete/layers/sina.d.ts +3 -4
  118. package/dist/discrete/layers/sina.d.ts.map +1 -1
  119. package/dist/discrete/layers/sina.js +67 -71
  120. package/dist/discrete/layers/sina.js.map +1 -1
  121. package/dist/discrete/layers/stackedBar.d.ts +1 -1
  122. package/dist/discrete/layers/stackedBar.d.ts.map +1 -1
  123. package/dist/discrete/layers/stackedBar.js +25 -25
  124. package/dist/discrete/layers/stackedBar.js.map +1 -1
  125. package/dist/discrete/layers/violins.js +13 -13
  126. package/dist/discrete/utils/getOutliersBounds.d.ts +1 -1
  127. package/dist/discrete/utils/getOutliersBounds.d.ts.map +1 -1
  128. package/dist/discrete/utils/getOutliersBounds.js +5 -5
  129. package/dist/discrete/utils/getOutliersBounds.js.map +1 -1
  130. package/dist/discrete/utils/splitTextByWidth.js +1 -1
  131. package/dist/discrete/utils/splitTextByWidth.js.map +1 -1
  132. package/dist/heatmap/ChartRenderer.d.ts +7 -6
  133. package/dist/heatmap/ChartRenderer.d.ts.map +1 -1
  134. package/dist/heatmap/ChartRenderer.js +232 -230
  135. package/dist/heatmap/ChartRenderer.js.map +1 -1
  136. package/dist/heatmap/HeatmapSettingsImpl.d.ts +2 -2
  137. package/dist/heatmap/HeatmapSettingsImpl.d.ts.map +1 -1
  138. package/dist/heatmap/HeatmapSettingsImpl.js +1 -1
  139. package/dist/heatmap/HeatmapSettingsImpl.js.map +1 -1
  140. package/dist/heatmap/components/Annotations/Annotation.d.ts.map +1 -1
  141. package/dist/heatmap/components/Annotations/Annotation.js +40 -39
  142. package/dist/heatmap/components/Annotations/Annotation.js.map +1 -1
  143. package/dist/heatmap/components/Chart.d.ts.map +1 -1
  144. package/dist/heatmap/components/Chart.js +90 -89
  145. package/dist/heatmap/components/Chart.js.map +1 -1
  146. package/dist/heatmap/components/ChartsGroup.d.ts +2 -2
  147. package/dist/heatmap/components/ChartsGroup.d.ts.map +1 -1
  148. package/dist/heatmap/components/ChartsGroup.js +14 -14
  149. package/dist/heatmap/components/ChartsGroup.js.map +1 -1
  150. package/dist/heatmap/components/types.d.ts +3 -2
  151. package/dist/heatmap/components/types.d.ts.map +1 -1
  152. package/dist/heatmap/getCells.d.ts +3 -2
  153. package/dist/heatmap/getCells.d.ts.map +1 -1
  154. package/dist/heatmap/getCells.js +97 -93
  155. package/dist/heatmap/getCells.js.map +1 -1
  156. package/dist/heatmap/index.d.ts +3 -3
  157. package/dist/heatmap/index.d.ts.map +1 -1
  158. package/dist/heatmap/index.js +13 -12
  159. package/dist/heatmap/index.js.map +1 -1
  160. package/dist/heatmap/utils/calculateAnnotationTitleSizes.d.ts.map +1 -1
  161. package/dist/heatmap/utils/calculateAnnotationTitleSizes.js +1 -1
  162. package/dist/heatmap/utils/calculateAnnotationTitleSizes.js.map +1 -1
  163. package/dist/heatmap/utils/calculateCaptionTails.d.ts +1 -1
  164. package/dist/heatmap/utils/calculateCaptionTails.d.ts.map +1 -1
  165. package/dist/heatmap/utils/calculateCaptionTails.js.map +1 -1
  166. package/dist/histogram/ChartRenderer.d.ts +6 -5
  167. package/dist/histogram/ChartRenderer.d.ts.map +1 -1
  168. package/dist/histogram/ChartRenderer.js +154 -153
  169. package/dist/histogram/ChartRenderer.js.map +1 -1
  170. package/dist/histogram/HistogramSettingsImpl.d.ts +2 -2
  171. package/dist/histogram/HistogramSettingsImpl.d.ts.map +1 -1
  172. package/dist/histogram/HistogramSettingsImpl.js.map +1 -1
  173. package/dist/histogram/components/Chart.js +48 -48
  174. package/dist/histogram/components/Chart.js.map +1 -1
  175. package/dist/histogram/components/types.d.ts +4 -3
  176. package/dist/histogram/components/types.d.ts.map +1 -1
  177. package/dist/histogram/getHistogramData.d.ts +7 -7
  178. package/dist/histogram/getHistogramData.d.ts.map +1 -1
  179. package/dist/histogram/getHistogramData.js +52 -53
  180. package/dist/histogram/getHistogramData.js.map +1 -1
  181. package/dist/histogram/index.d.ts +3 -3
  182. package/dist/histogram/index.d.ts.map +1 -1
  183. package/dist/histogram/index.js +49 -45
  184. package/dist/histogram/index.js.map +1 -1
  185. package/dist/node_modules/@d3fc/d3fc-axis/src/axisBase.js +10 -10
  186. package/dist/node_modules/d3-array/src/min.js +5 -11
  187. package/dist/node_modules/d3-array/src/min.js.map +1 -1
  188. package/dist/node_modules/d3-shape/src/area.js +30 -30
  189. package/dist/node_modules/d3-shape/src/line.js +6 -6
  190. package/dist/node_modules/d3-shape/src/line.js.map +1 -1
  191. package/dist/node_modules/kdbush/index.js +148 -0
  192. package/dist/node_modules/kdbush/index.js.map +1 -0
  193. package/dist/scatterplot/ChartRenderer.d.ts +7 -6
  194. package/dist/scatterplot/ChartRenderer.d.ts.map +1 -1
  195. package/dist/scatterplot/ChartRenderer.js +213 -209
  196. package/dist/scatterplot/ChartRenderer.js.map +1 -1
  197. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts +2 -2
  198. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts.map +1 -1
  199. package/dist/scatterplot/ScatterplotSettingsImpl.js +28 -28
  200. package/dist/scatterplot/ScatterplotSettingsImpl.js.map +1 -1
  201. package/dist/scatterplot/components/ChartAxisTitles.d.ts.map +1 -1
  202. package/dist/scatterplot/components/ChartAxisTitles.js +31 -30
  203. package/dist/scatterplot/components/ChartAxisTitles.js.map +1 -1
  204. package/dist/scatterplot/components/ChartLayersData.d.ts.map +1 -1
  205. package/dist/scatterplot/components/ChartLayersData.js +138 -156
  206. package/dist/scatterplot/components/ChartLayersData.js.map +1 -1
  207. package/dist/scatterplot/components/ChartTooltip.d.ts.map +1 -1
  208. package/dist/scatterplot/components/ChartTooltip.js +41 -38
  209. package/dist/scatterplot/components/ChartTooltip.js.map +1 -1
  210. package/dist/scatterplot/components/ChartTrendsData.js +21 -21
  211. package/dist/scatterplot/components/ChartTrendsData.js.map +1 -1
  212. package/dist/scatterplot/components/types.d.ts +7 -7
  213. package/dist/scatterplot/components/types.d.ts.map +1 -1
  214. package/dist/scatterplot/constants.d.ts +1 -1
  215. package/dist/scatterplot/constants.d.ts.map +1 -1
  216. package/dist/scatterplot/constants.js.map +1 -1
  217. package/dist/scatterplot/dots.d.ts +2 -2
  218. package/dist/scatterplot/dots.d.ts.map +1 -1
  219. package/dist/scatterplot/dots.js +27 -25
  220. package/dist/scatterplot/dots.js.map +1 -1
  221. package/dist/scatterplot/getLayersData.d.ts +3 -3
  222. package/dist/scatterplot/getLayersData.d.ts.map +1 -1
  223. package/dist/scatterplot/getLayersData.js +12 -15
  224. package/dist/scatterplot/getLayersData.js.map +1 -1
  225. package/dist/scatterplot/index.d.ts +4 -4
  226. package/dist/scatterplot/index.d.ts.map +1 -1
  227. package/dist/scatterplot/index.js +71 -72
  228. package/dist/scatterplot/index.js.map +1 -1
  229. package/dist/scatterplot/linearRegression.d.ts +5 -4
  230. package/dist/scatterplot/linearRegression.d.ts.map +1 -1
  231. package/dist/scatterplot/linearRegression.js +88 -86
  232. package/dist/scatterplot/linearRegression.js.map +1 -1
  233. package/dist/scatterplot/utils/createAesGetter.d.ts +3 -2
  234. package/dist/scatterplot/utils/createAesGetter.d.ts.map +1 -1
  235. package/dist/scatterplot/utils/createAesGetter.js +21 -21
  236. package/dist/scatterplot/utils/createAesGetter.js.map +1 -1
  237. package/dist/scatterplot/utils/createLegendInfo.d.ts +2 -10
  238. package/dist/scatterplot/utils/createLegendInfo.d.ts.map +1 -1
  239. package/dist/scatterplot/utils/createLegendInfo.js +44 -37
  240. package/dist/scatterplot/utils/createLegendInfo.js.map +1 -1
  241. package/dist/scatterplot/utils/formatColumnValue.d.ts +5 -0
  242. package/dist/scatterplot/utils/formatColumnValue.d.ts.map +1 -0
  243. package/dist/scatterplot/utils/formatColumnValue.js +11 -0
  244. package/dist/scatterplot/utils/formatColumnValue.js.map +1 -0
  245. package/dist/scatterplot/utils/getVisibleLabels.d.ts +6 -9
  246. package/dist/scatterplot/utils/getVisibleLabels.d.ts.map +1 -1
  247. package/dist/scatterplot/utils/getVisibleLabels.js +46 -56
  248. package/dist/scatterplot/utils/getVisibleLabels.js.map +1 -1
  249. package/dist/scatterplot-umap/ChartRenderer.d.ts +18 -15
  250. package/dist/scatterplot-umap/ChartRenderer.d.ts.map +1 -1
  251. package/dist/scatterplot-umap/ChartRenderer.js +231 -214
  252. package/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
  253. package/dist/scatterplot-umap/SettingsImpl.d.ts +2 -2
  254. package/dist/scatterplot-umap/SettingsImpl.d.ts.map +1 -1
  255. package/dist/scatterplot-umap/SettingsImpl.js +25 -25
  256. package/dist/scatterplot-umap/SettingsImpl.js.map +1 -1
  257. package/dist/scatterplot-umap/colors.d.ts +6 -0
  258. package/dist/scatterplot-umap/colors.d.ts.map +1 -0
  259. package/dist/scatterplot-umap/colors.js +42 -0
  260. package/dist/scatterplot-umap/colors.js.map +1 -0
  261. package/dist/scatterplot-umap/components/LowerSVG.d.ts +2 -2
  262. package/dist/scatterplot-umap/components/LowerSVG.d.ts.map +1 -1
  263. package/dist/scatterplot-umap/components/LowerSVG.js +97 -94
  264. package/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
  265. package/dist/scatterplot-umap/components/UpperSVG.d.ts.map +1 -1
  266. package/dist/scatterplot-umap/components/UpperSVG.js +20 -19
  267. package/dist/scatterplot-umap/components/UpperSVG.js.map +1 -1
  268. package/dist/scatterplot-umap/index.d.ts +0 -2
  269. package/dist/scatterplot-umap/index.d.ts.map +1 -1
  270. package/dist/scatterplot-umap/index.js +77 -102
  271. package/dist/scatterplot-umap/index.js.map +1 -1
  272. package/dist/scatterplot-umap/types.d.ts +7 -10
  273. package/dist/scatterplot-umap/types.d.ts.map +1 -1
  274. package/dist/types/bubble.d.ts +44 -12
  275. package/dist/types/bubble.d.ts.map +1 -1
  276. package/dist/types/common.d.ts +22 -3
  277. package/dist/types/common.d.ts.map +1 -1
  278. package/dist/types/common.js +3 -1
  279. package/dist/types/common.js.map +1 -1
  280. package/dist/types/dendro.d.ts +113 -10
  281. package/dist/types/dendro.d.ts.map +1 -1
  282. package/dist/types/dendro.js +1 -1
  283. package/dist/types/dendro.js.map +1 -1
  284. package/dist/types/discrete.d.ts +99 -22
  285. package/dist/types/discrete.d.ts.map +1 -1
  286. package/dist/types/discrete.js +3 -3
  287. package/dist/types/discrete.js.map +1 -1
  288. package/dist/types/heatmap.d.ts +187 -28
  289. package/dist/types/heatmap.d.ts.map +1 -1
  290. package/dist/types/heatmap.js +1 -1
  291. package/dist/types/heatmap.js.map +1 -1
  292. package/dist/types/histogram.d.ts +30 -8
  293. package/dist/types/histogram.d.ts.map +1 -1
  294. package/dist/types/histogram.js +1 -1
  295. package/dist/types/histogram.js.map +1 -1
  296. package/dist/types/scatterplot-umap.d.ts +149 -15
  297. package/dist/types/scatterplot-umap.d.ts.map +1 -1
  298. package/dist/types/scatterplot-umap.js +9 -9
  299. package/dist/types/scatterplot-umap.js.map +1 -1
  300. package/dist/types/scatterplot.d.ts +164 -12
  301. package/dist/types/scatterplot.d.ts.map +1 -1
  302. package/dist/types/scatterplot.js +1 -1
  303. package/dist/types/scatterplot.js.map +1 -1
  304. package/dist/utils/TextMeasurer/TextMeasurer.d.ts +7 -0
  305. package/dist/utils/TextMeasurer/TextMeasurer.d.ts.map +1 -0
  306. package/dist/utils/TextMeasurer/TextMeasurer.js +42 -0
  307. package/dist/utils/TextMeasurer/TextMeasurer.js.map +1 -0
  308. package/dist/utils/TextMeasurer/charToWidth.json.js +155 -0
  309. package/dist/utils/TextMeasurer/charToWidth.json.js.map +1 -0
  310. package/dist/utils/arrangeLegendParts.js +1 -1
  311. package/dist/utils/arrangeLegendParts.js.map +1 -1
  312. package/dist/utils/getChartEdgeSides.d.ts +1 -1
  313. package/dist/utils/getLegendWidth.d.ts.map +1 -1
  314. package/dist/utils/getLegendWidth.js +1 -1
  315. package/dist/utils/getLegendWidth.js.map +1 -1
  316. package/package.json +5 -3
  317. package/dist/bubble/getCells.d.ts.map +0 -1
  318. package/dist/bubble/getCells.js +0 -91
  319. package/dist/bubble/getCells.js.map +0 -1
  320. package/dist/node_modules/d3-quadtree/src/add.js +0 -30
  321. package/dist/node_modules/d3-quadtree/src/add.js.map +0 -1
  322. package/dist/node_modules/d3-quadtree/src/cover.js +0 -29
  323. package/dist/node_modules/d3-quadtree/src/cover.js.map +0 -1
  324. package/dist/node_modules/d3-quadtree/src/data.js +0 -12
  325. package/dist/node_modules/d3-quadtree/src/data.js.map +0 -1
  326. package/dist/node_modules/d3-quadtree/src/extent.js +0 -7
  327. package/dist/node_modules/d3-quadtree/src/extent.js.map +0 -1
  328. package/dist/node_modules/d3-quadtree/src/find.js +0 -26
  329. package/dist/node_modules/d3-quadtree/src/find.js.map +0 -1
  330. package/dist/node_modules/d3-quadtree/src/quad.js +0 -7
  331. package/dist/node_modules/d3-quadtree/src/quad.js.map +0 -1
  332. package/dist/node_modules/d3-quadtree/src/quadtree.js +0 -51
  333. package/dist/node_modules/d3-quadtree/src/quadtree.js.map +0 -1
  334. package/dist/node_modules/d3-quadtree/src/remove.js +0 -21
  335. package/dist/node_modules/d3-quadtree/src/remove.js.map +0 -1
  336. package/dist/node_modules/d3-quadtree/src/root.js +0 -7
  337. package/dist/node_modules/d3-quadtree/src/root.js.map +0 -1
  338. package/dist/node_modules/d3-quadtree/src/size.js +0 -12
  339. package/dist/node_modules/d3-quadtree/src/size.js.map +0 -1
  340. package/dist/node_modules/d3-quadtree/src/visit.js +0 -14
  341. package/dist/node_modules/d3-quadtree/src/visit.js.map +0 -1
  342. package/dist/node_modules/d3-quadtree/src/visitAfter.js +0 -19
  343. package/dist/node_modules/d3-quadtree/src/visitAfter.js.map +0 -1
  344. package/dist/node_modules/d3-quadtree/src/x.js +0 -11
  345. package/dist/node_modules/d3-quadtree/src/x.js.map +0 -1
  346. package/dist/node_modules/d3-quadtree/src/y.js +0 -11
  347. package/dist/node_modules/d3-quadtree/src/y.js.map +0 -1
  348. package/dist/utils/TextMeasurer.d.ts +0 -8
  349. package/dist/utils/TextMeasurer.d.ts.map +0 -1
  350. package/dist/utils/TextMeasurer.js +0 -27
  351. package/dist/utils/TextMeasurer.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"dots.js","sources":["../../../src/discrete/layers/dots.ts"],"sourcesContent":["import type {GroupKey} from '../../DataFrame';\nimport type {DataFrame} from '../../DataFrame';\nimport type {DiscreteSettingsImpl} from '../DiscreteSettingsImpl';\nimport type {DotLayer} from '../DiscreteSettingsImpl';\nimport type {DotsData} from './types';\nimport {getOutliersBounds} from '../utils';\nimport {getFacetStringKey} from '../utils/getFacetStringKey';\nimport type {ColumnName, DataValue, Row} from '../../types';\nimport {extent} from 'd3-array';\nimport {randomLcg} from 'd3-random';\n\nexport type DotsGroup = {\n key: string;\n values: {y: number; jitter: number; id: string; data: Record<string, DataValue>}[];\n primaryGrouping: string;\n secondaryGrouping: string;\n boundsY: {\n min: number;\n max: number;\n };\n};\n\nexport function getDotsData(\n layer: DotLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: ColumnName,\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis'],\n keyColumn: ColumnName | null\n): DotsData {\n let minY = Infinity;\n let maxY = -Infinity;\n const getJitter = randomLcg(1);\n\n return {\n type: 'dot',\n geoms: groupingKeys.facet.reduce((res: Record<string, DotsGroup[]>, 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 const yGetter = (row: Row) => Number(row[y.value]);\n let valuesFiltered = values.map((row, idx) => ({\n y: yGetter(row),\n jitter: getJitter(),\n id: keyColumn ? String(row[keyColumn.value]) : String(idx),\n data: row,\n }));\n if (!layer.aes.showOutliers) {\n const [boundsMin, boundMax] = getOutliersBounds(values, yAxis.scale, yGetter);\n valuesFiltered = valuesFiltered.filter(({ y }) => {\n return y >= boundsMin && y <= boundMax;\n });\n }\n const [min = Infinity, max = -Infinity] = extent(valuesFiltered, (v) => v.y);\n if (min < minY) {\n minY = min;\n }\n if (max > maxY) {\n maxY = max;\n }\n res[strFacetKey].push({\n key: `dots_${String(primaryKey)}_${String(secondaryKey)}`,\n values: valuesFiltered,\n primaryGrouping: String(primaryKey),\n secondaryGrouping: String(secondaryKey),\n boundsY: {min, max},\n });\n });\n });\n return res;\n }, {}),\n meta: {minY, maxY},\n aes: layer.aes,\n };\n}\n"],"names":["getDotsData","layer","groupingKeys","data","y","yAxis","keyColumn","minY","maxY","getJitter","randomLcg","res","facetKey","strFacetKey","getFacetStringKey","primaryKey","secondaryKey","values","yGetter","row","valuesFiltered","idx","boundsMin","boundMax","getOutliersBounds","min","max","extent","v"],"mappings":";;;;AAsBO,SAASA,EACZC,GACAC,GAKAC,GACAC,GACAC,GACAC,GACQ;AACR,MAAIC,IAAO,OACPC,IAAO;AACX,QAAMC,IAAYC,EAAU,CAAC;AAE7B,SAAO;AAAA,IACH,MAAM;AAAA,IACN,OAAOR,EAAa,MAAM,OAAO,CAACS,GAAkCC,MAAa;AAC7E,YAAMC,IAAcC,EAAkBF,CAAQ;AAC9C,aAAAD,EAAIE,CAAW,IAAI,CAAA,GACnBX,EAAa,QAAQ,QAAQ,CAAAa,MAAc;AACvC,QAAAb,EAAa,UAAU,QAAQ,CAAAc,MAAgB;AAC3C,gBAAMC,IAASd,EAAK,kBAAkB,CAAC,GAAGS,GAAUG,GAAYC,CAAY,CAAC;AAC7E,cAAI,CAACC,EAAO;AACR;AAEJ,gBAAMC,IAAU,CAACC,MAAa,OAAOA,EAAIf,EAAE,KAAK,CAAC;AACjD,cAAIgB,IAAiBH,EAAO,IAAI,CAACE,GAAKE,OAAS;AAAA,YAC3C,GAAGH,EAAQC,CAAG;AAAA,YACd,QAAQV,EAAA;AAAA,YACR,IAAgB,OAAZH,IAAmBa,EAAIb,EAAU,KAAK,IAAYe,CAAX;AAAA,YAC3C,MAAMF;AAAA,UAAA,EACR;AACF,cAAI,CAAClB,EAAM,IAAI,cAAc;AACzB,kBAAM,CAACqB,GAAWC,CAAQ,IAAIC,EAAkBP,GAAQZ,EAAM,OAAOa,CAAO;AAC5E,YAAAE,IAAiBA,EAAe,OAAO,CAAC,EAAE,GAAAhB,QAC/BA,KAAKkB,KAAalB,KAAKmB,CACjC;AAAA,UACL;AACA,gBAAM,CAACE,IAAM,OAAUC,IAAM,MAAS,IAAIC,EAAOP,GAAgB,CAACQ,MAAMA,EAAE,CAAC;AAC3E,UAAIH,IAAMlB,MACNA,IAAOkB,IAEPC,IAAMlB,MACNA,IAAOkB,IAEXf,EAAIE,CAAW,EAAE,KAAK;AAAA,YAClB,KAAK,QAAQ,OAAOE,CAAU,CAAC,IAAI,OAAOC,CAAY,CAAC;AAAA,YACvD,QAAQI;AAAA,YACR,iBAAiB,OAAOL,CAAU;AAAA,YAClC,mBAAmB,OAAOC,CAAY;AAAA,YACtC,SAAS,EAAC,KAAAS,GAAK,KAAAC,EAAA;AAAA,UAAG,CACrB;AAAA,QACL,CAAC;AAAA,MACL,CAAC,GACMf;AAAA,IACX,GAAG,CAAA,CAAE;AAAA,IACL,MAAM,EAAC,MAAAJ,GAAM,MAAAC,EAAA;AAAA,IACb,KAAKP,EAAM;AAAA,EAAA;AAEnB;"}
1
+ {"version":3,"file":"dots.js","sources":["../../../src/discrete/layers/dots.ts"],"sourcesContent":["import { extent } from 'd3-array';\nimport { randomLcg } from 'd3-random';\nimport type { DataFrame, GroupKey } from '../../DataFrame';\nimport type { ColumnName } from '../../types';\nimport type { DiscreteSettingsImpl, DotLayer } from '../DiscreteSettingsImpl';\nimport { getOutliersBounds } from '../utils';\nimport { getFacetStringKey } from '../utils/getFacetStringKey';\nimport type { DotsData } from './types';\n\nexport type DotsGroup = {\n key: string;\n values: {y: number; jitter: number; id: string;}[];\n primaryGrouping: string;\n secondaryGrouping: string;\n boundsY: {\n min: number;\n max: number;\n };\n};\n\nexport function getDotsData(\n layer: DotLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: ColumnName,\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis'],\n keyColumn: ColumnName | null\n): DotsData {\n let minY = Infinity;\n let maxY = -Infinity;\n const getJitter = randomLcg(1);\n\n return {\n type: 'dot',\n geoms: groupingKeys.facet.reduce((res: Record<string, DotsGroup[]>, 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 const yGetter = (idx: number) => Number(data.getColumnValue(y.value, idx));\n const values = Array.from(indexes).map(yGetter);\n let valuesFiltered = values.map((y, idx) => ({\n y,\n id: keyColumn ? String(data.getColumnValue(keyColumn.value, idx)) : String(idx),\n jitter: getJitter(),\n }));\n if (!layer.aes.showOutliers) {\n const [boundsMin, boundMax] = getOutliersBounds(values, yAxis.scale);\n valuesFiltered = valuesFiltered.filter(({ y }) => {\n return y >= boundsMin && y <= boundMax;\n });\n }\n const [min = Infinity, max = -Infinity] = extent(valuesFiltered, (v) => v.y);\n if (min < minY) {\n minY = min;\n }\n if (max > maxY) {\n maxY = max;\n }\n res[strFacetKey].push({\n key: `dots_${String(primaryKey)}_${String(secondaryKey)}`,\n values: valuesFiltered,\n primaryGrouping: String(primaryKey),\n secondaryGrouping: String(secondaryKey),\n boundsY: {min, max},\n });\n });\n });\n return res;\n }, {}),\n meta: {minY, maxY},\n aes: layer.aes,\n };\n}\n"],"names":["getDotsData","layer","groupingKeys","data","y","yAxis","keyColumn","minY","maxY","getJitter","randomLcg","res","facetKey","strFacetKey","getFacetStringKey","primaryKey","secondaryKey","indexes","yGetter","idx","values","valuesFiltered","boundsMin","boundMax","getOutliersBounds","min","max","extent","v"],"mappings":";;;;;AAoBO,SAASA,EACZC,GACAC,GAKAC,GACAC,GACAC,GACAC,GACQ;AACR,MAAIC,IAAO,OACPC,IAAO;AACX,QAAMC,IAAYC,EAAU,CAAC;AAE7B,SAAO;AAAA,IACH,MAAM;AAAA,IACN,OAAOR,EAAa,MAAM,OAAO,CAACS,GAAkCC,MAAa;AAC7E,YAAMC,IAAcC,EAAkBF,CAAQ;AAC9C,aAAAD,EAAIE,CAAW,IAAI,CAAA,GACnBX,EAAa,QAAQ,QAAQ,CAAAa,MAAc;AACvC,QAAAb,EAAa,UAAU,QAAQ,CAAAc,MAAgB;AAC3C,gBAAMC,IAAUd,EAAK,kBAAkB,CAAC,GAAGS,GAAUG,GAAYC,CAAY,CAAC;AAC9E,cAAI,CAACC,EAAQ;AACT;AAEJ,gBAAMC,IAAU,CAACC,MAAgB,OAAOhB,EAAK,eAAeC,EAAE,OAAOe,CAAG,CAAC,GACnEC,IAAS,MAAM,KAAKH,CAAO,EAAE,IAAIC,CAAO;AAC9C,cAAIG,IAAiBD,EAAO,IAAI,CAAChB,GAAGe,OAAS;AAAA,YACzC,GAAAf;AAAAA,YACA,IAAgB,OAAZE,IAAmBH,EAAK,eAAeG,EAAU,OAAOa,CAAG,IAAYA,CAAX;AAAA,YAChE,QAAQV,EAAA;AAAA,UAAU,EACpB;AACF,cAAI,CAACR,EAAM,IAAI,cAAc;AACzB,kBAAM,CAACqB,GAAWC,CAAQ,IAAIC,EAAkBJ,GAAQf,EAAM,KAAK;AACnE,YAAAgB,IAAiBA,EAAe,OAAO,CAAC,EAAE,GAAAjB,QAC/BA,KAAKkB,KAAalB,KAAKmB,CACjC;AAAA,UACL;AACA,gBAAM,CAACE,IAAM,OAAUC,IAAM,MAAS,IAAIC,EAAON,GAAgB,CAACO,MAAMA,EAAE,CAAC;AAC3E,UAAIH,IAAMlB,MACNA,IAAOkB,IAEPC,IAAMlB,MACNA,IAAOkB,IAEXf,EAAIE,CAAW,EAAE,KAAK;AAAA,YAClB,KAAK,QAAQ,OAAOE,CAAU,CAAC,IAAI,OAAOC,CAAY,CAAC;AAAA,YACvD,QAAQK;AAAA,YACR,iBAAiB,OAAON,CAAU;AAAA,YAClC,mBAAmB,OAAOC,CAAY;AAAA,YACtC,SAAS,EAAC,KAAAS,GAAK,KAAAC,EAAA;AAAA,UAAG,CACrB;AAAA,QACL,CAAC;AAAA,MACL,CAAC,GACMf;AAAA,IACX,GAAG,CAAA,CAAE;AAAA,IACL,MAAM,EAAC,MAAAJ,GAAM,MAAAC,EAAA;AAAA,IACb,KAAKP,EAAM;AAAA,EAAA;AAEnB;"}
@@ -1,4 +1,5 @@
1
1
  import { getOutliersBounds as w } from "../utils/getOutliersBounds.js";
2
+ import "../../utils/TextMeasurer/TextMeasurer.js";
2
3
  import { getFacetStringKey as F } from "../utils/getFacetStringKey.js";
3
4
  import { exhaustive as M } from "../../utils/index.js";
4
5
  import v from "../../node_modules/d3-array/src/quantile.js";
@@ -10,15 +11,15 @@ function O(i, n) {
10
11
  return B(i);
11
12
  M(n, `Unknown line points calculation for dot layer: ${n}`);
12
13
  }
13
- function $(i, n, d, g, r) {
14
+ function q(i, n, d, g, r) {
14
15
  let l = 1 / 0, a = -1 / 0;
15
16
  return {
16
17
  type: "line",
17
- geoms: n.facet.reduce((u, f) => {
18
- const h = F(f);
18
+ geoms: n.facet.reduce((u, m) => {
19
+ const h = F(m);
19
20
  u[h] = [];
20
21
  let p = -1 / 0, b = 1 / 0;
21
- return i.aes.showOutliers || ([p, b] = w(d.getColumnByGrouping([...f], g.value), r.scale)), n.secondary.forEach((Y) => {
22
+ return i.aes.showOutliers || ([p, b] = w(d.getColumnByGrouping([...m], g.value), r.scale)), n.secondary.forEach((Y) => {
22
23
  const o = {
23
24
  key: `${String(Y)}`,
24
25
  boundsY: {
@@ -27,22 +28,22 @@ function $(i, n, d, g, r) {
27
28
  },
28
29
  dots: {}
29
30
  };
30
- let m = !1;
31
+ let f = !1;
31
32
  const x = (e) => r.scale === "log" ? Math.log10(e) : e, S = (e) => r.scale === "log" ? Math.pow(10, e) : e;
32
33
  n.primary.forEach((e) => {
33
- const s = d.getColumnByGrouping([...f, e, Y], g.value);
34
+ const s = d.getColumnByGrouping([...m, e, Y], g.value);
34
35
  if (!s.length) {
35
- m = !0;
36
+ f = !0;
36
37
  return;
37
38
  }
38
39
  let c = s;
39
40
  if (i.aes.showOutliers || (c = s.filter((I) => I >= p && I <= b)), !c.length) {
40
- m = !0;
41
+ f = !0;
41
42
  return;
42
43
  }
43
44
  const t = S(O(c.map(x), i.pointsValues));
44
45
  o.dots[String(e)] = t, t < l && (l = t), t > a && (a = t), t < o.boundsY.min && (o.boundsY.min = t), t > o.boundsY.max && (o.boundsY.max = t);
45
- }), m || u[h].push(o);
46
+ }), f || u[h].push(o);
46
47
  }), u;
47
48
  }, {}),
48
49
  meta: { minY: l, maxY: a },
@@ -50,6 +51,6 @@ function $(i, n, d, g, r) {
50
51
  };
51
52
  }
52
53
  export {
53
- $ as getLinesData
54
+ q as getLinesData
54
55
  };
55
56
  //# sourceMappingURL=lines.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lines.js","sources":["../../../src/discrete/layers/lines.ts"],"sourcesContent":["import type {GroupKey} from '../../DataFrame';\nimport type {DataFrame} from '../../DataFrame';\nimport type {DiscreteSettingsImpl, LineLayer} from '../DiscreteSettingsImpl';\nimport type {LinesData} from './types';\nimport {getOutliersBounds} from '../utils';\nimport {getFacetStringKey} from '../utils/getFacetStringKey';\nimport {exhaustive} from '../../utils';\nimport {mean, quantile} from 'd3-array';\n\nexport interface Line {\n dots: Record<string, number>;\n boundsY: {\n min: number;\n max: number;\n };\n key: string;\n}\n\nfunction calculateDot(values: number[], pointsValues: LineLayer['pointsValues']): number {\n if (pointsValues === 'median') {\n return quantile(values, 0.5) as number;\n }\n if (pointsValues === 'mean') {\n return mean(values) as number;\n }\n exhaustive(pointsValues, `Unknown line points calculation for dot layer: ${pointsValues}`);\n}\n\nexport function getLinesData(\n layer: LineLayer,\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): LinesData {\n let minY = Infinity;\n let maxY = -Infinity;\n\n return {\n type: 'line',\n geoms: groupingKeys.facet.reduce((res: Record<string, Line[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\n let boundMin = -Infinity;\n let boundMax = Infinity;\n if (!layer.aes.showOutliers) {\n [boundMin, boundMax] = getOutliersBounds(data.getColumnByGrouping([...facetKey], y.value), yAxis.scale);\n }\n\n groupingKeys.secondary.forEach(secondaryKey => {\n const line: Line = {\n key: `${String(secondaryKey)}`,\n boundsY: {\n min: Infinity,\n max: -Infinity,\n },\n dots: {},\n };\n // if point data by primary/secondary key missed in source data or filtered as outliers, remove whole line\n let missedPoint = false;\n const convertToScale = (v: number) => (yAxis.scale === 'log' ? Math.log10(v) : v);\n const convertFromScale = (v: number) => (yAxis.scale === 'log' ? Math.pow(10, v) : v);\n\n groupingKeys.primary.forEach(primaryKey => {\n const values = data.getColumnByGrouping([...facetKey, primaryKey, secondaryKey], y.value);\n if (!values.length) {\n missedPoint = true;\n return;\n }\n let valuesFiltered = values;\n if (!layer.aes.showOutliers) {\n valuesFiltered = values.filter((v) => v >= boundMin && v <= boundMax);\n }\n if (!valuesFiltered.length) {\n missedPoint = true;\n return;\n }\n\n const dot = convertFromScale(calculateDot(valuesFiltered.map(convertToScale), layer.pointsValues));\n line.dots[String(primaryKey)] = dot;\n if (dot < minY) {\n minY = dot;\n }\n if (dot > maxY) {\n maxY = dot;\n }\n if (dot < line.boundsY.min) {\n line.boundsY.min = dot;\n }\n if (dot > line.boundsY.max) {\n line.boundsY.max = dot;\n }\n });\n if (!missedPoint) {\n res[strFacetKey].push(line);\n }\n });\n return res;\n }, {}),\n meta: {minY, maxY},\n aes: layer.aes\n };\n}\n"],"names":["calculateDot","values","pointsValues","quantile","mean","exhaustive","getLinesData","layer","groupingKeys","data","y","yAxis","minY","maxY","res","facetKey","strFacetKey","getFacetStringKey","boundMin","boundMax","getOutliersBounds","secondaryKey","line","missedPoint","convertToScale","v","convertFromScale","primaryKey","valuesFiltered","dot"],"mappings":";;;;;AAkBA,SAASA,EAAaC,GAAkBC,GAAiD;AACrF,MAAIA,MAAiB;AACjB,WAAOC,EAASF,GAAQ,GAAG;AAE/B,MAAIC,MAAiB;AACjB,WAAOE,EAAKH,CAAM;AAEtB,EAAAI,EAAWH,GAAc,kDAAkDA,CAAY,EAAE;AAC7F;AAEO,SAASI,EACZC,GACAC,GAKAC,GACAC,GACAC,GACS;AACT,MAAIC,IAAO,OACPC,IAAO;AAEX,SAAO;AAAA,IACH,MAAM;AAAA,IACN,OAAOL,EAAa,MAAM,OAAO,CAACM,GAA6BC,MAAa;AACxE,YAAMC,IAAcC,EAAkBF,CAAQ;AAC9C,MAAAD,EAAIE,CAAW,IAAI,CAAA;AACnB,UAAIE,IAAW,QACXC,IAAW;AACf,aAAKZ,EAAM,IAAI,iBACX,CAACW,GAAUC,CAAQ,IAAIC,EAAkBX,EAAK,oBAAoB,CAAC,GAAGM,CAAQ,GAAGL,EAAE,KAAK,GAAGC,EAAM,KAAK,IAG1GH,EAAa,UAAU,QAAQ,CAAAa,MAAgB;AAC3C,cAAMC,IAAa;AAAA,UACf,KAAK,GAAG,OAAOD,CAAY,CAAC;AAAA,UAC5B,SAAS;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,UAAA;AAAA,UAET,MAAM,CAAA;AAAA,QAAC;AAGX,YAAIE,IAAc;AAClB,cAAMC,IAAiB,CAACC,MAAed,EAAM,UAAU,QAAQ,KAAK,MAAMc,CAAC,IAAIA,GACzEC,IAAmB,CAACD,MAAed,EAAM,UAAU,QAAQ,KAAK,IAAI,IAAIc,CAAC,IAAIA;AAEnF,QAAAjB,EAAa,QAAQ,QAAQ,CAAAmB,MAAc;AACvC,gBAAM1B,IAASQ,EAAK,oBAAoB,CAAC,GAAGM,GAAUY,GAAYN,CAAY,GAAGX,EAAE,KAAK;AACxF,cAAI,CAACT,EAAO,QAAQ;AAChB,YAAAsB,IAAc;AACd;AAAA,UACJ;AACA,cAAIK,IAAiB3B;AAIrB,cAHKM,EAAM,IAAI,iBACXqB,IAAiB3B,EAAO,OAAO,CAACwB,MAAMA,KAAKP,KAAYO,KAAKN,CAAQ,IAEpE,CAACS,EAAe,QAAQ;AACxB,YAAAL,IAAc;AACd;AAAA,UACJ;AAEA,gBAAMM,IAAMH,EAAiB1B,EAAa4B,EAAe,IAAIJ,CAAc,GAAGjB,EAAM,YAAY,CAAC;AACjG,UAAAe,EAAK,KAAK,OAAOK,CAAU,CAAC,IAAIE,GAC5BA,IAAMjB,MACNA,IAAOiB,IAEPA,IAAMhB,MACNA,IAAOgB,IAEPA,IAAMP,EAAK,QAAQ,QACnBA,EAAK,QAAQ,MAAMO,IAEnBA,IAAMP,EAAK,QAAQ,QACnBA,EAAK,QAAQ,MAAMO;AAAA,QAE3B,CAAC,GACIN,KACDT,EAAIE,CAAW,EAAE,KAAKM,CAAI;AAAA,MAElC,CAAC,GACMR;AAAA,IACX,GAAG,CAAA,CAAE;AAAA,IACL,MAAM,EAAC,MAAAF,GAAM,MAAAC,EAAA;AAAA,IACb,KAAKN,EAAM;AAAA,EAAA;AAEnB;"}
1
+ {"version":3,"file":"lines.js","sources":["../../../src/discrete/layers/lines.ts"],"sourcesContent":["import type {GroupKey} from '../../DataFrame';\nimport type {DataFrame} from '../../DataFrame';\nimport type {DiscreteSettingsImpl, LineLayer} from '../DiscreteSettingsImpl';\nimport type {LinesData} from './types';\nimport {getOutliersBounds} from '../utils';\nimport {getFacetStringKey} from '../utils/getFacetStringKey';\nimport {exhaustive} from '../../utils';\nimport {mean, quantile} from 'd3-array';\n\nexport interface Line {\n dots: Record<string, number>;\n boundsY: {\n min: number;\n max: number;\n };\n key: string;\n}\n\nfunction calculateDot(values: number[], pointsValues: LineLayer['pointsValues']): number {\n if (pointsValues === 'median') {\n return quantile(values, 0.5) as number;\n }\n if (pointsValues === 'mean') {\n return mean(values) as number;\n }\n exhaustive(pointsValues, `Unknown line points calculation for dot layer: ${pointsValues}`);\n}\n\nexport function getLinesData(\n layer: LineLayer,\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): LinesData {\n let minY = Infinity;\n let maxY = -Infinity;\n\n return {\n type: 'line',\n geoms: groupingKeys.facet.reduce((res: Record<string, Line[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\n let boundMin = -Infinity;\n let boundMax = Infinity;\n if (!layer.aes.showOutliers) {\n [boundMin, boundMax] = getOutliersBounds(data.getColumnByGrouping([...facetKey], y.value), yAxis.scale);\n }\n\n groupingKeys.secondary.forEach(secondaryKey => {\n const line: Line = {\n key: `${String(secondaryKey)}`,\n boundsY: {\n min: Infinity,\n max: -Infinity,\n },\n dots: {},\n };\n // if point data by primary/secondary key missed in source data or filtered as outliers, remove whole line\n let missedPoint = false;\n const convertToScale = (v: number) => (yAxis.scale === 'log' ? Math.log10(v) : v);\n const convertFromScale = (v: number) => (yAxis.scale === 'log' ? Math.pow(10, v) : v);\n\n groupingKeys.primary.forEach(primaryKey => {\n const values = data.getColumnByGrouping([...facetKey, primaryKey, secondaryKey], y.value);\n if (!values.length) {\n missedPoint = true;\n return;\n }\n let valuesFiltered = values;\n if (!layer.aes.showOutliers) {\n valuesFiltered = values.filter((v) => v >= boundMin && v <= boundMax);\n }\n if (!valuesFiltered.length) {\n missedPoint = true;\n return;\n }\n\n const dot = convertFromScale(calculateDot(valuesFiltered.map(convertToScale), layer.pointsValues));\n line.dots[String(primaryKey)] = dot;\n if (dot < minY) {\n minY = dot;\n }\n if (dot > maxY) {\n maxY = dot;\n }\n if (dot < line.boundsY.min) {\n line.boundsY.min = dot;\n }\n if (dot > line.boundsY.max) {\n line.boundsY.max = dot;\n }\n });\n if (!missedPoint) {\n res[strFacetKey].push(line);\n }\n });\n return res;\n }, {}),\n meta: {minY, maxY},\n aes: layer.aes\n };\n}\n"],"names":["calculateDot","values","pointsValues","quantile","mean","exhaustive","getLinesData","layer","groupingKeys","data","y","yAxis","minY","maxY","res","facetKey","strFacetKey","getFacetStringKey","boundMin","boundMax","getOutliersBounds","secondaryKey","line","missedPoint","convertToScale","v","convertFromScale","primaryKey","valuesFiltered","dot"],"mappings":";;;;;;AAkBA,SAASA,EAAaC,GAAkBC,GAAiD;AACrF,MAAIA,MAAiB;AACjB,WAAOC,EAASF,GAAQ,GAAG;AAE/B,MAAIC,MAAiB;AACjB,WAAOE,EAAKH,CAAM;AAEtB,EAAAI,EAAWH,GAAc,kDAAkDA,CAAY,EAAE;AAC7F;AAEO,SAASI,EACZC,GACAC,GAKAC,GACAC,GACAC,GACS;AACT,MAAIC,IAAO,OACPC,IAAO;AAEX,SAAO;AAAA,IACH,MAAM;AAAA,IACN,OAAOL,EAAa,MAAM,OAAO,CAACM,GAA6BC,MAAa;AACxE,YAAMC,IAAcC,EAAkBF,CAAQ;AAC9C,MAAAD,EAAIE,CAAW,IAAI,CAAA;AACnB,UAAIE,IAAW,QACXC,IAAW;AACf,aAAKZ,EAAM,IAAI,iBACX,CAACW,GAAUC,CAAQ,IAAIC,EAAkBX,EAAK,oBAAoB,CAAC,GAAGM,CAAQ,GAAGL,EAAE,KAAK,GAAGC,EAAM,KAAK,IAG1GH,EAAa,UAAU,QAAQ,CAAAa,MAAgB;AAC3C,cAAMC,IAAa;AAAA,UACf,KAAK,GAAG,OAAOD,CAAY,CAAC;AAAA,UAC5B,SAAS;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,UAAA;AAAA,UAET,MAAM,CAAA;AAAA,QAAC;AAGX,YAAIE,IAAc;AAClB,cAAMC,IAAiB,CAACC,MAAed,EAAM,UAAU,QAAQ,KAAK,MAAMc,CAAC,IAAIA,GACzEC,IAAmB,CAACD,MAAed,EAAM,UAAU,QAAQ,KAAK,IAAI,IAAIc,CAAC,IAAIA;AAEnF,QAAAjB,EAAa,QAAQ,QAAQ,CAAAmB,MAAc;AACvC,gBAAM1B,IAASQ,EAAK,oBAAoB,CAAC,GAAGM,GAAUY,GAAYN,CAAY,GAAGX,EAAE,KAAK;AACxF,cAAI,CAACT,EAAO,QAAQ;AAChB,YAAAsB,IAAc;AACd;AAAA,UACJ;AACA,cAAIK,IAAiB3B;AAIrB,cAHKM,EAAM,IAAI,iBACXqB,IAAiB3B,EAAO,OAAO,CAACwB,MAAMA,KAAKP,KAAYO,KAAKN,CAAQ,IAEpE,CAACS,EAAe,QAAQ;AACxB,YAAAL,IAAc;AACd;AAAA,UACJ;AAEA,gBAAMM,IAAMH,EAAiB1B,EAAa4B,EAAe,IAAIJ,CAAc,GAAGjB,EAAM,YAAY,CAAC;AACjG,UAAAe,EAAK,KAAK,OAAOK,CAAU,CAAC,IAAIE,GAC5BA,IAAMjB,MACNA,IAAOiB,IAEPA,IAAMhB,MACNA,IAAOgB,IAEPA,IAAMP,EAAK,QAAQ,QACnBA,EAAK,QAAQ,MAAMO,IAEnBA,IAAMP,EAAK,QAAQ,QACnBA,EAAK,QAAQ,MAAMO;AAAA,QAE3B,CAAC,GACIN,KACDT,EAAIE,CAAW,EAAE,KAAKM,CAAI;AAAA,MAElC,CAAC,GACMR;AAAA,IACX,GAAG,CAAA,CAAE;AAAA,IACL,MAAM,EAAC,MAAAF,GAAM,MAAAC,EAAA;AAAA,IACb,KAAKN,EAAM;AAAA,EAAA;AAEnB;"}
@@ -1,7 +1,7 @@
1
- import { GroupKey, DataFrame } from '../../DataFrame';
1
+ import { DataFrame, GroupKey } from '../../DataFrame';
2
+ import { ColumnName } from '../../types';
2
3
  import { LogoPlotLayer } from '../DiscreteSettingsImpl';
3
4
  import { LogoPlotData } from './types';
4
- import { ColumnName } from '../../types';
5
5
  type LetterPart = {
6
6
  height: number;
7
7
  key: string;
@@ -1 +1 @@
1
- {"version":3,"file":"logo.d.ts","sourceRoot":"","sources":["../../../src/discrete/layers/logo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,SAAS,CAAC;AAE1C,OAAO,KAAK,EAAC,UAAU,EAAM,MAAM,aAAa,CAAC;AAGjD,KAAK,UAAU,GAAG;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;CACL,CAAC;AAEF,wBAAgB,WAAW,CACvB,KAAK,EAAE,aAAa,EACpB,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,YAAY,CA6Cd"}
1
+ {"version":3,"file":"logo.d.ts","sourceRoot":"","sources":["../../../src/discrete/layers/logo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,KAAK,UAAU,GAAG;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;CACL,CAAC;AAEF,wBAAgB,WAAW,CACvB,KAAK,EAAE,aAAa,EACpB,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,YAAY,CA8Cd"}
@@ -1,40 +1,40 @@
1
- import { getFacetStringKey as x } from "../utils/getFacetStringKey.js";
2
- import p from "../../node_modules/d3-array/src/sum.js";
3
- function k(n, i, l, s) {
4
- let o = -1 / 0;
1
+ import { getFacetStringKey as p } from "../utils/getFacetStringKey.js";
2
+ import z from "../../node_modules/d3-array/src/sum.js";
3
+ function v(n, o, g, s) {
4
+ let e = -1 / 0;
5
5
  return {
6
6
  type: "logo",
7
- geoms: i.facet.reduce((e, g) => {
8
- const h = x(g);
9
- return e[h] = [], i.primary.forEach((a) => {
10
- let m = 0;
7
+ geoms: o.facet.reduce((i, u) => {
8
+ const h = p(u);
9
+ return i[h] = [], o.primary.forEach((m) => {
10
+ let a = 0;
11
11
  const r = {};
12
- i.secondary.forEach((t) => {
13
- const u = l.getRowsByGrouping([...g, a, t]);
14
- if (!u.length)
12
+ o.secondary.forEach((t) => {
13
+ const l = g.getRowsByGrouping([...u, m, t]);
14
+ if (!l.length)
15
15
  return;
16
- const f = p(u, (S) => Number(S[s.value]));
16
+ const S = Array.from(l).map((x) => Number(g.getColumnValue(s.value, x))), f = z(S);
17
17
  r[String(t)] = {
18
18
  height: f,
19
19
  key: String(t)
20
- }, m += f;
20
+ }, a += f;
21
21
  });
22
- const c = m;
23
- n.normalize && i.secondary.forEach((t) => {
22
+ const c = a;
23
+ n.normalize && o.secondary.forEach((t) => {
24
24
  r[String(t)] && (r[String(t)].height = r[String(t)].height / c * 100);
25
- }), o = Math.max(o, m), e[h].push({
26
- key: `logo_${String(a)}`,
25
+ }), e = Math.max(e, a), i[h].push({
26
+ key: `logo_${String(m)}`,
27
27
  valuesMap: r,
28
- primaryGrouping: a,
28
+ primaryGrouping: m,
29
29
  boundsY: { min: 0, max: n.normalize ? c : 100 }
30
30
  });
31
- }), e;
31
+ }), i;
32
32
  }, {}),
33
- meta: { minY: 0, maxY: n.normalize ? 100 : o, normalize: n.normalize },
33
+ meta: { minY: 0, maxY: n.normalize ? 100 : e, normalize: n.normalize },
34
34
  aes: n.aes
35
35
  };
36
36
  }
37
37
  export {
38
- k as getLogoData
38
+ v as getLogoData
39
39
  };
40
40
  //# sourceMappingURL=logo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logo.js","sources":["../../../src/discrete/layers/logo.ts"],"sourcesContent":["import type {GroupKey} from '../../DataFrame';\nimport type {DataFrame} from '../../DataFrame';\nimport type {LogoPlotLayer} from '../DiscreteSettingsImpl';\nimport type {LogoPlotData} from './types';\nimport {getFacetStringKey} from '../utils/getFacetStringKey';\nimport type {ColumnName, Row} from '../../types';\nimport {sum} from 'd3-array';\n\ntype LetterPart = {\n height: number,\n key: string\n}\n\nexport type LogoStack = {\n key: string;\n valuesMap: Record<string, LetterPart>;\n primaryGrouping: string;\n boundsY: {\n min: number;\n max: number;\n };\n};\n\nexport function getLogoData(\n layer: LogoPlotLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: ColumnName,\n): LogoPlotData {\n let maxY = -Infinity;\n\n return {\n type: 'logo',\n geoms: groupingKeys.facet.reduce((res: Record<string, LogoStack[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\n groupingKeys.primary.forEach(primaryKey => {\n let currentHeight = 0;\n const letterParts:Record<string, LetterPart> = {};\n groupingKeys.secondary.forEach(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 letterParts[String(secondaryKey)] = {\n height,\n key: String(secondaryKey),\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 if (!letterParts[String(secondaryKey)]) {\n return;\n }\n letterParts[String(secondaryKey)].height = letterParts[String(secondaryKey)].height / maxStackHeight * 100;\n });\n }\n maxY = Math.max(maxY, currentHeight);\n res[strFacetKey].push({\n key: `logo_${String(primaryKey)}`,\n valuesMap: letterParts,\n primaryGrouping: primaryKey,\n boundsY: {min: 0, max: layer.normalize ? maxStackHeight : 100},\n } as LogoStack);\n });\n return res;\n }, {}),\n meta: {minY: 0, maxY: layer.normalize ? 100 : maxY, normalize: layer.normalize},\n aes: layer.aes,\n };\n}\n"],"names":["getLogoData","layer","groupingKeys","data","y","maxY","res","facetKey","strFacetKey","getFacetStringKey","primaryKey","currentHeight","letterParts","secondaryKey","rows","height","sum","row","maxStackHeight"],"mappings":";;AAuBO,SAASA,EACZC,GACAC,GAKAC,GACAC,GACY;AACZ,MAAIC,IAAO;AAEX,SAAO;AAAA,IACH,MAAM;AAAA,IACN,OAAOH,EAAa,MAAM,OAAO,CAACI,GAAkCC,MAAa;AAC7E,YAAMC,IAAcC,EAAkBF,CAAQ;AAC9C,aAAAD,EAAIE,CAAW,IAAI,CAAA,GACnBN,EAAa,QAAQ,QAAQ,CAAAQ,MAAc;AACvC,YAAIC,IAAgB;AACpB,cAAMC,IAAyC,CAAA;AAC/C,QAAAV,EAAa,UAAU,QAAQ,CAAAW,MAAgB;AAC3C,gBAAMC,IAAOX,EAAK,kBAAkB,CAAC,GAAGI,GAAUG,GAAYG,CAAY,CAAC;AAC3E,cAAI,CAACC,EAAK;AACN;AAEJ,gBAAMC,IAASC,EAAIF,GAAM,CAACG,MAAY,OAAOA,EAAIb,EAAE,KAAK,CAAC,CAAC;AAC1D,UAAAQ,EAAY,OAAOC,CAAY,CAAC,IAAI;AAAA,YAChC,QAAAE;AAAA,YACA,KAAK,OAAOF,CAAY;AAAA,UAAA,GAE5BF,KAAiBI;AAAA,QACrB,CAAC;AACD,cAAMG,IAAiBP;AACvB,QAAIV,EAAM,aACNC,EAAa,UAAU,QAAQ,CAAAW,MAAgB;AAC3C,UAAKD,EAAY,OAAOC,CAAY,CAAC,MAGrCD,EAAY,OAAOC,CAAY,CAAC,EAAE,SAASD,EAAY,OAAOC,CAAY,CAAC,EAAE,SAAUK,IAAiB;AAAA,QAC5G,CAAC,GAELb,IAAO,KAAK,IAAIA,GAAMM,CAAa,GACnCL,EAAIE,CAAW,EAAE,KAAK;AAAA,UAClB,KAAK,QAAQ,OAAOE,CAAU,CAAC;AAAA,UAC/B,WAAWE;AAAA,UACX,iBAAiBF;AAAA,UACjB,SAAS,EAAC,KAAK,GAAG,KAAKT,EAAM,YAAYiB,IAAiB,IAAA;AAAA,QAAG,CACnD;AAAA,MAClB,CAAC,GACMZ;AAAA,IACX,GAAG,CAAA,CAAE;AAAA,IACL,MAAM,EAAC,MAAM,GAAG,MAAML,EAAM,YAAY,MAAMI,GAAM,WAAWJ,EAAM,UAAA;AAAA,IACrE,KAAKA,EAAM;AAAA,EAAA;AAEnB;"}
1
+ {"version":3,"file":"logo.js","sources":["../../../src/discrete/layers/logo.ts"],"sourcesContent":["import { sum } from 'd3-array';\nimport type { DataFrame, GroupKey } from '../../DataFrame';\nimport type { ColumnName } from '../../types';\nimport type { LogoPlotLayer } from '../DiscreteSettingsImpl';\nimport { getFacetStringKey } from '../utils/getFacetStringKey';\nimport type { LogoPlotData } from './types';\n\ntype LetterPart = {\n height: number,\n key: string\n}\n\nexport type LogoStack = {\n key: string;\n valuesMap: Record<string, LetterPart>;\n primaryGrouping: string;\n boundsY: {\n min: number;\n max: number;\n };\n};\n\nexport function getLogoData(\n layer: LogoPlotLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: ColumnName,\n): LogoPlotData {\n let maxY = -Infinity;\n\n return {\n type: 'logo',\n geoms: groupingKeys.facet.reduce((res: Record<string, LogoStack[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\n groupingKeys.primary.forEach(primaryKey => {\n let currentHeight = 0;\n const letterParts:Record<string, LetterPart> = {};\n groupingKeys.secondary.forEach(secondaryKey => {\n const indexes = data.getRowsByGrouping([...facetKey, primaryKey, secondaryKey]);\n if (!indexes.length) {\n return;\n }\n const values = Array.from(indexes).map(i => Number(data.getColumnValue(y.value, i)));\n const height = sum(values);\n letterParts[String(secondaryKey)] = {\n height,\n key: String(secondaryKey),\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 if (!letterParts[String(secondaryKey)]) {\n return;\n }\n letterParts[String(secondaryKey)].height = letterParts[String(secondaryKey)].height / maxStackHeight * 100;\n });\n }\n maxY = Math.max(maxY, currentHeight);\n res[strFacetKey].push({\n key: `logo_${String(primaryKey)}`,\n valuesMap: letterParts,\n primaryGrouping: primaryKey,\n boundsY: {min: 0, max: layer.normalize ? maxStackHeight : 100},\n } as LogoStack);\n });\n return res;\n }, {}),\n meta: {minY: 0, maxY: layer.normalize ? 100 : maxY, normalize: layer.normalize},\n aes: layer.aes,\n };\n}\n"],"names":["getLogoData","layer","groupingKeys","data","y","maxY","res","facetKey","strFacetKey","getFacetStringKey","primaryKey","currentHeight","letterParts","secondaryKey","indexes","values","i","height","sum","maxStackHeight"],"mappings":";;AAsBO,SAASA,EACZC,GACAC,GAKAC,GACAC,GACY;AACZ,MAAIC,IAAO;AAEX,SAAO;AAAA,IACH,MAAM;AAAA,IACN,OAAOH,EAAa,MAAM,OAAO,CAACI,GAAkCC,MAAa;AAC7E,YAAMC,IAAcC,EAAkBF,CAAQ;AAC9C,aAAAD,EAAIE,CAAW,IAAI,CAAA,GACnBN,EAAa,QAAQ,QAAQ,CAAAQ,MAAc;AACvC,YAAIC,IAAgB;AACpB,cAAMC,IAAyC,CAAA;AAC/C,QAAAV,EAAa,UAAU,QAAQ,CAAAW,MAAgB;AAC3C,gBAAMC,IAAUX,EAAK,kBAAkB,CAAC,GAAGI,GAAUG,GAAYG,CAAY,CAAC;AAC9E,cAAI,CAACC,EAAQ;AACT;AAEJ,gBAAMC,IAAS,MAAM,KAAKD,CAAO,EAAE,IAAI,CAAAE,MAAK,OAAOb,EAAK,eAAeC,EAAE,OAAOY,CAAC,CAAC,CAAC,GAC7EC,IAASC,EAAIH,CAAM;AACzB,UAAAH,EAAY,OAAOC,CAAY,CAAC,IAAI;AAAA,YAChC,QAAAI;AAAA,YACA,KAAK,OAAOJ,CAAY;AAAA,UAAA,GAE5BF,KAAiBM;AAAA,QACrB,CAAC;AACD,cAAME,IAAiBR;AACvB,QAAIV,EAAM,aACNC,EAAa,UAAU,QAAQ,CAAAW,MAAgB;AAC3C,UAAKD,EAAY,OAAOC,CAAY,CAAC,MAGrCD,EAAY,OAAOC,CAAY,CAAC,EAAE,SAASD,EAAY,OAAOC,CAAY,CAAC,EAAE,SAAUM,IAAiB;AAAA,QAC5G,CAAC,GAELd,IAAO,KAAK,IAAIA,GAAMM,CAAa,GACnCL,EAAIE,CAAW,EAAE,KAAK;AAAA,UAClB,KAAK,QAAQ,OAAOE,CAAU,CAAC;AAAA,UAC/B,WAAWE;AAAA,UACX,iBAAiBF;AAAA,UACjB,SAAS,EAAC,KAAK,GAAG,KAAKT,EAAM,YAAYkB,IAAiB,IAAA;AAAA,QAAG,CACnD;AAAA,MAClB,CAAC,GACMb;AAAA,IACX,GAAG,CAAA,CAAE;AAAA,IACL,MAAM,EAAC,MAAM,GAAG,MAAML,EAAM,YAAY,MAAMI,GAAM,WAAWJ,EAAM,UAAA;AAAA,IACrE,KAAKA,EAAM;AAAA,EAAA;AAEnB;"}
@@ -1,7 +1,7 @@
1
- import { GroupKey, DataFrame } from '../../DataFrame';
1
+ import { DataFrame, GroupKey } from '../../DataFrame';
2
+ import { ColumnName, Row } from '../../types';
2
3
  import { DiscreteSettingsImpl, PairedPointsLayer } from '../DiscreteSettingsImpl';
3
4
  import { PairedPointsData } from './types';
4
- import { ColumnName, Row } from '../../types';
5
5
  type Point = {
6
6
  id: string;
7
7
  value: number;
@@ -1 +1 @@
1
- {"version":3,"file":"pairedPoints.d.ts","sourceRoot":"","sources":["../../../src/discrete/layers/pairedPoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,SAAS,CAAC;AAG9C,OAAO,KAAK,EAAC,UAAU,EAAE,GAAG,EAAC,MAAM,aAAa,CAAC;AAGjD,KAAK,KAAK,GAAG;IACT,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,GAAG,WAAW,CAAC;IAClC,KAAK,EAAE;QAAC,IAAI,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,KAAK,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IAChD,OAAO,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;CACL,CAAC;AA2FF,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,iBAAiB,EACxB,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,EACb,KAAK,EAAE,oBAAoB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,GACtD,gBAAgB,CAsDlB"}
1
+ {"version":3,"file":"pairedPoints.d.ts","sourceRoot":"","sources":["../../../src/discrete/layers/pairedPoints.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAa,GAAG,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAGvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,KAAK,KAAK,GAAG;IACT,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,GAAG,WAAW,CAAC;IAClC,KAAK,EAAE;QAAC,IAAI,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,KAAK,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IAChD,OAAO,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;CACL,CAAC;AAyFF,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,iBAAiB,EACxB,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,EACb,KAAK,EAAE,oBAAoB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,GACtD,gBAAgB,CA6DlB"}
@@ -1,89 +1,89 @@
1
- import { getOutliersBounds as B } from "../utils/getOutliersBounds.js";
2
- import { getFacetStringKey as Y } from "../utils/getFacetStringKey.js";
3
- import x from "../../node_modules/lodash/lodash.js";
4
- function P(e, i) {
5
- if (i.length === 2)
1
+ import { l as M } from "../../node_modules/lodash/lodash.js";
2
+ import { getOutliersBounds as $ } from "../utils/getOutliersBounds.js";
3
+ import "../../utils/TextMeasurer/TextMeasurer.js";
4
+ import { getFacetStringKey as k } from "../utils/getFacetStringKey.js";
5
+ function w(u, o) {
6
+ if (o.length === 2)
6
7
  return "secondary";
7
- if (e.length === 2 && i.length < 2)
8
+ if (u.length === 2 && o.length < 2)
8
9
  return "primary";
9
10
  throw Error("Too many groups for paired points layer");
10
11
  }
11
- function G(e, i, f, M, b, d, p, h, l) {
12
- const g = x.groupBy(f, (n) => n[b.value]), v = x.groupBy(M, (n) => n[b.value]), u = Object.keys(g), s = Object.keys(v);
13
- if (x.uniq(u).length !== u.length || x.uniq(s).length !== s.length)
14
- throw Error(`Non unique keys in groups ${String(e)}, ${String(i)} for paired points layer`);
15
- if (u.length !== s.length || x.intersection(u, s).length !== u.length)
16
- throw Error(`Keys in groups ${String(e)}, ${String(i)} not match for paired points layer`);
17
- const a = (n) => Number(n[d.value]);
18
- let t = 1 / 0, o = -1 / 0, y = !1;
19
- const m = l === "log";
20
- let w = u.map((n) => {
21
- const S = g[n][0], $ = v[n][0], c = a(S), r = a($);
22
- return (c === 0 || r === 0) && (y = !0), t = Math.min(t, m && c === 0 ? 1 / 0 : c, m && r === 0 ? 1 / 0 : r), o = Math.max(o, m && c === 0 ? -1 / 0 : c, m && r === 0 ? -1 / 0 : r), {
12
+ function G(u, o, g, b, S, I, m) {
13
+ const p = M.groupBy(g, (n) => n.link), c = M.groupBy(b, (n) => n.link), r = Object.keys(p), a = Object.keys(c);
14
+ if (M.uniq(r).length !== r.length || M.uniq(a).length !== a.length)
15
+ throw Error(`Non unique keys in groups ${String(u)}, ${String(o)} for paired points layer`);
16
+ if (r.length !== a.length || M.intersection(r, a).length !== r.length)
17
+ throw Error(`Keys in groups ${String(u)}, ${String(o)} not match for paired points layer`);
18
+ const f = (n) => n.y;
19
+ let t = 1 / 0, e = -1 / 0, d = !1;
20
+ const s = m === "log";
21
+ let v = r.map((n) => {
22
+ const l = p[n][0], h = c[n][0], y = f(l), i = f(h);
23
+ return (y === 0 || i === 0) && (d = !0), t = Math.min(t, s && y === 0 ? 1 / 0 : y, s && i === 0 ? 1 / 0 : i), e = Math.max(e, s && y === 0 ? -1 / 0 : y, s && i === 0 ? -1 / 0 : i), {
23
24
  id: n,
24
- key1: { id: `${n}_${String(e)}`, value: c, data: S },
25
- key2: { id: `${n}_${String(i)}`, value: r, data: $ }
25
+ key1: { id: `${n}_${String(u)}`, value: y, data: l },
26
+ key2: { id: `${n}_${String(o)}`, value: i, data: h }
26
27
  };
27
28
  });
28
- if (!h) {
29
- t = 1 / 0, o = -1 / 0;
30
- const [n, S] = B(f, l, a), [$, c] = B(M, l, a);
31
- w = w.filter(({ key1: r, key2: I }) => r.value < n || r.value > S || I.value < $ || I.value > c ? !1 : (t = Math.min(t, m && r.value === 0 ? 1 / 0 : r.value, m && I.value === 0 ? 1 / 0 : I.value), o = Math.max(o, m && r.value === 0 ? -1 / 0 : r.value, m && I.value === 0 ? -1 / 0 : I.value), !0));
29
+ if (!I) {
30
+ t = 1 / 0, e = -1 / 0;
31
+ const [n, l] = $(g.map(f), m), [h, y] = $(b.map(f), m);
32
+ v = v.filter(({ key1: i, key2: x }) => i.value < n || i.value > l || x.value < h || x.value > y ? !1 : (t = Math.min(t, s && i.value === 0 ? 1 / 0 : i.value, s && x.value === 0 ? 1 / 0 : x.value), e = Math.max(e, s && i.value === 0 ? -1 / 0 : i.value, s && x.value === 0 ? -1 / 0 : x.value), !0));
32
33
  }
33
- return t = y ? t / 10 : t, o = Math.max(o, t), {
34
- id: `${String(e)}_${String(i)}`,
35
- key1: String(e),
36
- key2: String(i),
37
- pairs: w.map((n) => ({
34
+ return t = d ? t / 10 : t, e = Math.max(e, t), {
35
+ id: `${String(u)}_${String(o)}`,
36
+ key1: String(u),
37
+ key2: String(o),
38
+ pairs: v.map((n) => ({
38
39
  ...n,
39
40
  key1: { ...n.key1, value: n.key1.value === 0 ? t : n.key1.value },
40
41
  key2: { ...n.key2, value: n.key2.value === 0 ? t : n.key2.value }
41
42
  })),
42
- grouping: p,
43
- boundsY: { min: t, max: o }
43
+ grouping: S,
44
+ boundsY: { min: t, max: e }
44
45
  };
45
46
  }
46
- function q(e, i, f, M, b) {
47
- const d = P(i.primary, i.secondary);
48
- let p = 1 / 0, h = -1 / 0;
47
+ function R(u, o, g, b, S) {
48
+ const I = w(o.primary, o.secondary), m = (r) => ({
49
+ y: Number(g.getColumnValue(b.value, r)),
50
+ link: g.getColumnValue(u.linkColumn.value, r)
51
+ });
52
+ let p = 1 / 0, c = -1 / 0;
49
53
  return {
50
54
  type: "pairedPoints",
51
- geoms: i.facet.reduce((l, g) => {
52
- const v = Y(g);
53
- if (l[v] = [], d === "primary") {
54
- const [u, s] = i.primary, a = f.getRowsByGrouping([...g, u]), t = f.getRowsByGrouping([...g, s]), o = G(
55
- u,
56
- s,
57
- a,
55
+ geoms: o.facet.reduce((r, a) => {
56
+ const f = k(a);
57
+ if (r[f] = [], I === "primary") {
58
+ const [t, e] = o.primary, d = g.getRowsByGrouping([...a, t]), s = g.getRowsByGrouping([...a, e]), v = Array.from(d).map(m), n = Array.from(s).map(m), l = G(
58
59
  t,
59
- e.linkColumn,
60
- M,
61
- d,
62
- e.aes.showOutliers,
63
- b.scale
60
+ e,
61
+ v,
62
+ n,
63
+ I,
64
+ u.aes.showOutliers,
65
+ S.scale
64
66
  );
65
- p = Math.min(p, o.boundsY.min), h = Math.max(h, o.boundsY.max), l[v].push(o);
66
- } else d === "secondary" && i.primary.forEach((u) => {
67
- const [s, a] = i.secondary, t = f.getRowsByGrouping([...g, u, s]), o = f.getRowsByGrouping([...g, u, a]), y = G(
68
- s,
69
- a,
70
- t,
71
- o,
72
- e.linkColumn,
73
- M,
67
+ p = Math.min(p, l.boundsY.min), c = Math.max(c, l.boundsY.max), r[f].push(l);
68
+ } else I === "secondary" && o.primary.forEach((t) => {
69
+ const [e, d] = o.secondary, s = g.getRowsByGrouping([...a, t, e]), v = g.getRowsByGrouping([...a, t, d]), n = Array.from(s).map(m), l = Array.from(v).map(m), h = G(
70
+ e,
74
71
  d,
75
- e.aes.showOutliers,
76
- b.scale
72
+ n,
73
+ l,
74
+ I,
75
+ u.aes.showOutliers,
76
+ S.scale
77
77
  );
78
- p = Math.min(p, y.boundsY.min), h = Math.max(h, y.boundsY.max), l[v].push(y);
78
+ p = Math.min(p, h.boundsY.min), c = Math.max(c, h.boundsY.max), r[f].push(h);
79
79
  });
80
- return l;
80
+ return r;
81
81
  }, {}),
82
- meta: { minY: p, maxY: h },
83
- aes: e.aes
82
+ meta: { minY: p, maxY: c },
83
+ aes: u.aes
84
84
  };
85
85
  }
86
86
  export {
87
- q as getPairedPointsData
87
+ R as getPairedPointsData
88
88
  };
89
89
  //# sourceMappingURL=pairedPoints.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pairedPoints.js","sources":["../../../src/discrete/layers/pairedPoints.ts"],"sourcesContent":["import type {GroupKey} from '../../DataFrame';\nimport type {DataFrame} from '../../DataFrame';\nimport type {DiscreteSettingsImpl} from '../DiscreteSettingsImpl';\nimport type {PairedPointsLayer} from '../DiscreteSettingsImpl';\nimport type {PairedPointsData} from './types';\nimport {getOutliersBounds} from '../utils';\nimport {getFacetStringKey} from '../utils/getFacetStringKey';\nimport type {ColumnName, Row} from '../../types';\nimport lodash from 'lodash';\n\ntype Point = {\n id: string;\n value: number;\n data: Row;\n};\n\nexport type PairedPoints = {\n id: string;\n key1: string;\n key2: string;\n grouping: 'primary' | 'secondary';\n pairs: {key1: Point; key2: Point; id: string}[];\n boundsY: {\n min: number;\n max: number;\n };\n};\n\nfunction getGroupingType(primaryKeys: GroupKey[], secondaryKeys: GroupKey[]) {\n if (secondaryKeys.length === 2) {\n return 'secondary';\n }\n if (primaryKeys.length === 2 && secondaryKeys.length < 2) {\n return 'primary';\n }\n throw Error('Too many groups for paired points layer');\n}\n\nfunction getPairedGroup(\n key1: GroupKey,\n key2: GroupKey,\n rowsGroup1: Row[],\n rowsGroup2: Row[],\n linkColumn: ColumnName,\n yColumn: ColumnName,\n grouping: 'primary' | 'secondary',\n showOutliers: boolean,\n scale: 'linear' | 'log'\n): PairedPoints {\n const group1 = lodash.groupBy(rowsGroup1, row => row[linkColumn.value]);\n const group2 = lodash.groupBy(rowsGroup2, row => row[linkColumn.value]);\n const pointKeys1 = Object.keys(group1);\n const pointKeys2 = Object.keys(group2);\n // Sets of point ids from group 1 and group 2 must be the same and must contain unique ids\n if (lodash.uniq(pointKeys1).length !== pointKeys1.length || lodash.uniq(pointKeys2).length !== pointKeys2.length) {\n throw Error(`Non unique keys in groups ${String(key1)}, ${String(key2)} for paired points layer`);\n }\n if (\n pointKeys1.length !== pointKeys2.length ||\n lodash.intersection(pointKeys1, pointKeys2).length !== pointKeys1.length\n ) {\n throw Error(`Keys in groups ${String(key1)}, ${String(key2)} not match for paired points layer`);\n }\n\n const yGetter = (row: Row) => Number(row[yColumn.value]);\n let min = Infinity;\n let max = -Infinity;\n let hasZero = false;\n const isLog = scale === 'log';\n let pairs = pointKeys1.map(pairKey => {\n const p1 = group1[pairKey][0];\n const p2 = group2[pairKey][0];\n const v1 = yGetter(p1);\n const v2 = yGetter(p2);\n if (v1 === 0 || v2 === 0) {\n hasZero = true;\n }\n min = Math.min(min, isLog && v1 === 0 ? Infinity : v1, isLog && v2 === 0 ? Infinity : v2);\n max = Math.max(max, isLog && v1 === 0 ? -Infinity : v1, isLog && v2 === 0 ? -Infinity : v2);\n return {\n id: pairKey,\n key1: {id: `${pairKey}_${String(key1)}`, value: v1, data: p1},\n key2: {id: `${pairKey}_${String(key2)}`, value: v2, data: p2},\n };\n });\n if (!showOutliers) {\n min = Infinity;\n max = -Infinity;\n const [boundsMin1, boundMax1] = getOutliersBounds(rowsGroup1, scale, yGetter);\n const [boundsMin2, boundMax2] = getOutliersBounds(rowsGroup2, scale, yGetter);\n pairs = pairs.filter(({key1, key2}) => {\n const outlier =\n key1.value < boundsMin1 || key1.value > boundMax1 || key2.value < boundsMin2 || key2.value > boundMax2;\n if (outlier) {\n return false;\n }\n min = Math.min(min, isLog && key1.value === 0 ? Infinity : key1.value, isLog && key2.value === 0 ? Infinity : key2.value);\n max = Math.max(max, isLog && key1.value === 0 ? -Infinity : key1.value, isLog && key2.value === 0 ? -Infinity : key2.value);\n return true;\n });\n }\n min = hasZero ? min / 10 : min;\n max = Math.max(max, min);\n return {\n id: `${String(key1)}_${String(key2)}`,\n key1: String(key1),\n key2: String(key2),\n pairs: pairs.map(pair => ({\n ...pair,\n key1: {...pair.key1, value: pair.key1.value === 0 ? min : pair.key1.value},\n key2: {...pair.key2, value: pair.key2.value === 0 ? min : pair.key2.value},\n })),\n grouping,\n boundsY: {min, max},\n };\n}\n\nexport function getPairedPointsData(\n layer: PairedPointsLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: ColumnName,\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis']\n): PairedPointsData {\n const grouping = getGroupingType(groupingKeys.primary, groupingKeys.secondary);\n let minY = Infinity;\n let maxY = -Infinity;\n\n return {\n type: 'pairedPoints',\n geoms: groupingKeys.facet.reduce((res: Record<string, PairedPoints[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\n if (grouping === 'primary') {\n const [key1, key2] = groupingKeys.primary;\n const group1 = data.getRowsByGrouping([...facetKey, key1]);\n const group2 = data.getRowsByGrouping([...facetKey, key2]);\n const pairedPointsGroup = getPairedGroup(\n key1,\n key2,\n group1,\n group2,\n layer.linkColumn,\n y,\n grouping,\n layer.aes.showOutliers,\n yAxis.scale\n );\n minY = Math.min(minY, pairedPointsGroup.boundsY.min);\n maxY = Math.max(maxY, pairedPointsGroup.boundsY.max);\n res[strFacetKey].push(pairedPointsGroup);\n } else if (grouping === 'secondary') {\n groupingKeys.primary.forEach(primaryKey => {\n const [key1, key2] = groupingKeys.secondary;\n const group1 = data.getRowsByGrouping([...facetKey, primaryKey, key1]);\n const group2 = data.getRowsByGrouping([...facetKey, primaryKey, key2]);\n const pairedPointsGroup = getPairedGroup(\n key1,\n key2,\n group1,\n group2,\n layer.linkColumn,\n y,\n grouping,\n layer.aes.showOutliers,\n yAxis.scale\n );\n minY = Math.min(minY, pairedPointsGroup.boundsY.min);\n maxY = Math.max(maxY, pairedPointsGroup.boundsY.max);\n res[strFacetKey].push(pairedPointsGroup);\n });\n }\n return res;\n }, {}),\n meta: {minY, maxY},\n aes: layer.aes,\n };\n}\n"],"names":["getGroupingType","primaryKeys","secondaryKeys","getPairedGroup","key1","key2","rowsGroup1","rowsGroup2","linkColumn","yColumn","grouping","showOutliers","scale","group1","lodash","row","group2","pointKeys1","pointKeys2","yGetter","min","max","hasZero","isLog","pairs","pairKey","p1","p2","v1","v2","boundsMin1","boundMax1","getOutliersBounds","boundsMin2","boundMax2","pair","getPairedPointsData","layer","groupingKeys","data","y","yAxis","minY","maxY","res","facetKey","strFacetKey","getFacetStringKey","pairedPointsGroup","primaryKey"],"mappings":"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"}
1
+ {"version":3,"file":"pairedPoints.js","sources":["../../../src/discrete/layers/pairedPoints.ts"],"sourcesContent":["import {\n groupBy,\n intersection,\n uniq\n} from 'lodash';\nimport type { DataFrame, GroupKey } from '../../DataFrame';\nimport type { ColumnName, DataValue, Row } from '../../types';\nimport type { DiscreteSettingsImpl, PairedPointsLayer } from '../DiscreteSettingsImpl';\nimport { getOutliersBounds } from '../utils';\nimport { getFacetStringKey } from '../utils/getFacetStringKey';\nimport type { PairedPointsData } from './types';\n\ntype Point = {\n id: string;\n value: number;\n data: Row;\n};\n\nexport type PairedPoints = {\n id: string;\n key1: string;\n key2: string;\n grouping: 'primary' | 'secondary';\n pairs: {key1: Point; key2: Point; id: string}[];\n boundsY: {\n min: number;\n max: number;\n };\n};\n\nfunction getGroupingType(primaryKeys: GroupKey[], secondaryKeys: GroupKey[]) {\n if (secondaryKeys.length === 2) {\n return 'secondary';\n }\n if (primaryKeys.length === 2 && secondaryKeys.length < 2) {\n return 'primary';\n }\n throw Error('Too many groups for paired points layer');\n}\n\nfunction getPairedGroup(\n key1: GroupKey,\n key2: GroupKey,\n rowsGroup1: {y: number, link: DataValue}[],\n rowsGroup2: {y: number, link: DataValue}[],\n grouping: 'primary' | 'secondary',\n showOutliers: boolean,\n scale: 'linear' | 'log'\n): PairedPoints {\n const group1 = groupBy(rowsGroup1, row => row.link);\n const group2 = groupBy(rowsGroup2, row => row.link);\n const pointKeys1 = Object.keys(group1);\n const pointKeys2 = Object.keys(group2);\n // Sets of point ids from group 1 and group 2 must be the same and must contain unique ids\n if (uniq(pointKeys1).length !== pointKeys1.length || uniq(pointKeys2).length !== pointKeys2.length) {\n throw Error(`Non unique keys in groups ${String(key1)}, ${String(key2)} for paired points layer`);\n }\n if (\n pointKeys1.length !== pointKeys2.length ||\n intersection(pointKeys1, pointKeys2).length !== pointKeys1.length\n ) {\n throw Error(`Keys in groups ${String(key1)}, ${String(key2)} not match for paired points layer`);\n }\n\n const yGetter = (value: {y: number}) => value.y;\n let min = Infinity;\n let max = -Infinity;\n let hasZero = false;\n const isLog = scale === 'log';\n let pairs = pointKeys1.map(pairKey => {\n const p1 = group1[pairKey][0];\n const p2 = group2[pairKey][0];\n const v1 = yGetter(p1);\n const v2 = yGetter(p2);\n if (v1 === 0 || v2 === 0) {\n hasZero = true;\n }\n min = Math.min(min, isLog && v1 === 0 ? Infinity : v1, isLog && v2 === 0 ? Infinity : v2);\n max = Math.max(max, isLog && v1 === 0 ? -Infinity : v1, isLog && v2 === 0 ? -Infinity : v2);\n return {\n id: pairKey,\n key1: {id: `${pairKey}_${String(key1)}`, value: v1, data: p1},\n key2: {id: `${pairKey}_${String(key2)}`, value: v2, data: p2},\n };\n });\n if (!showOutliers) {\n min = Infinity;\n max = -Infinity;\n const [boundsMin1, boundMax1] = getOutliersBounds(rowsGroup1.map(yGetter), scale);\n const [boundsMin2, boundMax2] = getOutliersBounds(rowsGroup2.map(yGetter), scale);\n pairs = pairs.filter(({key1, key2}) => {\n const outlier =\n key1.value < boundsMin1 || key1.value > boundMax1 || key2.value < boundsMin2 || key2.value > boundMax2;\n if (outlier) {\n return false;\n }\n min = Math.min(min, isLog && key1.value === 0 ? Infinity : key1.value, isLog && key2.value === 0 ? Infinity : key2.value);\n max = Math.max(max, isLog && key1.value === 0 ? -Infinity : key1.value, isLog && key2.value === 0 ? -Infinity : key2.value);\n return true;\n });\n }\n min = hasZero ? min / 10 : min;\n max = Math.max(max, min);\n return {\n id: `${String(key1)}_${String(key2)}`,\n key1: String(key1),\n key2: String(key2),\n pairs: pairs.map(pair => ({\n ...pair,\n key1: {...pair.key1, value: pair.key1.value === 0 ? min : pair.key1.value},\n key2: {...pair.key2, value: pair.key2.value === 0 ? min : pair.key2.value},\n })),\n grouping,\n boundsY: {min, max},\n };\n}\n\nexport function getPairedPointsData(\n layer: PairedPointsLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: ColumnName,\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis']\n): PairedPointsData {\n const grouping = getGroupingType(groupingKeys.primary, groupingKeys.secondary);\n const groupGetter = (idx: number) => {\n return {\n y: Number(data.getColumnValue(y.value, idx)),\n link: data.getColumnValue(layer.linkColumn.value, idx),\n };\n };\n let minY = Infinity;\n let maxY = -Infinity;\n\n return {\n type: 'pairedPoints',\n geoms: groupingKeys.facet.reduce((res: Record<string, PairedPoints[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\n if (grouping === 'primary') {\n const [key1, key2] = groupingKeys.primary;\n const group1Indexes = data.getRowsByGrouping([...facetKey, key1]);\n const group2Indexes = data.getRowsByGrouping([...facetKey, key2]);\n\n const group1 = Array.from(group1Indexes).map(groupGetter);\n const group2 = Array.from(group2Indexes).map(groupGetter);\n const pairedPointsGroup = getPairedGroup(\n key1,\n key2,\n group1,\n group2,\n grouping,\n layer.aes.showOutliers,\n yAxis.scale\n );\n minY = Math.min(minY, pairedPointsGroup.boundsY.min);\n maxY = Math.max(maxY, pairedPointsGroup.boundsY.max);\n res[strFacetKey].push(pairedPointsGroup);\n } else if (grouping === 'secondary') {\n groupingKeys.primary.forEach(primaryKey => {\n const [key1, key2] = groupingKeys.secondary;\n const group1Indexes = data.getRowsByGrouping([...facetKey, primaryKey, key1]);\n const group2Indexes = data.getRowsByGrouping([...facetKey, primaryKey, key2]);\n const group1 = Array.from(group1Indexes).map(groupGetter);\n const group2 = Array.from(group2Indexes).map(groupGetter);\n const pairedPointsGroup = getPairedGroup(\n key1,\n key2,\n group1,\n group2,\n grouping,\n layer.aes.showOutliers,\n yAxis.scale\n );\n minY = Math.min(minY, pairedPointsGroup.boundsY.min);\n maxY = Math.max(maxY, pairedPointsGroup.boundsY.max);\n res[strFacetKey].push(pairedPointsGroup);\n });\n }\n return res;\n }, {}),\n meta: {minY, maxY},\n aes: layer.aes,\n };\n}\n"],"names":["getGroupingType","primaryKeys","secondaryKeys","getPairedGroup","key1","key2","rowsGroup1","rowsGroup2","grouping","showOutliers","scale","group1","groupBy","row","group2","pointKeys1","pointKeys2","uniq","intersection","yGetter","value","min","max","hasZero","isLog","pairs","pairKey","p1","p2","v1","v2","boundsMin1","boundMax1","getOutliersBounds","boundsMin2","boundMax2","pair","getPairedPointsData","layer","groupingKeys","data","y","yAxis","groupGetter","idx","minY","maxY","res","facetKey","strFacetKey","getFacetStringKey","group1Indexes","group2Indexes","pairedPointsGroup","primaryKey"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import { GroupKey, NO_GROUPED, DataFrame } from '../../DataFrame';
1
+ import { DataFrame, GroupKey, NO_GROUPED } from '../../DataFrame';
2
+ import { DataValue } from '../../types';
2
3
  import { DiscreteSettingsImpl, SinaLayer } from '../DiscreteSettingsImpl';
3
4
  import { SinaData } from './types';
4
- import { ColumnName, DataValue, Row } from '../../types';
5
5
  export declare class Sina {
6
6
  key: string;
7
7
  maxDensity: number;
@@ -12,13 +12,12 @@ export declare class Sina {
12
12
  y: number;
13
13
  jitter: number;
14
14
  id: string;
15
- data: Row;
16
15
  }[];
17
16
  boundsY: {
18
17
  min: number;
19
18
  max: number;
20
19
  };
21
- constructor(rowValues: Row[], y: ColumnName, scale: 'linear' | 'log', primaryGrouping: DataValue | typeof NO_GROUPED, secondaryGrouping: DataValue | typeof NO_GROUPED, getJitter: () => number);
20
+ constructor(values: number[], scale: 'linear' | 'log', primaryGrouping: DataValue | typeof NO_GROUPED, secondaryGrouping: DataValue | typeof NO_GROUPED, getJitter: () => number);
22
21
  }
23
22
  export declare function getSinaData(layer: SinaLayer, groupingKeys: {
24
23
  facet: GroupKey[][];
@@ -1 +1 @@
1
- {"version":3,"file":"sina.d.ts","sourceRoot":"","sources":["../../../src/discrete/layers/sina.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAE,UAAU,EAAC,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAC,oBAAoB,EAAE,SAAS,EAAC,MAAM,yBAAyB,CAAC;AAC7E,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AAGtC,OAAO,KAAK,EAAC,UAAU,EAAE,SAAS,EAAE,GAAG,EAAC,MAAM,aAAa,CAAC;AAwC5D,qBAAa,IAAI;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAE1B,MAAM,EAAE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAC,EAAE,CAAC;IAExE,OAAO,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;gBAGE,SAAS,EAAE,GAAG,EAAE,EAChB,CAAC,EAAC,UAAU,EACZ,KAAK,EAAE,QAAQ,GAAG,KAAK,EACvB,eAAe,EAAE,SAAS,GAAG,OAAO,UAAU,EAC9C,iBAAiB,EAAE,SAAS,GAAG,OAAO,UAAU,EAChD,SAAS,EAAE,MAAM,MAAM;CAqD9B;AAED,wBAAgB,WAAW,CACvB,KAAK,EAAE,SAAS,EAChB,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,oBAAoB,CAAC,GAAG,CAAC,EAC5B,KAAK,EAAE,oBAAoB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,GACtD,QAAQ,CAsDV"}
1
+ {"version":3,"file":"sina.d.ts","sourceRoot":"","sources":["../../../src/discrete/layers/sina.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAG/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAoCxC,qBAAa,IAAI;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAE1B,MAAM,EAAE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IAE7D,OAAO,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;gBAGE,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,QAAQ,GAAG,KAAK,EACvB,eAAe,EAAE,SAAS,GAAG,OAAO,UAAU,EAC9C,iBAAiB,EAAE,SAAS,GAAG,OAAO,UAAU,EAChD,SAAS,EAAE,MAAM,MAAM;CAmD9B;AAED,wBAAgB,WAAW,CACvB,KAAK,EAAE,SAAS,EAChB,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,oBAAoB,CAAC,GAAG,CAAC,EAC5B,KAAK,EAAE,oBAAoB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,GACtD,QAAQ,CAmDV"}