@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,43 +1,43 @@
1
- var S = Object.defineProperty;
2
- var L = (i, l, t) => l in i ? S(i, l, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[l] = t;
3
- var y = (i, l, t) => L(i, typeof l != "symbol" ? l + "" : l, t);
1
+ var K = Object.defineProperty;
2
+ var S = (l, c, t) => c in l ? K(l, c, { enumerable: !0, configurable: !0, writable: !0, value: t }) : l[c] = t;
3
+ var p = (l, c, t) => S(l, typeof c != "symbol" ? c + "" : c, t);
4
+ import { renderToString as L } from "../node_modules/react-dom/server.browser.js";
4
5
  import { AbstractChart as j } from "../AbstractChart.js";
5
- import { getDots as x } from "./dots.js";
6
- import { getLayersData as T } from "./getLayersData.js";
7
- import { createLegendInfo as k, addPalettesToAesMapping as O } from "./utils/createLegendInfo.js";
8
- import { renderToString as G } from "../node_modules/react-dom/server.browser.js";
9
- import I from "./ChartRenderer.js";
6
+ import x from "./ChartRenderer.js";
7
+ import { getDots as T } from "./dots.js";
8
+ import { getLayersData as k } from "./getLayersData.js";
9
+ import { getRegressionData as O } from "./linearRegression.js";
10
10
  import { ScatterplotSettingsImpl as _ } from "./ScatterplotSettingsImpl.js";
11
- import { getRegressionData as P } from "./linearRegression.js";
12
- function E(i) {
13
- if (!i.length)
11
+ import { createLegendInfo as G, addPalettesToAesMapping as I } from "./utils/createLegendInfo.js";
12
+ function v(l) {
13
+ if (!l.length)
14
14
  return [];
15
- let l = [[]];
16
- return i.forEach((t) => {
15
+ let c = [[]];
16
+ return l.forEach((t) => {
17
17
  const e = [];
18
18
  t.forEach((a) => {
19
- e.push(...l.map((s) => [...s, a]));
20
- }), l = e;
21
- }), l;
19
+ e.push(...c.map((r) => [...r, a]));
20
+ }), c = e;
21
+ }), c;
22
22
  }
23
- function U(i) {
24
- return typeof i == "object" && "type" in i && i.type === "grouping";
23
+ function P(l) {
24
+ return typeof l == "object" && "type" in l && l.type === "grouping";
25
25
  }
26
- class W extends j {
26
+ class Q extends j {
27
27
  constructor(t, e, a) {
28
28
  super(t, e);
29
- y(this, "settings");
30
- y(this, "chartRenderer", new I());
31
- y(this, "onTooltipHintSwitch", () => {
29
+ p(this, "settings");
30
+ p(this, "chartRenderer");
31
+ p(this, "onTooltipHintSwitch", () => {
32
32
  });
33
- y(this, "calculatedData", null);
34
- this.settings = new _(e), a && (this.onTooltipHintSwitch = a.onTooltipHintSwitch);
33
+ p(this, "calculatedData", null);
34
+ this.chartRenderer = new x(), this.settings = new _(e), a && (this.onTooltipHintSwitch = a.onTooltipHintSwitch);
35
35
  }
36
36
  mount(t) {
37
37
  try {
38
38
  this.chartRenderer.init(t), this._updateData(), this._updateChart();
39
39
  } catch (e) {
40
- e instanceof Error && this.chartRenderer.renderError(e.message);
40
+ console.error(e), e instanceof Error && (this.chartRenderer.renderError(e.message), console.error(e));
41
41
  }
42
42
  }
43
43
  unmount() {
@@ -45,84 +45,83 @@ class W extends j {
45
45
  }
46
46
  updateSettingsAndData(t, e) {
47
47
  try {
48
- const a = this.settings, s = this.data;
49
- this.settings = new _(e), this.data = t, this._needUpdateCalculatedDataBySettings(a, this.settings) || this._needUpdateCalculatedDataByData(s, this.data) ? this._updateData() : this._updateAesInData(), this._updateChart();
48
+ const a = this.settings, r = this.data;
49
+ this.settings = new _(e), this.data = t, this._needUpdateCalculatedDataBySettings(a, this.settings) || this._needUpdateCalculatedDataByData(r, this.data) ? this._updateData() : this._updateAesInData(), this._updateChart();
50
50
  } catch (a) {
51
- a instanceof Error && this.chartRenderer.renderError(a.message);
51
+ console.error(a), a instanceof Error && (this.chartRenderer.renderError(a.message), console.error(a));
52
52
  }
53
53
  }
54
54
  updateChartState(t, e) {
55
55
  console.warn("no chart state for scatterplot");
56
56
  }
57
57
  export() {
58
- return this._updateChart(), G(this.chartRenderer.component);
58
+ return this._updateChart(), L(this.chartRenderer.component);
59
59
  }
60
60
  _needUpdateCalculatedDataBySettings(t, e) {
61
- var a, s, c, d;
62
- return t.facetBy.some((o, n) => {
63
- var r;
64
- return o.value !== ((r = e.facetBy[n]) == null ? void 0 : r.value);
65
- }) || t.grouping.length !== e.grouping.length || t.grouping.some((o, n) => {
66
- var r;
67
- return o.value !== ((r = e.grouping[n]) == null ? void 0 : r.value);
68
- }) || (((a = t.label) == null ? void 0 : a.value) || ((s = e.label) == null ? void 0 : s.value)) && ((c = t.label) == null ? void 0 : c.value) !== ((d = e.label) == null ? void 0 : d.value) || t.layers.length !== e.layers.length || t.layers.some((o, n) => o.type !== e.layers[n].type) || !!t.trend != !!e.trend;
61
+ var a, r, h, d;
62
+ return t.facetBy.some((i, n) => {
63
+ var s;
64
+ return i.value !== ((s = e.facetBy[n]) == null ? void 0 : s.value);
65
+ }) || t.grouping.length !== e.grouping.length || t.grouping.some((i, n) => {
66
+ var s;
67
+ return i.value !== ((s = e.grouping[n]) == null ? void 0 : s.value);
68
+ }) || (((a = t.label) == null ? void 0 : a.value) || ((r = e.label) == null ? void 0 : r.value)) && ((h = t.label) == null ? void 0 : h.value) !== ((d = e.label) == null ? void 0 : d.value) || t.layers.length !== e.layers.length || t.layers.some((i, n) => i.type !== e.layers[n].type) || !!t.trend != !!e.trend;
69
69
  }
70
70
  _needUpdateCalculatedDataByData(t, e) {
71
- const a = Object.keys(t.data), s = Object.keys(e.data);
72
- return t.id !== e.id || a.length !== s.length || a.some((c) => {
71
+ const a = Object.keys(t.data), r = Object.keys(e.data);
72
+ return t.id !== e.id || a.length !== r.length || a.some((h) => {
73
73
  var d;
74
- return t.data[c].length !== ((d = e.data[c]) == null ? void 0 : d.length);
74
+ return t.data[h].length !== ((d = e.data[h]) == null ? void 0 : d.length);
75
75
  });
76
76
  }
77
77
  _updateData() {
78
- const { x: t, y: e, facetBy: a, grouping: s, keyColumn: c, trend: d, layers: o, inheritedAes: n, label: r, highlight: f } = this.settings, m = this.data.getColumnCategories(c.value), g = a.map((h) => this.data.getColumnCategories(h.value)), u = s.map((h) => this.data.getColumnCategories(h.value)), C = g.length ? E([...g]) : [["null"]], v = u.length ? E([...u]) : [["null"]], w = a.map((h) => h.value) ?? null;
79
- this.data.setGrouping([...w, c.value]);
78
+ const { x: t, y: e, facetBy: a, grouping: r, keyColumn: h, trend: d, layers: i, inheritedAes: n, label: s, highlight: f } = this.settings, y = this.data.getColumnCategories(h.value), g = a.map((o) => this.data.getColumnCategories(o.value)).filter((o) => o.length > 0), u = r.map((o) => this.data.getColumnCategories(o.value)).filter((o) => o.length > 0), C = g.length ? v(g) : [["null"]], b = u.length ? v(u) : [["null"]], E = a.map((o) => o.value) ?? null;
79
+ this.data.setGrouping([...E, h.value]);
80
80
  const B = {
81
- x: this.data.rows.every((h) => {
82
- const p = h[t.value];
83
- return p === null || !(Number(p) < 0);
84
- }),
85
- y: this.data.rows.every((h) => {
86
- const p = h[e.value];
87
- return p === null || !(Number(p) < 0);
88
- })
89
- }, D = x(this.data, C, t, e, r, f, m), b = Object.keys(D), A = P(D, b, v, s, d), K = k(this.data, s, o, n), R = T(o, b, D, v, s);
81
+ x: this.data.getColumn(t.value).every((o) => o === null || !(Number(o) < 0)),
82
+ y: this.data.getColumn(e.value).every((o) => o === null || !(Number(o) < 0))
83
+ }, m = T(this.data, C, t, e, s, f, y), D = Object.keys(m), R = O(this.data, m, D, b, r, d), A = G(this.data, r, i, n), w = k(this.data, i, D, m, b, r);
90
84
  this.calculatedData = {
91
85
  onlyPositive: B,
92
- dotsByFacets: D,
93
- facetKeys: b,
86
+ dotsByFacets: m,
87
+ facetKeys: D,
94
88
  facetKeysCombinations: C,
95
- trendsData: A,
96
- legendLabels: K,
97
- layersData: R
89
+ trendsData: R,
90
+ legendLabels: A,
91
+ layersData: w
98
92
  };
99
93
  }
100
94
  _updateAesInData() {
101
95
  const t = this.calculatedData;
102
96
  if (!t)
103
97
  return;
104
- const { grouping: e, trend: a, layers: s, inheritedAes: c } = this.settings, { facetKeys: d, trendsData: o } = t;
98
+ const { grouping: e, trend: a, layers: r, inheritedAes: h } = this.settings, { facetKeys: d, trendsData: i } = t;
105
99
  d.forEach((n) => {
106
- for (let r = 0; r < s.length; r++)
107
- t.layersData[n][r].info = s[r];
100
+ for (let s = 0; s < r.length; s++)
101
+ t.layersData[n][s].info = r[s];
108
102
  }), e.forEach((n) => {
109
- const r = /* @__PURE__ */ new Set(), f = {};
110
- s.forEach((m) => {
111
- m.aes && Object.entries(m.aes).forEach(([g, u]) => {
112
- U(u) && u.value === n.value && (r.add(g), u.palette && (f[g] = u.palette));
103
+ const s = /* @__PURE__ */ new Set(), f = {};
104
+ r.forEach((y) => {
105
+ y.aes && Object.entries(y.aes).forEach(([g, u]) => {
106
+ P(u) && u.value === n.value && (s.add(g), u.palette && (f[g] = u.palette));
113
107
  });
114
- }), t.legendLabels[n.value].usedAes = [...r], t.legendLabels[n.value].aesMap = O(t.legendLabels[n.value].values, f, c[n.value]);
115
- }), o && a && Object.keys(o).forEach((n) => {
116
- o[n].forEach((r) => {
117
- r.color = a.color, r.bounded = a.bounded;
108
+ }), t.legendLabels[n.value].usedAes = [...s], t.legendLabels[n.value].aesMap = I(
109
+ n,
110
+ f,
111
+ h[n.value]
112
+ );
113
+ }), i && a && Object.keys(i).forEach((n) => {
114
+ i[n].forEach((s) => {
115
+ s.color = a.color, s.bounded = a.bounded;
118
116
  });
119
117
  });
120
118
  }
121
119
  _updateChart() {
122
120
  if (!this.calculatedData)
123
121
  return;
124
- const { id: t, chartSettings: e, facetSettings: a, grouping: s, keyColumn: c, layers: d, trend: o } = this.settings;
122
+ const { id: t, chartSettings: e, facetSettings: a, grouping: r, keyColumn: h, layers: d, trend: i } = this.settings;
125
123
  this.chartRenderer.render(
124
+ this.data,
126
125
  t,
127
126
  e,
128
127
  a,
@@ -131,18 +130,18 @@ class W extends j {
131
130
  //for titles, if facet by more than 1 column
132
131
  this.calculatedData.dotsByFacets,
133
132
  this.calculatedData.trendsData,
134
- c,
133
+ h,
135
134
  this.calculatedData.onlyPositive,
136
135
  this.calculatedData.legendLabels,
137
136
  this.calculatedData.layersData,
138
- s,
137
+ r,
139
138
  d,
140
- o,
139
+ i,
141
140
  this.onTooltipHintSwitch
142
141
  );
143
142
  }
144
143
  }
145
144
  export {
146
- W as ChartScatterplot
145
+ Q as ChartScatterplot
147
146
  };
148
147
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/scatterplot/index.ts"],"sourcesContent":["import {AbstractChart} from '../AbstractChart';\nimport type {GroupedDots} from './dots';\nimport {getDots} from './dots';\nimport type {ScatterplotLayerData} from './getLayersData';\nimport {getLayersData} from './getLayersData';\nimport {addPalettesToAesMapping, createLegendInfo} from './utils/createLegendInfo';\nimport type {\n AesItem,\n ContinuousAesFromColumn,\n InheritAesScatterplot,\n ScatterplotEventHandlers,\n ScatterplotLegendInfo,\n} from '../types';\nimport {renderToString} from 'react-dom/server';\nimport ChartRenderer from './ChartRenderer';\nimport type {ScatterplotSettings} from '../types';\nimport {ScatterplotSettingsImpl} from './ScatterplotSettingsImpl';\nimport type {DataFrame} from '../DataFrame';\nimport type {TrendsData} from './linearRegression';\nimport {getRegressionData} from './linearRegression';\n\n// all combinations with 1 key from each list\nfunction getKeysCombinations(keysLists: string[][]) {\n if (!keysLists.length) {\n return [];\n }\n let result: string[][] = [[]];\n keysLists.forEach(keys => {\n const nextResult: string[][] = [];\n keys.forEach(key => {\n nextResult.push(...result.map(resultItem => [...resultItem, key]));\n });\n result = nextResult;\n });\n return result;\n}\n\nfunction isInheritMapping<T extends (string | number)>(value:T | InheritAesScatterplot | ContinuousAesFromColumn<T>):value is InheritAesScatterplot {\n return typeof value === 'object' && 'type' in value && value.type === 'grouping';\n}\n\nexport class ChartScatterplot extends AbstractChart {\n settings: ScatterplotSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v:boolean) => void = () => undefined;\n calculatedData: {\n onlyPositive: {x: boolean; y: boolean};\n dotsByFacets: GroupedDots;\n facetKeys: string[];\n facetKeysCombinations: string[][];\n trendsData: TrendsData | null;\n legendLabels: ScatterplotLegendInfo;\n layersData: Record<string, ScatterplotLayerData[]>;\n } | null = null;\n\n constructor(data: DataFrame, settings: ScatterplotSettings, eventHandlers?:ScatterplotEventHandlers) {\n super(data, settings);\n\n this.settings = new ScatterplotSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers.onTooltipHintSwitch;\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n } catch (err) {\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n }\n }\n }\n\n unmount() {\n this.chartRenderer.clear();\n }\n\n updateSettingsAndData(data: DataFrame, settings: ScatterplotSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new ScatterplotSettingsImpl(settings);\n this.data = data;\n if (\n this._needUpdateCalculatedDataBySettings(previousSettings, this.settings) ||\n this._needUpdateCalculatedDataByData(previousData, this.data)\n ) {\n this._updateData();\n } else {\n this._updateAesInData();\n }\n this._updateChart();\n } catch (err) {\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n }\n }\n }\n\n updateChartState(_field: string, _value: unknown) {\n console.warn('no chart state for scatterplot');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: ScatterplotSettingsImpl, settings: ScatterplotSettingsImpl) {\n return (\n prevSettings.facetBy.some((el, idx) => el.value !== settings.facetBy[idx]?.value) ||\n prevSettings.grouping.length !== settings.grouping.length ||\n prevSettings.grouping.some((el, idx) => el.value !== settings.grouping[idx]?.value) ||\n (prevSettings.label?.value || settings.label?.value) && prevSettings.label?.value !== settings.label?.value ||\n prevSettings.layers.length !== settings.layers.length ||\n prevSettings.layers.some((l, idx) => l.type !== settings.layers[idx].type) ||\n Boolean(prevSettings.trend) !== Boolean(settings.trend)\n );\n }\n\n _needUpdateCalculatedDataByData(prevData: DataFrame, data: DataFrame) {\n const prevKeys = Object.keys(prevData.data);\n const keys = Object.keys(data.data);\n return (\n prevData.id !== data.id ||\n prevKeys.length !== keys.length ||\n prevKeys.some(key => prevData.data[key].length !== data.data[key]?.length)\n );\n }\n\n _updateData() {\n const {x, y, facetBy, grouping, keyColumn, trend, layers, inheritedAes, label, highlight} = this.settings;\n const keys = this.data.getColumnCategories(keyColumn.value);\n\n const facetKeysLists = facetBy.map(column => this.data.getColumnCategories(column.value));\n const categoryGroupingKeysKeysLists = grouping.map(column => this.data.getColumnCategories(column.value));\n\n const facetKeysCombinations = facetKeysLists.length ? getKeysCombinations([...facetKeysLists]) : [['null']];\n const categoryGroupingCombinations = categoryGroupingKeysKeysLists.length\n ? getKeysCombinations([...categoryGroupingKeysKeysLists])\n : [['null']];\n\n const facetGroupingValues = facetBy.map(column => column.value) ?? null;\n\n this.data.setGrouping([...facetGroupingValues, keyColumn.value]);\n const onlyPositive = {\n x: this.data.rows.every(row => {\n const v = row[x.value];\n return v === null || !(Number(v) < 0);\n }),\n y: this.data.rows.every(row => {\n const v = row[y.value];\n return v === null || !(Number(v) < 0);\n }),\n };\n // console.info('only positive Y:', onlyPositive.y);\n // console.info('only positive X:', onlyPositive.x);\n\n const dotsByFacets = getDots(this.data, facetKeysCombinations, x, y, label, highlight, keys);\n const facetKeys = Object.keys(dotsByFacets);\n const trendsData = getRegressionData(dotsByFacets, facetKeys, categoryGroupingCombinations, grouping, trend);\n\n const legendLabels = createLegendInfo(this.data, grouping, layers, inheritedAes);\n const layersData = getLayersData(layers, facetKeys, dotsByFacets, categoryGroupingCombinations, grouping);\n\n this.calculatedData = {\n onlyPositive,\n dotsByFacets,\n facetKeys,\n facetKeysCombinations,\n trendsData,\n legendLabels,\n layersData,\n };\n }\n\n _updateAesInData() {\n const calculated = this.calculatedData;\n if (!calculated) {\n return;\n }\n const {grouping, trend, layers, inheritedAes} = this.settings;\n const {facetKeys, trendsData} = calculated;\n\n facetKeys.forEach(facetKey => {\n for (let i = 0; i < layers.length; i++) {\n calculated.layersData[facetKey][i].info = layers[i];\n }\n });\n\n grouping.forEach(column => {\n const usedAes = new Set<keyof AesItem>();\n const usedAesFromPalettes:Partial<Record<keyof AesItem, string[]>> = {}; // if there is palette in mapping then\n layers.forEach(layer => {\n if (layer.aes) {\n Object.entries(layer.aes).forEach(([key, value]) => {\n if (isInheritMapping(value) && value.value === column.value) {\n usedAes.add(key as keyof AesItem);\n if (value.palette) {\n usedAesFromPalettes[key as keyof AesItem] = value.palette;\n }\n }\n });\n }\n });\n calculated.legendLabels[column.value].usedAes = [...usedAes];\n calculated.legendLabels[column.value].aesMap = addPalettesToAesMapping(calculated.legendLabels[column.value].values, usedAesFromPalettes, inheritedAes[column.value]);\n });\n if (trendsData && trend) {\n Object.keys(trendsData).forEach((key) => {\n trendsData[key].forEach(trendInfo => {\n trendInfo.color = trend.color;\n trendInfo.bounded = trend.bounded;\n });\n });\n }\n }\n\n _updateChart() {\n if (!this.calculatedData) {\n return;\n }\n const {id, chartSettings, facetSettings, grouping, keyColumn, layers, trend} = this.settings;\n this.chartRenderer.render(\n id,\n chartSettings,\n facetSettings,\n this.calculatedData.facetKeys,\n this.calculatedData.facetKeysCombinations, //for titles, if facet by more than 1 column\n this.calculatedData.dotsByFacets,\n this.calculatedData.trendsData,\n keyColumn,\n this.calculatedData.onlyPositive,\n this.calculatedData.legendLabels,\n this.calculatedData.layersData,\n grouping,\n layers,\n trend,\n this.onTooltipHintSwitch\n );\n }\n}\n"],"names":["getKeysCombinations","keysLists","result","keys","nextResult","key","resultItem","isInheritMapping","value","ChartScatterplot","AbstractChart","data","settings","eventHandlers","__publicField","ChartRenderer","ScatterplotSettingsImpl","node","err","previousSettings","previousData","_field","_value","renderToString","prevSettings","el","idx","_a","_b","_c","_d","l","prevData","prevKeys","x","y","facetBy","grouping","keyColumn","trend","layers","inheritedAes","label","highlight","facetKeysLists","column","categoryGroupingKeysKeysLists","facetKeysCombinations","categoryGroupingCombinations","facetGroupingValues","onlyPositive","row","v","dotsByFacets","getDots","facetKeys","trendsData","getRegressionData","legendLabels","createLegendInfo","layersData","getLayersData","calculated","facetKey","i","usedAes","usedAesFromPalettes","layer","addPalettesToAesMapping","trendInfo","id","chartSettings","facetSettings"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/scatterplot/index.ts"],"sourcesContent":["import { renderToString } from 'react-dom/server';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame } from '../DataFrame';\nimport type {\n AesItem,\n ContinuousAesFromColumn,\n InheritAesScatterplot,\n ScatterplotEventHandlers,\n ScatterplotLegendInfo,\n ScatterplotSettings,\n} from '../types';\nimport ChartRenderer from './ChartRenderer';\nimport type { GroupedDots } from './dots';\nimport { getDots } from './dots';\nimport type { ScatterplotLayerData } from './getLayersData';\nimport { getLayersData } from './getLayersData';\nimport type { TrendsData } from './linearRegression';\nimport { getRegressionData } from './linearRegression';\nimport { ScatterplotSettingsImpl } from './ScatterplotSettingsImpl';\nimport { addPalettesToAesMapping, createLegendInfo } from './utils/createLegendInfo';\n\n// all combinations with 1 key from each list\nfunction getKeysCombinations(keysLists: string[][]) {\n if (!keysLists.length) {\n return [];\n }\n let result: string[][] = [[]];\n keysLists.forEach(keys => {\n const nextResult: string[][] = [];\n keys.forEach(key => {\n nextResult.push(...result.map(resultItem => [...resultItem, key]));\n });\n result = nextResult;\n });\n return result;\n}\n\nfunction isInheritMapping<T extends (string | number)>(value:T | InheritAesScatterplot | ContinuousAesFromColumn<T>):value is InheritAesScatterplot {\n return typeof value === 'object' && 'type' in value && value.type === 'grouping';\n}\n\nexport class ChartScatterplot extends AbstractChart {\n settings: ScatterplotSettingsImpl;\n chartRenderer: ChartRenderer;\n\n onTooltipHintSwitch: (v:boolean) => void = () => undefined;\n calculatedData: {\n onlyPositive: {x: boolean; y: boolean};\n dotsByFacets: GroupedDots;\n facetKeys: string[];\n facetKeysCombinations: string[][];\n trendsData: TrendsData | null;\n legendLabels: ScatterplotLegendInfo;\n layersData: Record<string, ScatterplotLayerData[]>;\n } | null = null;\n\n constructor(data: DataFrame, settings: ScatterplotSettings, eventHandlers?:ScatterplotEventHandlers) {\n super(data, settings);\n\n this.chartRenderer = new ChartRenderer();\n this.settings = new ScatterplotSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers.onTooltipHintSwitch;\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n } catch (err) {\n console.error(err);\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n unmount() {\n this.chartRenderer.clear();\n }\n\n updateSettingsAndData(data: DataFrame, settings: ScatterplotSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new ScatterplotSettingsImpl(settings);\n this.data = data;\n if (\n this._needUpdateCalculatedDataBySettings(previousSettings, this.settings) ||\n this._needUpdateCalculatedDataByData(previousData, this.data)\n ) {\n this._updateData();\n } else {\n this._updateAesInData();\n }\n this._updateChart();\n } catch (err) {\n console.error(err);\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n updateChartState(_field: string, _value: unknown) {\n console.warn('no chart state for scatterplot');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: ScatterplotSettingsImpl, settings: ScatterplotSettingsImpl) {\n return (\n prevSettings.facetBy.some((el, idx) => el.value !== settings.facetBy[idx]?.value) ||\n prevSettings.grouping.length !== settings.grouping.length ||\n prevSettings.grouping.some((el, idx) => el.value !== settings.grouping[idx]?.value) ||\n (prevSettings.label?.value || settings.label?.value) && prevSettings.label?.value !== settings.label?.value ||\n prevSettings.layers.length !== settings.layers.length ||\n prevSettings.layers.some((l, idx) => l.type !== settings.layers[idx].type) ||\n Boolean(prevSettings.trend) !== Boolean(settings.trend)\n );\n }\n\n _needUpdateCalculatedDataByData(prevData: DataFrame, data: DataFrame) {\n const prevKeys = Object.keys(prevData.data);\n const keys = Object.keys(data.data);\n return (\n prevData.id !== data.id ||\n prevKeys.length !== keys.length ||\n prevKeys.some(key => prevData.data[key].length !== data.data[key]?.length)\n );\n }\n\n _updateData() {\n const {x, y, facetBy, grouping, keyColumn, trend, layers, inheritedAes, label, highlight} = this.settings;\n const keys = this.data.getColumnCategories(keyColumn.value);\n\n const facetKeysLists = facetBy.map(column => this.data.getColumnCategories(column.value)).filter(v => v.length > 0);\n const categoryGroupingKeysLists = grouping.map(column => this.data.getColumnCategories(column.value)).filter(v => v.length > 0);\n\n const facetKeysCombinations = facetKeysLists.length\n ? getKeysCombinations(facetKeysLists)\n : [['null']];\n const categoryGroupingCombinations = categoryGroupingKeysLists.length\n ? getKeysCombinations(categoryGroupingKeysLists)\n : [['null']];\n\n const facetGroupingValues = facetBy.map(column => column.value) ?? null;\n\n this.data.setGrouping([...facetGroupingValues, keyColumn.value]);\n const onlyPositive = {\n x: this.data.getColumn(x.value).every(v => {\n return v === null || !(Number(v) < 0);\n }),\n y: this.data.getColumn(y.value).every(v => {\n return v === null || !(Number(v) < 0);\n }),\n };\n\n const dotsByFacets = getDots(this.data, facetKeysCombinations, x, y, label, highlight, keys);\n const facetKeys = Object.keys(dotsByFacets);\n const trendsData = getRegressionData(this.data, dotsByFacets, facetKeys, categoryGroupingCombinations, grouping, trend);\n\n const legendLabels = createLegendInfo(this.data, grouping, layers, inheritedAes);\n const layersData = getLayersData(this.data, layers, facetKeys, dotsByFacets, categoryGroupingCombinations, grouping);\n\n this.calculatedData = {\n onlyPositive,\n dotsByFacets,\n facetKeys,\n facetKeysCombinations,\n trendsData,\n legendLabels,\n layersData,\n };\n }\n\n _updateAesInData() {\n const calculated = this.calculatedData;\n if (!calculated) {\n return;\n }\n const {grouping, trend, layers, inheritedAes} = this.settings;\n const {facetKeys, trendsData} = calculated;\n\n facetKeys.forEach(facetKey => {\n for (let i = 0; i < layers.length; i++) {\n calculated.layersData[facetKey][i].info = layers[i];\n }\n });\n\n grouping.forEach(column => {\n const usedAes = new Set<keyof AesItem>();\n const usedAesFromPalettes:Partial<Record<keyof AesItem, string[]>> = {}; // if there is palette in mapping then\n layers.forEach(layer => {\n if (layer.aes) {\n Object.entries(layer.aes).forEach(([key, value]) => {\n if (isInheritMapping(value) && value.value === column.value) {\n usedAes.add(key as keyof AesItem);\n if (value.palette) {\n usedAesFromPalettes[key as keyof AesItem] = value.palette;\n }\n }\n });\n }\n });\n calculated.legendLabels[column.value].usedAes = [...usedAes];\n calculated.legendLabels[column.value].aesMap = addPalettesToAesMapping(\n column,\n usedAesFromPalettes,\n inheritedAes[column.value]\n );\n });\n if (trendsData && trend) {\n Object.keys(trendsData).forEach((key) => {\n trendsData[key].forEach(trendInfo => {\n trendInfo.color = trend.color;\n trendInfo.bounded = trend.bounded;\n });\n });\n }\n }\n\n _updateChart() {\n if (!this.calculatedData) {\n return;\n }\n const {id, chartSettings, facetSettings, grouping, keyColumn, layers, trend} = this.settings;\n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n facetSettings,\n this.calculatedData.facetKeys,\n this.calculatedData.facetKeysCombinations, //for titles, if facet by more than 1 column\n this.calculatedData.dotsByFacets,\n this.calculatedData.trendsData,\n keyColumn,\n this.calculatedData.onlyPositive,\n this.calculatedData.legendLabels,\n this.calculatedData.layersData,\n grouping,\n layers,\n trend,\n this.onTooltipHintSwitch\n );\n }\n}\n"],"names":["getKeysCombinations","keysLists","result","keys","nextResult","key","resultItem","isInheritMapping","value","ChartScatterplot","AbstractChart","data","settings","eventHandlers","__publicField","ChartRenderer","ScatterplotSettingsImpl","node","err","previousSettings","previousData","_field","_value","renderToString","prevSettings","el","idx","_a","_b","_c","_d","l","prevData","prevKeys","x","y","facetBy","grouping","keyColumn","trend","layers","inheritedAes","label","highlight","facetKeysLists","column","v","categoryGroupingKeysLists","facetKeysCombinations","categoryGroupingCombinations","facetGroupingValues","onlyPositive","dotsByFacets","getDots","facetKeys","trendsData","getRegressionData","legendLabels","createLegendInfo","layersData","getLayersData","calculated","facetKey","i","usedAes","usedAesFromPalettes","layer","addPalettesToAesMapping","trendInfo","id","chartSettings","facetSettings"],"mappings":"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"}
@@ -1,7 +1,8 @@
1
+ import { ScaleLinear } from 'd3-scale';
2
+ import { DataFrame } from '../DataFrame';
3
+ import { ColumnName, ContinuousAesFromColumn, InheritAesScatterplot } from '../types';
1
4
  import { GroupedDots } from './dots';
2
5
  import { ScatterplotSettingsImpl } from './ScatterplotSettingsImpl';
3
- import { ContinuousAesFromColumn, InheritAesScatterplot, Row, ColumnName } from '../types';
4
- import { ScaleLinear } from 'd3-scale';
5
6
  export declare function linearRegression(data: {
6
7
  x: number;
7
8
  y: number;
@@ -17,11 +18,11 @@ export declare function confidenceInterval(data: {
17
18
  y: number;
18
19
  }[], predict: (x: number) => number): (x: number) => PointIntervalInfo;
19
20
  type TrendInfo = {
21
+ idx: number;
20
22
  predict: (x: number) => number;
21
23
  getInterval: (x: number) => PointIntervalInfo;
22
24
  getArea: (x: ScaleLinear<number, number>, y: ScaleLinear<number, number>, range: number[]) => string;
23
25
  color: string | InheritAesScatterplot | ContinuousAesFromColumn<string>;
24
- data: Row;
25
26
  bounded: boolean;
26
27
  showStats: boolean;
27
28
  xBounds: [number, number];
@@ -38,6 +39,6 @@ type TrendInfo = {
38
39
  };
39
40
  };
40
41
  export type TrendsData = Record<string, TrendInfo[]>;
41
- export declare function getRegressionData(dotsByFacets: GroupedDots, facetKeys: string[], groupingKeysValues: string[][], grouping: ColumnName[], trend: ScatterplotSettingsImpl['trend']): TrendsData | null;
42
+ export declare function getRegressionData(dataFrame: DataFrame, dotsByFacets: GroupedDots, facetKeys: string[], groupingKeysValues: string[][], grouping: ColumnName[], trend: ScatterplotSettingsImpl['trend']): TrendsData | null;
42
43
  export {};
43
44
  //# sourceMappingURL=linearRegression.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"linearRegression.d.ts","sourceRoot":"","sources":["../../src/scatterplot/linearRegression.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAM,WAAW,EAAC,MAAM,QAAQ,CAAC;AAC7C,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAC,uBAAuB,EAAE,qBAAqB,EAAE,GAAG,EAAC,MAAM,UAAU,CAAC;AAClF,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAGzC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,UAAU,CAAC;AAoJ1C,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBjF;AAmBD,MAAM,MAAM,iBAAiB,GAAG;IAC5B,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CACpD,CAAA;AAED,wBAAgB,kBAAkB,CAC9B,IAAI,EAAE;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,EAAE,EAC9B,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAC/B,CAAC,CAAC,EAAE,MAAM,KAAK,iBAAiB,CAiBlC;AAyED,KAAK,SAAS,GAAG;IACb,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/B,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,iBAAiB,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;IACrG,KAAK,EAAE,MAAM,GAAG,qBAAqB,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACxE,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,KAAK,EAAE;QACH,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,UAAU,EAAC,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,CAAA;SAAC,CAAC;KAChG,CAAC;CACL,CAAC;AACF,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AAGrD,wBAAgB,iBAAiB,CAC7B,YAAY,EAAE,WAAW,EACzB,SAAS,EAAE,MAAM,EAAE,EACnB,kBAAkB,EAAE,MAAM,EAAE,EAAE,EAC9B,QAAQ,EAAE,UAAU,EAAE,EACtB,KAAK,EAAE,uBAAuB,CAAC,OAAO,CAAC,GACxC,UAAU,GAAG,IAAI,CAsCnB"}
1
+ {"version":3,"file":"linearRegression.d.ts","sourceRoot":"","sources":["../../src/scatterplot/linearRegression.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAC3F,OAAO,KAAK,EAAO,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAmJzE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBjF;AAmBD,MAAM,MAAM,iBAAiB,GAAG;IAC5B,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CACpD,CAAA;AAED,wBAAgB,kBAAkB,CAC9B,IAAI,EAAE;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,EAAE,EAC9B,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAC/B,CAAC,CAAC,EAAE,MAAM,KAAK,iBAAiB,CAiBlC;AAyED,KAAK,SAAS,GAAG;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/B,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,iBAAiB,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;IACrG,KAAK,EAAE,MAAM,GAAG,qBAAqB,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACxE,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,KAAK,EAAE;QACH,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,UAAU,EAAC,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,CAAA;SAAC,CAAC;KAChG,CAAC;CACL,CAAC;AACF,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AAErD,wBAAgB,iBAAiB,CAC7B,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,WAAW,EACzB,SAAS,EAAE,MAAM,EAAE,EACnB,kBAAkB,EAAE,MAAM,EAAE,EAAE,EAC9B,QAAQ,EAAE,UAAU,EAAE,EACtB,KAAK,EAAE,uBAAuB,CAAC,OAAO,CAAC,GACxC,UAAU,GAAG,IAAI,CA6CnB"}
@@ -1,123 +1,125 @@
1
- import tt from "../node_modules/@stdlib/stats-base-dists-f-cdf/lib/index.js";
2
- import nt from "../node_modules/d3-array/src/extent.js";
3
- import et from "../node_modules/d3-shape/src/area.js";
1
+ import nn from "../node_modules/@stdlib/stats-base-dists-f-cdf/lib/index.js";
2
+ import tn from "../node_modules/d3-array/src/extent.js";
3
+ import en from "../node_modules/d3-shape/src/area.js";
4
4
  import g from "../node_modules/d3-array/src/sum.js";
5
5
  import w from "../node_modules/d3-array/src/mean.js";
6
- const C = 0.05;
7
- function ot(t) {
8
- const o = 3.3871328727963665, c = 133.14166789178438, l = 1971.5909503065513, r = 13731.69376550946, h = 45921.95393154987, f = 67265.7709270087, i = 33430.57558358813, s = 2509.0809287301227, e = 42.31333070160091, a = 687.1870074920579, u = 5394.196021424751, x = 21213.794301586597, m = 39307.89580009271, v = 28729.085735721943, N = 5226.495278852854, p = 1.4234371107496835, b = 4.630337846156546, q = 5.769497221460691, y = 3.6478483247632045, I = 1.2704582524523684, Y = 0.2417807251774506, F = 0.022723844989269184, R = 7745450142783414e-19, S = 2.053191626637759, V = 1.6763848301838038, _ = 0.6897673349851, L = 0.14810397642748008, P = 0.015198666563616457, z = 5475938084995345e-19, A = 10507500716444169e-25, B = 6.657904643501103, O = 5.463784911164114, T = 1.7848265399172913, j = 0.29656057182850487, k = 0.026532189526576124, G = 0.0012426609473880784, H = 27115555687434876e-21, J = 20103343992922881e-23, Q = 0.599832206555888, U = 0.1369298809227358, W = 0.014875361290850615, Z = 7868691311456133e-19, $ = 18463183175100548e-21, K = 1421511758316446e-22, d = 20442631033899397e-31, X = t - 0.5;
9
- let n, M;
10
- return Math.abs(X) <= 0.425 ? (n = 0.180625 - X * X, M = X * (((((((s * n + i) * n + f) * n + h) * n + r) * n + l) * n + c) * n + o) / (((((((N * n + v) * n + m) * n + x) * n + u) * n + a) * n + e) * n + 1), M) : (n = t, n = Math.sqrt(-Math.log(n)), n <= 5 ? (n += -1.6, M = (((((((R * n + F) * n + Y) * n + I) * n + y) * n + q) * n + b) * n + p) / (((((((A * n + z) * n + P) * n + L) * n + _) * n + V) * n + S) * n + 1)) : (n += -5, M = (((((((J * n + H) * n + G) * n + k) * n + j) * n + T) * n + O) * n + B) / (((((((d * n + K) * n + $) * n + Z) * n + W) * n + U) * n + Q) * n + 1)), M = -M, M);
6
+ const D = 0.05;
7
+ function on(n) {
8
+ const e = 3.3871328727963665, o = 133.14166789178438, a = 1971.5909503065513, s = 13731.69376550946, h = 45921.95393154987, f = 67265.7709270087, u = 33430.57558358813, i = 2509.0809287301227, r = 42.31333070160091, c = 687.1870074920579, l = 5394.196021424751, x = 21213.794301586597, m = 39307.89580009271, N = 28729.085735721943, v = 5226.495278852854, X = 1.4234371107496835, p = 4.630337846156546, b = 5.769497221460691, q = 3.6478483247632045, y = 1.2704582524523684, V = 0.2417807251774506, Y = 0.022723844989269184, F = 7745450142783414e-19, R = 2.053191626637759, S = 1.6763848301838038, _ = 0.6897673349851, L = 0.14810397642748008, P = 0.015198666563616457, z = 5475938084995345e-19, A = 10507500716444169e-25, B = 6.657904643501103, O = 5.463784911164114, T = 1.7848265399172913, j = 0.29656057182850487, k = 0.026532189526576124, G = 0.0012426609473880784, H = 27115555687434876e-21, J = 20103343992922881e-23, Q = 0.599832206555888, U = 0.1369298809227358, W = 0.014875361290850615, Z = 7868691311456133e-19, $ = 18463183175100548e-21, K = 1421511758316446e-22, d = 20442631033899397e-31, C = n - 0.5;
9
+ let t, M;
10
+ return Math.abs(C) <= 0.425 ? (t = 0.180625 - C * C, M = C * (((((((i * t + u) * t + f) * t + h) * t + s) * t + a) * t + o) * t + e) / (((((((v * t + N) * t + m) * t + x) * t + l) * t + c) * t + r) * t + 1), M) : (t = n, t = Math.sqrt(-Math.log(t)), t <= 5 ? (t += -1.6, M = (((((((F * t + Y) * t + V) * t + y) * t + q) * t + b) * t + p) * t + X) / (((((((A * t + z) * t + P) * t + L) * t + _) * t + S) * t + R) * t + 1)) : (t += -5, M = (((((((J * t + H) * t + G) * t + k) * t + j) * t + T) * t + O) * t + B) / (((((((d * t + K) * t + $) * t + Z) * t + W) * t + U) * t + Q) * t + 1)), M = -M, M);
11
11
  }
12
- function D(t, o) {
13
- const { sin: c, cos: l, sqrt: r, pow: h, exp: f, PI: i } = Math;
14
- let s, e;
15
- if (o == 1) return l(t * i / 2) / c(t * i / 2);
16
- if (o == 2) return r(2 / (t * (2 - t)) - 2);
17
- const a = 1 / (o - 0.5), u = 48 / (a * a);
18
- let x = ((20700 * a / u - 98) * a - 16) * a + 96.36;
19
- const m = ((94.5 / (u + x) - 3) / u + 1) * r(a * i * 0.5) * o;
20
- return s = m * t, e = h(s, 2 / o), e > 0.05 + a ? (s = ot(t / 2), e = s * s, o < 5 && (x = x + 0.3 * (o - 4.5) * (s + 0.6)), x = (((0.05 * m * s - 5) * s - 7) * s - 2) * s + u + x, e = (((((0.4 * e + 6.3) * e + 36) * e + 94.5) / x - e - 3) / u + 1) * s, e = a * e * e, e > 2e-3 ? e = f(e) - 1 : e = 0.5 * e * e + e) : e = ((1 / (((o + 6) / (o * e) - 0.089 * m - 0.822) * (o + 2) * 3) + 0.5 / (o + 4)) * e - 1) * (o + 1) / (o + 2) + 1 / e, r(o * e);
12
+ function I(n, e) {
13
+ const { sin: o, cos: a, sqrt: s, pow: h, exp: f, PI: u } = Math;
14
+ let i, r;
15
+ if (e == 1) return a(n * u / 2) / o(n * u / 2);
16
+ if (e == 2) return s(2 / (n * (2 - n)) - 2);
17
+ const c = 1 / (e - 0.5), l = 48 / (c * c);
18
+ let x = ((20700 * c / l - 98) * c - 16) * c + 96.36;
19
+ const m = ((94.5 / (l + x) - 3) / l + 1) * s(c * u * 0.5) * e;
20
+ return i = m * n, r = h(i, 2 / e), r > 0.05 + c ? (i = on(n / 2), r = i * i, e < 5 && (x = x + 0.3 * (e - 4.5) * (i + 0.6)), x = (((0.05 * m * i - 5) * i - 7) * i - 2) * i + l + x, r = (((((0.4 * r + 6.3) * r + 36) * r + 94.5) / x - r - 3) / l + 1) * i, r = c * r * r, r > 2e-3 ? r = f(r) - 1 : r = 0.5 * r * r + r) : r = ((1 / (((e + 6) / (e * r) - 0.089 * m - 0.822) * (e + 2) * 3) + 0.5 / (e + 4)) * r - 1) * (e + 1) / (e + 2) + 1 / r, s(e * r);
21
21
  }
22
- function ct(t) {
23
- let o = t.length, c = 0, l = 0, r = 0, h = 0;
24
- for (let s = 0; s < t.length; ++s) {
25
- const e = t[s].x, a = t[s].y;
26
- if (!Number.isFinite(e) || !Number.isFinite(a)) {
27
- --o;
22
+ function rn(n) {
23
+ let e = n.length, o = 0, a = 0, s = 0, h = 0;
24
+ for (let i = 0; i < n.length; ++i) {
25
+ const r = n[i].x, c = n[i].y;
26
+ if (!Number.isFinite(r) || !Number.isFinite(c)) {
27
+ --e;
28
28
  continue;
29
29
  }
30
- c += e, l += a, r += e * a, h += e * e;
30
+ o += r, a += c, s += r * c, h += r * r;
31
31
  }
32
- const f = (o * r - c * l) / (o * h - c * c), i = (l - f * c) / o;
33
- return [f, i];
32
+ const f = (e * s - o * a) / (e * h - o * o), u = (a - f * o) / e;
33
+ return [f, u];
34
34
  }
35
- function rt(t, o, c) {
36
- const l = (u) => u * o + c, r = t.length, h = g(t, (u) => u.x) / t.length, f = D(C, r - 2), i = Math.sqrt(
37
- g(t, (u) => (u.y - l(u.x)) ** 2) / (r - 2) / g(t, (u) => (u.x - h) ** 2)
38
- ), s = i * f, a = i * Math.sqrt(g(t, (u) => u.x ** 2) / r) * f;
39
- return { slope: o, intercept: c, slopeError: s, interceptError: a };
35
+ function cn(n, e, o) {
36
+ const a = (l) => l * e + o, s = n.length, h = g(n, (l) => l.x) / n.length, f = I(D, s - 2), u = Math.sqrt(
37
+ g(n, (l) => (l.y - a(l.x)) ** 2) / (s - 2) / g(n, (l) => (l.x - h) ** 2)
38
+ ), i = u * f, c = u * Math.sqrt(g(n, (l) => l.x ** 2) / s) * f;
39
+ return { slope: e, intercept: o, slopeError: i, interceptError: c };
40
40
  }
41
- function st(t, o) {
42
- const c = g(t, (i) => i.x) / t.length;
43
- let l = 0, r = 0;
44
- for (let i = 0; i < t.length; ++i)
45
- l += Math.pow(t[i].x - c, 2), r += Math.pow(t[i].y - o(t[i].x), 2);
46
- const h = Math.sqrt(r / (t.length - 2)), f = D(C, t.length - 2);
47
- return function(i) {
48
- const s = o(i), e = h * Math.sqrt(1 / t.length + Math.pow(i - c, 2) / l), a = s - f * e, u = s + f * e;
49
- return { x: i, y: s, left: isNaN(a) ? s : a, right: isNaN(u) ? s : u };
41
+ function sn(n, e) {
42
+ const o = g(n, (u) => u.x) / n.length;
43
+ let a = 0, s = 0;
44
+ for (let u = 0; u < n.length; ++u)
45
+ a += Math.pow(n[u].x - o, 2), s += Math.pow(n[u].y - e(n[u].x), 2);
46
+ const h = Math.sqrt(s / (n.length - 2)), f = I(D, n.length - 2);
47
+ return function(u) {
48
+ const i = e(u), r = h * Math.sqrt(1 / n.length + Math.pow(u - o, 2) / a), c = i - f * r, l = i + f * r;
49
+ return { x: u, y: i, left: isNaN(c) ? i : c, right: isNaN(l) ? i : l };
50
50
  };
51
51
  }
52
- function it(t) {
53
- const o = t.length;
52
+ function un(n) {
53
+ const e = n.length;
54
54
  return Math.pow(
55
- (o * g(t, (c) => c.x * c.y) - g(t, (c) => c.x) * g(t, (c) => c.y)) / (Math.sqrt(
56
- o * g(t, (c) => c.x * c.x) - Math.pow(
57
- g(t, (c) => c.x),
55
+ (e * g(n, (o) => o.x * o.y) - g(n, (o) => o.x) * g(n, (o) => o.y)) / (Math.sqrt(
56
+ e * g(n, (o) => o.x * o.x) - Math.pow(
57
+ g(n, (o) => o.x),
58
58
  2
59
59
  )
60
60
  ) * Math.sqrt(
61
- o * g(t, (c) => c.y * c.y) - Math.pow(
62
- g(t, (c) => c.y),
61
+ e * g(n, (o) => o.y * o.y) - Math.pow(
62
+ g(n, (o) => o.y),
63
63
  2
64
64
  )
65
65
  )),
66
66
  2
67
67
  );
68
68
  }
69
- function ut(t, o) {
70
- const c = w(t, o);
71
- return w(t.map((l) => (o(l) - c) ** 2));
69
+ function ln(n, e) {
70
+ const o = w(n, e);
71
+ return w(n.map((a) => (e(a) - o) ** 2));
72
72
  }
73
- function E(t, o) {
74
- return Math.sqrt(ut(t, o));
73
+ function E(n, e) {
74
+ return Math.sqrt(ln(n, e));
75
75
  }
76
- function at(t, o, c) {
77
- const l = w(t, o), r = w(t, c), h = t.length;
78
- return g(t, (f) => (f.x - l) * (f.y - r)) / h;
76
+ function an(n, e, o) {
77
+ const a = w(n, e), s = w(n, o), h = n.length;
78
+ return g(n, (f) => (f.x - a) * (f.y - s)) / h;
79
79
  }
80
- function lt(t) {
81
- const o = at(
82
- t,
83
- (r) => r.x,
84
- (r) => r.y
85
- ), c = E(t, (r) => r.x), l = E(t, (r) => r.y);
86
- return o / (c * l);
80
+ function fn(n) {
81
+ const e = an(
82
+ n,
83
+ (s) => s.x,
84
+ (s) => s.y
85
+ ), o = E(n, (s) => s.x), a = E(n, (s) => s.y);
86
+ return e / (o * a);
87
87
  }
88
- function ft(t, o) {
89
- const c = t.length, l = 1, r = 1, h = c - l - 1, f = w(t, (m) => m.y), i = g(t, (m) => (o(m.x) - f) ** 2), s = g(t, (m) => (o(m.x) - m.y) ** 2), e = i / r, a = s / h, u = e / a;
90
- return 1 - tt(u, r, h);
88
+ function hn(n, e) {
89
+ const o = n.length, a = 1, s = 1, h = o - a - 1, f = w(n, (m) => m.y), u = g(n, (m) => (e(m.x) - f) ** 2), i = g(n, (m) => (e(m.x) - m.y) ** 2), r = u / s, c = i / h, l = r / c;
90
+ return 1 - nn(l, s, h);
91
91
  }
92
- function yt(t, o, c, l, r) {
93
- return r ? o.reduce((h, f) => {
94
- const i = t[f].dots;
95
- return h[f] = c.map((s) => {
96
- const e = i.filter(
97
- (p) => l.every((b, q) => String(p.data[b.value]) === s[q])
98
- ), [a = 0, u = 0] = nt(e, (p) => p.x), [x, m] = ct(e), v = (p) => x * p + m, N = st(e, v);
92
+ function Mn(n, e, o, a, s, h) {
93
+ return h ? o.reduce((f, u) => {
94
+ const i = e[u].dots;
95
+ return f[u] = a.map((r) => {
96
+ const c = i.filter(
97
+ (p) => s.every((b, q) => String(n.getColumnValue(b.value, p.idx)) === r[q])
98
+ );
99
+ if (c.length === 0) return null;
100
+ const [l = 0, x = 0] = tn(c, (p) => p.x), [m, N] = rn(c), v = (p) => m * p + N, X = sn(c, v);
99
101
  return {
102
+ idx: c[0].idx,
100
103
  predict: v,
101
- getInterval: N,
102
- getArea: (p, b, q) => et().x((y) => p(y.x)).y0((y) => b(y.left)).y1((y) => b(y.right))(q.map(N)) ?? "",
103
- color: r.color,
104
- bounded: r.bounded,
105
- data: e[0].data,
104
+ getInterval: X,
105
+ getArea: (p, b, q) => en().x((y) => p(y.x)).y0((y) => b(y.left)).y1((y) => b(y.right))(q.map(X)) ?? "",
106
+ color: h.color,
107
+ bounded: h.bounded,
106
108
  showStats: !0,
107
- xBounds: [a, u],
109
+ xBounds: [l, x],
108
110
  stats: {
109
- r2: it(e),
110
- r: lt(e),
111
- pValue: ft(e, v),
112
- coefficients: rt(e, x, m)
111
+ r2: un(c),
112
+ r: fn(c),
113
+ pValue: hn(c, v),
114
+ coefficients: cn(c, m, N)
113
115
  }
114
116
  };
115
- }), h;
117
+ }).filter((r) => r !== null), f;
116
118
  }, {}) : null;
117
119
  }
118
120
  export {
119
- st as confidenceInterval,
120
- yt as getRegressionData,
121
- ct as linearRegression
121
+ sn as confidenceInterval,
122
+ Mn as getRegressionData,
123
+ rn as linearRegression
122
124
  };
123
125
  //# sourceMappingURL=linearRegression.js.map