@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
@@ -0,0 +1,94 @@
1
+ import { l as p } from "../node_modules/lodash/lodash.js";
2
+ import $ from "../node_modules/d3-array/src/deviation.js";
3
+ import M from "../node_modules/d3-array/src/mean.js";
4
+ import _ from "../node_modules/d3-array/src/extent.js";
5
+ const D = 1e6;
6
+ function N(o) {
7
+ const r = $(o), s = M(o);
8
+ return r === void 0 || s === void 0 || r === 0 ? (i) => i : (i) => (i - s) / r;
9
+ }
10
+ function j(o) {
11
+ const r = M(o), [s, i] = _(o);
12
+ return r === void 0 || s === void 0 || i === void 0 ? (v) => v : (v) => (v - r) / (i - s);
13
+ }
14
+ function q(o, r) {
15
+ return o === "standardScaling" ? N(r) : o === "meanNormalization" ? j(r) : (s) => s;
16
+ }
17
+ function B(o, r, s, i, v, V, C, E, S) {
18
+ const g = C.map((t) => t.join("_")), e = {
19
+ meta: {
20
+ facetKeys: g,
21
+ xKeys: [],
22
+ yKeys: [],
23
+ xLabels: {},
24
+ yLabels: {},
25
+ facetKeyValues: g.reduce((t, a, l) => (t[a] = C[l], t), {}),
26
+ valueExtentSize: [1 / 0, -1 / 0],
27
+ valueExtentColor: [1 / 0, -1 / 0]
28
+ },
29
+ facets: {}
30
+ }, z = /* @__PURE__ */ new Set(), L = /* @__PURE__ */ new Set(), w = r.valueLabels ?? r.value, I = s.valueLabels ?? s.value;
31
+ for (let t = 0; t < o.rowsCount; t++) {
32
+ const a = V.length ? V.map((f) => o.getColumnValue(f.value, t)).join("_") : "null", l = o.getColumnValue(r.value, t), n = o.getColumnValue(s.value, t), u = o.getColumnValue(i.value, t) ?? S, c = o.getColumnValue(v.value, t) ?? S;
33
+ if (l === null || n === null || u === null || c === null)
34
+ continue;
35
+ e.facets[a] || (e.facets[a] = {
36
+ xKeys: [],
37
+ yKeys: [],
38
+ cells: {}
39
+ }), e.facets[a].xKeys.push(l), e.facets[a].yKeys.push(n), z.has(l) || (z.add(l), e.meta.xKeys.push(l)), L.has(n) || (L.add(n), e.meta.yKeys.push(n)), e.facets[a].cells[l] || (e.facets[a].cells[l] = {}), e.meta.valueExtentSize[0] = Math.min(u, e.meta.valueExtentSize[0]), e.meta.valueExtentSize[1] = Math.max(u, e.meta.valueExtentSize[1]), e.meta.valueExtentColor[0] = Math.min(c, e.meta.valueExtentColor[0]), e.meta.valueExtentColor[1] = Math.max(c, e.meta.valueExtentColor[1]);
40
+ const K = String(o.getColumnValue(w, t)), h = String(o.getColumnValue(I, t));
41
+ if (e.facets[a].cells[l][n])
42
+ throw Error(`More than 1 value for x=${l}, y=${n}`);
43
+ if (e.meta.xLabels[l] && K !== e.meta.xLabels[l])
44
+ throw Error(`More than 1 x-label value for x=${l}`);
45
+ if (e.meta.yLabels[n] && h !== e.meta.yLabels[n])
46
+ throw Error(`More than 1 y-label value for y=${n}`);
47
+ e.meta.xLabels[l] = K, e.meta.yLabels[n] = h, e.facets[a].cells[l][n] = {
48
+ id: `${l}_${n}`,
49
+ idx: t,
50
+ x: l,
51
+ y: n,
52
+ sizeValue: u,
53
+ normalizedSizeValue: u,
54
+ colorValue: c,
55
+ normalizedColorValue: c
56
+ };
57
+ }
58
+ if (e.meta.facetKeys = e.meta.facetKeys.filter((t) => e.facets[t]), e.meta.facetKeys.forEach((t) => {
59
+ const a = e.facets[t];
60
+ if (a.xKeys = p.uniq(a.xKeys), a.yKeys = p.uniq(a.yKeys), a.xKeys.length * a.yKeys.length > D)
61
+ throw Error(`Too many cells for graph rendering (${a.xKeys.length * a.yKeys.length})`);
62
+ }), E) {
63
+ const t = [1 / 0, -1 / 0];
64
+ e.meta.facetKeys.forEach((a) => {
65
+ if (!e.facets[a])
66
+ return;
67
+ const { xKeys: l, yKeys: n, cells: u } = e.facets[a], c = E.direction === "row" ? l : n, K = E.direction === "row" ? n : l, h = E.direction === "row" ? (f, x) => {
68
+ var y;
69
+ return (y = u[f]) == null ? void 0 : y[x];
70
+ } : (f, x) => {
71
+ var y;
72
+ return (y = u[x]) == null ? void 0 : y[f];
73
+ };
74
+ K.forEach((f) => {
75
+ const x = [];
76
+ c.forEach((d) => {
77
+ var b;
78
+ const m = (b = h(d, f)) == null ? void 0 : b.colorValue;
79
+ m !== void 0 && x.push(m);
80
+ });
81
+ const y = q(E.method, x);
82
+ c.forEach((d) => {
83
+ const m = h(d, f);
84
+ m !== void 0 && (m.normalizedColorValue = y(m.colorValue), t[0] = Math.min(m.normalizedColorValue, t[0]), t[1] = Math.max(m.normalizedColorValue, t[1]));
85
+ });
86
+ });
87
+ }), e.meta.valueExtentColor = t;
88
+ }
89
+ return e.meta.valueExtentSize[0] === 1 / 0 && (e.meta.valueExtentSize[0] = 0), e.meta.valueExtentSize[1] === -1 / 0 && (e.meta.valueExtentSize[1] = 0), e.meta.valueExtentColor[0] === 1 / 0 && (e.meta.valueExtentColor[0] = 0), e.meta.valueExtentColor[1] === -1 / 0 && (e.meta.valueExtentColor[1] = 0), e;
90
+ }
91
+ export {
92
+ B as getGroupedCellsData
93
+ };
94
+ //# sourceMappingURL=getGroupedCellsData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getGroupedCellsData.js","sources":["../../src/bubble/getGroupedCellsData.ts"],"sourcesContent":["import { deviation, extent, mean } from 'd3-array';\nimport { uniq } from 'lodash';\nimport type { DataFrame } from '../DataFrame';\nimport type { ColumnName, DataValue, NormalizationMethod } from '../types';\nimport type { BubbleSettingsImpl } from './BubbleSettingsImpl';\n\nconst MAX_RENDERED_CELLS_COUNT = 1000000;\nfunction normalizeByStd(values: number[]) {\n const stdValue = deviation(values);\n const meanValue = mean(values);\n\n if (stdValue === undefined || meanValue === undefined || stdValue === 0) {\n return (v: number) => v;\n }\n return (v: number) => (v - meanValue) / stdValue;\n}\n\nfunction normalizeByMinMax(values: number[]) {\n const meanValue = mean(values);\n const [min, max] = extent(values);\n if (meanValue === undefined || min === undefined || max === undefined) {\n return (v: number) => v;\n }\n return (v: number) => (v - meanValue) / (max - min);\n}\n\nfunction getNormalizationFn(method: NormalizationMethod, values: number[]) {\n if (method === 'standardScaling') {\n return normalizeByStd(values);\n }\n if (method === 'meanNormalization') {\n return normalizeByMinMax(values);\n }\n return (v: number) => v;\n}\n\nexport type Cell = {\n id: string;\n idx: number;\n sizeValue: DataValue;\n colorValue: DataValue;\n normalizedSizeValue: DataValue;\n normalizedColorValue: DataValue;\n x: DataValue;\n y: DataValue;\n};\n\nexport type GroupedCellsData = {\n meta: {\n facetKeys: string[];\n facetKeyValues: Record<string, string[]>;\n xKeys: string[]; // all the keys from facets\n yKeys: string[]; // all the keys from facets\n xLabels: Record<string, string>;\n yLabels: Record<string, string>;\n valueExtentSize: [number, number]; // for size scales\n valueExtentColor: [number, number]; // for color scales\n };\n //facet groups\n facets: Record<\n string,\n {\n // axis keys\n xKeys: string[];\n yKeys: string[];\n // cells grouped by X, then by Y\n cells: Record<string, Record<string, Cell>>;\n }\n >;\n};\n\nexport function getGroupedCellsData(\n data: DataFrame,\n xColumn: ColumnName,\n yColumn: ColumnName,\n valueColumnSize: ColumnName,\n valueColumnColor: ColumnName,\n facetBy: ColumnName[],\n facetKeysCombinations: string[][],\n normalization: BubbleSettingsImpl['normalization'],\n NAValueAs: BubbleSettingsImpl['NAValueAs']\n): GroupedCellsData {\n const facetKeys = facetKeysCombinations.map(v => v.join('_'));\n const result: GroupedCellsData = {\n meta: {\n facetKeys,\n xKeys: [],\n yKeys: [],\n xLabels: {},\n yLabels: {},\n facetKeyValues: facetKeys.reduce((res: Record<string, string[]>, key, index) => {\n res[key] = facetKeysCombinations[index];\n return res;\n }, {}),\n valueExtentSize: [Infinity, -Infinity],\n valueExtentColor: [Infinity, -Infinity],\n },\n facets: {},\n };\n const usedXKeys = new Set();\n const usedYKeys = new Set();\n\n const xLabelsSource = xColumn.valueLabels ?? xColumn.value;\n const yLabelsSource = yColumn.valueLabels ?? yColumn.value;\n\n for (let i = 0; i < data.rowsCount; i++) {\n const facetKey = facetBy.length ? facetBy.map(column => data.getColumnValue(column.value, i)).join('_') : 'null';\n const x = data.getColumnValue(xColumn.value, i) as string;\n const y = data.getColumnValue(yColumn.value, i) as string;\n const sizeValue = (data.getColumnValue(valueColumnSize.value, i) ?? NAValueAs) as (null | number);\n const colorValue = (data.getColumnValue(valueColumnColor.value, i) ?? NAValueAs) as (null | number);\n \n if (x === null || y === null || sizeValue === null || colorValue === null) {\n continue;\n }\n\n if (!result.facets[facetKey]) {\n result.facets[facetKey] = {\n xKeys: [],\n yKeys: [],\n cells: {},\n };\n }\n result.facets[facetKey].xKeys.push(x);\n result.facets[facetKey].yKeys.push(y);\n\n if (!usedXKeys.has(x)) {\n usedXKeys.add(x);\n result.meta.xKeys.push(x);\n }\n if (!usedYKeys.has(y)) {\n usedYKeys.add(y);\n result.meta.yKeys.push(y);\n }\n if (!result.facets[facetKey].cells[x]) {\n result.facets[facetKey].cells[x] = {};\n }\n result.meta.valueExtentSize[0] = Math.min(sizeValue, result.meta.valueExtentSize[0]);\n result.meta.valueExtentSize[1] = Math.max(sizeValue, result.meta.valueExtentSize[1]);\n result.meta.valueExtentColor[0] = Math.min(colorValue, result.meta.valueExtentColor[0]);\n result.meta.valueExtentColor[1] = Math.max(colorValue, result.meta.valueExtentColor[1]);\n\n const xLabelsValueStr = String(data.getColumnValue(xLabelsSource, i));\n const yLabelsValueStr = String(data.getColumnValue(yLabelsSource, i));\n\n if (result.facets[facetKey].cells[x][y]) {\n throw Error(`More than 1 value for x=${x}, y=${y}`);\n }\n if (result.meta.xLabels[x] && xLabelsValueStr !== result.meta.xLabels[x]) {\n throw Error(`More than 1 x-label value for x=${x}`);\n }\n if (result.meta.yLabels[y] && yLabelsValueStr !== result.meta.yLabels[y]) {\n throw Error(`More than 1 y-label value for y=${y}`);\n }\n result.meta.xLabels[x] = xLabelsValueStr;\n result.meta.yLabels[y] = yLabelsValueStr;\n result.facets[facetKey].cells[x][y] = {\n id: `${x}_${y}`,\n idx: i,\n x,\n y,\n sizeValue,\n normalizedSizeValue: sizeValue,\n colorValue,\n normalizedColorValue: colorValue,\n };\n }\n result.meta.facetKeys = result.meta.facetKeys.filter((key) => result.facets[key]); // filter only used;\n\n // make uniq x, y, x-group and y-group keys\n result.meta.facetKeys.forEach(facetKey => {\n const facet = result.facets[facetKey];\n facet.xKeys = uniq(facet.xKeys);\n facet.yKeys = uniq(facet.yKeys);\n\n if (facet.xKeys.length * facet.yKeys.length > MAX_RENDERED_CELLS_COUNT) {\n throw Error(`Too many cells for graph rendering (${facet.xKeys.length * facet.yKeys.length})`);\n }\n });\n\n if (normalization) {\n //const valueExtentSize = [Infinity, -Infinity] as [number, number];\n const valueExtentColor = [Infinity, -Infinity] as [number, number];\n result.meta.facetKeys.forEach(facetKey => {\n if (!result.facets[facetKey]) {\n return;\n }\n const {xKeys, yKeys, cells} = result.facets[facetKey];\n const cellKeys = normalization.direction === 'row' ? xKeys : yKeys;\n const groupKeys = normalization.direction === 'row' ? yKeys : xKeys;\n const cellGetter =\n normalization.direction === 'row'\n ? (cellKey: string, groupKey: string) => cells[cellKey]?.[groupKey]\n : (cellKey: string, groupKey: string) => cells[groupKey]?.[cellKey];\n groupKeys.forEach(groupKey => {\n //const sizeValues:number[] = [];\n const colorValues: number[] = [];\n cellKeys.forEach(cellKey => {\n //const sizeV = cellGetter(cellKey, groupKey)?.sizeValue;\n const colorV = cellGetter(cellKey, groupKey)?.colorValue;\n // if (sizeV !== undefined) {\n // sizeValues.push(sizeV as number);\n // }\n if (colorV !== undefined) {\n colorValues.push(colorV as number);\n }\n });\n // const normalizeSize = getNormalizationFn(normalization.method, sizeValues);\n const normalizeColor = getNormalizationFn(normalization.method, colorValues);\n cellKeys.forEach(cellKey => {\n const cell = cellGetter(cellKey, groupKey);\n if (cell !== undefined) {\n // cell.normalizedSizeValue = normalizeSize(cell.sizeValue as number);\n cell.normalizedColorValue = normalizeColor(cell.colorValue as number);\n // valueExtentSize[0] = Math.min(cell.normalizedSizeValue, valueExtentSize[0]);\n // valueExtentSize[1] = Math.max(cell.normalizedSizeValue, valueExtentSize[1]);\n valueExtentColor[0] = Math.min(cell.normalizedColorValue, valueExtentColor[0]);\n valueExtentColor[1] = Math.max(cell.normalizedColorValue, valueExtentColor[1]);\n }\n });\n });\n });\n // result.meta.valueExtentSize = valueExtentSize;\n result.meta.valueExtentColor = valueExtentColor;\n }\n\n // avoid render errors on empty data\n if (result.meta.valueExtentSize[0] === Infinity) {\n result.meta.valueExtentSize[0] = 0;\n }\n if (result.meta.valueExtentSize[1] === -Infinity) {\n result.meta.valueExtentSize[1] = 0;\n }\n if (result.meta.valueExtentColor[0] === Infinity) {\n result.meta.valueExtentColor[0] = 0;\n }\n if (result.meta.valueExtentColor[1] === -Infinity) {\n result.meta.valueExtentColor[1] = 0;\n }\n\n return result;\n}\n"],"names":["MAX_RENDERED_CELLS_COUNT","normalizeByStd","values","stdValue","deviation","meanValue","mean","v","normalizeByMinMax","min","max","extent","getNormalizationFn","method","getGroupedCellsData","data","xColumn","yColumn","valueColumnSize","valueColumnColor","facetBy","facetKeysCombinations","normalization","NAValueAs","facetKeys","result","res","key","index","usedXKeys","usedYKeys","xLabelsSource","yLabelsSource","i","facetKey","column","x","y","sizeValue","colorValue","xLabelsValueStr","yLabelsValueStr","facet","uniq","valueExtentColor","xKeys","yKeys","cells","cellKeys","groupKeys","cellGetter","cellKey","groupKey","_a","colorValues","colorV","normalizeColor","cell"],"mappings":"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"}
@@ -1,15 +1,14 @@
1
1
  import { AbstractChart } from '../AbstractChart';
2
- import { GroupedCellsData } from './getCells';
2
+ import { DataFrame } from '../DataFrame';
3
3
  import { BubbleEventHandlers, BubbleSettings } from '../types';
4
- import { default as ChartRenderer } from './ChartRenderer';
5
4
  import { BubbleSettingsImpl } from './BubbleSettingsImpl';
6
- import { DataFrame } from '../DataFrame';
5
+ import { default as ChartRenderer } from './ChartRenderer';
6
+ import { GroupedCellsData } from './getGroupedCellsData';
7
7
  export declare class ChartBubble extends AbstractChart {
8
8
  settings: BubbleSettingsImpl;
9
9
  chartRenderer: ChartRenderer;
10
10
  onTooltipHintSwitch: (v: boolean) => void;
11
11
  calculatedData: {
12
- facetKeys: string[];
13
12
  groupedCellsData: GroupedCellsData;
14
13
  } | null;
15
14
  constructor(data: DataFrame, settings: BubbleSettings, eventHandlers?: BubbleEventHandlers);
@@ -23,5 +22,6 @@ export declare class ChartBubble extends AbstractChart {
23
22
  _updateData(): void;
24
23
  _updateAesInData(): void;
25
24
  _updateChart(): void;
25
+ private _getTooltip;
26
26
  }
27
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bubble/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,kBAAkB,CAAC;AAE/C,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAC,mBAAmB,EAAE,cAAc,EAAC,MAAM,UAAU,CAAC;AAElE,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,kBAAkB,EAAC,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAG5C,qBAAa,WAAY,SAAQ,aAAa;IAC1C,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,aAAa,gBAAuB;IAEpC,mBAAmB,EAAE,CAAC,CAAC,EAAC,OAAO,KAAK,IAAI,CAAmB;IAC3D,cAAc,EAAE;QACZ,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,gBAAgB,EAAE,gBAAgB,CAAC;KACtC,GAAG,IAAI,CAAQ;gBAEJ,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE,mBAAmB;IAS1F,KAAK,CAAC,IAAI,EAAE,WAAW;IAYvB,OAAO;IAIP,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc;IAsB/D,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IAIhD,MAAM,IAAI,MAAM;IAKhB,mCAAmC,CAAC,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,kBAAkB;IAWlG,+BAA+B,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS;IAUpE,WAAW;IA0BX,gBAAgB;IAOhB,YAAY;CAkBf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bubble/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAE5C,OAAO,KAAK,EAAQ,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGpE,qBAAa,WAAY,SAAQ,aAAa;IAC1C,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,aAAa,EAAE,aAAa,CAAC;IAE7B,mBAAmB,EAAE,CAAC,CAAC,EAAC,OAAO,KAAK,IAAI,CAAmB;IAC3D,cAAc,EAAE;QACZ,gBAAgB,EAAE,gBAAgB,CAAC;KACtC,GAAG,IAAI,CAAQ;gBAEJ,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE,mBAAmB;IAU1F,KAAK,CAAC,IAAI,EAAE,WAAW;IAavB,OAAO;IAIP,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc;IAuB/D,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IAIhD,MAAM,IAAI,MAAM;IAKhB,mCAAmC,CAAC,YAAY,EAAE,kBAAkB,EAAE,QAAQ,EAAE,kBAAkB;IAWlG,+BAA+B,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS;IAUpE,WAAW;IAyBX,gBAAgB;IAOhB,YAAY;IAoBZ,OAAO,CAAC,WAAW,CAIjB;CACL"}
@@ -1,27 +1,32 @@
1
1
  var f = Object.defineProperty;
2
- var y = (i, n, t) => n in i ? f(i, n, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[n] = t;
3
- var u = (i, n, t) => y(i, typeof n != "symbol" ? n + "" : n, t);
4
- import { AbstractChart as D } from "../AbstractChart.js";
5
- import { getCells as g } from "./getCells.js";
6
- import { renderToString as v } from "../node_modules/react-dom/server.browser.js";
7
- import _ from "./ChartRenderer.js";
8
- import { BubbleSettingsImpl as C } from "./BubbleSettingsImpl.js";
9
- import { getKeysCombinations as b } from "../utils/getKeysCombination.js";
10
- class x extends D {
2
+ var D = (i, n, t) => n in i ? f(i, n, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[n] = t;
3
+ var s = (i, n, t) => D(i, typeof n != "symbol" ? n + "" : n, t);
4
+ import { renderToString as g } from "../node_modules/react-dom/server.browser.js";
5
+ import { AbstractChart as y } from "../AbstractChart.js";
6
+ import { getKeysCombinations as _ } from "../utils/getKeysCombination.js";
7
+ import { BubbleSettingsImpl as m } from "./BubbleSettingsImpl.js";
8
+ import v from "./ChartRenderer.js";
9
+ import { getCellTooltip as b } from "./getCellTooltip.js";
10
+ import { getGroupedCellsData as z } from "./getGroupedCellsData.js";
11
+ class K extends y {
11
12
  constructor(t, a, e) {
12
13
  super(t, a);
13
- u(this, "settings");
14
- u(this, "chartRenderer", new _());
15
- u(this, "onTooltipHintSwitch", () => {
14
+ s(this, "settings");
15
+ s(this, "chartRenderer");
16
+ s(this, "onTooltipHintSwitch", () => {
16
17
  });
17
- u(this, "calculatedData", null);
18
- this.settings = new C(a), e && (this.onTooltipHintSwitch = e[0]);
18
+ s(this, "calculatedData", null);
19
+ s(this, "_getTooltip", (t) => {
20
+ var a, e, o;
21
+ return this.calculatedData ? b(this.data, t, this.calculatedData.groupedCellsData.meta, (o = (e = (a = this.settings) == null ? void 0 : a.chartSettings) == null ? void 0 : e.tooltips) == null ? void 0 : o.content) : ["No data available"];
22
+ });
23
+ this.settings = new m(a), this.chartRenderer = new v(), e && (this.onTooltipHintSwitch = e[0]);
19
24
  }
20
25
  mount(t) {
21
26
  try {
22
27
  this.chartRenderer.init(t), this._updateData(), this._updateChart();
23
28
  } catch (a) {
24
- a instanceof Error && this.chartRenderer.renderError(a.message);
29
+ a instanceof Error && (this.chartRenderer.renderError(a.message), console.error(a));
25
30
  }
26
31
  }
27
32
  unmount() {
@@ -29,49 +34,48 @@ class x extends D {
29
34
  }
30
35
  updateSettingsAndData(t, a) {
31
36
  try {
32
- const e = this.settings, l = this.data;
33
- this.settings = new C(a), this.data = t, this._needUpdateCalculatedDataBySettings(e, this.settings) || this._needUpdateCalculatedDataByData(l, this.data) ? this._updateData() : this._updateAesInData(), this._updateChart();
37
+ const e = this.settings, o = this.data;
38
+ this.settings = new m(a), this.data = t, this._needUpdateCalculatedDataBySettings(e, this.settings) || this._needUpdateCalculatedDataByData(o, this.data) ? this._updateData() : this._updateAesInData(), this._updateChart();
34
39
  } catch (e) {
35
- e instanceof Error && this.chartRenderer.renderError(e.message);
40
+ e instanceof Error && (this.chartRenderer.renderError(e.message), console.error(e));
36
41
  }
37
42
  }
38
43
  updateChartState(t, a) {
39
44
  console.warn("no chart state for bubble chart");
40
45
  }
41
46
  export() {
42
- return this._updateChart(), v(this.chartRenderer.component);
47
+ return this._updateChart(), g(this.chartRenderer.component);
43
48
  }
44
49
  _needUpdateCalculatedDataBySettings(t, a) {
45
- var e, l, o, r;
46
- return t.facetBy.some((s, c) => {
47
- var d;
48
- return s.value !== ((d = a.facetBy[c]) == null ? void 0 : d.value);
49
- }) || ((e = t.normalization) == null ? void 0 : e.method) !== ((l = a.normalization) == null ? void 0 : l.method) || ((o = t.normalization) == null ? void 0 : o.direction) !== ((r = a.normalization) == null ? void 0 : r.direction) || t.xColumn.value !== a.xColumn.value || t.yColumn.value !== a.yColumn.value || t.valueColumnColor.value !== a.valueColumnColor.value || t.valueColumnSize.value !== a.valueColumnSize.value || t.NAValueAs !== a.NAValueAs;
50
+ var e, o, r, l;
51
+ return t.facetBy.some((u, c) => {
52
+ var h;
53
+ return u.value !== ((h = a.facetBy[c]) == null ? void 0 : h.value);
54
+ }) || ((e = t.normalization) == null ? void 0 : e.method) !== ((o = a.normalization) == null ? void 0 : o.method) || ((r = t.normalization) == null ? void 0 : r.direction) !== ((l = a.normalization) == null ? void 0 : l.direction) || t.xColumn.value !== a.xColumn.value || t.yColumn.value !== a.yColumn.value || t.valueColumnColor.value !== a.valueColumnColor.value || t.valueColumnSize.value !== a.valueColumnSize.value || t.NAValueAs !== a.NAValueAs;
50
55
  }
51
56
  _needUpdateCalculatedDataByData(t, a) {
52
- const e = Object.keys(t.data), l = Object.keys(a.data);
53
- return t.id !== a.id || e.length !== l.length || e.some((o) => {
54
- var r;
55
- return t.data[o].length !== ((r = a.data[o]) == null ? void 0 : r.length);
57
+ const e = Object.keys(t.data), o = Object.keys(a.data);
58
+ return t.id !== a.id || e.length !== o.length || e.some((r) => {
59
+ var l;
60
+ return t.data[r].length !== ((l = a.data[r]) == null ? void 0 : l.length);
56
61
  });
57
62
  }
58
63
  _updateData() {
59
- const { facetBy: t, xColumn: a, yColumn: e, valueColumnSize: l, valueColumnColor: o, normalization: r, NAValueAs: s } = this.settings, c = t.map((h) => this.data.getColumnCategories(h.value)), d = c.length ? b([...c]) : [["null"]], p = t.map((h) => h.value) ?? null;
60
- this.data.setGrouping([...p]);
61
- const m = g(
64
+ const { facetBy: t, xColumn: a, yColumn: e, valueColumnSize: o, valueColumnColor: r, normalization: l, NAValueAs: u } = this.settings, c = t.map((d) => this.data.getColumnCategories(d.value)), h = c.length ? _([...c]) : [["null"]], C = t.map((d) => d.value) ?? null;
65
+ this.data.setGrouping([...C]);
66
+ const p = z(
62
67
  this.data,
63
68
  a,
64
69
  e,
65
- l,
66
70
  o,
67
- t,
68
- d,
69
71
  r,
70
- s
72
+ t,
73
+ h,
74
+ l,
75
+ u
71
76
  );
72
77
  this.calculatedData = {
73
- facetKeys: m.meta.facetKeys,
74
- groupedCellsData: m
78
+ groupedCellsData: p
75
79
  };
76
80
  }
77
81
  _updateAesInData() {
@@ -80,22 +84,23 @@ class x extends D {
80
84
  _updateChart() {
81
85
  if (!this.calculatedData)
82
86
  return;
83
- const { id: t, chartSettings: a, facetSettings: e, valueColumnColor: l, valueColumnSize: o, normalization: r, aes: s } = this.settings;
87
+ const { id: t, chartSettings: a, facetSettings: e, valueColumnColor: o, valueColumnSize: r, normalization: l, aes: u } = this.settings;
84
88
  this.chartRenderer.render(
89
+ this.data,
85
90
  t,
86
91
  a,
87
92
  e,
88
- this.calculatedData.facetKeys,
89
93
  this.calculatedData.groupedCellsData,
90
- l,
91
94
  o,
92
95
  r,
93
- s,
96
+ l,
97
+ u,
98
+ this._getTooltip,
94
99
  this.onTooltipHintSwitch
95
100
  );
96
101
  }
97
102
  }
98
103
  export {
99
- x as ChartBubble
104
+ K as ChartBubble
100
105
  };
101
106
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/bubble/index.ts"],"sourcesContent":["import {AbstractChart} from '../AbstractChart';\nimport {getCells} from './getCells';\nimport type {GroupedCellsData} from './getCells';\nimport type {BubbleEventHandlers, BubbleSettings} from '../types';\nimport {renderToString} from 'react-dom/server';\nimport ChartRenderer from './ChartRenderer';\nimport {BubbleSettingsImpl} from './BubbleSettingsImpl';\nimport type {DataFrame} from '../DataFrame';\nimport {getKeysCombinations} from '../utils/getKeysCombination';\n\nexport class ChartBubble extends AbstractChart {\n settings: BubbleSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v:boolean) => void = () => undefined;\n calculatedData: {\n facetKeys: string[];\n groupedCellsData: GroupedCellsData;\n } | null = null;\n\n constructor(data: DataFrame, settings: BubbleSettings, eventHandlers?: BubbleEventHandlers) {\n super(data, settings);\n\n this.settings = new BubbleSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers[0];\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n } 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: BubbleSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new BubbleSettingsImpl(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 bubble chart');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: BubbleSettingsImpl, settings: BubbleSettingsImpl) {\n return prevSettings.facetBy.some((el, idx) => el.value !== settings.facetBy[idx]?.value) ||\n prevSettings.normalization?.method !== settings.normalization?.method ||\n prevSettings.normalization?.direction !== settings.normalization?.direction ||\n prevSettings.xColumn.value !== settings.xColumn.value ||\n prevSettings.yColumn.value !== settings.yColumn.value ||\n prevSettings.valueColumnColor.value !== settings.valueColumnColor.value ||\n prevSettings.valueColumnSize.value !== settings.valueColumnSize.value ||\n prevSettings.NAValueAs !== settings.NAValueAs;\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 {facetBy, xColumn, yColumn, valueColumnSize, valueColumnColor, normalization, NAValueAs} = this.settings;\n\n const facetKeysLists = facetBy.map(column => this.data.getColumnCategories(column.value));\n const facetKeysCombinations = facetKeysLists.length ? getKeysCombinations([...facetKeysLists]) : [['null']];\n const facetGroupingValues = facetBy.map(column => column.value) ?? null;\n\n this.data.setGrouping([...facetGroupingValues]);\n\n const cells = getCells(\n this.data,\n xColumn,\n yColumn,\n valueColumnSize,\n valueColumnColor,\n facetBy,\n facetKeysCombinations,\n normalization,\n NAValueAs\n );\n this.calculatedData = {\n facetKeys: cells.meta.facetKeys,\n groupedCellsData: cells,\n };\n }\n\n _updateAesInData() {\n const calculated = this.calculatedData;\n if (!calculated) {\n return;\n }\n }\n\n _updateChart() {\n if (!this.calculatedData) {\n return;\n }\n const {id, chartSettings, facetSettings, valueColumnColor, valueColumnSize, normalization, aes} = this.settings;\n this.chartRenderer.render(\n id,\n chartSettings,\n facetSettings,\n this.calculatedData.facetKeys,\n this.calculatedData.groupedCellsData,\n valueColumnColor,\n valueColumnSize,\n normalization,\n aes,\n this.onTooltipHintSwitch\n );\n }\n}\n"],"names":["ChartBubble","AbstractChart","data","settings","eventHandlers","__publicField","ChartRenderer","BubbleSettingsImpl","node","err","previousSettings","previousData","_field","_value","renderToString","prevSettings","el","idx","_a","_b","_c","_d","prevData","prevKeys","keys","key","facetBy","xColumn","yColumn","valueColumnSize","valueColumnColor","normalization","NAValueAs","facetKeysLists","column","facetKeysCombinations","getKeysCombinations","facetGroupingValues","cells","getCells","id","chartSettings","facetSettings","aes"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/bubble/index.ts"],"sourcesContent":["import { renderToString } from 'react-dom/server';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame } from '../DataFrame';\nimport type { BubbleEventHandlers, BubbleSettings } from '../types';\nimport { getKeysCombinations } from '../utils/getKeysCombination';\nimport { BubbleSettingsImpl } from './BubbleSettingsImpl';\nimport ChartRenderer from './ChartRenderer';\nimport { getCellTooltip } from './getCellTooltip';\nimport type { Cell, GroupedCellsData } from './getGroupedCellsData';\nimport { getGroupedCellsData } from './getGroupedCellsData';\n\nexport class ChartBubble extends AbstractChart {\n settings: BubbleSettingsImpl;\n chartRenderer: ChartRenderer;\n\n onTooltipHintSwitch: (v:boolean) => void = () => undefined;\n calculatedData: {\n groupedCellsData: GroupedCellsData;\n } | null = null;\n\n constructor(data: DataFrame, settings: BubbleSettings, eventHandlers?: BubbleEventHandlers) {\n super(data, settings);\n\n this.settings = new BubbleSettingsImpl(settings);\n this.chartRenderer = new ChartRenderer();\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers[0];\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n } catch (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: BubbleSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new BubbleSettingsImpl(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 console.error(err);\n }\n }\n }\n\n updateChartState(_field: string, _value: unknown) {\n console.warn('no chart state for bubble chart');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: BubbleSettingsImpl, settings: BubbleSettingsImpl) {\n return prevSettings.facetBy.some((el, idx) => el.value !== settings.facetBy[idx]?.value) ||\n prevSettings.normalization?.method !== settings.normalization?.method ||\n prevSettings.normalization?.direction !== settings.normalization?.direction ||\n prevSettings.xColumn.value !== settings.xColumn.value ||\n prevSettings.yColumn.value !== settings.yColumn.value ||\n prevSettings.valueColumnColor.value !== settings.valueColumnColor.value ||\n prevSettings.valueColumnSize.value !== settings.valueColumnSize.value ||\n prevSettings.NAValueAs !== settings.NAValueAs;\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 {facetBy, xColumn, yColumn, valueColumnSize, valueColumnColor, normalization, NAValueAs} = this.settings;\n\n const facetKeysLists = facetBy.map(column => this.data.getColumnCategories(column.value));\n const facetKeysCombinations = facetKeysLists.length ? getKeysCombinations([...facetKeysLists]) : [['null']];\n const facetGroupingValues = facetBy.map(column => column.value) ?? null;\n\n this.data.setGrouping([...facetGroupingValues]);\n\n const groupedCellsData = getGroupedCellsData(\n this.data,\n xColumn,\n yColumn,\n valueColumnSize,\n valueColumnColor,\n facetBy,\n facetKeysCombinations,\n normalization,\n NAValueAs\n );\n this.calculatedData = {\n groupedCellsData,\n };\n }\n\n _updateAesInData() {\n const calculated = this.calculatedData;\n if (!calculated) {\n return;\n }\n }\n\n _updateChart() {\n if (!this.calculatedData) {\n return;\n }\n const {id, chartSettings, facetSettings, valueColumnColor, valueColumnSize, normalization, aes} = this.settings;\n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n facetSettings,\n this.calculatedData.groupedCellsData,\n valueColumnColor,\n valueColumnSize,\n normalization,\n aes,\n this._getTooltip,\n this.onTooltipHintSwitch\n );\n }\n\n private _getTooltip = (cell: Cell): string[] => {\n return this.calculatedData\n ? getCellTooltip(this.data, cell, this.calculatedData.groupedCellsData.meta, this.settings?.chartSettings?.tooltips?.content)\n : ['No data available'];\n };\n}\n"],"names":["ChartBubble","AbstractChart","data","settings","eventHandlers","__publicField","cell","getCellTooltip","_c","_b","_a","BubbleSettingsImpl","ChartRenderer","node","err","previousSettings","previousData","_field","_value","renderToString","prevSettings","el","idx","_d","prevData","prevKeys","keys","key","facetBy","xColumn","yColumn","valueColumnSize","valueColumnColor","normalization","NAValueAs","facetKeysLists","column","facetKeysCombinations","getKeysCombinations","facetGroupingValues","groupedCellsData","getGroupedCellsData","id","chartSettings","facetSettings","aes"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
+ import { TextMeasurer } from '../../utils/TextMeasurer/TextMeasurer';
1
2
  import { LabelAngles } from '../components/types';
2
- import { GroupedCellsData } from '../getCells';
3
- import { TextMeasurer } from '../../utils/TextMeasurer';
3
+ import { GroupedCellsData } from '../getGroupedCellsData';
4
4
  export declare function calculateCaptionTails(labelAngles: LabelAngles, steps: {
5
5
  x: number;
6
6
  y: number;
@@ -1 +1 @@
1
- {"version":3,"file":"calculateCaptionTails.d.ts","sourceRoot":"","sources":["../../../src/bubble/utils/calculateCaptionTails.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAC;AAErD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAE3D,wBAAgB,qBAAqB,CACjC,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;CAAC,EAC9B,YAAY,EAAE,gBAAgB,EAC9B,YAAY,EAAE,YAAY,GAC3B;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAC,CAsC9C"}
1
+ {"version":3,"file":"calculateCaptionTails.d.ts","sourceRoot":"","sources":["../../../src/bubble/utils/calculateCaptionTails.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,wBAAgB,qBAAqB,CACjC,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;CAAC,EAC9B,YAAY,EAAE,gBAAgB,EAC9B,YAAY,EAAE,YAAY,GAC3B;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAC,CAsC9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"calculateCaptionTails.js","sources":["../../../src/bubble/utils/calculateCaptionTails.ts"],"sourcesContent":["import type {LabelAngles} from '../components/types';\nimport {MIN_STEP_FOR_VISIBLE_LABELS} from '../constants';\nimport type {GroupedCellsData} from '../getCells';\nimport type {TextMeasurer} from '../../utils/TextMeasurer';\n\nexport function calculateCaptionTails(\n labelAngles: LabelAngles,\n steps: {x: number; y: number;},\n groupedCells: GroupedCellsData,\n textMeasurer: TextMeasurer\n): {xCaptionTail: number; yCaptionTail: number} {\n const {xLabels, yLabels} = groupedCells.meta;\n const xLabelAngle = (labelAngles.xAxisLabels / 180) * Math.PI;\n const yLabelAngle = (labelAngles.yAxisLabels / 180) * Math.PI;\n let xCaptionTail = 0;\n let yCaptionTail = 0;\n // tails from 45deg inclined captions of groups titles/cells labels, that take place on adjacent padding\n const xLabelsInclined = labelAngles.xAxisLabels === 45;\n if (xLabelsInclined) {\n const xKeys = groupedCells.meta.xKeys;\n const step = steps.x;\n const labelsVisible = step > MIN_STEP_FOR_VISIBLE_LABELS;\n const firstLabel = xLabels[xKeys[0]];\n xCaptionTail = Math.max(\n xCaptionTail,\n (xLabelsInclined && labelsVisible\n ? textMeasurer.getTextWidth(firstLabel) * Math.cos(xLabelAngle)\n : 0) -\n step / 2\n );\n }\n const yLabelsInclined = labelAngles.yAxisLabels === 45;\n if (yLabelsInclined) {\n const yKeys = groupedCells.meta.yKeys;\n if (yKeys.length) {\n const step = steps.y;\n const labelsVisible = step > MIN_STEP_FOR_VISIBLE_LABELS;\n const lastLabel = yLabels[yKeys[yKeys.length - 1]];\n yCaptionTail = Math.max(\n yCaptionTail,\n (yLabelsInclined && labelsVisible\n ? textMeasurer.getTextWidth(lastLabel) * Math.cos(yLabelAngle)\n : 0) -\n step / 2\n );\n }\n }\n return {xCaptionTail, yCaptionTail};\n}\n"],"names":["calculateCaptionTails","labelAngles","steps","groupedCells","textMeasurer","xLabels","yLabels","xLabelAngle","yLabelAngle","xCaptionTail","yCaptionTail","xLabelsInclined","xKeys","step","labelsVisible","MIN_STEP_FOR_VISIBLE_LABELS","firstLabel","yLabelsInclined","yKeys","lastLabel"],"mappings":";AAKO,SAASA,EACZC,GACAC,GACAC,GACAC,GAC4C;AAC5C,QAAM,EAAC,SAAAC,GAAS,SAAAC,EAAA,IAAWH,EAAa,MAClCI,IAAeN,EAAY,cAAc,MAAO,KAAK,IACrDO,IAAeP,EAAY,cAAc,MAAO,KAAK;AAC3D,MAAIQ,IAAe,GACfC,IAAe;AAEnB,QAAMC,IAAkBV,EAAY,gBAAgB;AACpD,MAAIU,GAAiB;AACjB,UAAMC,IAAQT,EAAa,KAAK,OAC1BU,IAAOX,EAAM,GACbY,IAAgBD,IAAOE,GACvBC,IAAaX,EAAQO,EAAM,CAAC,CAAC;AACnC,IAAAH,IAAe,KAAK;AAAA,MAChBA;AAAA,OACCE,KAAmBG,IACdV,EAAa,aAAaY,CAAU,IAAI,KAAK,IAAIT,CAAW,IAC5D,KACFM,IAAO;AAAA,IAAA;AAAA,EAEnB;AACA,QAAMI,IAAkBhB,EAAY,gBAAgB;AACpD,MAAIgB,GAAiB;AACjB,UAAMC,IAAQf,EAAa,KAAK;AAChC,QAAIe,EAAM,QAAQ;AACd,YAAML,IAAOX,EAAM,GACbY,IAAgBD,IAAOE,GACvBI,IAAYb,EAAQY,EAAMA,EAAM,SAAS,CAAC,CAAC;AACjD,MAAAR,IAAe,KAAK;AAAA,QAChBA;AAAA,SACCO,KAAmBH,IACdV,EAAa,aAAae,CAAS,IAAI,KAAK,IAAIX,CAAW,IAC3D,KACNK,IAAO;AAAA,MAAA;AAAA,IAEf;AAAA,EACJ;AACA,SAAO,EAAC,cAAAJ,GAAc,cAAAC,EAAA;AAC1B;"}
1
+ {"version":3,"file":"calculateCaptionTails.js","sources":["../../../src/bubble/utils/calculateCaptionTails.ts"],"sourcesContent":["import type { TextMeasurer } from '../../utils/TextMeasurer/TextMeasurer';\nimport type { LabelAngles } from '../components/types';\nimport { MIN_STEP_FOR_VISIBLE_LABELS } from '../constants';\nimport type { GroupedCellsData } from '../getGroupedCellsData';\n\nexport function calculateCaptionTails(\n labelAngles: LabelAngles,\n steps: {x: number; y: number;},\n groupedCells: GroupedCellsData,\n textMeasurer: TextMeasurer\n): {xCaptionTail: number; yCaptionTail: number} {\n const {xLabels, yLabels} = groupedCells.meta;\n const xLabelAngle = (labelAngles.xAxisLabels / 180) * Math.PI;\n const yLabelAngle = (labelAngles.yAxisLabels / 180) * Math.PI;\n let xCaptionTail = 0;\n let yCaptionTail = 0;\n // tails from 45deg inclined captions of groups titles/cells labels, that take place on adjacent padding\n const xLabelsInclined = labelAngles.xAxisLabels === 45;\n if (xLabelsInclined) {\n const xKeys = groupedCells.meta.xKeys;\n const step = steps.x;\n const labelsVisible = step > MIN_STEP_FOR_VISIBLE_LABELS;\n const firstLabel = xLabels[xKeys[0]];\n xCaptionTail = Math.max(\n xCaptionTail,\n (xLabelsInclined && labelsVisible\n ? textMeasurer.getTextWidth(firstLabel) * Math.cos(xLabelAngle)\n : 0) -\n step / 2\n );\n }\n const yLabelsInclined = labelAngles.yAxisLabels === 45;\n if (yLabelsInclined) {\n const yKeys = groupedCells.meta.yKeys;\n if (yKeys.length) {\n const step = steps.y;\n const labelsVisible = step > MIN_STEP_FOR_VISIBLE_LABELS;\n const lastLabel = yLabels[yKeys[yKeys.length - 1]];\n yCaptionTail = Math.max(\n yCaptionTail,\n (yLabelsInclined && labelsVisible\n ? textMeasurer.getTextWidth(lastLabel) * Math.cos(yLabelAngle)\n : 0) -\n step / 2\n );\n }\n }\n return {xCaptionTail, yCaptionTail};\n}\n"],"names":["calculateCaptionTails","labelAngles","steps","groupedCells","textMeasurer","xLabels","yLabels","xLabelAngle","yLabelAngle","xCaptionTail","yCaptionTail","xLabelsInclined","xKeys","step","labelsVisible","MIN_STEP_FOR_VISIBLE_LABELS","firstLabel","yLabelsInclined","yKeys","lastLabel"],"mappings":";AAKO,SAASA,EACZC,GACAC,GACAC,GACAC,GAC4C;AAC5C,QAAM,EAAC,SAAAC,GAAS,SAAAC,EAAA,IAAWH,EAAa,MAClCI,IAAeN,EAAY,cAAc,MAAO,KAAK,IACrDO,IAAeP,EAAY,cAAc,MAAO,KAAK;AAC3D,MAAIQ,IAAe,GACfC,IAAe;AAEnB,QAAMC,IAAkBV,EAAY,gBAAgB;AACpD,MAAIU,GAAiB;AACjB,UAAMC,IAAQT,EAAa,KAAK,OAC1BU,IAAOX,EAAM,GACbY,IAAgBD,IAAOE,GACvBC,IAAaX,EAAQO,EAAM,CAAC,CAAC;AACnC,IAAAH,IAAe,KAAK;AAAA,MAChBA;AAAA,OACCE,KAAmBG,IACdV,EAAa,aAAaY,CAAU,IAAI,KAAK,IAAIT,CAAW,IAC5D,KACFM,IAAO;AAAA,IAAA;AAAA,EAEnB;AACA,QAAMI,IAAkBhB,EAAY,gBAAgB;AACpD,MAAIgB,GAAiB;AACjB,UAAMC,IAAQf,EAAa,KAAK;AAChC,QAAIe,EAAM,QAAQ;AACd,YAAML,IAAOX,EAAM,GACbY,IAAgBD,IAAOE,GACvBI,IAAYb,EAAQY,EAAMA,EAAM,SAAS,CAAC,CAAC;AACjD,MAAAR,IAAe,KAAK;AAAA,QAChBA;AAAA,SACCO,KAAmBH,IACdV,EAAa,aAAae,CAAS,IAAI,KAAK,IAAIX,CAAW,IAC3D,KACNK,IAAO;AAAA,MAAA;AAAA,IAEf;AAAA,EACJ;AACA,SAAO,EAAC,cAAAJ,GAAc,cAAAC,EAAA;AAC1B;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Legend.d.ts","sourceRoot":"","sources":["../../src/common/Legend.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,SAAS,CAAC;AAWxC,UAAU,WAAW;IACjB,UAAU,EAAE,UAAU,CAAC;CAC1B;AAmGD,wBAAgB,MAAM,CAAC,EAAC,UAAU,EAAC,EAAE,WAAW,2CAuI/C"}
1
+ {"version":3,"file":"Legend.d.ts","sourceRoot":"","sources":["../../src/common/Legend.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAc,UAAU,EAAkD,MAAM,SAAS,CAAC;AAMtG,UAAU,WAAW;IACjB,UAAU,EAAE,UAAU,CAAC;CAC1B;AAmGD,wBAAgB,MAAM,CAAC,EAAC,UAAU,EAAC,EAAE,WAAW,2CAuI/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"Legend.js","sources":["../../src/common/Legend.tsx"],"sourcesContent":["import {BLACK} from '../constants';\nimport type {LegendItemDiscreteMultiAes, LegendItemGradient} from './types';\nimport type {LegendData} from './types';\nimport {getPointShape} from '../utils/getPointShape';\nimport type {DotAesItem} from './types';\nimport React from 'react';\nimport type { AesItem, LineShape } from '../types';\nimport {color} from 'd3-color';\n\nconst LEGEND_ITEM_SIZE = 12;\nconst TITLE_POSITION = -12;\nconst COLOR_ITEM_WIDTH_C = 14;\n\ninterface LegendProps {\n legendData: LegendData;\n}\n\nfunction getLineShapePath(lineShape:LineShape|null = null):string {\n if (lineShape === 'dashed') {\n return 'M1 11.25H6V12.75H1V11.25ZM9.5 11.25H14.5V12.75H9.5V11.25ZM18 11.25H23V12.75H18V11.25Z';\n }\n if (lineShape === 'dotted') {\n return 'M2.75 11.25H1.25V12.75H2.75V11.25Z M11.25 11.25H12.75V12.75H11.25V11.25Z M22.75 11.25H21.25V12.75H22.75V11.25Z M7.75 11.25H6.25V12.75H7.75V11.25Z M16.25 11.25H17.75V12.75H16.25V11.25Z';\n }\n if (lineShape === 'longdash') {\n return 'M1 11.25H10V12.75H1V11.25ZM14 11.25H23V12.75H14V11.25Z';\n }\n if (lineShape === 'dotdash') {\n return 'M1 11.25H2.5V12.75H1V11.25ZM17 12.75H7V11.25H17V12.75ZM21.5 12.75V11.25H23V12.75H21.5Z';\n }\n if (lineShape === 'twodash') {\n return 'M1 11.25H4V12.75H1V11.25ZM17.0261 12.75H7V11.25H17.0261V12.75ZM20 12.75V11.25H23V12.75H20Z';\n }\n return 'M1 11.25H23V12.75H1V11.25Z';\n}\n\nconst POINT_SIZE = 3;\nconst LINE_WIDTH = 24;\n\nfunction getAesItemStroke(fillColor?:string, lineColor?:string) {\n if (fillColor === 'transparent') {\n return BLACK;\n }\n // black border for white square if fill color is white\n const fill = color(fillColor ?? lineColor ?? '');\n if (fill && fill.formatHex() === '#ffffff') {\n return BLACK;\n }\n return fillColor ?? lineColor;\n}\nfunction AesLegendItem({ aes, label, usedAes }: { aes: AesItem; label: string, usedAes: LegendItemDiscreteMultiAes['usedAes'] }) {\n const needRenderLine = usedAes.lineShape;\n const needRenderDot = usedAes.dotShape;\n const needRenderRect = usedAes.fillColor ||\n (usedAes.lineColor && !usedAes.lineShape) ||\n (usedAes.dotFill && !usedAes.dotShape);\n\n const shape = needRenderDot ? getPointShape(\n aes.dotShape ?? '21',\n POINT_SIZE,\n needRenderRect ? BLACK : aes.dotFill ?? BLACK\n ) : null;\n\n const lineOffset = (needRenderDot && needRenderLine ? 2 * LEGEND_ITEM_SIZE : 0 ) - 6;\n const textOffset = needRenderLine ? lineOffset + LINE_WIDTH + 8 : LEGEND_ITEM_SIZE + 8;\n return (\n <g>\n {needRenderRect && (\n <rect\n width={LEGEND_ITEM_SIZE}\n height={LEGEND_ITEM_SIZE}\n stroke={getAesItemStroke(aes.fillColor, aes.lineColor)}\n fill={aes.fillColor ?? aes.lineColor}\n rx=\"1\"\n ry=\"1\"\n />\n )}\n {needRenderDot && <g transform={`translate(${LEGEND_ITEM_SIZE / 2},${LEGEND_ITEM_SIZE / 2})`}>\n {shape}\n </g>}\n {needRenderLine && (\n <path\n transform={`translate(${lineOffset},-5)`}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d={getLineShapePath(aes.lineShape)}\n fill={aes.lineColor}\n />\n )}\n <text\n x={textOffset}\n y={LEGEND_ITEM_SIZE / 2}\n dominantBaseline=\"central\"\n fontWeight={500}\n >\n {label}\n </text>\n </g>\n );\n}\n\nfunction DotAesItemElement({aes, label}: {aes: DotAesItem; label: string}) {\n const shape = getPointShape(aes.shape, aes.size, aes.color);\n\n return (\n <g>\n <g transform={`translate(${LEGEND_ITEM_SIZE / 2},${LEGEND_ITEM_SIZE / 2})`}>{shape}</g>\n <text x={LEGEND_ITEM_SIZE + 8} y={LEGEND_ITEM_SIZE / 2} dominantBaseline=\"central\" fontWeight={500}>\n {label}\n </text>\n </g>\n );\n}\n\nexport function Legend({legendData}: LegendProps) {\n const debug = false;\n const continuousItems= legendData.items.filter((item) => item.type === 'continuous') as LegendItemGradient[];\n return (\n <g>\n <defs>\n {continuousItems.map(item => (\n <linearGradient key={item.id} id={item.id} gradientTransform=\"rotate(90)\">\n {item.scale.domain().reverse().map(value => {\n const domain = item.scale.domain();\n const range = domain[domain.length - 1] - domain[0];\n const percent = range > 0 ? 100 - (value - domain[0]) / range * 100 : 0;\n return (\n <stop\n key={value}\n offset={`${percent}%`}\n stopColor={item.scale(value)}\n />\n );\n })}\n </linearGradient>\n ))}\n </defs>\n {legendData.items.map(item => {\n if (item.type === 'continuous') {\n return (\n <g key={item.id} transform={`translate(${item.left},${item.top})`}>\n <text fontWeight={500} fontSize=\"14px\" y={TITLE_POSITION}>{item.title}</text>\n <rect\n x=\"0\"\n y=\"0\"\n width={COLOR_ITEM_WIDTH_C}\n height={item.height}\n stroke={BLACK}\n fill={`url(#${item.id})`}\n />\n <g transform={`translate(${COLOR_ITEM_WIDTH_C},0)`}>\n {item.values.map(value => {\n const y = item.tickPositionScale(value) ?? 0;\n return (\n <g key={value} transform={`translate(0,${y})`}>\n <line x1=\"0\" x2={-4} stroke={BLACK} />\n <text x={8} y={4}>{value}</text>\n </g>\n );\n })}\n </g>\n {debug && <rect width={item.width} height={item.height} fill=\"none\" stroke=\"black\"/>}\n </g>\n );\n }\n if (item.type === 'discreteColor') {\n return (\n <g key={item.id} transform={`translate(${item.left},${item.top})`}>\n <text fontWeight={500} fontSize=\"14px\" y={TITLE_POSITION}>{item.title}</text>\n {item.values.map((value, idx) => {\n return <g key={value} transform={`translate(0, ${idx * (LEGEND_ITEM_SIZE + 4)})`}>\n <rect\n x=\"0\"\n y=\"0\"\n width={LEGEND_ITEM_SIZE}\n height={LEGEND_ITEM_SIZE}\n fill={item.scale(value)}\n rx=\"1\"\n ry=\"1\"\n stroke={BLACK}\n />\n <text x={LEGEND_ITEM_SIZE + 8} y={10}>{item.labels[value] ?? value}</text>\n </g>;\n })}\n {debug && <rect width={item.width} height={item.height} fill=\"none\" stroke=\"black\"/>}\n </g>\n );\n }\n if (item.type === 'discreteMulti') {\n return (\n <g key={item.id} transform={`translate(${item.left},${item.top})`} fontSize=\"14px\" fontWeight={500}>\n <text fontWeight={600} y={TITLE_POSITION}>\n {item.title}\n </text>\n {item.values.map((value, idx) => {\n return (\n <g key={value} transform={`translate(0, ${idx * (LEGEND_ITEM_SIZE + 4)})`}>\n <AesLegendItem\n aes={item.scale(value)}\n label={item.labels[value]}\n usedAes={item.usedAes}\n />\n </g>\n );\n })}\n {debug && <rect width={item.width} height={item.height} fill=\"none\" stroke=\"black\" />}\n </g>\n );\n }\n if (item.type === 'dots') {\n return (\n <g key={item.id} transform={`translate(${item.left},${item.top})`} fontSize=\"14px\" fontWeight={500}>\n <text fontWeight={500} y={TITLE_POSITION}>\n {item.title}\n </text>\n {item.values.map((value, idx) => {\n return (\n <g key={value} transform={`translate(0, ${idx * (LEGEND_ITEM_SIZE + 4)})`}>\n <DotAesItemElement aes={item.scale(value)} label={item.labels[value]} />\n </g>\n );\n })}\n {debug && <rect width={item.width} height={item.height} fill=\"none\" stroke=\"black\" />}\n </g>\n );\n }\n if (item.type === 'size') {\n const size = item.height / item.values.length;\n return (\n <g key={item.id} transform={`translate(${item.left},${item.top})`} fontSize=\"14px\" fontWeight={500}>\n <text fontWeight={500} y={TITLE_POSITION}>\n {item.title}\n </text>\n {item.values.map((value, idx) => {\n const r = item.scale(value);\n return (\n <g key={value} transform={`translate(0, ${idx * size})`}>\n <circle r={r} cx={size / 2} cy={size / 2} fill={BLACK}/>\n <text x={size + 4} y={size / 2} alignmentBaseline=\"central\">{item.labels[value]}</text>\n </g>\n );\n })}\n {debug && <rect width={item.width} height={item.height} fill=\"none\" stroke=\"black\" />}\n </g>\n );\n }\n })}\n </g>\n );\n}\n"],"names":["LEGEND_ITEM_SIZE","TITLE_POSITION","COLOR_ITEM_WIDTH_C","getLineShapePath","lineShape","POINT_SIZE","LINE_WIDTH","getAesItemStroke","fillColor","lineColor","BLACK","fill","color","AesLegendItem","aes","label","usedAes","needRenderLine","needRenderDot","needRenderRect","shape","getPointShape","lineOffset","textOffset","jsx","DotAesItemElement","Legend","legendData","continuousItems","item","value","domain","range","percent","jsxs","y","idx","size","r"],"mappings":"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"}
1
+ {"version":3,"file":"Legend.js","sources":["../../src/common/Legend.tsx"],"sourcesContent":["import { color } from 'd3-color';\nimport { BLACK } from '../constants';\nimport type { AesItem, LineShape } from '../types';\nimport { getPointShape } from '../utils/getPointShape';\nimport type { DotAesItem, LegendData, LegendItemDiscreteMultiAes, LegendItemGradient } from './types';\n\nconst LEGEND_ITEM_SIZE = 12;\nconst TITLE_POSITION = -12;\nconst COLOR_ITEM_WIDTH_C = 14;\n\ninterface LegendProps {\n legendData: LegendData;\n}\n\nfunction getLineShapePath(lineShape:LineShape|null = null):string {\n if (lineShape === 'dashed') {\n return 'M1 11.25H6V12.75H1V11.25ZM9.5 11.25H14.5V12.75H9.5V11.25ZM18 11.25H23V12.75H18V11.25Z';\n }\n if (lineShape === 'dotted') {\n return 'M2.75 11.25H1.25V12.75H2.75V11.25Z M11.25 11.25H12.75V12.75H11.25V11.25Z M22.75 11.25H21.25V12.75H22.75V11.25Z M7.75 11.25H6.25V12.75H7.75V11.25Z M16.25 11.25H17.75V12.75H16.25V11.25Z';\n }\n if (lineShape === 'longdash') {\n return 'M1 11.25H10V12.75H1V11.25ZM14 11.25H23V12.75H14V11.25Z';\n }\n if (lineShape === 'dotdash') {\n return 'M1 11.25H2.5V12.75H1V11.25ZM17 12.75H7V11.25H17V12.75ZM21.5 12.75V11.25H23V12.75H21.5Z';\n }\n if (lineShape === 'twodash') {\n return 'M1 11.25H4V12.75H1V11.25ZM17.0261 12.75H7V11.25H17.0261V12.75ZM20 12.75V11.25H23V12.75H20Z';\n }\n return 'M1 11.25H23V12.75H1V11.25Z';\n}\n\nconst POINT_SIZE = 3;\nconst LINE_WIDTH = 24;\n\nfunction getAesItemStroke(fillColor?:string, lineColor?:string) {\n if (fillColor === 'transparent') {\n return BLACK;\n }\n // black border for white square if fill color is white\n const fill = color(fillColor ?? lineColor ?? '');\n if (fill && fill.formatHex() === '#ffffff') {\n return BLACK;\n }\n return fillColor ?? lineColor;\n}\nfunction AesLegendItem({ aes, label, usedAes }: { aes: AesItem; label: string, usedAes: LegendItemDiscreteMultiAes['usedAes'] }) {\n const needRenderLine = usedAes.lineShape;\n const needRenderDot = usedAes.dotShape;\n const needRenderRect = usedAes.fillColor ||\n (usedAes.lineColor && !usedAes.lineShape) ||\n (usedAes.dotFill && !usedAes.dotShape);\n\n const shape = needRenderDot ? getPointShape(\n aes.dotShape ?? '21',\n POINT_SIZE,\n needRenderRect ? BLACK : aes.dotFill ?? BLACK\n ) : null;\n\n const lineOffset = (needRenderDot && needRenderLine ? 2 * LEGEND_ITEM_SIZE : 0 ) - 6;\n const textOffset = needRenderLine ? lineOffset + LINE_WIDTH + 8 : LEGEND_ITEM_SIZE + 8;\n return (\n <g>\n {needRenderRect && (\n <rect\n width={LEGEND_ITEM_SIZE}\n height={LEGEND_ITEM_SIZE}\n stroke={getAesItemStroke(aes.fillColor, aes.lineColor)}\n fill={aes.fillColor ?? aes.lineColor}\n rx=\"1\"\n ry=\"1\"\n />\n )}\n {needRenderDot && <g transform={`translate(${LEGEND_ITEM_SIZE / 2},${LEGEND_ITEM_SIZE / 2})`}>\n {shape}\n </g>}\n {needRenderLine && (\n <path\n transform={`translate(${lineOffset},-5)`}\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d={getLineShapePath(aes.lineShape)}\n fill={aes.lineColor}\n />\n )}\n <text\n x={textOffset}\n y={LEGEND_ITEM_SIZE / 2}\n dominantBaseline=\"central\"\n fontWeight={500}\n >\n {label}\n </text>\n </g>\n );\n}\n\nfunction DotAesItemElement({aes, label}: {aes: DotAesItem; label: string}) {\n const shape = getPointShape(aes.shape, aes.size, aes.color);\n\n return (\n <g>\n <g transform={`translate(${LEGEND_ITEM_SIZE / 2},${LEGEND_ITEM_SIZE / 2})`}>{shape}</g>\n <text x={LEGEND_ITEM_SIZE + 8} y={LEGEND_ITEM_SIZE / 2} dominantBaseline=\"central\" fontWeight={500}>\n {label}\n </text>\n </g>\n );\n}\n\nexport function Legend({legendData}: LegendProps) {\n const debug = false;\n const continuousItems= legendData.items.filter((item) => item.type === 'continuous') as LegendItemGradient[];\n return (\n <g>\n <defs>\n {continuousItems.map(item => (\n <linearGradient key={item.id} id={item.id} gradientTransform=\"rotate(90)\">\n {item.scale.domain().reverse().map(value => {\n const domain = item.scale.domain();\n const range = domain[domain.length - 1] - domain[0];\n const percent = range > 0 ? 100 - (value - domain[0]) / range * 100 : 0;\n return (\n <stop\n key={value}\n offset={`${percent}%`}\n stopColor={item.scale(value)}\n />\n );\n })}\n </linearGradient>\n ))}\n </defs>\n {legendData.items.map(item => {\n if (item.type === 'continuous') {\n return (\n <g key={item.id} transform={`translate(${item.left},${item.top})`}>\n <text fontWeight={500} fontSize=\"14px\" y={TITLE_POSITION}>{item.title}</text>\n <rect\n x=\"0\"\n y=\"0\"\n width={COLOR_ITEM_WIDTH_C}\n height={item.height}\n stroke={BLACK}\n fill={`url(#${item.id})`}\n />\n <g transform={`translate(${COLOR_ITEM_WIDTH_C},0)`}>\n {item.values.map(value => {\n const y = item.tickPositionScale(value) ?? 0;\n return (\n <g key={value} transform={`translate(0,${y})`}>\n <line x1=\"0\" x2={-4} stroke={BLACK} />\n <text x={8} y={4}>{value}</text>\n </g>\n );\n })}\n </g>\n {debug && <rect width={item.width} height={item.height} fill=\"none\" stroke=\"black\"/>}\n </g>\n );\n }\n if (item.type === 'discreteColor') {\n return (\n <g key={item.id} transform={`translate(${item.left},${item.top})`}>\n <text fontWeight={500} fontSize=\"14px\" y={TITLE_POSITION}>{item.title}</text>\n {item.values.map((value, idx) => {\n return <g key={value} transform={`translate(0, ${idx * (LEGEND_ITEM_SIZE + 4)})`}>\n <rect\n x=\"0\"\n y=\"0\"\n width={LEGEND_ITEM_SIZE}\n height={LEGEND_ITEM_SIZE}\n fill={item.scale(value)}\n rx=\"1\"\n ry=\"1\"\n stroke={BLACK}\n />\n <text x={LEGEND_ITEM_SIZE + 8} y={10}>{item.labels[value] ?? value}</text>\n </g>;\n })}\n {debug && <rect width={item.width} height={item.height} fill=\"none\" stroke=\"black\"/>}\n </g>\n );\n }\n if (item.type === 'discreteMulti') {\n return (\n <g key={item.id} transform={`translate(${item.left},${item.top})`} fontSize=\"14px\" fontWeight={500}>\n <text fontWeight={600} y={TITLE_POSITION}>\n {item.title}\n </text>\n {item.values.map((value, idx) => {\n return (\n <g key={value} transform={`translate(0, ${idx * (LEGEND_ITEM_SIZE + 4)})`}>\n <AesLegendItem\n aes={item.scale(value)}\n label={item.labels[value]}\n usedAes={item.usedAes}\n />\n </g>\n );\n })}\n {debug && <rect width={item.width} height={item.height} fill=\"none\" stroke=\"black\" />}\n </g>\n );\n }\n if (item.type === 'dots') {\n return (\n <g key={item.id} transform={`translate(${item.left},${item.top})`} fontSize=\"14px\" fontWeight={500}>\n <text fontWeight={500} y={TITLE_POSITION}>\n {item.title}\n </text>\n {item.values.map((value, idx) => {\n return (\n <g key={value} transform={`translate(0, ${idx * (LEGEND_ITEM_SIZE + 4)})`}>\n <DotAesItemElement aes={item.scale(value)} label={item.labels[value]} />\n </g>\n );\n })}\n {debug && <rect width={item.width} height={item.height} fill=\"none\" stroke=\"black\" />}\n </g>\n );\n }\n if (item.type === 'size') {\n const size = item.height / item.values.length;\n return (\n <g key={item.id} transform={`translate(${item.left},${item.top})`} fontSize=\"14px\" fontWeight={500}>\n <text fontWeight={500} y={TITLE_POSITION}>\n {item.title}\n </text>\n {item.values.map((value, idx) => {\n const r = item.scale(value);\n return (\n <g key={value} transform={`translate(0, ${idx * size})`}>\n <circle r={r} cx={size / 2} cy={size / 2} fill={BLACK}/>\n <text x={size + 4} y={size / 2} alignmentBaseline=\"central\">{item.labels[value]}</text>\n </g>\n );\n })}\n {debug && <rect width={item.width} height={item.height} fill=\"none\" stroke=\"black\" />}\n </g>\n );\n }\n })}\n </g>\n );\n}\n"],"names":["LEGEND_ITEM_SIZE","TITLE_POSITION","COLOR_ITEM_WIDTH_C","getLineShapePath","lineShape","POINT_SIZE","LINE_WIDTH","getAesItemStroke","fillColor","lineColor","BLACK","fill","color","AesLegendItem","aes","label","usedAes","needRenderLine","needRenderDot","needRenderRect","shape","getPointShape","lineOffset","textOffset","jsx","DotAesItemElement","Legend","legendData","continuousItems","item","value","domain","range","percent","jsxs","y","idx","size","r"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { r as i } from "../_virtual/index.js";
3
3
  import { r as N } from "../node_modules/react-dom/index.js";
4
4
  import { BLACK as z } from "../constants.js";
5
5
  import { exhaustive as A } from "../utils/index.js";
6
- import { TextMeasurer as W } from "../utils/TextMeasurer.js";
6
+ import { TextMeasurer as W } from "../utils/TextMeasurer/TextMeasurer.js";
7
7
  const E = 8, S = 12, F = 20, c = 6, u = 5, Z = 8, j = 16, P = 8, w = j * 2 + P + 16, I = "#CFD1DB", O = "#fff", R = "miplots-tooltip";
8
8
  function B(n) {
9
9
  return n.length * F + 2 * E;