@milaboratories/miplots4 1.0.129 → 1.0.131

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. package/dist/DataFrame.d.ts +15 -9
  2. package/dist/DataFrame.d.ts.map +1 -1
  3. package/dist/DataFrame.js +105 -81
  4. package/dist/DataFrame.js.map +1 -1
  5. package/dist/bubble/ChartRenderer.d.ts +6 -5
  6. package/dist/bubble/ChartRenderer.d.ts.map +1 -1
  7. package/dist/bubble/ChartRenderer.js +123 -121
  8. package/dist/bubble/ChartRenderer.js.map +1 -1
  9. package/dist/bubble/components/Chart.d.ts +3 -2
  10. package/dist/bubble/components/Chart.d.ts.map +1 -1
  11. package/dist/bubble/components/Chart.js +78 -97
  12. package/dist/bubble/components/Chart.js.map +1 -1
  13. package/dist/bubble/components/ChartsGroup.d.ts +6 -5
  14. package/dist/bubble/components/ChartsGroup.d.ts.map +1 -1
  15. package/dist/bubble/components/ChartsGroup.js +39 -37
  16. package/dist/bubble/components/ChartsGroup.js.map +1 -1
  17. package/dist/bubble/getCellTooltip.d.ts +5 -0
  18. package/dist/bubble/getCellTooltip.d.ts.map +1 -0
  19. package/dist/bubble/getCellTooltip.js +28 -0
  20. package/dist/bubble/getCellTooltip.js.map +1 -0
  21. package/dist/bubble/{getCells.d.ts → getGroupedCellsData.d.ts} +4 -4
  22. package/dist/bubble/getGroupedCellsData.d.ts.map +1 -0
  23. package/dist/bubble/getGroupedCellsData.js +94 -0
  24. package/dist/bubble/getGroupedCellsData.js.map +1 -0
  25. package/dist/bubble/index.d.ts +4 -4
  26. package/dist/bubble/index.d.ts.map +1 -1
  27. package/dist/bubble/index.js +47 -42
  28. package/dist/bubble/index.js.map +1 -1
  29. package/dist/bubble/utils/calculateCaptionTails.d.ts +2 -2
  30. package/dist/bubble/utils/calculateCaptionTails.d.ts.map +1 -1
  31. package/dist/bubble/utils/calculateCaptionTails.js.map +1 -1
  32. package/dist/common/Legend.d.ts.map +1 -1
  33. package/dist/common/Legend.js.map +1 -1
  34. package/dist/common/Tooltip.js +1 -1
  35. package/dist/common/Tooltip.js.map +1 -1
  36. package/dist/common/types.d.ts +1 -1
  37. package/dist/common/types.d.ts.map +1 -1
  38. package/dist/common/useDataFrame.d.ts +11 -0
  39. package/dist/common/useDataFrame.d.ts.map +1 -0
  40. package/dist/common/useDataFrame.js +20 -0
  41. package/dist/common/useDataFrame.js.map +1 -0
  42. package/dist/dendro/ChartRenderer.d.ts +9 -8
  43. package/dist/dendro/ChartRenderer.d.ts.map +1 -1
  44. package/dist/dendro/ChartRenderer.js +187 -187
  45. package/dist/dendro/ChartRenderer.js.map +1 -1
  46. package/dist/dendro/components/Chart.d.ts +8 -8
  47. package/dist/dendro/components/Chart.d.ts.map +1 -1
  48. package/dist/dendro/components/Chart.js +35 -35
  49. package/dist/dendro/components/Chart.js.map +1 -1
  50. package/dist/dendro/components/Heatmap.d.ts +3 -3
  51. package/dist/dendro/components/Heatmap.d.ts.map +1 -1
  52. package/dist/dendro/components/Heatmap.js +23 -23
  53. package/dist/dendro/components/Heatmap.js.map +1 -1
  54. package/dist/dendro/components/Legend.d.ts.map +1 -1
  55. package/dist/dendro/components/Legend.js.map +1 -1
  56. package/dist/dendro/components/LinksGroup.d.ts +6 -6
  57. package/dist/dendro/components/LinksGroup.d.ts.map +1 -1
  58. package/dist/dendro/components/LinksGroup.js +17 -17
  59. package/dist/dendro/components/LinksGroup.js.map +1 -1
  60. package/dist/dendro/components/NodesGroup.d.ts +7 -7
  61. package/dist/dendro/components/NodesGroup.d.ts.map +1 -1
  62. package/dist/dendro/components/NodesGroup.js +29 -29
  63. package/dist/dendro/components/NodesGroup.js.map +1 -1
  64. package/dist/dendro/components/types.d.ts +2 -2
  65. package/dist/dendro/components/types.d.ts.map +1 -1
  66. package/dist/dendro/getHeatmapData.d.ts +2 -2
  67. package/dist/dendro/getHeatmapData.d.ts.map +1 -1
  68. package/dist/dendro/getHeatmapData.js +48 -44
  69. package/dist/dendro/getHeatmapData.js.map +1 -1
  70. package/dist/dendro/getHierarchyData.d.ts +3 -3
  71. package/dist/dendro/getHierarchyData.d.ts.map +1 -1
  72. package/dist/dendro/getHierarchyData.js +31 -31
  73. package/dist/dendro/getHierarchyData.js.map +1 -1
  74. package/dist/dendro/index.d.ts +5 -5
  75. package/dist/dendro/index.d.ts.map +1 -1
  76. package/dist/dendro/index.js +86 -89
  77. package/dist/dendro/index.js.map +1 -1
  78. package/dist/discrete/ChartRenderer.d.ts +6 -6
  79. package/dist/discrete/ChartRenderer.d.ts.map +1 -1
  80. package/dist/discrete/ChartRenderer.js +197 -196
  81. package/dist/discrete/ChartRenderer.js.map +1 -1
  82. package/dist/discrete/DiscreteSettingsImpl.d.ts +3 -3
  83. package/dist/discrete/DiscreteSettingsImpl.d.ts.map +1 -1
  84. package/dist/discrete/DiscreteSettingsImpl.js +8 -8
  85. package/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
  86. package/dist/discrete/components/layers/BoxElement.js.map +1 -1
  87. package/dist/discrete/index.d.ts +1 -1
  88. package/dist/discrete/index.d.ts.map +1 -1
  89. package/dist/discrete/index.js +109 -106
  90. package/dist/discrete/index.js.map +1 -1
  91. package/dist/discrete/layers/bar.d.ts +2 -2
  92. package/dist/discrete/layers/bar.d.ts.map +1 -1
  93. package/dist/discrete/layers/bar.js +32 -37
  94. package/dist/discrete/layers/bar.js.map +1 -1
  95. package/dist/discrete/layers/binnedDots.d.ts +3 -3
  96. package/dist/discrete/layers/binnedDots.d.ts.map +1 -1
  97. package/dist/discrete/layers/binnedDots.js +66 -78
  98. package/dist/discrete/layers/binnedDots.js.map +1 -1
  99. package/dist/discrete/layers/boxes.d.ts +3 -4
  100. package/dist/discrete/layers/boxes.d.ts.map +1 -1
  101. package/dist/discrete/layers/boxes.js +59 -60
  102. package/dist/discrete/layers/boxes.js.map +1 -1
  103. package/dist/discrete/layers/dots.d.ts +2 -3
  104. package/dist/discrete/layers/dots.d.ts.map +1 -1
  105. package/dist/discrete/layers/dots.js +30 -30
  106. package/dist/discrete/layers/dots.js.map +1 -1
  107. package/dist/discrete/layers/lines.js +11 -10
  108. package/dist/discrete/layers/lines.js.map +1 -1
  109. package/dist/discrete/layers/logo.d.ts +2 -2
  110. package/dist/discrete/layers/logo.d.ts.map +1 -1
  111. package/dist/discrete/layers/logo.js +21 -21
  112. package/dist/discrete/layers/logo.js.map +1 -1
  113. package/dist/discrete/layers/pairedPoints.d.ts +2 -2
  114. package/dist/discrete/layers/pairedPoints.d.ts.map +1 -1
  115. package/dist/discrete/layers/pairedPoints.js +62 -62
  116. package/dist/discrete/layers/pairedPoints.js.map +1 -1
  117. package/dist/discrete/layers/sina.d.ts +3 -4
  118. package/dist/discrete/layers/sina.d.ts.map +1 -1
  119. package/dist/discrete/layers/sina.js +67 -71
  120. package/dist/discrete/layers/sina.js.map +1 -1
  121. package/dist/discrete/layers/stackedBar.d.ts +1 -1
  122. package/dist/discrete/layers/stackedBar.d.ts.map +1 -1
  123. package/dist/discrete/layers/stackedBar.js +25 -25
  124. package/dist/discrete/layers/stackedBar.js.map +1 -1
  125. package/dist/discrete/layers/violins.js +13 -13
  126. package/dist/discrete/utils/getOutliersBounds.d.ts +1 -1
  127. package/dist/discrete/utils/getOutliersBounds.d.ts.map +1 -1
  128. package/dist/discrete/utils/getOutliersBounds.js +5 -5
  129. package/dist/discrete/utils/getOutliersBounds.js.map +1 -1
  130. package/dist/discrete/utils/splitTextByWidth.js +1 -1
  131. package/dist/discrete/utils/splitTextByWidth.js.map +1 -1
  132. package/dist/heatmap/ChartRenderer.d.ts +7 -6
  133. package/dist/heatmap/ChartRenderer.d.ts.map +1 -1
  134. package/dist/heatmap/ChartRenderer.js +232 -230
  135. package/dist/heatmap/ChartRenderer.js.map +1 -1
  136. package/dist/heatmap/HeatmapSettingsImpl.d.ts +2 -2
  137. package/dist/heatmap/HeatmapSettingsImpl.d.ts.map +1 -1
  138. package/dist/heatmap/HeatmapSettingsImpl.js +1 -1
  139. package/dist/heatmap/HeatmapSettingsImpl.js.map +1 -1
  140. package/dist/heatmap/components/Annotations/Annotation.d.ts.map +1 -1
  141. package/dist/heatmap/components/Annotations/Annotation.js +40 -39
  142. package/dist/heatmap/components/Annotations/Annotation.js.map +1 -1
  143. package/dist/heatmap/components/Chart.d.ts.map +1 -1
  144. package/dist/heatmap/components/Chart.js +90 -89
  145. package/dist/heatmap/components/Chart.js.map +1 -1
  146. package/dist/heatmap/components/ChartsGroup.d.ts +2 -2
  147. package/dist/heatmap/components/ChartsGroup.d.ts.map +1 -1
  148. package/dist/heatmap/components/ChartsGroup.js +14 -14
  149. package/dist/heatmap/components/ChartsGroup.js.map +1 -1
  150. package/dist/heatmap/components/types.d.ts +3 -2
  151. package/dist/heatmap/components/types.d.ts.map +1 -1
  152. package/dist/heatmap/getCells.d.ts +3 -2
  153. package/dist/heatmap/getCells.d.ts.map +1 -1
  154. package/dist/heatmap/getCells.js +97 -93
  155. package/dist/heatmap/getCells.js.map +1 -1
  156. package/dist/heatmap/index.d.ts +3 -3
  157. package/dist/heatmap/index.d.ts.map +1 -1
  158. package/dist/heatmap/index.js +13 -12
  159. package/dist/heatmap/index.js.map +1 -1
  160. package/dist/heatmap/utils/calculateAnnotationTitleSizes.d.ts.map +1 -1
  161. package/dist/heatmap/utils/calculateAnnotationTitleSizes.js +1 -1
  162. package/dist/heatmap/utils/calculateAnnotationTitleSizes.js.map +1 -1
  163. package/dist/heatmap/utils/calculateCaptionTails.d.ts +1 -1
  164. package/dist/heatmap/utils/calculateCaptionTails.d.ts.map +1 -1
  165. package/dist/heatmap/utils/calculateCaptionTails.js.map +1 -1
  166. package/dist/histogram/ChartRenderer.d.ts +6 -5
  167. package/dist/histogram/ChartRenderer.d.ts.map +1 -1
  168. package/dist/histogram/ChartRenderer.js +154 -153
  169. package/dist/histogram/ChartRenderer.js.map +1 -1
  170. package/dist/histogram/HistogramSettingsImpl.d.ts +2 -2
  171. package/dist/histogram/HistogramSettingsImpl.d.ts.map +1 -1
  172. package/dist/histogram/HistogramSettingsImpl.js.map +1 -1
  173. package/dist/histogram/components/Chart.js +48 -48
  174. package/dist/histogram/components/Chart.js.map +1 -1
  175. package/dist/histogram/components/types.d.ts +4 -3
  176. package/dist/histogram/components/types.d.ts.map +1 -1
  177. package/dist/histogram/getHistogramData.d.ts +7 -7
  178. package/dist/histogram/getHistogramData.d.ts.map +1 -1
  179. package/dist/histogram/getHistogramData.js +52 -53
  180. package/dist/histogram/getHistogramData.js.map +1 -1
  181. package/dist/histogram/index.d.ts +3 -3
  182. package/dist/histogram/index.d.ts.map +1 -1
  183. package/dist/histogram/index.js +49 -45
  184. package/dist/histogram/index.js.map +1 -1
  185. package/dist/node_modules/@d3fc/d3fc-axis/src/axisBase.js +10 -10
  186. package/dist/node_modules/d3-array/src/min.js +5 -11
  187. package/dist/node_modules/d3-array/src/min.js.map +1 -1
  188. package/dist/node_modules/d3-shape/src/area.js +30 -30
  189. package/dist/node_modules/d3-shape/src/line.js +6 -6
  190. package/dist/node_modules/d3-shape/src/line.js.map +1 -1
  191. package/dist/node_modules/kdbush/index.js +148 -0
  192. package/dist/node_modules/kdbush/index.js.map +1 -0
  193. package/dist/scatterplot/ChartRenderer.d.ts +7 -6
  194. package/dist/scatterplot/ChartRenderer.d.ts.map +1 -1
  195. package/dist/scatterplot/ChartRenderer.js +213 -209
  196. package/dist/scatterplot/ChartRenderer.js.map +1 -1
  197. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts +2 -2
  198. package/dist/scatterplot/ScatterplotSettingsImpl.d.ts.map +1 -1
  199. package/dist/scatterplot/ScatterplotSettingsImpl.js +28 -28
  200. package/dist/scatterplot/ScatterplotSettingsImpl.js.map +1 -1
  201. package/dist/scatterplot/components/ChartAxisTitles.d.ts.map +1 -1
  202. package/dist/scatterplot/components/ChartAxisTitles.js +31 -30
  203. package/dist/scatterplot/components/ChartAxisTitles.js.map +1 -1
  204. package/dist/scatterplot/components/ChartLayersData.d.ts.map +1 -1
  205. package/dist/scatterplot/components/ChartLayersData.js +138 -156
  206. package/dist/scatterplot/components/ChartLayersData.js.map +1 -1
  207. package/dist/scatterplot/components/ChartTooltip.d.ts.map +1 -1
  208. package/dist/scatterplot/components/ChartTooltip.js +41 -38
  209. package/dist/scatterplot/components/ChartTooltip.js.map +1 -1
  210. package/dist/scatterplot/components/ChartTrendsData.js +21 -21
  211. package/dist/scatterplot/components/ChartTrendsData.js.map +1 -1
  212. package/dist/scatterplot/components/types.d.ts +7 -7
  213. package/dist/scatterplot/components/types.d.ts.map +1 -1
  214. package/dist/scatterplot/constants.d.ts +1 -1
  215. package/dist/scatterplot/constants.d.ts.map +1 -1
  216. package/dist/scatterplot/constants.js.map +1 -1
  217. package/dist/scatterplot/dots.d.ts +2 -2
  218. package/dist/scatterplot/dots.d.ts.map +1 -1
  219. package/dist/scatterplot/dots.js +27 -25
  220. package/dist/scatterplot/dots.js.map +1 -1
  221. package/dist/scatterplot/getLayersData.d.ts +3 -3
  222. package/dist/scatterplot/getLayersData.d.ts.map +1 -1
  223. package/dist/scatterplot/getLayersData.js +12 -15
  224. package/dist/scatterplot/getLayersData.js.map +1 -1
  225. package/dist/scatterplot/index.d.ts +4 -4
  226. package/dist/scatterplot/index.d.ts.map +1 -1
  227. package/dist/scatterplot/index.js +71 -72
  228. package/dist/scatterplot/index.js.map +1 -1
  229. package/dist/scatterplot/linearRegression.d.ts +5 -4
  230. package/dist/scatterplot/linearRegression.d.ts.map +1 -1
  231. package/dist/scatterplot/linearRegression.js +88 -86
  232. package/dist/scatterplot/linearRegression.js.map +1 -1
  233. package/dist/scatterplot/utils/createAesGetter.d.ts +3 -2
  234. package/dist/scatterplot/utils/createAesGetter.d.ts.map +1 -1
  235. package/dist/scatterplot/utils/createAesGetter.js +21 -21
  236. package/dist/scatterplot/utils/createAesGetter.js.map +1 -1
  237. package/dist/scatterplot/utils/createLegendInfo.d.ts +2 -10
  238. package/dist/scatterplot/utils/createLegendInfo.d.ts.map +1 -1
  239. package/dist/scatterplot/utils/createLegendInfo.js +44 -37
  240. package/dist/scatterplot/utils/createLegendInfo.js.map +1 -1
  241. package/dist/scatterplot/utils/formatColumnValue.d.ts +5 -0
  242. package/dist/scatterplot/utils/formatColumnValue.d.ts.map +1 -0
  243. package/dist/scatterplot/utils/formatColumnValue.js +11 -0
  244. package/dist/scatterplot/utils/formatColumnValue.js.map +1 -0
  245. package/dist/scatterplot/utils/getVisibleLabels.d.ts +6 -9
  246. package/dist/scatterplot/utils/getVisibleLabels.d.ts.map +1 -1
  247. package/dist/scatterplot/utils/getVisibleLabels.js +46 -56
  248. package/dist/scatterplot/utils/getVisibleLabels.js.map +1 -1
  249. package/dist/scatterplot-umap/ChartRenderer.d.ts +18 -15
  250. package/dist/scatterplot-umap/ChartRenderer.d.ts.map +1 -1
  251. package/dist/scatterplot-umap/ChartRenderer.js +231 -214
  252. package/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
  253. package/dist/scatterplot-umap/SettingsImpl.d.ts +2 -2
  254. package/dist/scatterplot-umap/SettingsImpl.d.ts.map +1 -1
  255. package/dist/scatterplot-umap/SettingsImpl.js +25 -25
  256. package/dist/scatterplot-umap/SettingsImpl.js.map +1 -1
  257. package/dist/scatterplot-umap/colors.d.ts +6 -0
  258. package/dist/scatterplot-umap/colors.d.ts.map +1 -0
  259. package/dist/scatterplot-umap/colors.js +42 -0
  260. package/dist/scatterplot-umap/colors.js.map +1 -0
  261. package/dist/scatterplot-umap/components/LowerSVG.d.ts +2 -2
  262. package/dist/scatterplot-umap/components/LowerSVG.d.ts.map +1 -1
  263. package/dist/scatterplot-umap/components/LowerSVG.js +97 -94
  264. package/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
  265. package/dist/scatterplot-umap/components/UpperSVG.d.ts.map +1 -1
  266. package/dist/scatterplot-umap/components/UpperSVG.js +20 -19
  267. package/dist/scatterplot-umap/components/UpperSVG.js.map +1 -1
  268. package/dist/scatterplot-umap/index.d.ts +0 -2
  269. package/dist/scatterplot-umap/index.d.ts.map +1 -1
  270. package/dist/scatterplot-umap/index.js +77 -102
  271. package/dist/scatterplot-umap/index.js.map +1 -1
  272. package/dist/scatterplot-umap/types.d.ts +7 -10
  273. package/dist/scatterplot-umap/types.d.ts.map +1 -1
  274. package/dist/types/bubble.d.ts +44 -12
  275. package/dist/types/bubble.d.ts.map +1 -1
  276. package/dist/types/common.d.ts +22 -3
  277. package/dist/types/common.d.ts.map +1 -1
  278. package/dist/types/common.js +3 -1
  279. package/dist/types/common.js.map +1 -1
  280. package/dist/types/dendro.d.ts +113 -10
  281. package/dist/types/dendro.d.ts.map +1 -1
  282. package/dist/types/dendro.js +1 -1
  283. package/dist/types/dendro.js.map +1 -1
  284. package/dist/types/discrete.d.ts +99 -22
  285. package/dist/types/discrete.d.ts.map +1 -1
  286. package/dist/types/discrete.js +3 -3
  287. package/dist/types/discrete.js.map +1 -1
  288. package/dist/types/heatmap.d.ts +187 -28
  289. package/dist/types/heatmap.d.ts.map +1 -1
  290. package/dist/types/heatmap.js +1 -1
  291. package/dist/types/heatmap.js.map +1 -1
  292. package/dist/types/histogram.d.ts +30 -8
  293. package/dist/types/histogram.d.ts.map +1 -1
  294. package/dist/types/histogram.js +1 -1
  295. package/dist/types/histogram.js.map +1 -1
  296. package/dist/types/scatterplot-umap.d.ts +149 -15
  297. package/dist/types/scatterplot-umap.d.ts.map +1 -1
  298. package/dist/types/scatterplot-umap.js +9 -9
  299. package/dist/types/scatterplot-umap.js.map +1 -1
  300. package/dist/types/scatterplot.d.ts +164 -12
  301. package/dist/types/scatterplot.d.ts.map +1 -1
  302. package/dist/types/scatterplot.js +1 -1
  303. package/dist/types/scatterplot.js.map +1 -1
  304. package/dist/utils/TextMeasurer/TextMeasurer.d.ts +7 -0
  305. package/dist/utils/TextMeasurer/TextMeasurer.d.ts.map +1 -0
  306. package/dist/utils/TextMeasurer/TextMeasurer.js +42 -0
  307. package/dist/utils/TextMeasurer/TextMeasurer.js.map +1 -0
  308. package/dist/utils/TextMeasurer/charToWidth.json.js +155 -0
  309. package/dist/utils/TextMeasurer/charToWidth.json.js.map +1 -0
  310. package/dist/utils/arrangeLegendParts.js +1 -1
  311. package/dist/utils/arrangeLegendParts.js.map +1 -1
  312. package/dist/utils/getChartEdgeSides.d.ts +1 -1
  313. package/dist/utils/getLegendWidth.d.ts.map +1 -1
  314. package/dist/utils/getLegendWidth.js +1 -1
  315. package/dist/utils/getLegendWidth.js.map +1 -1
  316. package/package.json +5 -3
  317. package/dist/bubble/getCells.d.ts.map +0 -1
  318. package/dist/bubble/getCells.js +0 -91
  319. package/dist/bubble/getCells.js.map +0 -1
  320. package/dist/node_modules/d3-quadtree/src/add.js +0 -30
  321. package/dist/node_modules/d3-quadtree/src/add.js.map +0 -1
  322. package/dist/node_modules/d3-quadtree/src/cover.js +0 -29
  323. package/dist/node_modules/d3-quadtree/src/cover.js.map +0 -1
  324. package/dist/node_modules/d3-quadtree/src/data.js +0 -12
  325. package/dist/node_modules/d3-quadtree/src/data.js.map +0 -1
  326. package/dist/node_modules/d3-quadtree/src/extent.js +0 -7
  327. package/dist/node_modules/d3-quadtree/src/extent.js.map +0 -1
  328. package/dist/node_modules/d3-quadtree/src/find.js +0 -26
  329. package/dist/node_modules/d3-quadtree/src/find.js.map +0 -1
  330. package/dist/node_modules/d3-quadtree/src/quad.js +0 -7
  331. package/dist/node_modules/d3-quadtree/src/quad.js.map +0 -1
  332. package/dist/node_modules/d3-quadtree/src/quadtree.js +0 -51
  333. package/dist/node_modules/d3-quadtree/src/quadtree.js.map +0 -1
  334. package/dist/node_modules/d3-quadtree/src/remove.js +0 -21
  335. package/dist/node_modules/d3-quadtree/src/remove.js.map +0 -1
  336. package/dist/node_modules/d3-quadtree/src/root.js +0 -7
  337. package/dist/node_modules/d3-quadtree/src/root.js.map +0 -1
  338. package/dist/node_modules/d3-quadtree/src/size.js +0 -12
  339. package/dist/node_modules/d3-quadtree/src/size.js.map +0 -1
  340. package/dist/node_modules/d3-quadtree/src/visit.js +0 -14
  341. package/dist/node_modules/d3-quadtree/src/visit.js.map +0 -1
  342. package/dist/node_modules/d3-quadtree/src/visitAfter.js +0 -19
  343. package/dist/node_modules/d3-quadtree/src/visitAfter.js.map +0 -1
  344. package/dist/node_modules/d3-quadtree/src/x.js +0 -11
  345. package/dist/node_modules/d3-quadtree/src/x.js.map +0 -1
  346. package/dist/node_modules/d3-quadtree/src/y.js +0 -11
  347. package/dist/node_modules/d3-quadtree/src/y.js.map +0 -1
  348. package/dist/utils/TextMeasurer.d.ts +0 -8
  349. package/dist/utils/TextMeasurer.d.ts.map +0 -1
  350. package/dist/utils/TextMeasurer.js +0 -27
  351. package/dist/utils/TextMeasurer.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ChartRenderer.js","sources":["../../src/discrete/ChartRenderer.tsx"],"sourcesContent":["import {Error} from '../common/Error';\nimport {DEFAULT_HEIGHT, DEFAULT_WIDTH, TITLE_LINE_HEIGHT, TITLE_MARGIN} from '../constants';\nimport type {GroupKey} from '../DataFrame';\nimport type {Margins} from './components/types';\nimport type {DiscreteSettingsImpl} from './DiscreteSettingsImpl';\nimport type {StatsData} from './layers/types';\nimport type {LayerData} from './layers/types';\nimport type {CaptionsSizes, ChartDimensionsData, ChartSizes, ChartsScales} from './components/types';\nimport {CAPTION_LINE_HEIGHT, FACET_TITLE_LINE, FACET_TITLE_OFFSET, MIN_PADDING} from './constants';\nimport {LEGEND_OFFSET} from './constants';\nimport {DEFAULT_COMMON_AES, DEFAULT_TICKS_SIZE} from '../scatterplot/constants';\nimport type {InheritAesDiscrete} from '../types';\nimport type {GroupingData} from '../types';\nimport type {AesItem, ColumnName, Orientation} from '../types';\nimport {TextMeasurer} from '../utils/TextMeasurer';\nimport {scaleBand, scaleLinear, scaleLog, scaleOrdinal} from 'd3-scale';\nimport lodash from 'lodash';\nimport {DEFAULT_AES, TICK_OFFSET, TITLE_LINE} from './constants';\nimport type {ReactElement} from 'react';\nimport React from 'react';\nimport type {Root} from 'react-dom/client';\nimport {createRoot} from 'react-dom/client';\nimport {ChartsGroup} from './components/ChartsGroup';\nimport {getChartStatsPadding, splitTextByWidth} from './utils';\nimport type {LegendData, LegendItemDiscreteMultiAes} from '../common/types';\nimport { arrangeLegendParts } from '../utils/arrangeLegendParts';\n\nfunction getChartEdgeSides(index: number, facetsCount: number, columnsCount: number, rowsCount: number) {\n const chartSides: ('left' | 'right' | 'top' | 'bottom')[] = [];\n if (index % columnsCount === columnsCount - 1) {\n chartSides.push('right');\n }\n if (index % columnsCount === 0) {\n chartSides.push('left');\n }\n if (index < columnsCount) {\n chartSides.push('top');\n }\n if (\n Math.ceil((index + 1) / columnsCount) === rowsCount ||\n (Math.ceil((index + 1) / columnsCount) === rowsCount - 1 &&\n index % columnsCount > (facetsCount - 1) % columnsCount)\n ) {\n chartSides.push('bottom');\n }\n return chartSides;\n}\n\nfunction calculatePaddings(\n orientation: Orientation,\n xAxis: DiscreteSettingsImpl['chartSettings']['xAxis'],\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis'],\n captionsSizes: CaptionsSizes,\n currentRowFacetKeys: string[],\n facetTitles: Record<string, string[]>,\n chartEdgeSides: ('left' | 'right' | 'top' | 'bottom')[],\n facetSettings: DiscreteSettingsImpl['facetSettings'],\n currentRow: number,\n currentColumn: number,\n lastInRow: boolean\n) {\n const isVertical = orientation === 'vertical';\n const needLeftAxis =\n chartEdgeSides.includes('left') ||\n (isVertical && !facetSettings?.sharedY) ||\n (!isVertical && !facetSettings?.sharedX);\n const needLeftAxisTitle = chartEdgeSides.includes('left') && yAxis.title !== '';\n const needBottomAxis =\n chartEdgeSides.includes('bottom') ||\n (isVertical && !facetSettings?.sharedX) ||\n (!isVertical && !facetSettings?.sharedY);\n const needBottomAxisTitle = chartEdgeSides.includes('bottom') && xAxis.title !== '';\n\n const yCaptions = captionsSizes.yAxisCaptionsWidth;\n const yTicks = (yAxis.showTicks ? DEFAULT_TICKS_SIZE : 0) + (yAxis.hiddenLabels ? 0 : TICK_OFFSET);\n const yAxisTitle = needLeftAxisTitle ? TITLE_LINE : 0;\n\n const xCaptions = captionsSizes.xAxisCaptionsWidthByRows[isVertical ? currentRow : currentColumn];\n const xTicks = (xAxis.showTicks ? DEFAULT_TICKS_SIZE : 0) + (xAxis.hiddenLabels ? 0 : TICK_OFFSET);\n const xAxisTitle = needBottomAxisTitle ? TITLE_LINE : 0;\n\n const leftAxisElements = isVertical ? yCaptions + yTicks + yAxisTitle : xCaptions + xTicks + xAxisTitle;\n const bottomAxisElements = isVertical ? xTicks + xCaptions + xAxisTitle : yTicks + 2 * TITLE_LINE;\n\n const facetTitlesLinesCount = Math.max(...currentRowFacetKeys.map(key => facetTitles[key].length));\n return {\n left: needLeftAxis ? leftAxisElements : MIN_PADDING,\n top: facetTitlesLinesCount === 0 ? 0 : FACET_TITLE_OFFSET * 2 + facetTitlesLinesCount * FACET_TITLE_LINE,\n bottom: needBottomAxis ? bottomAxisElements : MIN_PADDING,\n right: lastInRow ? 0 : MIN_PADDING,\n };\n}\n\n// facet keys grouped by columns\nfunction getFacetColumns(facetKeys: string[], nRows: number, nColumns: number): string[][] {\n const result: string[][] = new Array(nColumns).fill(null).map(() => []);\n for (let i = 0; i < nColumns; i++) {\n for (let j = 0; j < nRows; j++) {\n const facetIdx = j * nColumns + i;\n if (facetIdx < facetKeys.length) {\n result[i].push(facetKeys[j * nColumns + i]);\n }\n }\n }\n return result;\n}\n\n// facet keys grouped by rows\nfunction getFacetRows(facetKeys: string[], nRows: number, nColumns: number): string[][] {\n const result: string[][] = [];\n for (let i = 0; i < nRows; i++) {\n result.push(facetKeys.slice(i * nColumns, i * nColumns + nColumns));\n }\n return result;\n}\n\nfunction getRowColumn(idx: number, columnsCount: number) {\n const row = Math.floor(idx / columnsCount);\n const column = idx - row * columnsCount;\n return [row, column];\n}\n\nfunction isInheritAes(v: InheritAesDiscrete | string | number | boolean): v is InheritAesDiscrete {\n return typeof v === 'object' && 'type' in v;\n}\n\nclass ChartRenderer {\n reactRoot: Root | null = null;\n parentNode: HTMLElement | null = null;\n rootNode: HTMLElement | null = null;\n component: ReactElement = (<></>);\n chartsDimensions: Record<string, ChartDimensionsData> = {};\n chartSizes: ChartSizes = {\n chartWidth: DEFAULT_WIDTH, // width of single chart\n chartHeight: DEFAULT_HEIGHT, // height of single chart\n chartsWidth: DEFAULT_WIDTH, // width of all charts in charts row\n chartsHeight: DEFAULT_HEIGHT, // width of all charts in charts column, without axes\n totalWidth: DEFAULT_WIDTH, // width of all charts in charts row, plus left axis, plus legend\n totalHeight: DEFAULT_HEIGHT, // width of all charts in charts height, plus bottom axis, plus top title\n };\n columnsCount = 1;\n rowsCount = 1;\n scales: ChartsScales = {\n // Scale from primary grouping categories to every category x coordinate\n xPrimary: {null: scaleBand().range([0, DEFAULT_WIDTH]).domain(['1'])},\n // Scale from secondary grouping categories to x shift inside corresponding primary group\n xSecondary: {null: scaleBand().range([0, DEFAULT_WIDTH]).domain(['1'])},\n // Scale from y value to y coordinate, by facet\n y: {null: scaleLinear().domain([0, 10]).range([DEFAULT_HEIGHT, 0]).nice()},\n // Scale for link primary grouping category and aesthetics\n xPrimaryAes: scaleOrdinal<string, AesItem, AesItem>().unknown(DEFAULT_AES),\n // Scale for link secondary grouping category and aesthetics\n xSecondaryAes: scaleOrdinal<string, AesItem, AesItem>().unknown(DEFAULT_AES),\n };\n facetTitles: Record<string, string[]> = {}; // can be multiline\n mainTitle: string[] = []; // can be multiline\n axisLabelsX: Record<string, Record<string, string[]>> = {}; // can be multiline\n captionsSizes: CaptionsSizes = {\n xAxisCaptionsWidthByRows: [],\n xCaptionsTail: 0,\n yAxisCaptionsWidth: 100,\n };\n legend: LegendData = {width: 0, height: 0, items: []};\n margins: Margins = {left: 0, right: 0, top: 0, bottom: 0};\n\n clear() {\n if (this.parentNode && this.rootNode) {\n this.parentNode?.removeChild(this.rootNode);\n this.parentNode = null;\n this.rootNode = null;\n }\n // timeout to avoid trying to unmount during rendering\n setTimeout(() => {\n this.reactRoot?.unmount();\n this.reactRoot = null;\n });\n }\n\n init(node: HTMLElement) {\n if (this.parentNode === null) {\n this.parentNode = node;\n this.rootNode = document.createElement('div');\n this.parentNode.appendChild(this.rootNode);\n this.reactRoot = createRoot(this.rootNode);\n }\n }\n\n updateChartSize(\n size: DiscreteSettingsImpl['chartSettings']['size'],\n facetKeys: string[],\n facetSettings: DiscreteSettingsImpl['facetSettings'],\n primaryKeys: GroupKey[],\n orientation: Orientation,\n statsData: StatsData[]\n ) {\n const paddingTop = size.innerOffset;\n const paddingBottom = size.innerOffset;\n // It may be necessary increase chart height/width for p-value\n const statsPadding = getChartStatsPadding(statsData, primaryKeys, size.innerOffset);\n // Use columns/rows count from settings if some of them defined, else make 1 column\n const facetCount = facetKeys.length;\n const maxNRows = Math.min(facetSettings?.nRows ?? facetCount, facetCount);\n const maxNCols = Math.min(facetSettings?.nCols ?? facetCount, facetCount);\n // Use columns/rows count from settings if some of them defined, else make 1 column\n this.columnsCount = facetSettings?.nRows ? Math.ceil(facetCount / maxNRows) : maxNCols;\n this.rowsCount = Math.ceil(facetCount / this.columnsCount);\n\n let {width, height} = size;\n // avoid situation when statistics fill all available chart area\n if (orientation === 'vertical' && statsPadding > paddingTop) {\n height += statsPadding;\n }\n if (orientation === 'horizontal' && statsPadding > paddingBottom) {\n width += statsPadding;\n }\n this.chartSizes.chartWidth = width;\n this.chartSizes.chartHeight = height;\n }\n\n updateChartDimensions(\n facetKeys: string[],\n facetSettings: DiscreteSettingsImpl['facetSettings'],\n orientation: Orientation,\n xAxis: DiscreteSettingsImpl['chartSettings']['xAxis'],\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis']\n ) {\n const {chartWidth, chartHeight} = this.chartSizes;\n let currentLeft = 0;\n let currentTop = 0;\n this.chartsDimensions = facetKeys.reduce((res: Record<string, ChartDimensionsData>, key: string, index) => {\n const [currentRow, currentColumn] = getRowColumn(index, this.columnsCount);\n const chartEdgeSides = getChartEdgeSides(index, facetKeys.length, this.columnsCount, this.rowsCount);\n const padding = calculatePaddings(\n orientation,\n xAxis,\n yAxis,\n this.captionsSizes,\n getFacetRows(facetKeys, this.rowsCount, this.columnsCount)[currentRow],\n this.facetTitles,\n chartEdgeSides,\n facetSettings,\n currentRow,\n currentColumn,\n currentColumn === this.columnsCount - 1\n );\n\n const outerWidth = chartWidth + padding.left + padding.right;\n const outerHeight = chartHeight + padding.top + padding.bottom;\n\n res[key] = {\n left: currentLeft,\n top: currentTop,\n chartEdgeSides,\n padding,\n inner: {width: chartWidth, height: chartHeight},\n outer: {width: outerWidth, height: outerHeight},\n };\n currentLeft += outerWidth;\n if (currentColumn === this.columnsCount - 1) {\n currentLeft = 0;\n currentTop += outerHeight;\n }\n return res;\n }, {});\n\n const chartsWidth = Math.max(\n ...facetKeys.map(key => this.chartsDimensions[key].outer.width + this.chartsDimensions[key].left)\n );\n const chartsHeight = Math.max(\n ...facetKeys.map(key => this.chartsDimensions[key].outer.height + this.chartsDimensions[key].top)\n );\n\n this.chartSizes.chartsWidth = chartsWidth;\n this.chartSizes.chartsHeight = chartsHeight;\n }\n\n updateViewport(\n orientation: Orientation,\n primaryKeys: string[],\n secondaryKeys: string[],\n facetKeys: string[],\n facetSettings: DiscreteSettingsImpl['facetSettings'],\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis'],\n layersData: LayerData[],\n statsData: StatsData[],\n size: DiscreteSettingsImpl['chartSettings']['size'],\n nonEmptyGroupsByFacets: Record<string, string[]>,\n ) {\n const paddingBottom = size.innerOffset;\n const isVertical = orientation === 'vertical';\n const statsPadding = getChartStatsPadding(statsData, primaryKeys, size.innerOffset);\n const sharedX = facetSettings === null || facetSettings.sharedX;\n const sharedY = facetSettings === null || facetSettings.sharedY;\n\n const {chartHeight, chartWidth} = this.chartSizes;\n facetKeys.forEach(key => {\n const scaleY = yAxis.scale === 'log' ? scaleLog() : scaleLinear();\n const min = sharedY\n ? Math.min(...layersData.map(({meta}) => meta.minY))\n : Math.min(...layersData.map(({geoms}) => Math.min(...geoms[key].map(({boundsY}) => boundsY.min))));\n const max = sharedY\n ? Math.max(...layersData.map(({meta}) => meta.maxY))\n : Math.max(...layersData.map(({geoms}) => Math.max(...geoms[key].map(({boundsY}) => boundsY.max))));\n\n // supporting scale, it needs to add offsets of fixed size in pixels to general scale Y\n const tempY = scaleY\n .copy()\n .domain([min, max])\n .range(\n isVertical\n ? [chartHeight - paddingBottom, statsPadding]\n : [paddingBottom, chartWidth - statsPadding]\n );\n scaleY\n .domain([tempY.invert(isVertical ? chartHeight : 0), tempY.invert(isVertical ? 0 : chartWidth)])\n .range(isVertical ? [chartHeight, 0] : [0, chartWidth]);\n this.scales.y[key] = scaleY;\n\n const facetPrimaryKeys = sharedX ? primaryKeys : nonEmptyGroupsByFacets[key];\n this.scales.xPrimary[key] = scaleBand()\n .domain(facetPrimaryKeys)\n .range(isVertical ? [0, chartWidth] : [chartHeight, 0]);\n this.scales.xSecondary[key] = scaleBand()\n .domain(secondaryKeys)\n .range([0, this.scales.xPrimary[key].bandwidth()]);\n });\n }\n\n createFacetTitles(facetKeys: string[], facetLabels: string[][]) {\n this.facetTitles = facetKeys.reduce((res: Record<string, string[]>, key, idx) => {\n if (facetLabels[idx].length === 1 && facetLabels[idx][0] === 'null') {\n res[key] = [];\n } else {\n res[key] = splitTextByWidth(facetLabels[idx].join(', '), this.chartSizes.chartWidth, 14);\n }\n return res;\n }, {});\n }\n\n createMainTitle(facetKeys: string[], title: DiscreteSettingsImpl['chartSettings']['title']) {\n const firstChart = this.chartsDimensions[facetKeys[0]];\n const lastChart = this.chartsDimensions[facetKeys[facetKeys.length - 1]];\n\n this.mainTitle = splitTextByWidth(\n title.name,\n this.chartSizes.chartsWidth - firstChart.padding.left - lastChart.padding.right,\n 20\n );\n }\n\n createAxisLabels(\n facetKeys: string[],\n xAxis: DiscreteSettingsImpl['chartSettings']['xAxis'],\n primaryGrouping: GroupingData,\n orientation: Orientation\n ) {\n const DEFAULT_MAX_WIDTH = {\n center: 120,\n '45deg': 256,\n '90deg': 320,\n };\n const isVertical = orientation === 'vertical';\n\n function getMaxLinesCount(labelsPosition: 'center' | '45deg' | '90deg', bandwidth: number) {\n if (labelsPosition === 'center') {\n return Infinity;\n }\n if (labelsPosition === '45deg') {\n return Math.floor((bandwidth * Math.sin(Math.PI / 4)) / CAPTION_LINE_HEIGHT);\n }\n return Math.floor(bandwidth / CAPTION_LINE_HEIGHT);\n }\n\n this.axisLabelsX = facetKeys.reduce((res: Record<string, Record<string, string[]>>, facetKey) => {\n const scale = this.scales.xPrimary[facetKey];\n const bandwidth = scale.bandwidth();\n const defaultWidth = DEFAULT_MAX_WIDTH[xAxis.labelsPosition];\n const width = xAxis.labelsPosition === 'center' ? Math.min(defaultWidth, bandwidth) : defaultWidth;\n const labelsMap = primaryGrouping.valueLabels;\n res[facetKey] = scale.domain().reduce((res2: Record<string, string[]>, axisKey) => {\n if (xAxis.hiddenLabels) {\n res2[axisKey] = [];\n return res2;\n }\n const label = labelsMap[axisKey];\n if (!isVertical) {\n res2[axisKey] = [label];\n } else {\n const maxLinesCount = getMaxLinesCount(xAxis.labelsPosition, bandwidth);\n const multilineKey = splitTextByWidth(label, width, 14);\n res2[axisKey] = multilineKey.length > maxLinesCount ? [label] : multilineKey;\n }\n return res2;\n }, {});\n return res;\n }, {});\n }\n\n updateAesScales(primaryGrouping: GroupingData, secondaryGrouping: GroupingData) {\n if (primaryGrouping.inheritedAes) {\n const {inheritedAes, keys} = primaryGrouping;\n this.scales.xPrimaryAes.domain(keys).range(keys.map(key => inheritedAes[key] ?? DEFAULT_COMMON_AES));\n } else {\n this.scales.xPrimaryAes.domain([]).range([]);\n }\n if (secondaryGrouping.inheritedAes) {\n const {inheritedAes, keys} = secondaryGrouping;\n this.scales.xSecondaryAes.domain(keys).range(keys.map(key => inheritedAes[key] ?? DEFAULT_COMMON_AES));\n } else {\n this.scales.xSecondaryAes.domain([]).range([]);\n }\n }\n\n updateCaptionsSize(\n orientation: Orientation,\n facetKeys: string[],\n xAxis: DiscreteSettingsImpl['chartSettings']['xAxis'],\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis'],\n ) {\n const LABEL_FONT_SIZE = 14;\n const textMeasurer = new TextMeasurer(`600 ${LABEL_FONT_SIZE}px Manrope`);\n const isVertical = orientation === 'vertical';\n\n function getMaxStrWidth(strs: string[]) {\n if (!strs.length) {\n return 0;\n }\n return Math.max(...strs.map(str => textMeasurer.getTextWidth(str)));\n }\n\n function getMultilineMaxStrWidth(strs: string[][]) {\n if (!strs.length) {\n return 0;\n }\n return Math.max(...strs.map(getMaxStrWidth));\n }\n\n // x ticks are always strings and can have variable width in different facets, and can be rotated;\n // for x we consider the widest tick caption in row (column for horizontal orientation);\n // y ticks are always numbers, and we consider only the widest number of all facets\n // because numbers sizes are closer to each other, and it makes more equal facets grid without superwide empty offsets\n let xAxisCaptionsWidthByRows: number[] = [];\n let xTail = 0;\n\n const facetRows = getFacetRows(facetKeys, this.rowsCount, this.columnsCount);\n const facetColumns = getFacetColumns(facetKeys, this.rowsCount, this.columnsCount);\n if (!isVertical) {\n // with horizontal chart orientation X ticks are always in horizontal position\n xAxisCaptionsWidthByRows = facetColumns\n // max of ticks width in every facet's column\n .map(columnFacetKeys =>\n Math.max(\n ...columnFacetKeys.map(facetKey =>\n getMultilineMaxStrWidth(\n this.scales.xPrimary[facetKey]\n .domain()\n .map(axisKey => this.axisLabelsX[facetKey][axisKey])\n )\n )\n )\n );\n } else {\n if (xAxis.labelsPosition === 'center') {\n xAxisCaptionsWidthByRows = facetRows.map(rowFacetKeys =>\n Math.max(\n ...rowFacetKeys.map(facetKey =>\n Math.max(\n ...this.scales.xPrimary[facetKey]\n .domain()\n // do not consider empty ticks captions, for example - single group\n .map(axisKey =>\n axisKey ? this.axisLabelsX[facetKey][axisKey].length * CAPTION_LINE_HEIGHT : 0\n )\n )\n )\n )\n );\n }\n if (xAxis.labelsPosition === '45deg') {\n const sin45 = Math.sin(Math.PI / 4);\n xAxisCaptionsWidthByRows = facetRows.map(rowKeys => {\n return Math.max(\n ...rowKeys.map(key => {\n const labels = this.scales.xPrimary[key]\n .domain()\n .map(axisKey => this.axisLabelsX[key][axisKey]);\n const ticksWidth = getMultilineMaxStrWidth(labels);\n return ticksWidth > 0 ? ticksWidth * sin45 + LABEL_FONT_SIZE : 0;\n })\n );\n });\n xTail = Math.max(\n ...facetColumns[0].map(facetKey => {\n const ticks = this.scales.xPrimary[facetKey].domain();\n const sideTick = this.axisLabelsX[facetKey][ticks[0]];\n return Math.max(\n getMaxStrWidth(sideTick) * sin45 -\n this.scales.xPrimary[facetKey].bandwidth() / 2 +\n LABEL_FONT_SIZE,\n 0\n );\n })\n );\n }\n if (xAxis.labelsPosition === '90deg') {\n xAxisCaptionsWidthByRows = facetRows\n // max of ticks width in every facet's row\n .map(rowKeys =>\n Math.max(\n ...rowKeys.map(facetKey =>\n getMultilineMaxStrWidth(\n this.scales.xPrimary[facetKey]\n .domain()\n .map(axisKey => this.axisLabelsX[facetKey][axisKey])\n )\n )\n )\n );\n }\n }\n\n const yTicks = lodash.flatten(\n facetKeys.map(facetKey => {\n if (yAxis.hiddenLabels) {\n return [];\n }\n const scaleY = this.scales.y[facetKey];\n const ticks = scaleY.ticks();\n const specifier = ticks.some(tick => (Math.abs(tick) < 0.0001 && tick !== 0) || tick > 10000)\n ? ',e'\n : ',f';\n const format = scaleY.tickFormat(10, specifier);\n return ticks.map(format);\n })\n );\n const yAxisCaptionsWidth = getMaxStrWidth(yTicks);\n\n this.captionsSizes = {\n xCaptionsTail: xTail,\n xAxisCaptionsWidthByRows,\n yAxisCaptionsWidth,\n };\n }\n\n updateMargins(orientation: Orientation, facetKeys: string[], size:DiscreteSettingsImpl['chartSettings']['size']) {\n const firstChart = this.chartsDimensions[facetKeys[0]];\n const lastChart = this.chartsDimensions[facetKeys[facetKeys.length - 1]];\n const isVertical = orientation === 'vertical';\n\n const mainTitleHeight = this.mainTitle.length ? TITLE_LINE_HEIGHT * this.mainTitle.length + TITLE_MARGIN * 2 : 0;\n const minMargin = size.outerOffset;\n this.margins = {\n left: Math.max(minMargin, isVertical ? this.captionsSizes.xCaptionsTail - firstChart.padding.left : 0),\n right: this.legend.width + minMargin,\n top: Math.max(mainTitleHeight, minMargin),\n bottom: Math.max(minMargin, isVertical ? 0 : this.captionsSizes.xCaptionsTail - lastChart.padding.bottom),\n };\n this.chartSizes.totalWidth = this.margins.left + this.chartSizes.chartsWidth + this.margins.right;\n this.chartSizes.totalHeight =\n this.margins.top + Math.max(this.chartSizes.chartsHeight, this.legend.height) + this.margins.bottom;\n }\n\n updateLegendSize(\n legend: DiscreteSettingsImpl['chartSettings']['legend'],\n primaryGrouping: GroupingData,\n secondaryGrouping: GroupingData,\n layersData: LayerData[]\n ) {\n if (!legend.show) {\n this.legend = {width: 0, height: 0, items: []};\n return;\n }\n const legendHeight = this.chartSizes.chartHeight;\n const emptySizes = {width:0, height:0, left:0, top: 0};\n const legendItems: LegendItemDiscreteMultiAes[] = [];\n\n function layersHasInheritedAesByField(\n type: 'primaryGrouping' | 'secondaryGrouping',\n field: keyof LegendItemDiscreteMultiAes['usedAes']\n ) {\n return layersData.some(l => {\n const value = l.aes[field as keyof typeof l.aes];\n return value && isInheritAes(value) && value.type === type;\n });\n }\n function getUsedAes(type: 'primaryGrouping' | 'secondaryGrouping'): LegendItemDiscreteMultiAes['usedAes'] {\n return {\n dotFill: layersHasInheritedAesByField(type, 'dotFill'),\n fillColor: layersHasInheritedAesByField(type, 'fillColor'),\n lineColor: layersHasInheritedAesByField(type, 'lineColor'),\n dotShape: layersHasInheritedAesByField(type, 'dotShape'),\n lineShape: layersHasInheritedAesByField(type, 'lineShape'),\n };\n }\n const primaryUsedAes = getUsedAes('primaryGrouping');\n const secondaryUsedAes = getUsedAes('secondaryGrouping');\n if (Object.values(primaryUsedAes).some(v => v) && primaryGrouping.inheritedAes) {\n legendItems.push({\n type: 'discreteMulti',\n id: 'primary',\n title: primaryGrouping.label,\n scale: this.scales.xPrimaryAes,\n values: primaryGrouping.keys,\n labels: primaryGrouping.valueLabels,\n usedAes: primaryUsedAes,\n ...emptySizes,\n });\n }\n if (Object.values(secondaryUsedAes).some(v => v) && secondaryGrouping.inheritedAes) {\n legendItems.push({\n type: 'discreteMulti',\n id: 'secondary',\n title: secondaryGrouping.label,\n scale: this.scales.xSecondaryAes,\n values: secondaryGrouping.keys,\n labels: secondaryGrouping.valueLabels,\n usedAes: secondaryUsedAes,\n ...emptySizes\n });\n }\n\n if (!legendItems.length) {\n this.legend = {width: 0, height: 0, items: []};\n return;\n }\n\n const items = arrangeLegendParts(legendItems, this.chartSizes.chartHeight);\n const lastItem = items[items.length - 1];\n const legendWidth = lastItem.left + lastItem.width + LEGEND_OFFSET;\n\n this.legend = {\n width: legendWidth,\n height: legendHeight,\n items\n };\n }\n\n render(\n settingsId: string,\n chartSettings: DiscreteSettingsImpl['chartSettings'],\n primaryGrouping: GroupingData,\n secondaryGrouping: GroupingData,\n facetSettings: DiscreteSettingsImpl['facetSettings'],\n facetKeys: string[],\n facetLabels: string[][],\n layersData: LayerData[],\n statsData: StatsData[],\n keyColumn: ColumnName | null,\n nonEmptyGroupsByFacets: Record<string, string[]>,\n onlyPositive: boolean,\n onTooltipHintSwitch: (v:boolean) => void\n ) {\n const {orientation, xAxis, yAxis, size} = chartSettings;\n this.updateChartSize(size, facetKeys, facetSettings, primaryGrouping.keys, orientation, statsData);\n this.updateViewport(\n orientation,\n primaryGrouping.keys,\n secondaryGrouping.keys,\n facetKeys,\n facetSettings,\n yAxis,\n layersData,\n statsData,\n size,\n nonEmptyGroupsByFacets\n );\n this.createAxisLabels(facetKeys, xAxis, primaryGrouping, orientation);\n this.createFacetTitles(facetKeys, facetLabels);\n this.updateCaptionsSize(orientation, facetKeys, xAxis, yAxis);\n this.updateChartDimensions(facetKeys, facetSettings, orientation, xAxis, yAxis);\n this.updateLegendSize(chartSettings.legend, primaryGrouping, secondaryGrouping, layersData);\n this.createMainTitle(facetKeys, chartSettings.title);\n this.updateMargins(orientation, facetKeys, size);\n this.updateAesScales(primaryGrouping, secondaryGrouping);\n\n const component = (\n <ChartsGroup\n settingsId={settingsId}\n chartSettings={chartSettings}\n facetKeys={facetKeys}\n facetSettings={facetSettings}\n facetTitles={this.facetTitles}\n chartSizes={this.chartSizes}\n chartsDimensions={this.chartsDimensions}\n scales={this.scales}\n layersData={layersData}\n statsData={statsData}\n legendData={this.legend}\n margins={this.margins}\n columnsCount={this.columnsCount}\n keyColumn={keyColumn}\n xLabels={this.axisLabelsX}\n chartTitle={this.mainTitle}\n onlyPositive={onlyPositive}\n secondaryGrouping={secondaryGrouping}\n onTooltipHintSwitch={onTooltipHintSwitch}\n />\n );\n this.component = component;\n this.reactRoot?.render(component);\n }\n\n renderError(message: string) {\n this.reactRoot?.render(<Error message={message} />);\n }\n}\n\nexport default ChartRenderer;\n"],"names":["getChartEdgeSides","index","facetsCount","columnsCount","rowsCount","chartSides","calculatePaddings","orientation","xAxis","yAxis","captionsSizes","currentRowFacetKeys","facetTitles","chartEdgeSides","facetSettings","currentRow","currentColumn","lastInRow","isVertical","needLeftAxis","needLeftAxisTitle","needBottomAxis","needBottomAxisTitle","yCaptions","yTicks","DEFAULT_TICKS_SIZE","TICK_OFFSET","yAxisTitle","TITLE_LINE","xCaptions","xTicks","xAxisTitle","leftAxisElements","bottomAxisElements","facetTitlesLinesCount","key","MIN_PADDING","FACET_TITLE_OFFSET","FACET_TITLE_LINE","getFacetColumns","facetKeys","nRows","nColumns","result","i","j","getFacetRows","getRowColumn","idx","row","column","isInheritAes","v","ChartRenderer","__publicField","jsx","Fragment","DEFAULT_WIDTH","DEFAULT_HEIGHT","scaleBand","scaleLinear","scaleOrdinal","DEFAULT_AES","_a","node","createRoot","size","primaryKeys","statsData","paddingTop","paddingBottom","statsPadding","getChartStatsPadding","facetCount","maxNRows","maxNCols","width","height","chartWidth","chartHeight","currentLeft","currentTop","res","padding","outerWidth","outerHeight","chartsWidth","chartsHeight","secondaryKeys","layersData","nonEmptyGroupsByFacets","sharedX","sharedY","scaleY","scaleLog","min","meta","geoms","boundsY","max","tempY","facetPrimaryKeys","facetLabels","splitTextByWidth","title","firstChart","lastChart","primaryGrouping","DEFAULT_MAX_WIDTH","getMaxLinesCount","labelsPosition","bandwidth","CAPTION_LINE_HEIGHT","facetKey","scale","defaultWidth","labelsMap","res2","axisKey","label","maxLinesCount","multilineKey","secondaryGrouping","inheritedAes","keys","DEFAULT_COMMON_AES","textMeasurer","TextMeasurer","getMaxStrWidth","strs","str","getMultilineMaxStrWidth","xAxisCaptionsWidthByRows","xTail","facetRows","facetColumns","columnFacetKeys","rowFacetKeys","sin45","rowKeys","labels","ticksWidth","ticks","sideTick","lodash","specifier","tick","format","yAxisCaptionsWidth","mainTitleHeight","TITLE_LINE_HEIGHT","TITLE_MARGIN","minMargin","legend","legendHeight","emptySizes","legendItems","layersHasInheritedAesByField","type","field","l","value","getUsedAes","primaryUsedAes","secondaryUsedAes","items","arrangeLegendParts","lastItem","legendWidth","LEGEND_OFFSET","settingsId","chartSettings","keyColumn","onlyPositive","onTooltipHintSwitch","component","ChartsGroup","message","Error"],"mappings":"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"}
1
+ {"version":3,"file":"ChartRenderer.js","sources":["../../src/discrete/ChartRenderer.tsx"],"sourcesContent":["import { scaleBand, scaleLinear, scaleLog, scaleOrdinal } from 'd3-scale';\nimport lodash from 'lodash';\nimport type { ReactElement } from 'react';\nimport type { Root } from 'react-dom/client';\nimport { createRoot } from 'react-dom/client';\nimport { Error } from '../common/Error';\nimport type { LegendData, LegendItemDiscreteMultiAes } from '../common/types';\nimport { DataFrameProvider } from '../common/useDataFrame';\nimport { DEFAULT_HEIGHT, DEFAULT_WIDTH, TITLE_LINE_HEIGHT, TITLE_MARGIN } from '../constants';\nimport type { DataFrame, GroupKey } from '../DataFrame';\nimport { DEFAULT_COMMON_AES, DEFAULT_TICKS_SIZE } from '../scatterplot/constants';\nimport type { AesItem, ColumnName, GroupingData, InheritAesDiscrete, Orientation } from '../types';\nimport { arrangeLegendParts } from '../utils/arrangeLegendParts';\nimport { TextMeasurer } from '../utils/TextMeasurer/TextMeasurer';\nimport { ChartsGroup } from './components/ChartsGroup';\nimport type { CaptionsSizes, ChartDimensionsData, ChartSizes, ChartsScales, Margins } from './components/types';\nimport { CAPTION_LINE_HEIGHT, DEFAULT_AES, FACET_TITLE_LINE, FACET_TITLE_OFFSET, LEGEND_OFFSET, MIN_PADDING, TICK_OFFSET, TITLE_LINE } from './constants';\nimport type { DiscreteSettingsImpl } from './DiscreteSettingsImpl';\nimport type { LayerData, StatsData } from './layers/types';\nimport { getChartStatsPadding, splitTextByWidth } from './utils';\n\nfunction getChartEdgeSides(index: number, facetsCount: number, columnsCount: number, rowsCount: number) {\n const chartSides: ('left' | 'right' | 'top' | 'bottom')[] = [];\n if (index % columnsCount === columnsCount - 1) {\n chartSides.push('right');\n }\n if (index % columnsCount === 0) {\n chartSides.push('left');\n }\n if (index < columnsCount) {\n chartSides.push('top');\n }\n if (\n Math.ceil((index + 1) / columnsCount) === rowsCount ||\n (Math.ceil((index + 1) / columnsCount) === rowsCount - 1 &&\n index % columnsCount > (facetsCount - 1) % columnsCount)\n ) {\n chartSides.push('bottom');\n }\n return chartSides;\n}\n\nfunction calculatePaddings(\n orientation: Orientation,\n xAxis: DiscreteSettingsImpl['chartSettings']['xAxis'],\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis'],\n captionsSizes: CaptionsSizes,\n currentRowFacetKeys: string[],\n facetTitles: Record<string, string[]>,\n chartEdgeSides: ('left' | 'right' | 'top' | 'bottom')[],\n facetSettings: DiscreteSettingsImpl['facetSettings'],\n currentRow: number,\n currentColumn: number,\n lastInRow: boolean\n) {\n const isVertical = orientation === 'vertical';\n const needLeftAxis =\n chartEdgeSides.includes('left') ||\n (isVertical && !facetSettings?.sharedY) ||\n (!isVertical && !facetSettings?.sharedX);\n const needLeftAxisTitle = chartEdgeSides.includes('left') && yAxis.title !== '';\n const needBottomAxis =\n chartEdgeSides.includes('bottom') ||\n (isVertical && !facetSettings?.sharedX) ||\n (!isVertical && !facetSettings?.sharedY);\n const needBottomAxisTitle = chartEdgeSides.includes('bottom') && xAxis.title !== '';\n\n const yCaptions = captionsSizes.yAxisCaptionsWidth;\n const yTicks = (yAxis.showTicks ? DEFAULT_TICKS_SIZE : 0) + (yAxis.hiddenLabels ? 0 : TICK_OFFSET);\n const yAxisTitle = needLeftAxisTitle ? TITLE_LINE : 0;\n\n const xCaptions = captionsSizes.xAxisCaptionsWidthByRows[isVertical ? currentRow : currentColumn];\n const xTicks = (xAxis.showTicks ? DEFAULT_TICKS_SIZE : 0) + (xAxis.hiddenLabels ? 0 : TICK_OFFSET);\n const xAxisTitle = needBottomAxisTitle ? TITLE_LINE : 0;\n\n const leftAxisElements = isVertical ? yCaptions + yTicks + yAxisTitle : xCaptions + xTicks + xAxisTitle;\n const bottomAxisElements = isVertical ? xTicks + xCaptions + xAxisTitle : yTicks + 2 * TITLE_LINE;\n\n const facetTitlesLinesCount = Math.max(...currentRowFacetKeys.map(key => facetTitles[key].length));\n return {\n left: needLeftAxis ? leftAxisElements : MIN_PADDING,\n top: facetTitlesLinesCount === 0 ? 0 : FACET_TITLE_OFFSET * 2 + facetTitlesLinesCount * FACET_TITLE_LINE,\n bottom: needBottomAxis ? bottomAxisElements : MIN_PADDING,\n right: lastInRow ? 0 : MIN_PADDING,\n };\n}\n\n// facet keys grouped by columns\nfunction getFacetColumns(facetKeys: string[], nRows: number, nColumns: number): string[][] {\n const result: string[][] = new Array(nColumns).fill(null).map(() => []);\n for (let i = 0; i < nColumns; i++) {\n for (let j = 0; j < nRows; j++) {\n const facetIdx = j * nColumns + i;\n if (facetIdx < facetKeys.length) {\n result[i].push(facetKeys[j * nColumns + i]);\n }\n }\n }\n return result;\n}\n\n// facet keys grouped by rows\nfunction getFacetRows(facetKeys: string[], nRows: number, nColumns: number): string[][] {\n const result: string[][] = [];\n for (let i = 0; i < nRows; i++) {\n result.push(facetKeys.slice(i * nColumns, i * nColumns + nColumns));\n }\n return result;\n}\n\nfunction getRowColumn(idx: number, columnsCount: number) {\n const row = Math.floor(idx / columnsCount);\n const column = idx - row * columnsCount;\n return [row, column];\n}\n\nfunction isInheritAes(v: InheritAesDiscrete | string | number | boolean): v is InheritAesDiscrete {\n return typeof v === 'object' && 'type' in v;\n}\n\nclass ChartRenderer {\n reactRoot: Root | null = null;\n parentNode: HTMLElement | null = null;\n rootNode: HTMLElement | null = null;\n component: ReactElement = (<></>);\n chartsDimensions: Record<string, ChartDimensionsData> = {};\n chartSizes: ChartSizes = {\n chartWidth: DEFAULT_WIDTH, // width of single chart\n chartHeight: DEFAULT_HEIGHT, // height of single chart\n chartsWidth: DEFAULT_WIDTH, // width of all charts in charts row\n chartsHeight: DEFAULT_HEIGHT, // width of all charts in charts column, without axes\n totalWidth: DEFAULT_WIDTH, // width of all charts in charts row, plus left axis, plus legend\n totalHeight: DEFAULT_HEIGHT, // width of all charts in charts height, plus bottom axis, plus top title\n };\n columnsCount = 1;\n rowsCount = 1;\n scales: ChartsScales = {\n // Scale from primary grouping categories to every category x coordinate\n xPrimary: {null: scaleBand().range([0, DEFAULT_WIDTH]).domain(['1'])},\n // Scale from secondary grouping categories to x shift inside corresponding primary group\n xSecondary: {null: scaleBand().range([0, DEFAULT_WIDTH]).domain(['1'])},\n // Scale from y value to y coordinate, by facet\n y: {null: scaleLinear().domain([0, 10]).range([DEFAULT_HEIGHT, 0]).nice()},\n // Scale for link primary grouping category and aesthetics\n xPrimaryAes: scaleOrdinal<string, AesItem, AesItem>().unknown(DEFAULT_AES),\n // Scale for link secondary grouping category and aesthetics\n xSecondaryAes: scaleOrdinal<string, AesItem, AesItem>().unknown(DEFAULT_AES),\n };\n facetTitles: Record<string, string[]> = {}; // can be multiline\n mainTitle: string[] = []; // can be multiline\n axisLabelsX: Record<string, Record<string, string[]>> = {}; // can be multiline\n captionsSizes: CaptionsSizes = {\n xAxisCaptionsWidthByRows: [],\n xCaptionsTail: 0,\n yAxisCaptionsWidth: 100,\n };\n legend: LegendData = {width: 0, height: 0, items: []};\n margins: Margins = {left: 0, right: 0, top: 0, bottom: 0};\n\n clear() {\n if (this.parentNode && this.rootNode) {\n this.parentNode?.removeChild(this.rootNode);\n this.parentNode = null;\n this.rootNode = null;\n }\n // timeout to avoid trying to unmount during rendering\n setTimeout(() => {\n this.reactRoot?.unmount();\n this.reactRoot = null;\n });\n }\n\n init(node: HTMLElement) {\n if (this.parentNode === null) {\n this.parentNode = node;\n this.rootNode = document.createElement('div');\n this.parentNode.appendChild(this.rootNode);\n this.reactRoot = createRoot(this.rootNode);\n }\n }\n\n updateChartSize(\n size: DiscreteSettingsImpl['chartSettings']['size'],\n facetKeys: string[],\n facetSettings: DiscreteSettingsImpl['facetSettings'],\n primaryKeys: GroupKey[],\n orientation: Orientation,\n statsData: StatsData[]\n ) {\n const paddingTop = size.innerOffset;\n const paddingBottom = size.innerOffset;\n // It may be necessary increase chart height/width for p-value\n const statsPadding = getChartStatsPadding(statsData, primaryKeys, size.innerOffset);\n // Use columns/rows count from settings if some of them defined, else make 1 column\n const facetCount = facetKeys.length;\n const maxNRows = Math.min(facetSettings?.nRows ?? facetCount, facetCount);\n const maxNCols = Math.min(facetSettings?.nCols ?? facetCount, facetCount);\n // Use columns/rows count from settings if some of them defined, else make 1 column\n this.columnsCount = facetSettings?.nRows ? Math.ceil(facetCount / maxNRows) : maxNCols;\n this.rowsCount = Math.ceil(facetCount / this.columnsCount);\n\n let {width, height} = size;\n // avoid situation when statistics fill all available chart area\n if (orientation === 'vertical' && statsPadding > paddingTop) {\n height += statsPadding;\n }\n if (orientation === 'horizontal' && statsPadding > paddingBottom) {\n width += statsPadding;\n }\n this.chartSizes.chartWidth = width;\n this.chartSizes.chartHeight = height;\n }\n\n updateChartDimensions(\n facetKeys: string[],\n facetSettings: DiscreteSettingsImpl['facetSettings'],\n orientation: Orientation,\n xAxis: DiscreteSettingsImpl['chartSettings']['xAxis'],\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis']\n ) {\n const {chartWidth, chartHeight} = this.chartSizes;\n let currentLeft = 0;\n let currentTop = 0;\n this.chartsDimensions = facetKeys.reduce((res: Record<string, ChartDimensionsData>, key: string, index) => {\n const [currentRow, currentColumn] = getRowColumn(index, this.columnsCount);\n const chartEdgeSides = getChartEdgeSides(index, facetKeys.length, this.columnsCount, this.rowsCount);\n const padding = calculatePaddings(\n orientation,\n xAxis,\n yAxis,\n this.captionsSizes,\n getFacetRows(facetKeys, this.rowsCount, this.columnsCount)[currentRow],\n this.facetTitles,\n chartEdgeSides,\n facetSettings,\n currentRow,\n currentColumn,\n currentColumn === this.columnsCount - 1\n );\n\n const outerWidth = chartWidth + padding.left + padding.right;\n const outerHeight = chartHeight + padding.top + padding.bottom;\n\n res[key] = {\n left: currentLeft,\n top: currentTop,\n chartEdgeSides,\n padding,\n inner: {width: chartWidth, height: chartHeight},\n outer: {width: outerWidth, height: outerHeight},\n };\n currentLeft += outerWidth;\n if (currentColumn === this.columnsCount - 1) {\n currentLeft = 0;\n currentTop += outerHeight;\n }\n return res;\n }, {});\n\n const chartsWidth = Math.max(\n ...facetKeys.map(key => this.chartsDimensions[key].outer.width + this.chartsDimensions[key].left)\n );\n const chartsHeight = Math.max(\n ...facetKeys.map(key => this.chartsDimensions[key].outer.height + this.chartsDimensions[key].top)\n );\n\n this.chartSizes.chartsWidth = chartsWidth;\n this.chartSizes.chartsHeight = chartsHeight;\n }\n\n updateViewport(\n orientation: Orientation,\n primaryKeys: string[],\n secondaryKeys: string[],\n facetKeys: string[],\n facetSettings: DiscreteSettingsImpl['facetSettings'],\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis'],\n layersData: LayerData[],\n statsData: StatsData[],\n size: DiscreteSettingsImpl['chartSettings']['size'],\n nonEmptyGroupsByFacets: Record<string, string[]>,\n ) {\n const paddingBottom = size.innerOffset;\n const isVertical = orientation === 'vertical';\n const statsPadding = getChartStatsPadding(statsData, primaryKeys, size.innerOffset);\n const sharedX = facetSettings === null || facetSettings.sharedX;\n const sharedY = facetSettings === null || facetSettings.sharedY;\n\n const {chartHeight, chartWidth} = this.chartSizes;\n facetKeys.forEach(key => {\n const scaleY = yAxis.scale === 'log' ? scaleLog() : scaleLinear();\n const min = sharedY\n ? Math.min(...layersData.map(({meta}) => meta.minY))\n : Math.min(...layersData.map(({geoms}) => Math.min(...geoms[key].map(({boundsY}) => boundsY.min))));\n const max = sharedY\n ? Math.max(...layersData.map(({meta}) => meta.maxY))\n : Math.max(...layersData.map(({geoms}) => Math.max(...geoms[key].map(({boundsY}) => boundsY.max))));\n\n // supporting scale, it needs to add offsets of fixed size in pixels to general scale Y\n const tempY = scaleY\n .copy()\n .domain([min, max])\n .range(\n isVertical\n ? [chartHeight - paddingBottom, statsPadding]\n : [paddingBottom, chartWidth - statsPadding]\n );\n scaleY\n .domain([tempY.invert(isVertical ? chartHeight : 0), tempY.invert(isVertical ? 0 : chartWidth)])\n .range(isVertical ? [chartHeight, 0] : [0, chartWidth]);\n this.scales.y[key] = scaleY;\n\n const facetPrimaryKeys = sharedX ? primaryKeys : nonEmptyGroupsByFacets[key];\n this.scales.xPrimary[key] = scaleBand()\n .domain(facetPrimaryKeys)\n .range(isVertical ? [0, chartWidth] : [chartHeight, 0]);\n this.scales.xSecondary[key] = scaleBand()\n .domain(secondaryKeys)\n .range([0, this.scales.xPrimary[key].bandwidth()]);\n });\n }\n\n createFacetTitles(facetKeys: string[], facetLabels: string[][]) {\n this.facetTitles = facetKeys.reduce((res: Record<string, string[]>, key, idx) => {\n if (facetLabels[idx].length === 1 && facetLabels[idx][0] === 'null') {\n res[key] = [];\n } else {\n res[key] = splitTextByWidth(facetLabels[idx].join(', '), this.chartSizes.chartWidth, 14);\n }\n return res;\n }, {});\n }\n\n createMainTitle(facetKeys: string[], title: DiscreteSettingsImpl['chartSettings']['title']) {\n const firstChart = this.chartsDimensions[facetKeys[0]];\n const lastChart = this.chartsDimensions[facetKeys[facetKeys.length - 1]];\n\n this.mainTitle = splitTextByWidth(\n title.name,\n this.chartSizes.chartsWidth - firstChart.padding.left - lastChart.padding.right,\n 20\n );\n }\n\n createAxisLabels(\n facetKeys: string[],\n xAxis: DiscreteSettingsImpl['chartSettings']['xAxis'],\n primaryGrouping: GroupingData,\n orientation: Orientation\n ) {\n const DEFAULT_MAX_WIDTH = {\n center: 120,\n '45deg': 256,\n '90deg': 320,\n };\n const isVertical = orientation === 'vertical';\n\n function getMaxLinesCount(labelsPosition: 'center' | '45deg' | '90deg', bandwidth: number) {\n if (labelsPosition === 'center') {\n return Infinity;\n }\n if (labelsPosition === '45deg') {\n return Math.floor((bandwidth * Math.sin(Math.PI / 4)) / CAPTION_LINE_HEIGHT);\n }\n return Math.floor(bandwidth / CAPTION_LINE_HEIGHT);\n }\n\n this.axisLabelsX = facetKeys.reduce((res: Record<string, Record<string, string[]>>, facetKey) => {\n const scale = this.scales.xPrimary[facetKey];\n const bandwidth = scale.bandwidth();\n const defaultWidth = DEFAULT_MAX_WIDTH[xAxis.labelsPosition];\n const width = xAxis.labelsPosition === 'center' ? Math.min(defaultWidth, bandwidth) : defaultWidth;\n const labelsMap = primaryGrouping.valueLabels;\n res[facetKey] = scale.domain().reduce((res2: Record<string, string[]>, axisKey) => {\n if (xAxis.hiddenLabels) {\n res2[axisKey] = [];\n return res2;\n }\n const label = labelsMap[axisKey];\n if (!isVertical) {\n res2[axisKey] = [label];\n } else {\n const maxLinesCount = getMaxLinesCount(xAxis.labelsPosition, bandwidth);\n const multilineKey = splitTextByWidth(label, width, 14);\n res2[axisKey] = multilineKey.length > maxLinesCount ? [label] : multilineKey;\n }\n return res2;\n }, {});\n return res;\n }, {});\n }\n\n updateAesScales(primaryGrouping: GroupingData, secondaryGrouping: GroupingData) {\n if (primaryGrouping.inheritedAes) {\n const {inheritedAes, keys} = primaryGrouping;\n this.scales.xPrimaryAes.domain(keys).range(keys.map(key => inheritedAes[key] ?? DEFAULT_COMMON_AES));\n } else {\n this.scales.xPrimaryAes.domain([]).range([]);\n }\n if (secondaryGrouping.inheritedAes) {\n const {inheritedAes, keys} = secondaryGrouping;\n this.scales.xSecondaryAes.domain(keys).range(keys.map(key => inheritedAes[key] ?? DEFAULT_COMMON_AES));\n } else {\n this.scales.xSecondaryAes.domain([]).range([]);\n }\n }\n\n updateCaptionsSize(\n orientation: Orientation,\n facetKeys: string[],\n xAxis: DiscreteSettingsImpl['chartSettings']['xAxis'],\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis'],\n ) {\n const LABEL_FONT_SIZE = 14;\n const textMeasurer = new TextMeasurer(`600 ${LABEL_FONT_SIZE}px Manrope`);\n const isVertical = orientation === 'vertical';\n\n function getMaxStrWidth(strs: string[]) {\n if (!strs.length) {\n return 0;\n }\n return Math.max(...strs.map(str => textMeasurer.getTextWidth(str)));\n }\n\n function getMultilineMaxStrWidth(strs: string[][]) {\n if (!strs.length) {\n return 0;\n }\n return Math.max(...strs.map(getMaxStrWidth));\n }\n\n // x ticks are always strings and can have variable width in different facets, and can be rotated;\n // for x we consider the widest tick caption in row (column for horizontal orientation);\n // y ticks are always numbers, and we consider only the widest number of all facets\n // because numbers sizes are closer to each other, and it makes more equal facets grid without superwide empty offsets\n let xAxisCaptionsWidthByRows: number[] = [];\n let xTail = 0;\n\n const facetRows = getFacetRows(facetKeys, this.rowsCount, this.columnsCount);\n const facetColumns = getFacetColumns(facetKeys, this.rowsCount, this.columnsCount);\n if (!isVertical) {\n // with horizontal chart orientation X ticks are always in horizontal position\n xAxisCaptionsWidthByRows = facetColumns\n // max of ticks width in every facet's column\n .map(columnFacetKeys =>\n Math.max(\n ...columnFacetKeys.map(facetKey =>\n getMultilineMaxStrWidth(\n this.scales.xPrimary[facetKey]\n .domain()\n .map(axisKey => this.axisLabelsX[facetKey][axisKey])\n )\n )\n )\n );\n } else {\n if (xAxis.labelsPosition === 'center') {\n xAxisCaptionsWidthByRows = facetRows.map(rowFacetKeys =>\n Math.max(\n ...rowFacetKeys.map(facetKey =>\n Math.max(\n ...this.scales.xPrimary[facetKey]\n .domain()\n // do not consider empty ticks captions, for example - single group\n .map(axisKey =>\n axisKey ? this.axisLabelsX[facetKey][axisKey].length * CAPTION_LINE_HEIGHT : 0\n )\n )\n )\n )\n );\n }\n if (xAxis.labelsPosition === '45deg') {\n const sin45 = Math.sin(Math.PI / 4);\n xAxisCaptionsWidthByRows = facetRows.map(rowKeys => {\n return Math.max(\n ...rowKeys.map(key => {\n const labels = this.scales.xPrimary[key]\n .domain()\n .map(axisKey => this.axisLabelsX[key][axisKey]);\n const ticksWidth = getMultilineMaxStrWidth(labels);\n return ticksWidth > 0 ? ticksWidth * sin45 + LABEL_FONT_SIZE : 0;\n })\n );\n });\n xTail = Math.max(\n ...facetColumns[0].map(facetKey => {\n const ticks = this.scales.xPrimary[facetKey].domain();\n const sideTick = this.axisLabelsX[facetKey][ticks[0]];\n return Math.max(\n getMaxStrWidth(sideTick) * sin45 -\n this.scales.xPrimary[facetKey].bandwidth() / 2 +\n LABEL_FONT_SIZE,\n 0\n );\n })\n );\n }\n if (xAxis.labelsPosition === '90deg') {\n xAxisCaptionsWidthByRows = facetRows\n // max of ticks width in every facet's row\n .map(rowKeys =>\n Math.max(\n ...rowKeys.map(facetKey =>\n getMultilineMaxStrWidth(\n this.scales.xPrimary[facetKey]\n .domain()\n .map(axisKey => this.axisLabelsX[facetKey][axisKey])\n )\n )\n )\n );\n }\n }\n\n const yTicks = lodash.flatten(\n facetKeys.map(facetKey => {\n if (yAxis.hiddenLabels) {\n return [];\n }\n const scaleY = this.scales.y[facetKey];\n const ticks = scaleY.ticks();\n const specifier = ticks.some(tick => (Math.abs(tick) < 0.0001 && tick !== 0) || tick > 10000)\n ? ',e'\n : ',f';\n const format = scaleY.tickFormat(10, specifier);\n return ticks.map(format);\n })\n );\n const yAxisCaptionsWidth = getMaxStrWidth(yTicks);\n\n this.captionsSizes = {\n xCaptionsTail: xTail,\n xAxisCaptionsWidthByRows,\n yAxisCaptionsWidth,\n };\n }\n\n updateMargins(orientation: Orientation, facetKeys: string[], size:DiscreteSettingsImpl['chartSettings']['size']) {\n const firstChart = this.chartsDimensions[facetKeys[0]];\n const lastChart = this.chartsDimensions[facetKeys[facetKeys.length - 1]];\n const isVertical = orientation === 'vertical';\n\n const mainTitleHeight = this.mainTitle.length ? TITLE_LINE_HEIGHT * this.mainTitle.length + TITLE_MARGIN * 2 : 0;\n const minMargin = size.outerOffset;\n this.margins = {\n left: Math.max(minMargin, isVertical ? this.captionsSizes.xCaptionsTail - firstChart.padding.left : 0),\n right: this.legend.width + minMargin,\n top: Math.max(mainTitleHeight, minMargin),\n bottom: Math.max(minMargin, isVertical ? 0 : this.captionsSizes.xCaptionsTail - lastChart.padding.bottom),\n };\n this.chartSizes.totalWidth = this.margins.left + this.chartSizes.chartsWidth + this.margins.right;\n this.chartSizes.totalHeight =\n this.margins.top + Math.max(this.chartSizes.chartsHeight, this.legend.height) + this.margins.bottom;\n }\n\n updateLegendSize(\n legend: DiscreteSettingsImpl['chartSettings']['legend'],\n primaryGrouping: GroupingData,\n secondaryGrouping: GroupingData,\n layersData: LayerData[]\n ) {\n if (!legend.show) {\n this.legend = {width: 0, height: 0, items: []};\n return;\n }\n const legendHeight = this.chartSizes.chartHeight;\n const emptySizes = {width:0, height:0, left:0, top: 0};\n const legendItems: LegendItemDiscreteMultiAes[] = [];\n\n function layersHasInheritedAesByField(\n type: 'primaryGrouping' | 'secondaryGrouping',\n field: keyof LegendItemDiscreteMultiAes['usedAes']\n ) {\n return layersData.some(l => {\n const value = l.aes[field as keyof typeof l.aes];\n return value && isInheritAes(value) && value.type === type;\n });\n }\n function getUsedAes(type: 'primaryGrouping' | 'secondaryGrouping'): LegendItemDiscreteMultiAes['usedAes'] {\n return {\n dotFill: layersHasInheritedAesByField(type, 'dotFill'),\n fillColor: layersHasInheritedAesByField(type, 'fillColor'),\n lineColor: layersHasInheritedAesByField(type, 'lineColor'),\n dotShape: layersHasInheritedAesByField(type, 'dotShape'),\n lineShape: layersHasInheritedAesByField(type, 'lineShape'),\n };\n }\n const primaryUsedAes = getUsedAes('primaryGrouping');\n const secondaryUsedAes = getUsedAes('secondaryGrouping');\n if (Object.values(primaryUsedAes).some(v => v) && primaryGrouping.inheritedAes) {\n legendItems.push({\n type: 'discreteMulti',\n id: 'primary',\n title: primaryGrouping.label,\n scale: this.scales.xPrimaryAes,\n values: primaryGrouping.keys,\n labels: primaryGrouping.valueLabels,\n usedAes: primaryUsedAes,\n ...emptySizes,\n });\n }\n if (Object.values(secondaryUsedAes).some(v => v) && secondaryGrouping.inheritedAes) {\n legendItems.push({\n type: 'discreteMulti',\n id: 'secondary',\n title: secondaryGrouping.label,\n scale: this.scales.xSecondaryAes,\n values: secondaryGrouping.keys,\n labels: secondaryGrouping.valueLabels,\n usedAes: secondaryUsedAes,\n ...emptySizes\n });\n }\n\n if (!legendItems.length) {\n this.legend = {width: 0, height: 0, items: []};\n return;\n }\n\n const items = arrangeLegendParts(legendItems, this.chartSizes.chartHeight);\n const lastItem = items[items.length - 1];\n const legendWidth = lastItem.left + lastItem.width + LEGEND_OFFSET;\n\n this.legend = {\n width: legendWidth,\n height: legendHeight,\n items\n };\n }\n\n render(\n dataFrame: DataFrame,\n settingsId: string,\n chartSettings: DiscreteSettingsImpl['chartSettings'],\n primaryGrouping: GroupingData,\n secondaryGrouping: GroupingData,\n facetSettings: DiscreteSettingsImpl['facetSettings'],\n facetKeys: string[],\n facetLabels: string[][],\n layersData: LayerData[],\n statsData: StatsData[],\n keyColumn: ColumnName | null,\n nonEmptyGroupsByFacets: Record<string, string[]>,\n onlyPositive: boolean,\n onTooltipHintSwitch: (v:boolean) => void\n ) {\n const {orientation, xAxis, yAxis, size} = chartSettings;\n this.updateChartSize(size, facetKeys, facetSettings, primaryGrouping.keys, orientation, statsData);\n this.updateViewport(\n orientation,\n primaryGrouping.keys,\n secondaryGrouping.keys,\n facetKeys,\n facetSettings,\n yAxis,\n layersData,\n statsData,\n size,\n nonEmptyGroupsByFacets\n );\n this.createAxisLabels(facetKeys, xAxis, primaryGrouping, orientation);\n this.createFacetTitles(facetKeys, facetLabels);\n this.updateCaptionsSize(orientation, facetKeys, xAxis, yAxis);\n this.updateChartDimensions(facetKeys, facetSettings, orientation, xAxis, yAxis);\n this.updateLegendSize(chartSettings.legend, primaryGrouping, secondaryGrouping, layersData);\n this.createMainTitle(facetKeys, chartSettings.title);\n this.updateMargins(orientation, facetKeys, size);\n this.updateAesScales(primaryGrouping, secondaryGrouping);\n\n const component = (\n <DataFrameProvider dataFrame={dataFrame}>\n <ChartsGroup\n settingsId={settingsId}\n chartSettings={chartSettings}\n facetKeys={facetKeys}\n facetSettings={facetSettings}\n facetTitles={this.facetTitles}\n chartSizes={this.chartSizes}\n chartsDimensions={this.chartsDimensions}\n scales={this.scales}\n layersData={layersData}\n statsData={statsData}\n legendData={this.legend}\n margins={this.margins}\n columnsCount={this.columnsCount}\n keyColumn={keyColumn}\n xLabels={this.axisLabelsX}\n chartTitle={this.mainTitle}\n onlyPositive={onlyPositive}\n secondaryGrouping={secondaryGrouping}\n onTooltipHintSwitch={onTooltipHintSwitch}\n />\n </DataFrameProvider>\n );\n this.component = component;\n this.reactRoot?.render(component);\n }\n\n renderError(message: string) {\n this.reactRoot?.render(<Error message={message} />);\n }\n}\n\nexport default ChartRenderer;\n"],"names":["getChartEdgeSides","index","facetsCount","columnsCount","rowsCount","chartSides","calculatePaddings","orientation","xAxis","yAxis","captionsSizes","currentRowFacetKeys","facetTitles","chartEdgeSides","facetSettings","currentRow","currentColumn","lastInRow","isVertical","needLeftAxis","needLeftAxisTitle","needBottomAxis","needBottomAxisTitle","yCaptions","yTicks","DEFAULT_TICKS_SIZE","TICK_OFFSET","yAxisTitle","TITLE_LINE","xCaptions","xTicks","xAxisTitle","leftAxisElements","bottomAxisElements","facetTitlesLinesCount","key","MIN_PADDING","FACET_TITLE_OFFSET","FACET_TITLE_LINE","getFacetColumns","facetKeys","nRows","nColumns","result","i","j","getFacetRows","getRowColumn","idx","row","column","isInheritAes","v","ChartRenderer","__publicField","jsx","Fragment","DEFAULT_WIDTH","DEFAULT_HEIGHT","scaleBand","scaleLinear","scaleOrdinal","DEFAULT_AES","_a","node","createRoot","size","primaryKeys","statsData","paddingTop","paddingBottom","statsPadding","getChartStatsPadding","facetCount","maxNRows","maxNCols","width","height","chartWidth","chartHeight","currentLeft","currentTop","res","padding","outerWidth","outerHeight","chartsWidth","chartsHeight","secondaryKeys","layersData","nonEmptyGroupsByFacets","sharedX","sharedY","scaleY","scaleLog","min","meta","geoms","boundsY","max","tempY","facetPrimaryKeys","facetLabels","splitTextByWidth","title","firstChart","lastChart","primaryGrouping","DEFAULT_MAX_WIDTH","getMaxLinesCount","labelsPosition","bandwidth","CAPTION_LINE_HEIGHT","facetKey","scale","defaultWidth","labelsMap","res2","axisKey","label","maxLinesCount","multilineKey","secondaryGrouping","inheritedAes","keys","DEFAULT_COMMON_AES","textMeasurer","TextMeasurer","getMaxStrWidth","strs","str","getMultilineMaxStrWidth","xAxisCaptionsWidthByRows","xTail","facetRows","facetColumns","columnFacetKeys","rowFacetKeys","sin45","rowKeys","labels","ticksWidth","ticks","sideTick","lodash","specifier","tick","format","yAxisCaptionsWidth","mainTitleHeight","TITLE_LINE_HEIGHT","TITLE_MARGIN","minMargin","legend","legendHeight","emptySizes","legendItems","layersHasInheritedAesByField","type","field","l","value","getUsedAes","primaryUsedAes","secondaryUsedAes","items","arrangeLegendParts","lastItem","legendWidth","LEGEND_OFFSET","dataFrame","settingsId","chartSettings","keyColumn","onlyPositive","onTooltipHintSwitch","component","DataFrameProvider","ChartsGroup","message","Error"],"mappings":";;;;;;;;;;;;;;;;;;;;AAqBA,SAASA,GAAkBC,GAAeC,GAAqBC,GAAsBC,GAAmB;AACpG,QAAMC,IAAsD,CAAA;AAC5D,SAAIJ,IAAQE,MAAiBA,IAAe,KACxCE,EAAW,KAAK,OAAO,GAEvBJ,IAAQE,MAAiB,KACzBE,EAAW,KAAK,MAAM,GAEtBJ,IAAQE,KACRE,EAAW,KAAK,KAAK,IAGrB,KAAK,MAAMJ,IAAQ,KAAKE,CAAY,MAAMC,KACzC,KAAK,MAAMH,IAAQ,KAAKE,CAAY,MAAMC,IAAY,KACnDH,IAAQE,KAAgBD,IAAc,KAAKC,MAE/CE,EAAW,KAAK,QAAQ,GAErBA;AACX;AAEA,SAASC,GACLC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACF;AACE,QAAMC,IAAaX,MAAgB,YAC7BY,IACFN,EAAe,SAAS,MAAM,KAC7BK,KAAc,EAACJ,KAAA,QAAAA,EAAe,YAC9B,CAACI,KAAc,EAACJ,KAAA,QAAAA,EAAe,UAC9BM,IAAoBP,EAAe,SAAS,MAAM,KAAKJ,EAAM,UAAU,IACvEY,IACFR,EAAe,SAAS,QAAQ,KAC/BK,KAAc,EAACJ,KAAA,QAAAA,EAAe,YAC9B,CAACI,KAAc,EAACJ,KAAA,QAAAA,EAAe,UAC9BQ,IAAsBT,EAAe,SAAS,QAAQ,KAAKL,EAAM,UAAU,IAE3Ee,IAAYb,EAAc,oBAC1Bc,KAAUf,EAAM,YAAYgB,IAAqB,MAAMhB,EAAM,eAAe,IAAIiB,IAChFC,IAAaP,IAAoBQ,IAAa,GAE9CC,IAAYnB,EAAc,yBAAyBQ,IAAaH,IAAaC,CAAa,GAC1Fc,KAAUtB,EAAM,YAAYiB,IAAqB,MAAMjB,EAAM,eAAe,IAAIkB,IAChFK,IAAaT,IAAsBM,IAAa,GAEhDI,IAAmBd,IAAaK,IAAYC,IAASG,IAAaE,IAAYC,IAASC,GACvFE,IAAqBf,IAAaY,IAASD,IAAYE,IAAaP,IAAS,IAAII,GAEjFM,IAAwB,KAAK,IAAI,GAAGvB,EAAoB,IAAI,CAAAwB,MAAOvB,EAAYuB,CAAG,EAAE,MAAM,CAAC;AACjG,SAAO;AAAA,IACH,MAAMhB,IAAea,IAAmBI;AAAA,IACxC,KAAKF,MAA0B,IAAI,IAAIG,KAAqB,IAAIH,IAAwBI;AAAA,IACxF,QAAQjB,IAAiBY,IAAqBG;AAAA,IAC9C,OAAOnB,IAAY,IAAImB;AAAA,EAAA;AAE/B;AAGA,SAASG,GAAgBC,GAAqBC,GAAeC,GAA8B;AACvF,QAAMC,IAAqB,IAAI,MAAMD,CAAQ,EAAE,KAAK,IAAI,EAAE,IAAI,MAAM,EAAE;AACtE,WAASE,IAAI,GAAGA,IAAIF,GAAUE;AAC1B,aAASC,IAAI,GAAGA,IAAIJ,GAAOI;AAEvB,MADiBA,IAAIH,IAAWE,IACjBJ,EAAU,UACrBG,EAAOC,CAAC,EAAE,KAAKJ,EAAUK,IAAIH,IAAWE,CAAC,CAAC;AAItD,SAAOD;AACX;AAGA,SAASG,EAAaN,GAAqBC,GAAeC,GAA8B;AACpF,QAAMC,IAAqB,CAAA;AAC3B,WAASC,IAAI,GAAGA,IAAIH,GAAOG;AACvB,IAAAD,EAAO,KAAKH,EAAU,MAAMI,IAAIF,GAAUE,IAAIF,IAAWA,CAAQ,CAAC;AAEtE,SAAOC;AACX;AAEA,SAASI,GAAaC,GAAa7C,GAAsB;AACrD,QAAM8C,IAAM,KAAK,MAAMD,IAAM7C,CAAY,GACnC+C,IAASF,IAAMC,IAAM9C;AAC3B,SAAO,CAAC8C,GAAKC,CAAM;AACvB;AAEA,SAASC,GAAaC,GAA4E;AAC9F,SAAO,OAAOA,KAAM,YAAY,UAAUA;AAC9C;AAEA,MAAMC,GAAc;AAAA,EAApB;AACI,IAAAC,EAAA,mBAAyB;AACzB,IAAAA,EAAA,oBAAiC;AACjC,IAAAA,EAAA,kBAA+B;AAC/B,IAAAA,EAAA,mBAA2BC,gBAAAA,EAAAA,IAAAC,EAAAA,UAAA,EAAE;AAC7B,IAAAF,EAAA,0BAAwD,CAAA;AACxD,IAAAA,EAAA,oBAAyB;AAAA,MACrB,YAAYG;AAAA;AAAA,MACZ,aAAaC;AAAA;AAAA,MACb,aAAaD;AAAA;AAAA,MACb,cAAcC;AAAA;AAAA,MACd,YAAYD;AAAA;AAAA,MACZ,aAAaC;AAAA;AAAA,IAAA;AAEjB,IAAAJ,EAAA,sBAAe;AACf,IAAAA,EAAA,mBAAY;AACZ,IAAAA,EAAA,gBAAuB;AAAA;AAAA,MAEnB,UAAU,EAAC,MAAMK,EAAA,EAAY,MAAM,CAAC,GAAGF,CAAa,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,EAAA;AAAA;AAAA,MAEnE,YAAY,EAAC,MAAME,EAAA,EAAY,MAAM,CAAC,GAAGF,CAAa,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,EAAA;AAAA;AAAA,MAErE,GAAG,EAAC,MAAMG,IAAc,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAACF,GAAgB,CAAC,CAAC,EAAE,OAAK;AAAA;AAAA,MAExE,aAAaG,EAAA,EAAyC,QAAQC,CAAW;AAAA;AAAA,MAEzE,eAAeD,IAAyC,QAAQC,CAAW;AAAA,IAAA;AAE/E,IAAAR,EAAA,qBAAwC,CAAA;AACxC;AAAA,IAAAA,EAAA,mBAAsB,CAAA;AACtB;AAAA,IAAAA,EAAA,qBAAwD,CAAA;AACxD;AAAA,IAAAA,EAAA,uBAA+B;AAAA,MAC3B,0BAA0B,CAAA;AAAA,MAC1B,eAAe;AAAA,MACf,oBAAoB;AAAA,IAAA;AAExB,IAAAA,EAAA,gBAAqB,EAAC,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAC;AACnD,IAAAA,EAAA,iBAAmB,EAAC,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,EAAA;AAAA;AAAA,EAEvD,QAAQ;;AACJ,IAAI,KAAK,cAAc,KAAK,cACxBS,IAAA,KAAK,eAAL,QAAAA,EAAiB,YAAY,KAAK,WAClC,KAAK,aAAa,MAClB,KAAK,WAAW,OAGpB,WAAW,MAAM;;AACb,OAAAA,IAAA,KAAK,cAAL,QAAAA,EAAgB,WAChB,KAAK,YAAY;AAAA,IACrB,CAAC;AAAA,EACL;AAAA,EAEA,KAAKC,GAAmB;AACpB,IAAI,KAAK,eAAe,SACpB,KAAK,aAAaA,GAClB,KAAK,WAAW,SAAS,cAAc,KAAK,GAC5C,KAAK,WAAW,YAAY,KAAK,QAAQ,GACzC,KAAK,YAAYC,EAAW,KAAK,QAAQ;AAAA,EAEjD;AAAA,EAEA,gBACIC,GACA1B,GACA1B,GACAqD,GACA5D,GACA6D,GACF;AACE,UAAMC,IAAaH,EAAK,aAClBI,IAAgBJ,EAAK,aAErBK,IAAeC,EAAqBJ,GAAWD,GAAaD,EAAK,WAAW,GAE5EO,IAAajC,EAAU,QACvBkC,IAAW,KAAK,KAAI5D,KAAA,gBAAAA,EAAe,UAAS2D,GAAYA,CAAU,GAClEE,IAAW,KAAK,KAAI7D,KAAA,gBAAAA,EAAe,UAAS2D,GAAYA,CAAU;AAExE,SAAK,eAAe3D,KAAA,QAAAA,EAAe,QAAQ,KAAK,KAAK2D,IAAaC,CAAQ,IAAIC,GAC9E,KAAK,YAAY,KAAK,KAAKF,IAAa,KAAK,YAAY;AAEzD,QAAI,EAAC,OAAAG,GAAO,QAAAC,EAAA,IAAUX;AAEtB,IAAI3D,MAAgB,cAAcgE,IAAeF,MAC7CQ,KAAUN,IAEVhE,MAAgB,gBAAgBgE,IAAeD,MAC/CM,KAASL,IAEb,KAAK,WAAW,aAAaK,GAC7B,KAAK,WAAW,cAAcC;AAAA,EAClC;AAAA,EAEA,sBACIrC,GACA1B,GACAP,GACAC,GACAC,GACF;AACE,UAAM,EAAC,YAAAqE,GAAY,aAAAC,EAAA,IAAe,KAAK;AACvC,QAAIC,IAAc,GACdC,IAAa;AACjB,SAAK,mBAAmBzC,EAAU,OAAO,CAAC0C,GAA0C/C,GAAalC,MAAU;AACvG,YAAM,CAACc,GAAYC,CAAa,IAAI+B,GAAa9C,GAAO,KAAK,YAAY,GACnEY,IAAiBb,GAAkBC,GAAOuC,EAAU,QAAQ,KAAK,cAAc,KAAK,SAAS,GAC7F2C,IAAU7E;AAAA,QACZC;AAAA,QACAC;AAAA,QACAC;AAAA,QACA,KAAK;AAAA,QACLqC,EAAaN,GAAW,KAAK,WAAW,KAAK,YAAY,EAAEzB,CAAU;AAAA,QACrE,KAAK;AAAA,QACLF;AAAA,QACAC;AAAA,QACAC;AAAA,QACAC;AAAA,QACAA,MAAkB,KAAK,eAAe;AAAA,MAAA,GAGpCoE,IAAaN,IAAaK,EAAQ,OAAOA,EAAQ,OACjDE,IAAcN,IAAcI,EAAQ,MAAMA,EAAQ;AAExD,aAAAD,EAAI/C,CAAG,IAAI;AAAA,QACP,MAAM6C;AAAA,QACN,KAAKC;AAAA,QACL,gBAAApE;AAAA,QACA,SAAAsE;AAAA,QACA,OAAO,EAAC,OAAOL,GAAY,QAAQC,EAAA;AAAA,QACnC,OAAO,EAAC,OAAOK,GAAY,QAAQC,EAAA;AAAA,MAAW,GAElDL,KAAeI,GACXpE,MAAkB,KAAK,eAAe,MACtCgE,IAAc,GACdC,KAAcI,IAEXH;AAAA,IACX,GAAG,CAAA,CAAE;AAEL,UAAMI,IAAc,KAAK;AAAA,MACrB,GAAG9C,EAAU,IAAI,CAAAL,MAAO,KAAK,iBAAiBA,CAAG,EAAE,MAAM,QAAQ,KAAK,iBAAiBA,CAAG,EAAE,IAAI;AAAA,IAAA,GAE9FoD,IAAe,KAAK;AAAA,MACtB,GAAG/C,EAAU,IAAI,CAAAL,MAAO,KAAK,iBAAiBA,CAAG,EAAE,MAAM,SAAS,KAAK,iBAAiBA,CAAG,EAAE,GAAG;AAAA,IAAA;AAGpG,SAAK,WAAW,cAAcmD,GAC9B,KAAK,WAAW,eAAeC;AAAA,EACnC;AAAA,EAEA,eACIhF,GACA4D,GACAqB,GACAhD,GACA1B,GACAL,GACAgF,GACArB,GACAF,GACAwB,GACF;AACE,UAAMpB,IAAgBJ,EAAK,aACrBhD,IAAaX,MAAgB,YAC7BgE,IAAeC,EAAqBJ,GAAWD,GAAaD,EAAK,WAAW,GAC5EyB,IAAU7E,MAAkB,QAAQA,EAAc,SAClD8E,IAAU9E,MAAkB,QAAQA,EAAc,SAElD,EAAC,aAAAiE,GAAa,YAAAD,EAAA,IAAc,KAAK;AACvC,IAAAtC,EAAU,QAAQ,CAAAL,MAAO;AACrB,YAAM0D,IAASpF,EAAM,UAAU,QAAQqF,GAAA,IAAalC,EAAA,GAC9CmC,IACA,KAAK,IADC,GAAAH,IACMH,EAAW,IAAI,CAAC,EAAC,MAAAO,EAAA,MAAUA,EAAK,IAAI,IACpCP,EAAW,IAAI,CAAC,EAAC,OAAAQ,EAAA,MAAW,KAAK,IAAI,GAAGA,EAAM9D,CAAG,EAAE,IAAI,CAAC,EAAC,SAAA+D,EAAA,MAAaA,EAAQ,GAAG,CAAC,CAAC,CAD9C,GAEjDC,IACA,KAAK,IADC,GAAAP,IACMH,EAAW,IAAI,CAAC,EAAC,MAAAO,EAAA,MAAUA,EAAK,IAAI,IACpCP,EAAW,IAAI,CAAC,EAAC,OAAAQ,EAAA,MAAW,KAAK,IAAI,GAAGA,EAAM9D,CAAG,EAAE,IAAI,CAAC,EAAC,SAAA+D,EAAA,MAAaA,EAAQ,GAAG,CAAC,CAAC,CAD9C,GAIjDE,IAAQP,EACT,KAAA,EACA,OAAO,CAACE,GAAKI,CAAG,CAAC,EACjB;AAAA,QACGjF,IACM,CAAC6D,IAAcT,GAAeC,CAAY,IAC1C,CAACD,GAAeQ,IAAaP,CAAY;AAAA,MAAA;AAEvD,MAAAsB,EACK,OAAO,CAACO,EAAM,OAAOlF,IAAa6D,IAAc,CAAC,GAAGqB,EAAM,OAAOlF,IAAa,IAAI4D,CAAU,CAAC,CAAC,EAC9F,MAAM5D,IAAa,CAAC6D,GAAa,CAAC,IAAI,CAAC,GAAGD,CAAU,CAAC,GAC1D,KAAK,OAAO,EAAE3C,CAAG,IAAI0D;AAErB,YAAMQ,IAAmBV,IAAUxB,IAAcuB,EAAuBvD,CAAG;AAC3E,WAAK,OAAO,SAASA,CAAG,IAAIwB,EAAA,EACvB,OAAO0C,CAAgB,EACvB,MAAMnF,IAAa,CAAC,GAAG4D,CAAU,IAAI,CAACC,GAAa,CAAC,CAAC,GAC1D,KAAK,OAAO,WAAW5C,CAAG,IAAIwB,EAAA,EACzB,OAAO6B,CAAa,EACpB,MAAM,CAAC,GAAG,KAAK,OAAO,SAASrD,CAAG,EAAE,UAAA,CAAW,CAAC;AAAA,IACzD,CAAC;AAAA,EACL;AAAA,EAEA,kBAAkBK,GAAqB8D,GAAyB;AAC5D,SAAK,cAAc9D,EAAU,OAAO,CAAC0C,GAA+B/C,GAAKa,OACjEsD,EAAYtD,CAAG,EAAE,WAAW,KAAKsD,EAAYtD,CAAG,EAAE,CAAC,MAAM,SACzDkC,EAAI/C,CAAG,IAAI,CAAA,IAEX+C,EAAI/C,CAAG,IAAIoE,EAAiBD,EAAYtD,CAAG,EAAE,KAAK,IAAI,GAAG,KAAK,WAAW,YAAY,EAAE,GAEpFkC,IACR,CAAA,CAAE;AAAA,EACT;AAAA,EAEA,gBAAgB1C,GAAqBgE,GAAuD;AACxF,UAAMC,IAAa,KAAK,iBAAiBjE,EAAU,CAAC,CAAC,GAC/CkE,IAAY,KAAK,iBAAiBlE,EAAUA,EAAU,SAAS,CAAC,CAAC;AAEvE,SAAK,YAAY+D;AAAA,MACbC,EAAM;AAAA,MACN,KAAK,WAAW,cAAcC,EAAW,QAAQ,OAAOC,EAAU,QAAQ;AAAA,MAC1E;AAAA,IAAA;AAAA,EAER;AAAA,EAEA,iBACIlE,GACAhC,GACAmG,GACApG,GACF;AACE,UAAMqG,IAAoB;AAAA,MACtB,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,SAAS;AAAA,IAAA,GAEP1F,IAAaX,MAAgB;AAEnC,aAASsG,EAAiBC,GAA8CC,GAAmB;AACvF,aAAID,MAAmB,WACZ,QAGA,KAAK,MADZA,MAAmB,UACAC,IAAY,KAAK,IAAI,KAAK,KAAK,CAAC,IAAKC,IAE1CD,IAAYC,CAFiD;AAAA,IAGnF;AAEA,SAAK,cAAcxE,EAAU,OAAO,CAAC0C,GAA+C+B,MAAa;AAC7F,YAAMC,IAAQ,KAAK,OAAO,SAASD,CAAQ,GACrCF,IAAYG,EAAM,UAAA,GAClBC,IAAeP,EAAkBpG,EAAM,cAAc,GACrDoE,IAAQpE,EAAM,mBAAmB,WAAW,KAAK,IAAI2G,GAAcJ,CAAS,IAAII,GAChFC,IAAYT,EAAgB;AAClC,aAAAzB,EAAI+B,CAAQ,IAAIC,EAAM,OAAA,EAAS,OAAO,CAACG,GAAgCC,MAAY;AAC/E,YAAI9G,EAAM;AACN,iBAAA6G,EAAKC,CAAO,IAAI,CAAA,GACTD;AAEX,cAAME,IAAQH,EAAUE,CAAO;AAC/B,YAAI,CAACpG;AACD,UAAAmG,EAAKC,CAAO,IAAI,CAACC,CAAK;AAAA,aACnB;AACH,gBAAMC,IAAgBX,EAAiBrG,EAAM,gBAAgBuG,CAAS,GAChEU,IAAelB,EAAiBgB,GAAO3C,GAAO,EAAE;AACtD,UAAAyC,EAAKC,CAAO,IAAIG,EAAa,SAASD,IAAgB,CAACD,CAAK,IAAIE;AAAA,QACpE;AACA,eAAOJ;AAAA,MACX,GAAG,CAAA,CAAE,GACEnC;AAAA,IACX,GAAG,CAAA,CAAE;AAAA,EACT;AAAA,EAEA,gBAAgByB,GAA+Be,GAAiC;AAC5E,QAAIf,EAAgB,cAAc;AAC9B,YAAM,EAAC,cAAAgB,GAAc,MAAAC,EAAA,IAAQjB;AAC7B,WAAK,OAAO,YAAY,OAAOiB,CAAI,EAAE,MAAMA,EAAK,IAAI,CAAAzF,MAAOwF,EAAaxF,CAAG,KAAK0F,CAAkB,CAAC;AAAA,IACvG;AACI,WAAK,OAAO,YAAY,OAAO,CAAA,CAAE,EAAE,MAAM,EAAE;AAE/C,QAAIH,EAAkB,cAAc;AAChC,YAAM,EAAC,cAAAC,GAAc,MAAAC,EAAA,IAAQF;AAC7B,WAAK,OAAO,cAAc,OAAOE,CAAI,EAAE,MAAMA,EAAK,IAAI,CAAAzF,MAAOwF,EAAaxF,CAAG,KAAK0F,CAAkB,CAAC;AAAA,IACzG;AACI,WAAK,OAAO,cAAc,OAAO,CAAA,CAAE,EAAE,MAAM,EAAE;AAAA,EAErD;AAAA,EAEA,mBACItH,GACAiC,GACAhC,GACAC,GACF;AAEE,UAAMqH,IAAe,IAAIC,EAAa,kBAAkC,GAClE7G,IAAaX,MAAgB;AAEnC,aAASyH,EAAeC,GAAgB;AACpC,aAAKA,EAAK,SAGH,KAAK,IAAI,GAAGA,EAAK,IAAI,OAAOH,EAAa,aAAaI,CAAG,CAAC,CAAC,IAFvD;AAAA,IAGf;AAEA,aAASC,EAAwBF,GAAkB;AAC/C,aAAKA,EAAK,SAGH,KAAK,IAAI,GAAGA,EAAK,IAAID,CAAc,CAAC,IAFhC;AAAA,IAGf;AAMA,QAAII,IAAqC,CAAA,GACrCC,IAAQ;AAEZ,UAAMC,IAAYxF,EAAaN,GAAW,KAAK,WAAW,KAAK,YAAY,GACrE+F,IAAehG,GAAgBC,GAAW,KAAK,WAAW,KAAK,YAAY;AACjF,QAAI,CAACtB;AAED,MAAAkH,IAA2BG,EAEtB;AAAA,QAAI,OACD,KAAK;AAAA,UACD,GAAGC,EAAgB;AAAA,YAAI,CAAAvB,MACnBkB;AAAA,cACI,KAAK,OAAO,SAASlB,CAAQ,EACxB,OAAA,EACA,IAAI,CAAAK,MAAW,KAAK,YAAYL,CAAQ,EAAEK,CAAO,CAAC;AAAA,YAAA;AAAA,UAC3D;AAAA,QACJ;AAAA,MACJ;AAAA,SAEL;AAiBH,UAhBI9G,EAAM,mBAAmB,aACzB4H,IAA2BE,EAAU;AAAA,QAAI,OACrC,KAAK;AAAA,UACD,GAAGG,EAAa;AAAA,YAAI,OAChB,KAAK;AAAA,cACD,GAAG,KAAK,OAAO,SAASxB,CAAQ,EAC3B,SAEA;AAAA,gBAAI,CAAAK,MACDA,IAAU,KAAK,YAAYL,CAAQ,EAAEK,CAAO,EAAE,SAASN,IAAsB;AAAA,cAAA;AAAA,YACjF;AAAA,UACR;AAAA,QACJ;AAAA,MACJ,IAGJxG,EAAM,mBAAmB,SAAS;AAClC,cAAMkI,IAAQ,KAAK,IAAI,KAAK,KAAK,CAAC;AAClC,QAAAN,IAA2BE,EAAU,IAAI,CAAAK,MAC9B,KAAK;AAAA,UACR,GAAGA,EAAQ,IAAI,CAAAxG,MAAO;AAClB,kBAAMyG,IAAS,KAAK,OAAO,SAASzG,CAAG,EAClC,OAAA,EACA,IAAI,OAAW,KAAK,YAAYA,CAAG,EAAEmF,CAAO,CAAC,GAC5CuB,IAAaV,EAAwBS,CAAM;AACjD,mBAAOC,IAAa,IAAIA,IAAaH,IAAQ,KAAkB;AAAA,UACnE,CAAC;AAAA,QAAA,CAER,GACDL,IAAQ,KAAK;AAAA,UACT,GAAGE,EAAa,CAAC,EAAE,IAAI,CAAAtB,MAAY;AAC/B,kBAAM6B,IAAQ,KAAK,OAAO,SAAS7B,CAAQ,EAAE,OAAA,GACvC8B,IAAW,KAAK,YAAY9B,CAAQ,EAAE6B,EAAM,CAAC,CAAC;AACpD,mBAAO,KAAK;AAAA,cACRd,EAAee,CAAQ,IAAIL,IACvB,KAAK,OAAO,SAASzB,CAAQ,EAAE,UAAA,IAAc,IAC7C;AAAA,cACJ;AAAA,YAAA;AAAA,UAER,CAAC;AAAA,QAAA;AAAA,MAET;AACA,MAAIzG,EAAM,mBAAmB,YACzB4H,IAA2BE,EAEtB;AAAA,QAAI,OACD,KAAK;AAAA,UACD,GAAGK,EAAQ;AAAA,YAAI,CAAA1B,MACXkB;AAAA,cACI,KAAK,OAAO,SAASlB,CAAQ,EACxB,OAAA,EACA,IAAI,CAAAK,MAAW,KAAK,YAAYL,CAAQ,EAAEK,CAAO,CAAC;AAAA,YAAA;AAAA,UAC3D;AAAA,QACJ;AAAA,MACJ;AAAA,IAGhB;AAEA,UAAM9F,IAASwH,EAAO;AAAA,MAClBxG,EAAU,IAAI,CAAAyE,MAAY;AACtB,YAAIxG,EAAM;AACN,iBAAO,CAAA;AAEX,cAAMoF,IAAS,KAAK,OAAO,EAAEoB,CAAQ,GAC/B6B,IAAQjD,EAAO,MAAA,GACfoD,IAAYH,EAAM,KAAK,CAAAI,MAAS,KAAK,IAAIA,CAAI,IAAI,QAAUA,MAAS,KAAMA,IAAO,GAAK,IACtF,OACA,MACAC,IAAStD,EAAO,WAAW,IAAIoD,CAAS;AAC9C,eAAOH,EAAM,IAAIK,CAAM;AAAA,MAC3B,CAAC;AAAA,IAAA,GAECC,IAAqBpB,EAAexG,CAAM;AAEhD,SAAK,gBAAgB;AAAA,MACjB,eAAe6G;AAAA,MACf,0BAAAD;AAAA,MACA,oBAAAgB;AAAA,IAAA;AAAA,EAER;AAAA,EAEA,cAAc7I,GAA0BiC,GAAqB0B,GAAoD;AAC7G,UAAMuC,IAAa,KAAK,iBAAiBjE,EAAU,CAAC,CAAC,GAC/CkE,IAAY,KAAK,iBAAiBlE,EAAUA,EAAU,SAAS,CAAC,CAAC,GACjEtB,IAAaX,MAAgB,YAE7B8I,IAAkB,KAAK,UAAU,SAASC,IAAoB,KAAK,UAAU,SAASC,IAAe,IAAI,GACzGC,IAAYtF,EAAK;AACvB,SAAK,UAAU;AAAA,MACX,MAAM,KAAK,IAAIsF,GAAWtI,IAAa,KAAK,cAAc,gBAAgBuF,EAAW,QAAQ,OAAO,CAAC;AAAA,MACrG,OAAO,KAAK,OAAO,QAAQ+C;AAAA,MAC3B,KAAK,KAAK,IAAIH,GAAiBG,CAAS;AAAA,MACxC,QAAQ,KAAK,IAAIA,GAAWtI,IAAa,IAAI,KAAK,cAAc,gBAAgBwF,EAAU,QAAQ,MAAM;AAAA,IAAA,GAE5G,KAAK,WAAW,aAAa,KAAK,QAAQ,OAAO,KAAK,WAAW,cAAc,KAAK,QAAQ,OAC5F,KAAK,WAAW,cACZ,KAAK,QAAQ,MAAM,KAAK,IAAI,KAAK,WAAW,cAAc,KAAK,OAAO,MAAM,IAAI,KAAK,QAAQ;AAAA,EACrG;AAAA,EAEA,iBACI+C,GACA9C,GACAe,GACAjC,GACF;AACE,QAAI,CAACgE,EAAO,MAAM;AACd,WAAK,SAAS,EAAC,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAC;AAC5C;AAAA,IACJ;AACA,UAAMC,IAAe,KAAK,WAAW,aAC/BC,IAAa,EAAC,OAAM,GAAG,QAAO,GAAG,MAAK,GAAG,KAAK,EAAA,GAC9CC,IAA4C,CAAA;AAElD,aAASC,EACLC,GACAC,GACF;AACE,aAAOtE,EAAW,KAAK,CAAAuE,MAAK;AACxB,cAAMC,IAAQD,EAAE,IAAID,CAA2B;AAC/C,eAAOE,KAAS9G,GAAa8G,CAAK,KAAKA,EAAM,SAASH;AAAA,MAC1D,CAAC;AAAA,IACL;AACA,aAASI,EAAWJ,GAAsF;AACtG,aAAO;AAAA,QACH,SAASD,EAA6BC,GAAM,SAAS;AAAA,QACrD,WAAWD,EAA6BC,GAAM,WAAW;AAAA,QACzD,WAAWD,EAA6BC,GAAM,WAAW;AAAA,QACzD,UAAUD,EAA6BC,GAAM,UAAU;AAAA,QACvD,WAAWD,EAA6BC,GAAM,WAAW;AAAA,MAAA;AAAA,IAEjE;AACA,UAAMK,IAAiBD,EAAW,iBAAiB,GAC7CE,IAAmBF,EAAW,mBAAmB;AA0BvD,QAzBI,OAAO,OAAOC,CAAc,EAAE,KAAK,CAAA/G,MAAKA,CAAC,KAAKuD,EAAgB,gBAC9DiD,EAAY,KAAK;AAAA,MACb,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,OAAOjD,EAAgB;AAAA,MACvB,OAAO,KAAK,OAAO;AAAA,MACnB,QAAQA,EAAgB;AAAA,MACxB,QAAQA,EAAgB;AAAA,MACxB,SAASwD;AAAA,MACT,GAAGR;AAAA,IAAA,CACN,GAED,OAAO,OAAOS,CAAgB,EAAE,KAAK,CAAAhH,MAAKA,CAAC,KAAKsE,EAAkB,gBAClEkC,EAAY,KAAK;AAAA,MACb,MAAM;AAAA,MACN,IAAI;AAAA,MACJ,OAAOlC,EAAkB;AAAA,MACzB,OAAO,KAAK,OAAO;AAAA,MACnB,QAAQA,EAAkB;AAAA,MAC1B,QAAQA,EAAkB;AAAA,MAC1B,SAAS0C;AAAA,MACT,GAAGT;AAAA,IAAA,CACN,GAGD,CAACC,EAAY,QAAQ;AACrB,WAAK,SAAS,EAAC,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAC;AAC5C;AAAA,IACJ;AAEA,UAAMS,IAAQC,EAAmBV,GAAa,KAAK,WAAW,WAAW,GACnEW,IAAWF,EAAMA,EAAM,SAAS,CAAC,GACjCG,IAAcD,EAAS,OAAOA,EAAS,QAAQE;AAErD,SAAK,SAAS;AAAA,MACV,OAAOD;AAAA,MACP,QAAQd;AAAA,MACR,OAAAW;AAAA,IAAA;AAAA,EAER;AAAA,EAEA,OACIK,GACAC,GACAC,GACAjE,GACAe,GACA5G,GACA0B,GACA8D,GACAb,GACArB,GACAyG,GACAnF,GACAoF,GACAC,GACF;;AACE,UAAM,EAAC,aAAAxK,GAAa,OAAAC,GAAO,OAAAC,GAAO,MAAAyD,MAAQ0G;AAC1C,SAAK,gBAAgB1G,GAAM1B,GAAW1B,GAAe6F,EAAgB,MAAMpG,GAAa6D,CAAS,GACjG,KAAK;AAAA,MACD7D;AAAA,MACAoG,EAAgB;AAAA,MAChBe,EAAkB;AAAA,MAClBlF;AAAA,MACA1B;AAAA,MACAL;AAAA,MACAgF;AAAA,MACArB;AAAA,MACAF;AAAA,MACAwB;AAAA,IAAA,GAEJ,KAAK,iBAAiBlD,GAAWhC,GAAOmG,GAAiBpG,CAAW,GACpE,KAAK,kBAAkBiC,GAAW8D,CAAW,GAC7C,KAAK,mBAAmB/F,GAAaiC,GAAWhC,GAAOC,CAAK,GAC5D,KAAK,sBAAsB+B,GAAW1B,GAAeP,GAAaC,GAAOC,CAAK,GAC9E,KAAK,iBAAiBmK,EAAc,QAAQjE,GAAiBe,GAAmBjC,CAAU,GAC1F,KAAK,gBAAgBjD,GAAWoI,EAAc,KAAK,GACnD,KAAK,cAAcrK,GAAaiC,GAAW0B,CAAI,GAC/C,KAAK,gBAAgByC,GAAiBe,CAAiB;AAEvD,UAAMsD,IACFzH,gBAAAA,EAAAA,IAAC0H,GAAA,EAAkB,WAAAP,GACf,UAAAnH,gBAAAA,EAAAA;AAAAA,MAAC2H;AAAA,MAAA;AAAA,QACG,YAAAP;AAAA,QACA,eAAAC;AAAA,QACA,WAAApI;AAAA,QACA,eAAA1B;AAAA,QACA,aAAa,KAAK;AAAA,QAClB,YAAY,KAAK;AAAA,QACjB,kBAAkB,KAAK;AAAA,QACvB,QAAQ,KAAK;AAAA,QACb,YAAA2E;AAAA,QACA,WAAArB;AAAA,QACA,YAAY,KAAK;AAAA,QACjB,SAAS,KAAK;AAAA,QACd,cAAc,KAAK;AAAA,QACnB,WAAAyG;AAAA,QACA,SAAS,KAAK;AAAA,QACd,YAAY,KAAK;AAAA,QACjB,cAAAC;AAAA,QACA,mBAAApD;AAAA,QACA,qBAAAqD;AAAA,MAAA;AAAA,IAAA,GAER;AAEJ,SAAK,YAAYC,IACjBjH,IAAA,KAAK,cAAL,QAAAA,EAAgB,OAAOiH;AAAA,EAC3B;AAAA,EAEA,YAAYG,GAAiB;;AACzB,KAAApH,IAAA,KAAK,cAAL,QAAAA,EAAgB,OAAOR,gBAAAA,EAAAA,IAAC6H,GAAA,EAAM,SAAAD,GAAkB;AAAA,EACpD;AACJ;"}
@@ -1,4 +1,4 @@
1
- import { AesMap, Color, ColumnName, DataValue, DiscreteSettings, FrameType, InheritAesDiscrete, LegendPosition, LineShape, Orientation, BarLayer as OuterBarLayer, BinnedDotsLayer as OuterBinnedDotsLayer, BoxLayer as OuterBoxLayer, DotLayer as OuterDotLayer, ErrorBarLayer as OuterErrorBarLayer, LineLayer as OuterLineLayer, LogoPlotLayer as OuterLogoPlotLayer, PairedPointsLayer as OuterPairedPointsLayer, SinaLayer as OuterSinaLayer, StackedBarLayer as OuterStackedBarLayer, StatLayer as OuterStatLayer, ViolinLayer as OuterViolinLayer, PointShape, PValueCorrectionMethod, SettingsInterface, SignificanceLevels, StatTestMethod, SummaryErrorValue, SummaryGroupValue, TitlePosition } from '../types';
1
+ import { AesRecord, Color, ColumnName, DataValue, DiscreteSettings, FrameType, InheritAesDiscrete, LegendPosition, LineShape, Orientation, BarLayer as OuterBarLayer, BinnedDotsLayer as OuterBinnedDotsLayer, BoxLayer as OuterBoxLayer, DotLayer as OuterDotLayer, ErrorBarLayer as OuterErrorBarLayer, LineLayer as OuterLineLayer, LogoPlotLayer as OuterLogoPlotLayer, PairedPointsLayer as OuterPairedPointsLayer, SinaLayer as OuterSinaLayer, StackedBarLayer as OuterStackedBarLayer, StatLayer as OuterStatLayer, ViolinLayer as OuterViolinLayer, PointShape, PValueCorrectionMethod, SettingsInterface, SignificanceLevels, StatTestMethod, SummaryErrorValue, SummaryGroupValue, TitlePosition } from '../types';
2
2
  declare abstract class BaseDiscreteLayer {
3
3
  abstract type: string;
4
4
  abstract isEqualForCalculation(otherLayer: DiscreteLayer): boolean;
@@ -200,13 +200,13 @@ export declare class DiscreteSettingsImpl implements SettingsInterface {
200
200
  readonly primaryGrouping: {
201
201
  columnName: ColumnName;
202
202
  order?: DataValue[];
203
- inheritedAes?: AesMap;
203
+ inheritedAes?: AesRecord;
204
204
  allowNullGroup?: boolean;
205
205
  } | null;
206
206
  readonly secondaryGrouping: {
207
207
  columnName: ColumnName;
208
208
  order?: DataValue[];
209
- inheritedAes?: AesMap;
209
+ inheritedAes?: AesRecord;
210
210
  allowNullGroup?: boolean;
211
211
  } | null;
212
212
  readonly facetSettings: {
@@ -1 +1 @@
1
- {"version":3,"file":"DiscreteSettingsImpl.d.ts","sourceRoot":"","sources":["../../src/discrete/DiscreteSettingsImpl.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,MAAM,EACN,KAAK,EACL,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,SAAS,EACT,WAAW,EACX,QAAQ,IAAI,aAAa,EACzB,eAAe,IAAI,oBAAoB,EACvC,QAAQ,IAAI,aAAa,EACzB,QAAQ,IAAI,aAAa,EACzB,aAAa,IAAI,kBAAkB,EACnC,SAAS,IAAI,cAAc,EAC3B,aAAa,IAAI,kBAAkB,EACnC,iBAAiB,IAAI,sBAAsB,EAC3C,SAAS,IAAI,cAAc,EAC3B,eAAe,IAAI,oBAAoB,EACvC,SAAS,IAAI,cAAc,EAC3B,WAAW,IAAI,gBAAgB,EAC/B,UAAU,EACV,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EAChB,MAAM,UAAU,CAAC;AASlB,uBAAe,iBAAiB;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,qBAAqB,CAAC,UAAU,EAAE,aAAa,GAAG,OAAO;CACrE;AAED,qBAAa,QAAS,SAAQ,iBAAiB;IAC3C,QAAQ,CAAC,IAAI,SAAS;IACtB,QAAQ,CAAC,IAAI,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,CAAC,EAAE,MAAM,CAAC;KACb,CAKC;IACF,QAAQ,CAAC,GAAG,EAAE;QACV,YAAY,EAAE,OAAO,CAAC;QACtB,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;QAC1B,QAAQ,EAAE,kBAAkB,GAAG,UAAU,CAAC;QAC1C,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAAC;QACrC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAAC;QACrC,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAAC;QACvC,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAAC;QACvC,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,SAAS,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;KACnB,CAWC;gBAEU,KAAK,EAAE,aAAa;IAYhC,qBAAqB,CAAC,UAAU,EAAE,aAAa;CAMlD;AAED,qBAAa,WAAY,SAAQ,iBAAiB;IAC9C,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,IAAI,EAAE;QACX,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;QAC3B,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;QAC5B,IAAI,EAAE,OAAO,CAAC;KACjB,CAIC;IACF,QAAQ,CAAC,GAAG,EAAE;QACV,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QACvB,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAAC;QACvC,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAAC;QACvC,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,SAAS,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,OAAO,CAAC;QACvB,eAAe,EAAE,SAAS,CAAC;QAC3B,kBAAkB,EAAE,SAAS,CAAC;KACjC,CAUC;gBAEU,KAAK,EAAE,gBAAgB;IAYnC,qBAAqB,CAAC,UAAU,EAAE,aAAa;CASlD;AAED,qBAAa,QAAS,SAAQ,iBAAiB;IAC3C,QAAQ,CAAC,IAAI,SAAS;IACtB,QAAQ,CAAC,GAAG,EAAE;QACV,YAAY,EAAE,OAAO,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,kBAAkB,GAAG,MAAM,CAAC;QACrC,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAAC;QACvC,QAAQ,EAAE,kBAAkB,GAAG,UAAU,CAAC;QAC1C,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACnB,CAQC;gBAEU,KAAK,EAAE,aAAa;IAQhC,qBAAqB,CAAC,UAAU,EAAE,aAAa;CAGlD;AAED,qBAAa,SAAU,SAAQ,iBAAiB;IAC5C,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACzC,QAAQ,CAAC,GAAG,EAAE;QACV,YAAY,EAAE,OAAO,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAAC;QACvC,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAAC;QACvC,SAAS,EAAE,kBAAkB,GAAG,SAAS,CAAC;QAC1C,QAAQ,EAAE,kBAAkB,GAAG,UAAU,CAAC;QAC1C,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACnB,CASC;gBAEU,KAAK,EAAE,cAAc;IASjC,qBAAqB,CAAC,UAAU,EAAE,aAAa;CAGlD;AAED,qBAAa,aAAc,SAAQ,iBAAiB;IAChD,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,GAAG,EAAE;QACV,QAAQ,EAAE,OAAO,CAAC;QAClB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAAC;QACvC,SAAS,EAAE,kBAAkB,GAAG,MAAM,CAAC;QACvC,QAAQ,EAAE,kBAAkB,GAAG,UAAU,CAAC;QAC1C,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACnB,CASC;gBAEU,KAAK,EAAE,kBAAkB;IAUrC,qBAAqB,CAAC,UAAU,EAAE,aAAa;CAOlD;AAED,qBAAa,QAAS,SAAQ,iBAAiB;IAC3C,QAAQ,CAAC,IAAI,SAAS;IACtB,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACnD,QAAQ,CAAC,GAAG,EAAE;QACV,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QACvB,SAAS,EAAE,kBAAkB,GAAG,KAAK,CAAC;QACtC,SAAS,EAAE,kBAAkB,GAAG,KAAK,CAAC;QACtC,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACnB,CAMC;gBAEU,KAAK,EAAE,aAAa;IAShC,qBAAqB,CAAC,UAAU,EAAE,aAAa;CAGlD;AAED,qBAAa,eAAgB,SAAQ,iBAAiB;IAClD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAS;IACpC,QAAQ,CAAC,GAAG,EAAE;QACV,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QACvB,SAAS,EAAE,kBAAkB,GAAG,KAAK,CAAC;QACtC,SAAS,EAAE,kBAAkB,GAAG,KAAK,CAAC;QACtC,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACnB,CAMC;gBAEU,KAAK,EAAE,oBAAoB;IASvC,qBAAqB,CAAC,UAAU,EAAE,aAAa;CAGlD;AAED,qBAAa,aAAc,SAAQ,iBAAiB;IAChD,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAS;IACpC,QAAQ,CAAC,GAAG,EAAE;QACV,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;QAC1C,SAAS,EAAE,KAAK,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACnB,CAKC;gBAEU,KAAK,EAAE,kBAAkB;IASrC,qBAAqB,CAAC,UAAU,EAAE,aAAa;CAGlD;AAED,qBAAa,eAAgB,SAAQ,iBAAiB;IAClD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,GAAG,EAAE;QACV,YAAY,EAAE,OAAO,CAAC;QACtB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QACvB,SAAS,EAAE,kBAAkB,GAAG,KAAK,CAAC;QACtC,SAAS,EAAE,kBAAkB,GAAG,KAAK,CAAC;QACtC,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACnB,CAOC;gBAEU,KAAK,EAAE,oBAAoB;IAWvC,qBAAqB,CAAC,UAAU,EAAE,aAAa;CAQlD;AAED,qBAAa,iBAAkB,SAAQ,iBAAiB;IACpD,QAAQ,CAAC,IAAI,kBAAkB;IAC/B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE;QACV,YAAY,EAAE,OAAO,CAAC;QACtB,SAAS,EAAE,kBAAkB,GAAG,KAAK,CAAC;QACtC,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,SAAS,CAAC;QACrB,OAAO,EAAE,kBAAkB,GAAG,KAAK,CAAC;QACpC,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,UAAU,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;KACnB,CASC;gBAEU,KAAK,EAAE,sBAAsB;IASzC,qBAAqB,CAAC,UAAU,EAAE,aAAa;CAOlD;AAED,qBAAa,SAAU,SAAQ,iBAAiB;IAC5C,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,GAAG,EAAE;QACV,YAAY,EAAE,OAAO,CAAC;QACtB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QACvB,OAAO,EAAE,kBAAkB,GAAG,KAAK,CAAC;QACpC,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,kBAAkB,GAAG,UAAU,CAAC;QAC1C,OAAO,EAAE,MAAM,CAAC;KACnB,CAOC;gBAEU,KAAK,EAAE,cAAc;IAQjC,qBAAqB,CAAC,UAAU,EAAE,aAAa;CAGlD;AAED,qBAAa,SAAU,SAAQ,iBAAiB;IAC5C,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,QAAQ,EAAE,SAAS,GAAG,gBAAgB,GAAG,UAAU,CAAC;IAC7D,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ,CAAC;IAC3C,QAAQ,CAAC,cAAc,EAAE,SAAS,GAAG,IAAI,CAAQ;IACjD,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,GAAG,IAAI,CAAQ;IAChE,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;gBAEpC,KAAK,EAAE,cAAc;IAoBjC,qBAAqB,CAAC,UAAU,EAAE,aAAa;CAGlD;AAED,MAAM,MAAM,aAAa,GACnB,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,SAAS,GACT,aAAa,GACb,QAAQ,GACR,eAAe,GACf,eAAe,GACf,iBAAiB,GACjB,SAAS,GACT,SAAS,GACT,aAAa,CAAC;AAEpB,qBAAa,oBAAqB,YAAW,iBAAiB;IAC1D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,UAAU,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,eAAe,EAAE;QACtB,UAAU,EAAE,UAAU,CAAC;QACvB,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC5B,GAAG,IAAI,CAAC;IACT,QAAQ,CAAC,iBAAiB,EAAE;QACxB,UAAU,EAAE,UAAU,CAAC;QACvB,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC5B,GAAG,IAAI,CAAC;IACT,QAAQ,CAAC,aAAa,EAAE;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACpC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;KAC/C,GAAG,IAAI,CAAC;IACT,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE;QACpB,QAAQ,CAAC,IAAI,EAAE;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAC,CAAC;QACzF,QAAQ,CAAC,KAAK,EAAE;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,OAAO,CAAC;YAAC,QAAQ,EAAE,aAAa,CAAA;SAAC,CAAC;QACvE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;QAClC,QAAQ,CAAC,KAAK,EAAE;YACZ,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;YAC3B,KAAK,EAAE,QAAQ,GAAG,KAAK,CAAC;YACxB,QAAQ,EAAE,OAAO,CAAC;YAClB,SAAS,EAAE,OAAO,CAAC;YACnB,YAAY,EAAE,OAAO,CAAC;SACzB,CAAC;QACF,QAAQ,CAAC,KAAK,EAAE;YACZ,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;YAC3B,QAAQ,EAAE,OAAO,CAAC;YAClB,sBAAsB,EAAE,OAAO,CAAC;YAChC,SAAS,EAAE,OAAO,CAAC;YACnB,cAAc,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;YAC7C,YAAY,EAAE,OAAO,CAAC;SACzB,CAAC;QACF,QAAQ,CAAC,KAAK,EAAE;YAAC,IAAI,EAAE,SAAS,CAAA;SAAC,CAAC;QAClC,QAAQ,CAAC,MAAM,EAAE;YAAC,IAAI,EAAE,OAAO,CAAC;YAAC,QAAQ,EAAE,cAAc,CAAA;SAAC,CAAC;QAC3D,QAAQ,CAAC,QAAQ,EAAE;YACf,GAAG,EAAE;gBAAC,IAAI,EAAE,OAAO,CAAA;aAAC,CAAC;YACrB,MAAM,EAAE;gBAAC,IAAI,EAAE,OAAO,CAAA;aAAC,CAAC;YACxB,WAAW,EAAE;gBAAC,IAAI,EAAE,OAAO,CAAA;aAAC,CAAC;YAC7B,IAAI,EAAE;gBAAC,IAAI,EAAE,OAAO,CAAA;aAAC,CAAC;YACtB,GAAG,EAAE;gBAAC,IAAI,EAAE,OAAO,CAAA;aAAC,CAAC;YACrB,QAAQ,EAAE;gBAAC,IAAI,EAAE,OAAO,CAAA;aAAC,CAAC;YAC1B,UAAU,EAAE;gBAAC,IAAI,EAAE,OAAO,CAAA;aAAC,CAAC;YAC5B,YAAY,EAAE;gBAAC,IAAI,EAAE,OAAO,CAAA;aAAC,CAAC;YAC9B,UAAU,EAAE;gBAAC,IAAI,EAAE,OAAO,CAAA;aAAC,CAAC;YAC5B,IAAI,EAAE;gBAAC,IAAI,EAAE,OAAO,CAAA;aAAC,CAAC;SACzB,CAAC;KACL,CAAC;IAEF,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC;gBAErB,QAAQ,EAAE,gBAAgB;CA2GzC"}
1
+ {"version":3,"file":"DiscreteSettingsImpl.d.ts","sourceRoot":"","sources":["../../src/discrete/DiscreteSettingsImpl.ts"],"names":[],"mappings":"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"}
@@ -2,16 +2,16 @@ var S = Object.defineProperty;
2
2
  var x = (o, i, t) => i in o ? S(o, i, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[i] = t;
3
3
  var e = (o, i, t) => x(o, typeof i != "symbol" ? i + "" : i, t);
4
4
  import { DEFAULT_HEIGHT_SMALL as b, DEFAULT_HEIGHT as v, DEFAULT_WIDTH_SMALL as E, DEFAULT_WIDTH as F, BLACK as n } from "../constants.js";
5
- import { PADDINGS as k, MIN_MARGIN as D } from "./constants.js";
6
5
  import "../types/common.js";
7
- import { DiscreteSettingsSchema as O } from "../types/discrete.js";
6
+ import { DiscreteSettingsSchema as k } from "../types/discrete.js";
8
7
  import "../types/scatterplot.js";
9
8
  import "../types/heatmap.js";
10
9
  import "../types/dendro.js";
11
10
  import "../types/histogram.js";
12
11
  import "../types/bubble.js";
13
- import { exhaustive as T } from "../utils/index.js";
14
- import z from "../node_modules/lodash/lodash.js";
12
+ import { PADDINGS as D, MIN_MARGIN as O } from "./constants.js";
13
+ import T from "../node_modules/lodash/lodash.js";
14
+ import { exhaustive as z } from "../utils/index.js";
15
15
  const c = "#3e9838", u = "21", h = 3;
16
16
  class a {
17
17
  }
@@ -320,7 +320,7 @@ class tt {
320
320
  e(this, "chartSettings");
321
321
  e(this, "layers");
322
322
  var t, r, l, p, d, m, f, w, C, y;
323
- O.parse(i), this.id = z.uniqueId("settings"), this.y = i.y, this.keyColumn = i.keyColumn ?? null, this.primaryGrouping = i.primaryGrouping ?? null, this.secondaryGrouping = i.secondaryGrouping ?? null, this.facetSettings = {
323
+ k.parse(i), this.id = T.uniqueId("settings"), this.y = i.y, this.keyColumn = i.keyColumn ?? null, this.primaryGrouping = i.primaryGrouping ?? null, this.secondaryGrouping = i.secondaryGrouping ?? null, this.facetSettings = {
324
324
  sharedX: !0,
325
325
  sharedY: !0,
326
326
  titlePosition: "left",
@@ -329,8 +329,8 @@ class tt {
329
329
  size: {
330
330
  width: ((t = i == null ? void 0 : i.size) == null ? void 0 : t.width) ?? (this.facetBy.length ? E : F),
331
331
  height: ((r = i == null ? void 0 : i.size) == null ? void 0 : r.height) ?? (this.facetBy.length ? b : v),
332
- outerOffset: ((l = i == null ? void 0 : i.size) == null ? void 0 : l.outerOffset) ?? D,
333
- innerOffset: ((p = i == null ? void 0 : i.size) == null ? void 0 : p.innerOffset) ?? k.TOP
332
+ outerOffset: ((l = i == null ? void 0 : i.size) == null ? void 0 : l.outerOffset) ?? O,
333
+ innerOffset: ((p = i == null ? void 0 : i.size) == null ? void 0 : p.innerOffset) ?? D.TOP
334
334
  },
335
335
  title: {
336
336
  position: "center",
@@ -400,7 +400,7 @@ class tt {
400
400
  return new M(s);
401
401
  if (s.type === "logo")
402
402
  return new _(s);
403
- T(s, "Unknown layer type");
403
+ z(s, "Unknown layer type");
404
404
  }).filter(Boolean);
405
405
  }
406
406
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DiscreteSettingsImpl.js","sources":["../../src/discrete/DiscreteSettingsImpl.ts"],"sourcesContent":["import {BLACK, DEFAULT_HEIGHT, DEFAULT_HEIGHT_SMALL, DEFAULT_WIDTH, DEFAULT_WIDTH_SMALL} from '../constants';\nimport {MIN_MARGIN, PADDINGS} from './constants';\nimport {DiscreteSettingsSchema} from '../types';\nimport type {\n AesMap,\n Color,\n ColumnName,\n DataValue,\n DiscreteSettings,\n FrameType,\n InheritAesDiscrete,\n LegendPosition,\n LineShape,\n Orientation,\n BarLayer as OuterBarLayer,\n BinnedDotsLayer as OuterBinnedDotsLayer,\n BoxLayer as OuterBoxLayer,\n DotLayer as OuterDotLayer,\n ErrorBarLayer as OuterErrorBarLayer,\n LineLayer as OuterLineLayer,\n LogoPlotLayer as OuterLogoPlotLayer,\n PairedPointsLayer as OuterPairedPointsLayer,\n SinaLayer as OuterSinaLayer,\n StackedBarLayer as OuterStackedBarLayer,\n StatLayer as OuterStatLayer,\n ViolinLayer as OuterViolinLayer,\n PointShape,\n PValueCorrectionMethod,\n SettingsInterface,\n SignificanceLevels,\n StatTestMethod,\n SummaryErrorValue,\n SummaryGroupValue,\n TitlePosition,\n} from '../types';\n\nimport {exhaustive} from '../utils';\nimport lodash from 'lodash';\n\nconst DEFAULT_FILL = '#3e9838';\nconst DEFAULT_DOT_SHAPE = '21';\nconst DEFAULT_DOT_SIZE = 3;\n\nabstract class BaseDiscreteLayer {\n abstract type: string;\n abstract isEqualForCalculation(otherLayer: DiscreteLayer): boolean;\n}\n\nexport class BoxLayer extends BaseDiscreteLayer {\n readonly type = 'box';\n readonly stat: {\n upper: number;\n medium: number;\n lower: number;\n k: number;\n } = {\n upper: 0.75,\n medium: 0.5,\n lower: 0.25,\n k: 1.5,\n };\n readonly aes: {\n showOutliers: boolean;\n boxWidth: 'auto' | number;\n dotShape: InheritAesDiscrete | PointShape;\n dotSize: InheritAesDiscrete | number;\n dotFill: InheritAesDiscrete | string;\n lineColor: InheritAesDiscrete | string;\n fillColor: InheritAesDiscrete | string;\n lineWidth: number;\n lineShape: LineShape;\n opacity: number;\n } = {\n showOutliers: true,\n boxWidth: 'auto',\n dotShape: DEFAULT_DOT_SHAPE,\n dotFill: BLACK,\n dotSize: DEFAULT_DOT_SIZE,\n lineColor: BLACK,\n fillColor: DEFAULT_FILL,\n lineWidth: 1,\n lineShape: 'solid',\n opacity: 1,\n };\n\n constructor(layer: OuterBoxLayer) {\n super();\n this.stat = {\n ...this.stat,\n ...layer.stat,\n };\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return (\n otherLayer.type === 'box' &&\n (Object.keys(this.stat) as (keyof BoxLayer['stat'])[]).every(key => this.stat[key] === otherLayer.stat[key])\n );\n }\n}\n\nexport class ViolinLayer extends BaseDiscreteLayer {\n readonly type = 'violin';\n readonly stat: {\n bandwidth: 'auto' | number;\n stepsCount: 'auto' | number;\n trim: boolean;\n } = {\n bandwidth: 'auto',\n stepsCount: 40,\n trim: true,\n };\n readonly aes: {\n width: 'auto' | number;\n lineColor: InheritAesDiscrete | string;\n fillColor: InheritAesDiscrete | string;\n lineWidth: number;\n lineShape: LineShape;\n opacity: number;\n showQuartiles: boolean;\n medianLineStyle: LineShape;\n quartilesLineStyle: LineShape;\n } = {\n width: 'auto',\n lineColor: BLACK,\n fillColor: DEFAULT_FILL,\n lineWidth: 1,\n lineShape: 'solid',\n opacity: 1,\n showQuartiles: true,\n medianLineStyle: 'solid',\n quartilesLineStyle: 'dashed'\n };\n\n constructor(layer: OuterViolinLayer) {\n super();\n this.stat = {\n ...this.stat,\n ...layer.stat,\n };\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return (\n otherLayer.type === 'violin' && (\n this.stat.bandwidth !== otherLayer.stat.bandwidth ||\n this.stat.trim !== otherLayer.stat.trim ||\n this.stat.stepsCount !== otherLayer.stat.stepsCount\n )\n );\n }\n}\n\nexport class DotLayer extends BaseDiscreteLayer {\n readonly type = 'dot';\n readonly aes: {\n showOutliers: boolean;\n jitter: number;\n dotFill: InheritAesDiscrete | string;\n lineColor: InheritAesDiscrete | string;\n dotShape: InheritAesDiscrete | PointShape;\n dotSize: number;\n opacity: number;\n } = {\n showOutliers: true,\n jitter: 0.8,\n lineColor: 'none',\n dotFill: BLACK,\n dotShape: DEFAULT_DOT_SHAPE,\n dotSize: DEFAULT_DOT_SIZE,\n opacity: 1,\n };\n\n constructor(layer: OuterDotLayer) {\n super();\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'dot' && this.aes.showOutliers === otherLayer.aes.showOutliers;\n }\n}\n\nexport class LineLayer extends BaseDiscreteLayer {\n readonly type = 'line';\n readonly pointsValues: SummaryGroupValue;\n readonly aes: {\n showOutliers: boolean;\n lineWidth: number;\n lineColor: InheritAesDiscrete | string;\n fillColor: InheritAesDiscrete | string;\n lineShape: InheritAesDiscrete | LineShape;\n dotShape: InheritAesDiscrete | PointShape;\n dotSize: number;\n opacity: number;\n } = {\n showOutliers: true,\n lineWidth: 1,\n lineShape: 'solid',\n fillColor: 'none',\n lineColor: BLACK,\n dotShape: DEFAULT_DOT_SHAPE,\n dotSize: DEFAULT_DOT_SIZE,\n opacity: 1,\n };\n\n constructor(layer: OuterLineLayer) {\n super();\n this.pointsValues = layer.pointsValues;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'line' && this.pointsValues === otherLayer.pointsValues;\n }\n}\n\nexport class ErrorBarLayer extends BaseDiscreteLayer {\n readonly type = 'errorbar';\n readonly pointsValues: SummaryGroupValue;\n readonly interval: SummaryErrorValue;\n readonly aes: {\n showDots: boolean;\n width: number | 'auto';\n lineWidth: number;\n lineColor: InheritAesDiscrete | string;\n fillColor: InheritAesDiscrete | string;\n dotShape: InheritAesDiscrete | PointShape;\n dotSize: number;\n opacity: number;\n } = {\n showDots: true,\n width: 'auto',\n lineWidth: 1,\n fillColor: 'none',\n lineColor: BLACK,\n dotShape: DEFAULT_DOT_SHAPE,\n dotSize: DEFAULT_DOT_SIZE,\n opacity: 1,\n };\n\n constructor(layer: OuterErrorBarLayer) {\n super();\n this.pointsValues = layer.pointsValues;\n this.interval = layer.interval;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return (\n otherLayer.type === 'errorbar' &&\n this.pointsValues === otherLayer.pointsValues &&\n this.interval === otherLayer.interval\n );\n }\n}\n\nexport class BarLayer extends BaseDiscreteLayer {\n readonly type = 'bar';\n readonly height: 'min' | 'max' | 'median' | 'mean';\n readonly aes: {\n width: number | 'auto';\n lineColor: InheritAesDiscrete | Color;\n fillColor: InheritAesDiscrete | Color;\n lineWidth: number;\n opacity: number;\n } = {\n width: 'auto',\n lineWidth: 1,\n fillColor: 'none',\n lineColor: BLACK,\n opacity: 1,\n };\n\n constructor(layer: OuterBarLayer) {\n super();\n this.height = layer.height ?? 'max';\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'bar' && this.height === otherLayer.height;\n }\n}\n\nexport class StackedBarLayer extends BaseDiscreteLayer {\n readonly type = 'stackedBar';\n readonly normalize: boolean = false;\n readonly aes: {\n width: number | 'auto';\n lineColor: InheritAesDiscrete | Color;\n fillColor: InheritAesDiscrete | Color;\n lineWidth: number;\n opacity: number;\n } = {\n width: 'auto',\n lineWidth: 1,\n fillColor: DEFAULT_FILL,\n lineColor: 'none',\n opacity: 1,\n };\n\n constructor(layer: OuterStackedBarLayer) {\n super();\n this.normalize = layer.normalize ?? false;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'stackedBar' && otherLayer.normalize === this.normalize;\n }\n}\n\nexport class LogoPlotLayer extends BaseDiscreteLayer {\n readonly type = 'logo';\n readonly normalize: boolean = false;\n readonly aes: {\n width: number | 'auto';\n fillColor: Record<string, string> | Color;\n lineColor: Color;\n opacity: number;\n } = {\n width: 'auto',\n fillColor: DEFAULT_FILL,\n lineColor: 'none',\n opacity: 1,\n };\n\n constructor(layer: OuterLogoPlotLayer) {\n super();\n this.normalize = layer.normalize ?? false;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'logo' && otherLayer.normalize === this.normalize;\n }\n}\n\nexport class BinnedDotsLayer extends BaseDiscreteLayer {\n readonly type = 'binnedDots';\n readonly method: 'dotdensity' | 'histodot';\n readonly position: 'stack' | 'jitter';\n readonly keyColumn: ColumnName | null;\n readonly aes: {\n showOutliers: boolean;\n width: number | 'auto';\n lineColor: InheritAesDiscrete | Color;\n fillColor: InheritAesDiscrete | Color;\n dotSize?: number;\n lineWidth: number;\n opacity: number;\n } = {\n showOutliers: true,\n width: 'auto',\n lineWidth: 1,\n fillColor: 'none',\n lineColor: BLACK,\n opacity: 1,\n };\n\n constructor(layer: OuterBinnedDotsLayer) {\n super();\n this.method = layer.method ?? 'dotdensity';\n this.position = layer.position ?? 'stack';\n this.keyColumn = layer.keyColumn ?? null;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return (\n otherLayer.type === 'binnedDots' &&\n this.method === otherLayer.method &&\n this.position === otherLayer.position &&\n this.keyColumn?.value === otherLayer.keyColumn?.value\n );\n }\n}\n\nexport class PairedPointsLayer extends BaseDiscreteLayer {\n readonly type = 'pairedPoints';\n readonly linkColumn: ColumnName;\n readonly aes: {\n showOutliers: boolean;\n lineColor: InheritAesDiscrete | Color;\n lineWidth: number;\n lineShape: LineShape;\n dotFill: InheritAesDiscrete | Color;\n dotSize: number;\n dotShape: PointShape;\n opacity: number;\n } = {\n showOutliers: true,\n lineWidth: 1,\n lineColor: BLACK,\n lineShape: 'solid',\n dotFill: BLACK,\n dotSize: DEFAULT_DOT_SIZE,\n dotShape: DEFAULT_DOT_SHAPE,\n opacity: 1,\n };\n\n constructor(layer: OuterPairedPointsLayer) {\n super();\n this.linkColumn = layer.linkColumn;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return (\n otherLayer.type === 'pairedPoints' &&\n this.aes.showOutliers === otherLayer.aes.showOutliers &&\n this.linkColumn.value === otherLayer.linkColumn.value\n );\n }\n}\n\nexport class SinaLayer extends BaseDiscreteLayer {\n readonly type = 'sina';\n readonly aes: {\n showOutliers: boolean;\n width: number | 'auto';\n dotFill: InheritAesDiscrete | Color;\n dotSize: number;\n dotShape: InheritAesDiscrete | PointShape;\n opacity: number;\n } = {\n showOutliers: true,\n width: 'auto',\n dotFill: DEFAULT_FILL,\n dotSize: DEFAULT_DOT_SIZE,\n dotShape: DEFAULT_DOT_SHAPE,\n opacity: 1,\n };\n\n constructor(layer: OuterSinaLayer) {\n super();\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'sina' && this.aes.showOutliers === otherLayer.aes.showOutliers;\n }\n}\n\nexport class StatLayer extends BaseDiscreteLayer {\n readonly type = 'stat';\n readonly statType: 'overall' | 'referenceGroup' | 'pairwise';\n readonly testMethod: StatTestMethod;\n readonly paired: boolean;\n readonly ns: boolean;\n readonly format: 'significance' | 'pValue';\n readonly referenceGroup: DataValue | null = null;\n readonly correctionMethod: PValueCorrectionMethod | null = null;\n readonly significanceLevels: SignificanceLevels;\n\n constructor(layer: OuterStatLayer) {\n super();\n this.statType = layer.statType;\n this.testMethod = layer.testMethod;\n this.paired = layer.paired ?? false;\n this.ns = layer.ns ?? true;\n this.format = layer.format ?? 'pValue';\n if (this.statType === 'referenceGroup') {\n this.referenceGroup = layer.referenceGroup ?? null;\n }\n if (this.statType === 'referenceGroup' || this.statType === 'pairwise') {\n this.correctionMethod = layer.correctionMethod ?? null;\n }\n this.significanceLevels = {\n one: layer.significanceLevels?.one ?? 0.05,\n two: layer.significanceLevels?.two ?? 0.01,\n three: layer.significanceLevels?.three ?? 0.001,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'stat' && (Object.keys(this) as (keyof StatLayer)[]).every(key => this[key] === otherLayer[key]);\n }\n}\n\nexport type DiscreteLayer =\n | BoxLayer\n | ViolinLayer\n | DotLayer\n | LineLayer\n | ErrorBarLayer\n | BarLayer\n | StackedBarLayer\n | BinnedDotsLayer\n | PairedPointsLayer\n | SinaLayer\n | StatLayer\n | LogoPlotLayer;\n\nexport class DiscreteSettingsImpl implements SettingsInterface {\n readonly id: string;\n readonly type = 'discrete';\n readonly y: ColumnName;\n readonly keyColumn: ColumnName | null;\n readonly primaryGrouping: {\n columnName: ColumnName;\n order?: DataValue[];\n inheritedAes?: AesMap;\n allowNullGroup?: boolean;\n } | null;\n readonly secondaryGrouping: {\n columnName: ColumnName;\n order?: DataValue[];\n inheritedAes?: AesMap;\n allowNullGroup?: boolean;\n } | null;\n readonly facetSettings: {\n sharedX: boolean;\n sharedY: boolean;\n order?: Record<string, DataValue[]>; // map with ordered values of columns in \"facetBy\"\n nRows?: number;\n nCols?: number;\n titlePosition?: 'left' | 'right' | 'center';\n } | null;\n readonly facetBy: ColumnName[];\n readonly chartSettings: {\n readonly size: {width: number; height: number, outerOffset: number, innerOffset: number};\n readonly title: {name: string; show: boolean; position: TitlePosition};\n readonly orientation: Orientation;\n readonly yAxis: {\n title: string | ColumnName;\n scale: 'linear' | 'log';\n showGrid: boolean;\n showTicks: boolean;\n hiddenLabels: boolean;\n };\n readonly xAxis: {\n title: string | ColumnName;\n showGrid: boolean;\n linesBetweenCategories: boolean;\n showTicks: boolean;\n labelsPosition: 'center' | '45deg' | '90deg';\n hiddenLabels: boolean;\n };\n readonly frame: {type: FrameType};\n readonly legend: {show: boolean; position: LegendPosition};\n readonly tooltips: {\n box: {show: boolean};\n violin: {show: boolean};\n boxOutliers: {show: boolean};\n line: {show: boolean};\n dot: {show: boolean};\n errorBar: {show: boolean};\n binnedDots: {show: boolean};\n pairedPoints: {show: boolean};\n stackedBar: {show: boolean};\n logo: {show: boolean};\n };\n };\n\n readonly layers: DiscreteLayer[];\n\n constructor(settings: DiscreteSettings) {\n DiscreteSettingsSchema.parse(settings);\n this.id = lodash.uniqueId('settings');\n this.y = settings.y; // throw error if empty or if y.name doesn't exist in input table\n this.keyColumn = settings.keyColumn ?? null;\n this.primaryGrouping = settings.primaryGrouping ?? null; // check columnName\n this.secondaryGrouping = settings.secondaryGrouping ?? null; // check columnName\n this.facetSettings = {\n sharedX: true,\n sharedY: true,\n titlePosition: 'left',\n ...settings.facetSettings,\n };\n this.facetBy = settings.facetBy ?? [];\n this.chartSettings = {\n size: {\n width: settings?.size?.width ?? (this.facetBy.length ? DEFAULT_WIDTH_SMALL : DEFAULT_WIDTH),\n height: settings?.size?.height ?? (this.facetBy.length ? DEFAULT_HEIGHT_SMALL : DEFAULT_HEIGHT),\n outerOffset: settings?.size?.outerOffset ?? MIN_MARGIN,\n innerOffset: settings?.size?.innerOffset ?? PADDINGS.TOP\n },\n title: {\n position: 'center',\n show: true,\n ...settings.title,\n name: settings.title?.name ?? 'Chart',\n },\n orientation: settings.orientation ?? 'vertical',\n yAxis: {\n title: settings.y?.label ?? settings.y.value ?? '',\n scale: 'linear',\n showGrid: true,\n showTicks: true,\n hiddenLabels: false,\n ...settings.yAxis,\n },\n xAxis: {\n title: settings.primaryGrouping?.columnName?.label ?? settings.primaryGrouping?.columnName.value ?? '',\n showGrid: true,\n showTicks: true,\n linesBetweenCategories: true,\n labelsPosition: 'center',\n hiddenLabels: false,\n ...settings.xAxis,\n },\n frame: {type: settings.frame?.type ?? 'full'},\n legend: {\n show: true,\n position: 'right',\n ...settings.legend,\n },\n tooltips: {\n box: {show: true},\n violin: {show: true},\n boxOutliers: {show: true},\n line: {show: true},\n errorBar: {show: true},\n dot: {show: true},\n binnedDots: {show: true},\n pairedPoints: {show: true},\n stackedBar: {show: true},\n logo: {show: false},\n ...settings.tooltips,\n },\n };\n this.layers = settings.layers\n .map(layer => {\n if (layer.type === 'box') {\n return new BoxLayer(layer);\n }\n if (layer.type === 'violin') {\n return new ViolinLayer(layer);\n }\n if (layer.type === 'dot') {\n return new DotLayer(layer);\n }\n if (layer.type === 'line') {\n return new LineLayer(layer);\n }\n if (layer.type === 'errorbar') {\n return new ErrorBarLayer(layer);\n }\n if (layer.type === 'bar') {\n return new BarLayer(layer);\n }\n if (layer.type === 'stackedBar') {\n return new StackedBarLayer(layer);\n }\n if (layer.type === 'stat') {\n return new StatLayer(layer);\n }\n if (layer.type === 'binnedDots') {\n return new BinnedDotsLayer(layer);\n }\n if (layer.type === 'pairedPoints') {\n return new PairedPointsLayer(layer);\n }\n if (layer.type === 'sina') {\n return new SinaLayer(layer);\n }\n if (layer.type === 'logo') {\n return new LogoPlotLayer(layer);\n }\n exhaustive(layer, 'Unknown layer type');\n })\n .filter(Boolean) as DiscreteLayer[];\n }\n}\n"],"names":["DEFAULT_FILL","DEFAULT_DOT_SHAPE","DEFAULT_DOT_SIZE","BaseDiscreteLayer","BoxLayer","layer","__publicField","BLACK","otherLayer","key","ViolinLayer","DotLayer","LineLayer","ErrorBarLayer","BarLayer","StackedBarLayer","LogoPlotLayer","BinnedDotsLayer","_a","_b","PairedPointsLayer","SinaLayer","StatLayer","_c","DiscreteSettingsImpl","settings","DiscreteSettingsSchema","lodash","DEFAULT_WIDTH_SMALL","DEFAULT_WIDTH","DEFAULT_HEIGHT_SMALL","DEFAULT_HEIGHT","MIN_MARGIN","_d","PADDINGS","_e","_f","_h","_g","_i","_j","exhaustive"],"mappings":";;;;;;;;;;;;;;AAuCA,MAAMA,IAAe,WACfC,IAAoB,MACpBC,IAAmB;AAEzB,MAAeC,EAAkB;AAGjC;AAEO,MAAMC,UAAiBD,EAAkB;AAAA,EAqC5C,YAAYE,GAAsB;AAC9B,UAAA;AArCK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA,cAKL;AAAA,MACA,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,GAAG;AAAA,IAAA;AAEE,IAAAA,EAAA,aAWL;AAAA,MACA,cAAc;AAAA,MACd,UAAU;AAAA,MACV,UAAUL;AAAA,MACV,SAASM;AAAA,MACT,SAASL;AAAA,MACT,WAAWK;AAAA,MACX,WAAWP;AAAA,MACX,WAAW;AAAA,MACX,WAAW;AAAA,MACX,SAAS;AAAA,IAAA;AAKT,SAAK,OAAO;AAAA,MACR,GAAG,KAAK;AAAA,MACR,GAAGK,EAAM;AAAA,IAAA,GAEb,KAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGA,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;AAC7C,WACIA,EAAW,SAAS,SACnB,OAAO,KAAK,KAAK,IAAI,EAAiC,MAAM,CAAAC,MAAO,KAAK,KAAKA,CAAG,MAAMD,EAAW,KAAKC,CAAG,CAAC;AAAA,EAEnH;AACJ;AAEO,MAAMC,UAAoBP,EAAkB;AAAA,EAiC/C,YAAYE,GAAyB;AACjC,UAAA;AAjCK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA,cAIL;AAAA,MACA,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,MAAM;AAAA,IAAA;AAED,IAAAA,EAAA,aAUL;AAAA,MACA,OAAO;AAAA,MACP,WAAWC;AAAA,MACX,WAAWP;AAAA,MACX,WAAW;AAAA,MACX,WAAW;AAAA,MACX,SAAS;AAAA,MACT,eAAe;AAAA,MACf,iBAAiB;AAAA,MACjB,oBAAoB;AAAA,IAAA;AAKpB,SAAK,OAAO;AAAA,MACR,GAAG,KAAK;AAAA,MACR,GAAGK,EAAM;AAAA,IAAA,GAEb,KAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGA,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;AAC7C,WACIA,EAAW,SAAS,aAChB,KAAK,KAAK,cAAcA,EAAW,KAAK,aACxC,KAAK,KAAK,SAASA,EAAW,KAAK,QACnC,KAAK,KAAK,eAAeA,EAAW,KAAK;AAAA,EAGrD;AACJ;AAEO,MAAMG,UAAiBR,EAAkB;AAAA,EAoB5C,YAAYE,GAAsB;AAC9B,UAAA;AApBK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA,aAQL;AAAA,MACA,cAAc;AAAA,MACd,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,SAASC;AAAA,MACT,UAAUN;AAAA,MACV,SAASC;AAAA,MACT,SAAS;AAAA,IAAA;AAKT,SAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGG,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;AAC7C,WAAOA,EAAW,SAAS,SAAS,KAAK,IAAI,iBAAiBA,EAAW,IAAI;AAAA,EACjF;AACJ;AAEO,MAAMI,UAAkBT,EAAkB;AAAA,EAuB7C,YAAYE,GAAuB;AAC/B,UAAA;AAvBK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA;AACA,IAAAA,EAAA,aASL;AAAA,MACA,cAAc;AAAA,MACd,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAWC;AAAA,MACX,UAAUN;AAAA,MACV,SAASC;AAAA,MACT,SAAS;AAAA,IAAA;AAKT,SAAK,eAAeG,EAAM,cAC1B,KAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGA,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;AAC7C,WAAOA,EAAW,SAAS,UAAU,KAAK,iBAAiBA,EAAW;AAAA,EAC1E;AACJ;AAEO,MAAMK,UAAsBV,EAAkB;AAAA,EAwBjD,YAAYE,GAA2B;AACnC,UAAA;AAxBK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA,aASL;AAAA,MACA,UAAU;AAAA,MACV,OAAO;AAAA,MACP,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAWC;AAAA,MACX,UAAUN;AAAA,MACV,SAASC;AAAA,MACT,SAAS;AAAA,IAAA;AAKT,SAAK,eAAeG,EAAM,cAC1B,KAAK,WAAWA,EAAM,UACtB,KAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGA,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;AAC7C,WACIA,EAAW,SAAS,cACpB,KAAK,iBAAiBA,EAAW,gBACjC,KAAK,aAAaA,EAAW;AAAA,EAErC;AACJ;AAEO,MAAMM,UAAiBX,EAAkB;AAAA,EAiB5C,YAAYE,GAAsB;AAC9B,UAAA;AAjBK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA;AACA,IAAAA,EAAA,aAML;AAAA,MACA,OAAO;AAAA,MACP,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAWC;AAAA,MACX,SAAS;AAAA,IAAA;AAKT,SAAK,SAASF,EAAM,UAAU,OAC9B,KAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGA,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;AAC7C,WAAOA,EAAW,SAAS,SAAS,KAAK,WAAWA,EAAW;AAAA,EACnE;AACJ;AAEO,MAAMO,UAAwBZ,EAAkB;AAAA,EAiBnD,YAAYE,GAA6B;AACrC,UAAA;AAjBK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA,mBAAqB;AACrB,IAAAA,EAAA,aAML;AAAA,MACA,OAAO;AAAA,MACP,WAAW;AAAA,MACX,WAAWN;AAAA,MACX,WAAW;AAAA,MACX,SAAS;AAAA,IAAA;AAKT,SAAK,YAAYK,EAAM,aAAa,IACpC,KAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGA,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;AAC7C,WAAOA,EAAW,SAAS,gBAAgBA,EAAW,cAAc,KAAK;AAAA,EAC7E;AACJ;AAEO,MAAMQ,UAAsBb,EAAkB;AAAA,EAejD,YAAYE,GAA2B;AACnC,UAAA;AAfK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA,mBAAqB;AACrB,IAAAA,EAAA,aAKL;AAAA,MACA,OAAO;AAAA,MACP,WAAWN;AAAA,MACX,WAAW;AAAA,MACX,SAAS;AAAA,IAAA;AAKT,SAAK,YAAYK,EAAM,aAAa,IACpC,KAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGA,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;AAC7C,WAAOA,EAAW,SAAS,UAAUA,EAAW,cAAc,KAAK;AAAA,EACvE;AACJ;AAEO,MAAMS,UAAwBd,EAAkB;AAAA,EAsBnD,YAAYE,GAA6B;AACrC,UAAA;AAtBK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA,aAQL;AAAA,MACA,cAAc;AAAA,MACd,OAAO;AAAA,MACP,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAWC;AAAA,MACX,SAAS;AAAA,IAAA;AAKT,SAAK,SAASF,EAAM,UAAU,cAC9B,KAAK,WAAWA,EAAM,YAAY,SAClC,KAAK,YAAYA,EAAM,aAAa,MACpC,KAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGA,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;;AAC7C,WACIA,EAAW,SAAS,gBACpB,KAAK,WAAWA,EAAW,UAC3B,KAAK,aAAaA,EAAW,cAC7BU,IAAA,KAAK,cAAL,gBAAAA,EAAgB,aAAUC,IAAAX,EAAW,cAAX,gBAAAW,EAAsB;AAAA,EAExD;AACJ;AAEO,MAAMC,UAA0BjB,EAAkB;AAAA,EAuBrD,YAAYE,GAA+B;AACvC,UAAA;AAvBK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA;AACA,IAAAA,EAAA,aASL;AAAA,MACA,cAAc;AAAA,MACd,WAAW;AAAA,MACX,WAAWC;AAAA,MACX,WAAW;AAAA,MACX,SAASA;AAAA,MACT,SAASL;AAAA,MACT,UAAUD;AAAA,MACV,SAAS;AAAA,IAAA;AAKT,SAAK,aAAaI,EAAM,YACxB,KAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGA,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;AAC7C,WACIA,EAAW,SAAS,kBACpB,KAAK,IAAI,iBAAiBA,EAAW,IAAI,gBACzC,KAAK,WAAW,UAAUA,EAAW,WAAW;AAAA,EAExD;AACJ;AAEO,MAAMa,UAAkBlB,EAAkB;AAAA,EAkB7C,YAAYE,GAAuB;AAC/B,UAAA;AAlBK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA,aAOL;AAAA,MACA,cAAc;AAAA,MACd,OAAO;AAAA,MACP,SAASN;AAAA,MACT,SAASE;AAAA,MACT,UAAUD;AAAA,MACV,SAAS;AAAA,IAAA;AAKT,SAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGI,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;AAC7C,WAAOA,EAAW,SAAS,UAAU,KAAK,IAAI,iBAAiBA,EAAW,IAAI;AAAA,EAClF;AACJ;AAEO,MAAMc,UAAkBnB,EAAkB;AAAA,EAW7C,YAAYE,GAAuB;;AAC/B,UAAA;AAXK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA,wBAAmC;AACnC,IAAAA,EAAA,0BAAkD;AAClD,IAAAA,EAAA;AAIL,SAAK,WAAWD,EAAM,UACtB,KAAK,aAAaA,EAAM,YACxB,KAAK,SAASA,EAAM,UAAU,IAC9B,KAAK,KAAKA,EAAM,MAAM,IACtB,KAAK,SAASA,EAAM,UAAU,UAC1B,KAAK,aAAa,qBAClB,KAAK,iBAAiBA,EAAM,kBAAkB,QAE9C,KAAK,aAAa,oBAAoB,KAAK,aAAa,gBACxD,KAAK,mBAAmBA,EAAM,oBAAoB,OAEtD,KAAK,qBAAqB;AAAA,MACtB,OAAKa,IAAAb,EAAM,uBAAN,gBAAAa,EAA0B,QAAO;AAAA,MACtC,OAAKC,IAAAd,EAAM,uBAAN,gBAAAc,EAA0B,QAAO;AAAA,MACtC,SAAOI,IAAAlB,EAAM,uBAAN,gBAAAkB,EAA0B,UAAS;AAAA,IAAA;AAAA,EAElD;AAAA,EAEA,sBAAsBf,GAA2B;AAC7C,WAAOA,EAAW,SAAS,UAAW,OAAO,KAAK,IAAI,EAA0B,MAAM,CAAAC,MAAO,KAAKA,CAAG,MAAMD,EAAWC,CAAG,CAAC;AAAA,EAC9H;AACJ;AAgBO,MAAMe,GAAkD;AAAA,EA+D3D,YAAYC,GAA4B;AA9D/B,IAAAnB,EAAA;AACA,IAAAA,EAAA,cAAO;AACP,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AAMA,IAAAA,EAAA;AAMA,IAAAA,EAAA;AAQA,IAAAA,EAAA;AACA,IAAAA,EAAA;AAmCA,IAAAA,EAAA;;AAGL,IAAAoB,EAAuB,MAAMD,CAAQ,GACrC,KAAK,KAAKE,EAAO,SAAS,UAAU,GACpC,KAAK,IAAIF,EAAS,GAClB,KAAK,YAAYA,EAAS,aAAa,MACvC,KAAK,kBAAkBA,EAAS,mBAAmB,MACnD,KAAK,oBAAoBA,EAAS,qBAAqB,MACvD,KAAK,gBAAgB;AAAA,MACjB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,eAAe;AAAA,MACf,GAAGA,EAAS;AAAA,IAAA,GAEhB,KAAK,UAAUA,EAAS,WAAW,CAAA,GACnC,KAAK,gBAAgB;AAAA,MACjB,MAAM;AAAA,QACF,SAAOP,IAAAO,KAAA,gBAAAA,EAAU,SAAV,gBAAAP,EAAgB,WAAU,KAAK,QAAQ,SAASU,IAAsBC;AAAA,QAC7E,UAAQV,IAAAM,KAAA,gBAAAA,EAAU,SAAV,gBAAAN,EAAgB,YAAW,KAAK,QAAQ,SAASW,IAAuBC;AAAA,QAChF,eAAaR,IAAAE,KAAA,gBAAAA,EAAU,SAAV,gBAAAF,EAAgB,gBAAeS;AAAA,QAC5C,eAAaC,IAAAR,KAAA,gBAAAA,EAAU,SAAV,gBAAAQ,EAAgB,gBAAeC,EAAS;AAAA,MAAA;AAAA,MAEzD,OAAO;AAAA,QACH,UAAU;AAAA,QACV,MAAM;AAAA,QACN,GAAGT,EAAS;AAAA,QACZ,QAAMU,IAAAV,EAAS,UAAT,gBAAAU,EAAgB,SAAQ;AAAA,MAAA;AAAA,MAElC,aAAaV,EAAS,eAAe;AAAA,MACrC,OAAO;AAAA,QACH,SAAOW,IAAAX,EAAS,MAAT,gBAAAW,EAAY,UAASX,EAAS,EAAE,SAAS;AAAA,QAChD,OAAO;AAAA,QACP,UAAU;AAAA,QACV,WAAW;AAAA,QACX,cAAc;AAAA,QACd,GAAGA,EAAS;AAAA,MAAA;AAAA,MAEhB,OAAO;AAAA,QACH,SAAOY,KAAAC,IAAAb,EAAS,oBAAT,gBAAAa,EAA0B,eAA1B,gBAAAD,EAAsC,YAASE,IAAAd,EAAS,oBAAT,gBAAAc,EAA0B,WAAW,UAAS;AAAA,QACpG,UAAU;AAAA,QACV,WAAW;AAAA,QACX,wBAAwB;AAAA,QACxB,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,GAAGd,EAAS;AAAA,MAAA;AAAA,MAEhB,OAAO,EAAC,QAAMe,IAAAf,EAAS,UAAT,gBAAAe,EAAgB,SAAQ,OAAA;AAAA,MACtC,QAAQ;AAAA,QACJ,MAAM;AAAA,QACN,UAAU;AAAA,QACV,GAAGf,EAAS;AAAA,MAAA;AAAA,MAEhB,UAAU;AAAA,QACN,KAAK,EAAC,MAAM,GAAA;AAAA,QACZ,QAAQ,EAAC,MAAM,GAAA;AAAA,QACf,aAAa,EAAC,MAAM,GAAA;AAAA,QACpB,MAAM,EAAC,MAAM,GAAA;AAAA,QACb,UAAU,EAAC,MAAM,GAAA;AAAA,QACjB,KAAK,EAAC,MAAM,GAAA;AAAA,QACZ,YAAY,EAAC,MAAM,GAAA;AAAA,QACnB,cAAc,EAAC,MAAM,GAAA;AAAA,QACrB,YAAY,EAAC,MAAM,GAAA;AAAA,QACnB,MAAM,EAAC,MAAM,GAAA;AAAA,QACb,GAAGA,EAAS;AAAA,MAAA;AAAA,IAChB,GAEJ,KAAK,SAASA,EAAS,OAClB,IAAI,CAAApB,MAAS;AACV,UAAIA,EAAM,SAAS;AACf,eAAO,IAAID,EAASC,CAAK;AAE7B,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIK,EAAYL,CAAK;AAEhC,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIM,EAASN,CAAK;AAE7B,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIO,EAAUP,CAAK;AAE9B,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIQ,EAAcR,CAAK;AAElC,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIS,EAAST,CAAK;AAE7B,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIU,EAAgBV,CAAK;AAEpC,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIiB,EAAUjB,CAAK;AAE9B,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIY,EAAgBZ,CAAK;AAEpC,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIe,EAAkBf,CAAK;AAEtC,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIgB,EAAUhB,CAAK;AAE9B,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIW,EAAcX,CAAK;AAElC,MAAAoC,EAAWpC,GAAO,oBAAoB;AAAA,IAC1C,CAAC,EACA,OAAO,OAAO;AAAA,EACvB;AACJ;"}
1
+ {"version":3,"file":"DiscreteSettingsImpl.js","sources":["../../src/discrete/DiscreteSettingsImpl.ts"],"sourcesContent":["import { BLACK, DEFAULT_HEIGHT, DEFAULT_HEIGHT_SMALL, DEFAULT_WIDTH, DEFAULT_WIDTH_SMALL } from '../constants';\nimport type {\n AesRecord,\n Color,\n ColumnName,\n DataValue,\n DiscreteSettings,\n FrameType,\n InheritAesDiscrete,\n LegendPosition,\n LineShape,\n Orientation,\n BarLayer as OuterBarLayer,\n BinnedDotsLayer as OuterBinnedDotsLayer,\n BoxLayer as OuterBoxLayer,\n DotLayer as OuterDotLayer,\n ErrorBarLayer as OuterErrorBarLayer,\n LineLayer as OuterLineLayer,\n LogoPlotLayer as OuterLogoPlotLayer,\n PairedPointsLayer as OuterPairedPointsLayer,\n SinaLayer as OuterSinaLayer,\n StackedBarLayer as OuterStackedBarLayer,\n StatLayer as OuterStatLayer,\n ViolinLayer as OuterViolinLayer,\n PointShape,\n PValueCorrectionMethod,\n SettingsInterface,\n SignificanceLevels,\n StatTestMethod,\n SummaryErrorValue,\n SummaryGroupValue,\n TitlePosition,\n} from '../types';\nimport { DiscreteSettingsSchema } from '../types';\nimport { MIN_MARGIN, PADDINGS } from './constants';\n\nimport lodash from 'lodash';\nimport { exhaustive } from '../utils';\n\nconst DEFAULT_FILL = '#3e9838';\nconst DEFAULT_DOT_SHAPE = '21';\nconst DEFAULT_DOT_SIZE = 3;\n\nabstract class BaseDiscreteLayer {\n abstract type: string;\n abstract isEqualForCalculation(otherLayer: DiscreteLayer): boolean;\n}\n\nexport class BoxLayer extends BaseDiscreteLayer {\n readonly type = 'box';\n readonly stat: {\n upper: number;\n medium: number;\n lower: number;\n k: number;\n } = {\n upper: 0.75,\n medium: 0.5,\n lower: 0.25,\n k: 1.5,\n };\n readonly aes: {\n showOutliers: boolean;\n boxWidth: 'auto' | number;\n dotShape: InheritAesDiscrete | PointShape;\n dotSize: InheritAesDiscrete | number;\n dotFill: InheritAesDiscrete | string;\n lineColor: InheritAesDiscrete | string;\n fillColor: InheritAesDiscrete | string;\n lineWidth: number;\n lineShape: LineShape;\n opacity: number;\n } = {\n showOutliers: true,\n boxWidth: 'auto',\n dotShape: DEFAULT_DOT_SHAPE,\n dotFill: BLACK,\n dotSize: DEFAULT_DOT_SIZE,\n lineColor: BLACK,\n fillColor: DEFAULT_FILL,\n lineWidth: 1,\n lineShape: 'solid',\n opacity: 1,\n };\n\n constructor(layer: OuterBoxLayer) {\n super();\n this.stat = {\n ...this.stat,\n ...layer.stat,\n };\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return (\n otherLayer.type === 'box' &&\n (Object.keys(this.stat) as (keyof BoxLayer['stat'])[]).every(key => this.stat[key] === otherLayer.stat[key])\n );\n }\n}\n\nexport class ViolinLayer extends BaseDiscreteLayer {\n readonly type = 'violin';\n readonly stat: {\n bandwidth: 'auto' | number;\n stepsCount: 'auto' | number;\n trim: boolean;\n } = {\n bandwidth: 'auto',\n stepsCount: 40,\n trim: true,\n };\n readonly aes: {\n width: 'auto' | number;\n lineColor: InheritAesDiscrete | string;\n fillColor: InheritAesDiscrete | string;\n lineWidth: number;\n lineShape: LineShape;\n opacity: number;\n showQuartiles: boolean;\n medianLineStyle: LineShape;\n quartilesLineStyle: LineShape;\n } = {\n width: 'auto',\n lineColor: BLACK,\n fillColor: DEFAULT_FILL,\n lineWidth: 1,\n lineShape: 'solid',\n opacity: 1,\n showQuartiles: true,\n medianLineStyle: 'solid',\n quartilesLineStyle: 'dashed'\n };\n\n constructor(layer: OuterViolinLayer) {\n super();\n this.stat = {\n ...this.stat,\n ...layer.stat,\n };\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return (\n otherLayer.type === 'violin' && (\n this.stat.bandwidth !== otherLayer.stat.bandwidth ||\n this.stat.trim !== otherLayer.stat.trim ||\n this.stat.stepsCount !== otherLayer.stat.stepsCount\n )\n );\n }\n}\n\nexport class DotLayer extends BaseDiscreteLayer {\n readonly type = 'dot';\n readonly aes: {\n showOutliers: boolean;\n jitter: number;\n dotFill: InheritAesDiscrete | string;\n lineColor: InheritAesDiscrete | string;\n dotShape: InheritAesDiscrete | PointShape;\n dotSize: number;\n opacity: number;\n } = {\n showOutliers: true,\n jitter: 0.8,\n lineColor: 'none',\n dotFill: BLACK,\n dotShape: DEFAULT_DOT_SHAPE,\n dotSize: DEFAULT_DOT_SIZE,\n opacity: 1,\n };\n\n constructor(layer: OuterDotLayer) {\n super();\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'dot' && this.aes.showOutliers === otherLayer.aes.showOutliers;\n }\n}\n\nexport class LineLayer extends BaseDiscreteLayer {\n readonly type = 'line';\n readonly pointsValues: SummaryGroupValue;\n readonly aes: {\n showOutliers: boolean;\n lineWidth: number;\n lineColor: InheritAesDiscrete | string;\n fillColor: InheritAesDiscrete | string;\n lineShape: InheritAesDiscrete | LineShape;\n dotShape: InheritAesDiscrete | PointShape;\n dotSize: number;\n opacity: number;\n } = {\n showOutliers: true,\n lineWidth: 1,\n lineShape: 'solid',\n fillColor: 'none',\n lineColor: BLACK,\n dotShape: DEFAULT_DOT_SHAPE,\n dotSize: DEFAULT_DOT_SIZE,\n opacity: 1,\n };\n\n constructor(layer: OuterLineLayer) {\n super();\n this.pointsValues = layer.pointsValues;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'line' && this.pointsValues === otherLayer.pointsValues;\n }\n}\n\nexport class ErrorBarLayer extends BaseDiscreteLayer {\n readonly type = 'errorbar';\n readonly pointsValues: SummaryGroupValue;\n readonly interval: SummaryErrorValue;\n readonly aes: {\n showDots: boolean;\n width: number | 'auto';\n lineWidth: number;\n lineColor: InheritAesDiscrete | string;\n fillColor: InheritAesDiscrete | string;\n dotShape: InheritAesDiscrete | PointShape;\n dotSize: number;\n opacity: number;\n } = {\n showDots: true,\n width: 'auto',\n lineWidth: 1,\n fillColor: 'none',\n lineColor: BLACK,\n dotShape: DEFAULT_DOT_SHAPE,\n dotSize: DEFAULT_DOT_SIZE,\n opacity: 1,\n };\n\n constructor(layer: OuterErrorBarLayer) {\n super();\n this.pointsValues = layer.pointsValues;\n this.interval = layer.interval;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return (\n otherLayer.type === 'errorbar' &&\n this.pointsValues === otherLayer.pointsValues &&\n this.interval === otherLayer.interval\n );\n }\n}\n\nexport class BarLayer extends BaseDiscreteLayer {\n readonly type = 'bar';\n readonly height: 'min' | 'max' | 'median' | 'mean';\n readonly aes: {\n width: number | 'auto';\n lineColor: InheritAesDiscrete | Color;\n fillColor: InheritAesDiscrete | Color;\n lineWidth: number;\n opacity: number;\n } = {\n width: 'auto',\n lineWidth: 1,\n fillColor: 'none',\n lineColor: BLACK,\n opacity: 1,\n };\n\n constructor(layer: OuterBarLayer) {\n super();\n this.height = layer.height ?? 'max';\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'bar' && this.height === otherLayer.height;\n }\n}\n\nexport class StackedBarLayer extends BaseDiscreteLayer {\n readonly type = 'stackedBar';\n readonly normalize: boolean = false;\n readonly aes: {\n width: number | 'auto';\n lineColor: InheritAesDiscrete | Color;\n fillColor: InheritAesDiscrete | Color;\n lineWidth: number;\n opacity: number;\n } = {\n width: 'auto',\n lineWidth: 1,\n fillColor: DEFAULT_FILL,\n lineColor: 'none',\n opacity: 1,\n };\n\n constructor(layer: OuterStackedBarLayer) {\n super();\n this.normalize = layer.normalize ?? false;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'stackedBar' && otherLayer.normalize === this.normalize;\n }\n}\n\nexport class LogoPlotLayer extends BaseDiscreteLayer {\n readonly type = 'logo';\n readonly normalize: boolean = false;\n readonly aes: {\n width: number | 'auto';\n fillColor: Record<string, string> | Color;\n lineColor: Color;\n opacity: number;\n } = {\n width: 'auto',\n fillColor: DEFAULT_FILL,\n lineColor: 'none',\n opacity: 1,\n };\n\n constructor(layer: OuterLogoPlotLayer) {\n super();\n this.normalize = layer.normalize ?? false;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'logo' && otherLayer.normalize === this.normalize;\n }\n}\n\nexport class BinnedDotsLayer extends BaseDiscreteLayer {\n readonly type = 'binnedDots';\n readonly method: 'dotdensity' | 'histodot';\n readonly position: 'stack' | 'jitter';\n readonly keyColumn: ColumnName | null;\n readonly aes: {\n showOutliers: boolean;\n width: number | 'auto';\n lineColor: InheritAesDiscrete | Color;\n fillColor: InheritAesDiscrete | Color;\n dotSize?: number;\n lineWidth: number;\n opacity: number;\n } = {\n showOutliers: true,\n width: 'auto',\n lineWidth: 1,\n fillColor: 'none',\n lineColor: BLACK,\n opacity: 1,\n };\n\n constructor(layer: OuterBinnedDotsLayer) {\n super();\n this.method = layer.method ?? 'dotdensity';\n this.position = layer.position ?? 'stack';\n this.keyColumn = layer.keyColumn ?? null;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return (\n otherLayer.type === 'binnedDots' &&\n this.method === otherLayer.method &&\n this.position === otherLayer.position &&\n this.keyColumn?.value === otherLayer.keyColumn?.value\n );\n }\n}\n\nexport class PairedPointsLayer extends BaseDiscreteLayer {\n readonly type = 'pairedPoints';\n readonly linkColumn: ColumnName;\n readonly aes: {\n showOutliers: boolean;\n lineColor: InheritAesDiscrete | Color;\n lineWidth: number;\n lineShape: LineShape;\n dotFill: InheritAesDiscrete | Color;\n dotSize: number;\n dotShape: PointShape;\n opacity: number;\n } = {\n showOutliers: true,\n lineWidth: 1,\n lineColor: BLACK,\n lineShape: 'solid',\n dotFill: BLACK,\n dotSize: DEFAULT_DOT_SIZE,\n dotShape: DEFAULT_DOT_SHAPE,\n opacity: 1,\n };\n\n constructor(layer: OuterPairedPointsLayer) {\n super();\n this.linkColumn = layer.linkColumn;\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return (\n otherLayer.type === 'pairedPoints' &&\n this.aes.showOutliers === otherLayer.aes.showOutliers &&\n this.linkColumn.value === otherLayer.linkColumn.value\n );\n }\n}\n\nexport class SinaLayer extends BaseDiscreteLayer {\n readonly type = 'sina';\n readonly aes: {\n showOutliers: boolean;\n width: number | 'auto';\n dotFill: InheritAesDiscrete | Color;\n dotSize: number;\n dotShape: InheritAesDiscrete | PointShape;\n opacity: number;\n } = {\n showOutliers: true,\n width: 'auto',\n dotFill: DEFAULT_FILL,\n dotSize: DEFAULT_DOT_SIZE,\n dotShape: DEFAULT_DOT_SHAPE,\n opacity: 1,\n };\n\n constructor(layer: OuterSinaLayer) {\n super();\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'sina' && this.aes.showOutliers === otherLayer.aes.showOutliers;\n }\n}\n\nexport class StatLayer extends BaseDiscreteLayer {\n readonly type = 'stat';\n readonly statType: 'overall' | 'referenceGroup' | 'pairwise';\n readonly testMethod: StatTestMethod;\n readonly paired: boolean;\n readonly ns: boolean;\n readonly format: 'significance' | 'pValue';\n readonly referenceGroup: DataValue | null = null;\n readonly correctionMethod: PValueCorrectionMethod | null = null;\n readonly significanceLevels: SignificanceLevels;\n\n constructor(layer: OuterStatLayer) {\n super();\n this.statType = layer.statType;\n this.testMethod = layer.testMethod;\n this.paired = layer.paired ?? false;\n this.ns = layer.ns ?? true;\n this.format = layer.format ?? 'pValue';\n if (this.statType === 'referenceGroup') {\n this.referenceGroup = layer.referenceGroup ?? null;\n }\n if (this.statType === 'referenceGroup' || this.statType === 'pairwise') {\n this.correctionMethod = layer.correctionMethod ?? null;\n }\n this.significanceLevels = {\n one: layer.significanceLevels?.one ?? 0.05,\n two: layer.significanceLevels?.two ?? 0.01,\n three: layer.significanceLevels?.three ?? 0.001,\n };\n }\n\n isEqualForCalculation(otherLayer: DiscreteLayer) {\n return otherLayer.type === 'stat' && (Object.keys(this) as (keyof StatLayer)[]).every(key => this[key] === otherLayer[key]);\n }\n}\n\nexport type DiscreteLayer =\n | BoxLayer\n | ViolinLayer\n | DotLayer\n | LineLayer\n | ErrorBarLayer\n | BarLayer\n | StackedBarLayer\n | BinnedDotsLayer\n | PairedPointsLayer\n | SinaLayer\n | StatLayer\n | LogoPlotLayer;\n\nexport class DiscreteSettingsImpl implements SettingsInterface {\n readonly id: string;\n readonly type = 'discrete';\n readonly y: ColumnName;\n readonly keyColumn: ColumnName | null;\n readonly primaryGrouping: {\n columnName: ColumnName;\n order?: DataValue[];\n inheritedAes?: AesRecord;\n allowNullGroup?: boolean;\n } | null;\n readonly secondaryGrouping: {\n columnName: ColumnName;\n order?: DataValue[];\n inheritedAes?: AesRecord;\n allowNullGroup?: boolean;\n } | null;\n readonly facetSettings: {\n sharedX: boolean;\n sharedY: boolean;\n order?: Record<string, DataValue[]>; // map with ordered values of columns in \"facetBy\"\n nRows?: number;\n nCols?: number;\n titlePosition?: 'left' | 'right' | 'center';\n } | null;\n readonly facetBy: ColumnName[];\n readonly chartSettings: {\n readonly size: {width: number; height: number, outerOffset: number, innerOffset: number};\n readonly title: {name: string; show: boolean; position: TitlePosition};\n readonly orientation: Orientation;\n readonly yAxis: {\n title: string | ColumnName;\n scale: 'linear' | 'log';\n showGrid: boolean;\n showTicks: boolean;\n hiddenLabels: boolean;\n };\n readonly xAxis: {\n title: string | ColumnName;\n showGrid: boolean;\n linesBetweenCategories: boolean;\n showTicks: boolean;\n labelsPosition: 'center' | '45deg' | '90deg';\n hiddenLabels: boolean;\n };\n readonly frame: {type: FrameType};\n readonly legend: {show: boolean; position: LegendPosition};\n readonly tooltips: {\n box: {show: boolean};\n violin: {show: boolean};\n boxOutliers: {show: boolean};\n line: {show: boolean};\n dot: {show: boolean};\n errorBar: {show: boolean};\n binnedDots: {show: boolean};\n pairedPoints: {show: boolean};\n stackedBar: {show: boolean};\n logo: {show: boolean};\n };\n };\n\n readonly layers: DiscreteLayer[];\n\n constructor(settings: DiscreteSettings) {\n DiscreteSettingsSchema.parse(settings);\n this.id = lodash.uniqueId('settings');\n this.y = settings.y; // throw error if empty or if y.name doesn't exist in input table\n this.keyColumn = settings.keyColumn ?? null;\n this.primaryGrouping = settings.primaryGrouping ?? null; // check columnName\n this.secondaryGrouping = settings.secondaryGrouping ?? null; // check columnName\n this.facetSettings = {\n sharedX: true,\n sharedY: true,\n titlePosition: 'left',\n ...settings.facetSettings,\n };\n this.facetBy = settings.facetBy ?? [];\n this.chartSettings = {\n size: {\n width: settings?.size?.width ?? (this.facetBy.length ? DEFAULT_WIDTH_SMALL : DEFAULT_WIDTH),\n height: settings?.size?.height ?? (this.facetBy.length ? DEFAULT_HEIGHT_SMALL : DEFAULT_HEIGHT),\n outerOffset: settings?.size?.outerOffset ?? MIN_MARGIN,\n innerOffset: settings?.size?.innerOffset ?? PADDINGS.TOP\n },\n title: {\n position: 'center',\n show: true,\n ...settings.title,\n name: settings.title?.name ?? 'Chart',\n },\n orientation: settings.orientation ?? 'vertical',\n yAxis: {\n title: settings.y?.label ?? settings.y.value ?? '',\n scale: 'linear',\n showGrid: true,\n showTicks: true,\n hiddenLabels: false,\n ...settings.yAxis,\n },\n xAxis: {\n title: settings.primaryGrouping?.columnName?.label ?? settings.primaryGrouping?.columnName.value ?? '',\n showGrid: true,\n showTicks: true,\n linesBetweenCategories: true,\n labelsPosition: 'center',\n hiddenLabels: false,\n ...settings.xAxis,\n },\n frame: {type: settings.frame?.type ?? 'full'},\n legend: {\n show: true,\n position: 'right',\n ...settings.legend,\n },\n tooltips: {\n box: {show: true},\n violin: {show: true},\n boxOutliers: {show: true},\n line: {show: true},\n errorBar: {show: true},\n dot: {show: true},\n binnedDots: {show: true},\n pairedPoints: {show: true},\n stackedBar: {show: true},\n logo: {show: false},\n ...settings.tooltips,\n },\n };\n this.layers = settings.layers\n .map(layer => {\n if (layer.type === 'box') {\n return new BoxLayer(layer);\n }\n if (layer.type === 'violin') {\n return new ViolinLayer(layer);\n }\n if (layer.type === 'dot') {\n return new DotLayer(layer);\n }\n if (layer.type === 'line') {\n return new LineLayer(layer);\n }\n if (layer.type === 'errorbar') {\n return new ErrorBarLayer(layer);\n }\n if (layer.type === 'bar') {\n return new BarLayer(layer);\n }\n if (layer.type === 'stackedBar') {\n return new StackedBarLayer(layer);\n }\n if (layer.type === 'stat') {\n return new StatLayer(layer);\n }\n if (layer.type === 'binnedDots') {\n return new BinnedDotsLayer(layer);\n }\n if (layer.type === 'pairedPoints') {\n return new PairedPointsLayer(layer);\n }\n if (layer.type === 'sina') {\n return new SinaLayer(layer);\n }\n if (layer.type === 'logo') {\n return new LogoPlotLayer(layer);\n }\n exhaustive(layer, 'Unknown layer type');\n })\n .filter(Boolean) as DiscreteLayer[];\n }\n}\n"],"names":["DEFAULT_FILL","DEFAULT_DOT_SHAPE","DEFAULT_DOT_SIZE","BaseDiscreteLayer","BoxLayer","layer","__publicField","BLACK","otherLayer","key","ViolinLayer","DotLayer","LineLayer","ErrorBarLayer","BarLayer","StackedBarLayer","LogoPlotLayer","BinnedDotsLayer","_a","_b","PairedPointsLayer","SinaLayer","StatLayer","_c","DiscreteSettingsImpl","settings","DiscreteSettingsSchema","lodash","DEFAULT_WIDTH_SMALL","DEFAULT_WIDTH","DEFAULT_HEIGHT_SMALL","DEFAULT_HEIGHT","MIN_MARGIN","_d","PADDINGS","_e","_f","_h","_g","_i","_j","exhaustive"],"mappings":";;;;;;;;;;;;;;AAuCA,MAAMA,IAAe,WACfC,IAAoB,MACpBC,IAAmB;AAEzB,MAAeC,EAAkB;AAGjC;AAEO,MAAMC,UAAiBD,EAAkB;AAAA,EAqC5C,YAAYE,GAAsB;AAC9B,UAAA;AArCK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA,cAKL;AAAA,MACA,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,GAAG;AAAA,IAAA;AAEE,IAAAA,EAAA,aAWL;AAAA,MACA,cAAc;AAAA,MACd,UAAU;AAAA,MACV,UAAUL;AAAA,MACV,SAASM;AAAA,MACT,SAASL;AAAA,MACT,WAAWK;AAAA,MACX,WAAWP;AAAA,MACX,WAAW;AAAA,MACX,WAAW;AAAA,MACX,SAAS;AAAA,IAAA;AAKT,SAAK,OAAO;AAAA,MACR,GAAG,KAAK;AAAA,MACR,GAAGK,EAAM;AAAA,IAAA,GAEb,KAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGA,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;AAC7C,WACIA,EAAW,SAAS,SACnB,OAAO,KAAK,KAAK,IAAI,EAAiC,MAAM,CAAAC,MAAO,KAAK,KAAKA,CAAG,MAAMD,EAAW,KAAKC,CAAG,CAAC;AAAA,EAEnH;AACJ;AAEO,MAAMC,UAAoBP,EAAkB;AAAA,EAiC/C,YAAYE,GAAyB;AACjC,UAAA;AAjCK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA,cAIL;AAAA,MACA,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,MAAM;AAAA,IAAA;AAED,IAAAA,EAAA,aAUL;AAAA,MACA,OAAO;AAAA,MACP,WAAWC;AAAA,MACX,WAAWP;AAAA,MACX,WAAW;AAAA,MACX,WAAW;AAAA,MACX,SAAS;AAAA,MACT,eAAe;AAAA,MACf,iBAAiB;AAAA,MACjB,oBAAoB;AAAA,IAAA;AAKpB,SAAK,OAAO;AAAA,MACR,GAAG,KAAK;AAAA,MACR,GAAGK,EAAM;AAAA,IAAA,GAEb,KAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGA,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;AAC7C,WACIA,EAAW,SAAS,aAChB,KAAK,KAAK,cAAcA,EAAW,KAAK,aACxC,KAAK,KAAK,SAASA,EAAW,KAAK,QACnC,KAAK,KAAK,eAAeA,EAAW,KAAK;AAAA,EAGrD;AACJ;AAEO,MAAMG,UAAiBR,EAAkB;AAAA,EAoB5C,YAAYE,GAAsB;AAC9B,UAAA;AApBK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA,aAQL;AAAA,MACA,cAAc;AAAA,MACd,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,SAASC;AAAA,MACT,UAAUN;AAAA,MACV,SAASC;AAAA,MACT,SAAS;AAAA,IAAA;AAKT,SAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGG,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;AAC7C,WAAOA,EAAW,SAAS,SAAS,KAAK,IAAI,iBAAiBA,EAAW,IAAI;AAAA,EACjF;AACJ;AAEO,MAAMI,UAAkBT,EAAkB;AAAA,EAuB7C,YAAYE,GAAuB;AAC/B,UAAA;AAvBK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA;AACA,IAAAA,EAAA,aASL;AAAA,MACA,cAAc;AAAA,MACd,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAWC;AAAA,MACX,UAAUN;AAAA,MACV,SAASC;AAAA,MACT,SAAS;AAAA,IAAA;AAKT,SAAK,eAAeG,EAAM,cAC1B,KAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGA,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;AAC7C,WAAOA,EAAW,SAAS,UAAU,KAAK,iBAAiBA,EAAW;AAAA,EAC1E;AACJ;AAEO,MAAMK,UAAsBV,EAAkB;AAAA,EAwBjD,YAAYE,GAA2B;AACnC,UAAA;AAxBK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA,aASL;AAAA,MACA,UAAU;AAAA,MACV,OAAO;AAAA,MACP,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAWC;AAAA,MACX,UAAUN;AAAA,MACV,SAASC;AAAA,MACT,SAAS;AAAA,IAAA;AAKT,SAAK,eAAeG,EAAM,cAC1B,KAAK,WAAWA,EAAM,UACtB,KAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGA,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;AAC7C,WACIA,EAAW,SAAS,cACpB,KAAK,iBAAiBA,EAAW,gBACjC,KAAK,aAAaA,EAAW;AAAA,EAErC;AACJ;AAEO,MAAMM,UAAiBX,EAAkB;AAAA,EAiB5C,YAAYE,GAAsB;AAC9B,UAAA;AAjBK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA;AACA,IAAAA,EAAA,aAML;AAAA,MACA,OAAO;AAAA,MACP,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAWC;AAAA,MACX,SAAS;AAAA,IAAA;AAKT,SAAK,SAASF,EAAM,UAAU,OAC9B,KAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGA,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;AAC7C,WAAOA,EAAW,SAAS,SAAS,KAAK,WAAWA,EAAW;AAAA,EACnE;AACJ;AAEO,MAAMO,UAAwBZ,EAAkB;AAAA,EAiBnD,YAAYE,GAA6B;AACrC,UAAA;AAjBK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA,mBAAqB;AACrB,IAAAA,EAAA,aAML;AAAA,MACA,OAAO;AAAA,MACP,WAAW;AAAA,MACX,WAAWN;AAAA,MACX,WAAW;AAAA,MACX,SAAS;AAAA,IAAA;AAKT,SAAK,YAAYK,EAAM,aAAa,IACpC,KAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGA,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;AAC7C,WAAOA,EAAW,SAAS,gBAAgBA,EAAW,cAAc,KAAK;AAAA,EAC7E;AACJ;AAEO,MAAMQ,UAAsBb,EAAkB;AAAA,EAejD,YAAYE,GAA2B;AACnC,UAAA;AAfK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA,mBAAqB;AACrB,IAAAA,EAAA,aAKL;AAAA,MACA,OAAO;AAAA,MACP,WAAWN;AAAA,MACX,WAAW;AAAA,MACX,SAAS;AAAA,IAAA;AAKT,SAAK,YAAYK,EAAM,aAAa,IACpC,KAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGA,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;AAC7C,WAAOA,EAAW,SAAS,UAAUA,EAAW,cAAc,KAAK;AAAA,EACvE;AACJ;AAEO,MAAMS,UAAwBd,EAAkB;AAAA,EAsBnD,YAAYE,GAA6B;AACrC,UAAA;AAtBK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA,aAQL;AAAA,MACA,cAAc;AAAA,MACd,OAAO;AAAA,MACP,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAWC;AAAA,MACX,SAAS;AAAA,IAAA;AAKT,SAAK,SAASF,EAAM,UAAU,cAC9B,KAAK,WAAWA,EAAM,YAAY,SAClC,KAAK,YAAYA,EAAM,aAAa,MACpC,KAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGA,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;;AAC7C,WACIA,EAAW,SAAS,gBACpB,KAAK,WAAWA,EAAW,UAC3B,KAAK,aAAaA,EAAW,cAC7BU,IAAA,KAAK,cAAL,gBAAAA,EAAgB,aAAUC,IAAAX,EAAW,cAAX,gBAAAW,EAAsB;AAAA,EAExD;AACJ;AAEO,MAAMC,UAA0BjB,EAAkB;AAAA,EAuBrD,YAAYE,GAA+B;AACvC,UAAA;AAvBK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA;AACA,IAAAA,EAAA,aASL;AAAA,MACA,cAAc;AAAA,MACd,WAAW;AAAA,MACX,WAAWC;AAAA,MACX,WAAW;AAAA,MACX,SAASA;AAAA,MACT,SAASL;AAAA,MACT,UAAUD;AAAA,MACV,SAAS;AAAA,IAAA;AAKT,SAAK,aAAaI,EAAM,YACxB,KAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGA,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;AAC7C,WACIA,EAAW,SAAS,kBACpB,KAAK,IAAI,iBAAiBA,EAAW,IAAI,gBACzC,KAAK,WAAW,UAAUA,EAAW,WAAW;AAAA,EAExD;AACJ;AAEO,MAAMa,UAAkBlB,EAAkB;AAAA,EAkB7C,YAAYE,GAAuB;AAC/B,UAAA;AAlBK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA,aAOL;AAAA,MACA,cAAc;AAAA,MACd,OAAO;AAAA,MACP,SAASN;AAAA,MACT,SAASE;AAAA,MACT,UAAUD;AAAA,MACV,SAAS;AAAA,IAAA;AAKT,SAAK,MAAM;AAAA,MACP,GAAG,KAAK;AAAA,MACR,GAAGI,EAAM;AAAA,IAAA;AAAA,EAEjB;AAAA,EAEA,sBAAsBG,GAA2B;AAC7C,WAAOA,EAAW,SAAS,UAAU,KAAK,IAAI,iBAAiBA,EAAW,IAAI;AAAA,EAClF;AACJ;AAEO,MAAMc,UAAkBnB,EAAkB;AAAA,EAW7C,YAAYE,GAAuB;;AAC/B,UAAA;AAXK,IAAAC,EAAA,cAAO;AACP,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA,wBAAmC;AACnC,IAAAA,EAAA,0BAAkD;AAClD,IAAAA,EAAA;AAIL,SAAK,WAAWD,EAAM,UACtB,KAAK,aAAaA,EAAM,YACxB,KAAK,SAASA,EAAM,UAAU,IAC9B,KAAK,KAAKA,EAAM,MAAM,IACtB,KAAK,SAASA,EAAM,UAAU,UAC1B,KAAK,aAAa,qBAClB,KAAK,iBAAiBA,EAAM,kBAAkB,QAE9C,KAAK,aAAa,oBAAoB,KAAK,aAAa,gBACxD,KAAK,mBAAmBA,EAAM,oBAAoB,OAEtD,KAAK,qBAAqB;AAAA,MACtB,OAAKa,IAAAb,EAAM,uBAAN,gBAAAa,EAA0B,QAAO;AAAA,MACtC,OAAKC,IAAAd,EAAM,uBAAN,gBAAAc,EAA0B,QAAO;AAAA,MACtC,SAAOI,IAAAlB,EAAM,uBAAN,gBAAAkB,EAA0B,UAAS;AAAA,IAAA;AAAA,EAElD;AAAA,EAEA,sBAAsBf,GAA2B;AAC7C,WAAOA,EAAW,SAAS,UAAW,OAAO,KAAK,IAAI,EAA0B,MAAM,CAAAC,MAAO,KAAKA,CAAG,MAAMD,EAAWC,CAAG,CAAC;AAAA,EAC9H;AACJ;AAgBO,MAAMe,GAAkD;AAAA,EA+D3D,YAAYC,GAA4B;AA9D/B,IAAAnB,EAAA;AACA,IAAAA,EAAA,cAAO;AACP,IAAAA,EAAA;AACA,IAAAA,EAAA;AACA,IAAAA,EAAA;AAMA,IAAAA,EAAA;AAMA,IAAAA,EAAA;AAQA,IAAAA,EAAA;AACA,IAAAA,EAAA;AAmCA,IAAAA,EAAA;;AAGL,IAAAoB,EAAuB,MAAMD,CAAQ,GACrC,KAAK,KAAKE,EAAO,SAAS,UAAU,GACpC,KAAK,IAAIF,EAAS,GAClB,KAAK,YAAYA,EAAS,aAAa,MACvC,KAAK,kBAAkBA,EAAS,mBAAmB,MACnD,KAAK,oBAAoBA,EAAS,qBAAqB,MACvD,KAAK,gBAAgB;AAAA,MACjB,SAAS;AAAA,MACT,SAAS;AAAA,MACT,eAAe;AAAA,MACf,GAAGA,EAAS;AAAA,IAAA,GAEhB,KAAK,UAAUA,EAAS,WAAW,CAAA,GACnC,KAAK,gBAAgB;AAAA,MACjB,MAAM;AAAA,QACF,SAAOP,IAAAO,KAAA,gBAAAA,EAAU,SAAV,gBAAAP,EAAgB,WAAU,KAAK,QAAQ,SAASU,IAAsBC;AAAA,QAC7E,UAAQV,IAAAM,KAAA,gBAAAA,EAAU,SAAV,gBAAAN,EAAgB,YAAW,KAAK,QAAQ,SAASW,IAAuBC;AAAA,QAChF,eAAaR,IAAAE,KAAA,gBAAAA,EAAU,SAAV,gBAAAF,EAAgB,gBAAeS;AAAA,QAC5C,eAAaC,IAAAR,KAAA,gBAAAA,EAAU,SAAV,gBAAAQ,EAAgB,gBAAeC,EAAS;AAAA,MAAA;AAAA,MAEzD,OAAO;AAAA,QACH,UAAU;AAAA,QACV,MAAM;AAAA,QACN,GAAGT,EAAS;AAAA,QACZ,QAAMU,IAAAV,EAAS,UAAT,gBAAAU,EAAgB,SAAQ;AAAA,MAAA;AAAA,MAElC,aAAaV,EAAS,eAAe;AAAA,MACrC,OAAO;AAAA,QACH,SAAOW,IAAAX,EAAS,MAAT,gBAAAW,EAAY,UAASX,EAAS,EAAE,SAAS;AAAA,QAChD,OAAO;AAAA,QACP,UAAU;AAAA,QACV,WAAW;AAAA,QACX,cAAc;AAAA,QACd,GAAGA,EAAS;AAAA,MAAA;AAAA,MAEhB,OAAO;AAAA,QACH,SAAOY,KAAAC,IAAAb,EAAS,oBAAT,gBAAAa,EAA0B,eAA1B,gBAAAD,EAAsC,YAASE,IAAAd,EAAS,oBAAT,gBAAAc,EAA0B,WAAW,UAAS;AAAA,QACpG,UAAU;AAAA,QACV,WAAW;AAAA,QACX,wBAAwB;AAAA,QACxB,gBAAgB;AAAA,QAChB,cAAc;AAAA,QACd,GAAGd,EAAS;AAAA,MAAA;AAAA,MAEhB,OAAO,EAAC,QAAMe,IAAAf,EAAS,UAAT,gBAAAe,EAAgB,SAAQ,OAAA;AAAA,MACtC,QAAQ;AAAA,QACJ,MAAM;AAAA,QACN,UAAU;AAAA,QACV,GAAGf,EAAS;AAAA,MAAA;AAAA,MAEhB,UAAU;AAAA,QACN,KAAK,EAAC,MAAM,GAAA;AAAA,QACZ,QAAQ,EAAC,MAAM,GAAA;AAAA,QACf,aAAa,EAAC,MAAM,GAAA;AAAA,QACpB,MAAM,EAAC,MAAM,GAAA;AAAA,QACb,UAAU,EAAC,MAAM,GAAA;AAAA,QACjB,KAAK,EAAC,MAAM,GAAA;AAAA,QACZ,YAAY,EAAC,MAAM,GAAA;AAAA,QACnB,cAAc,EAAC,MAAM,GAAA;AAAA,QACrB,YAAY,EAAC,MAAM,GAAA;AAAA,QACnB,MAAM,EAAC,MAAM,GAAA;AAAA,QACb,GAAGA,EAAS;AAAA,MAAA;AAAA,IAChB,GAEJ,KAAK,SAASA,EAAS,OAClB,IAAI,CAAApB,MAAS;AACV,UAAIA,EAAM,SAAS;AACf,eAAO,IAAID,EAASC,CAAK;AAE7B,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIK,EAAYL,CAAK;AAEhC,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIM,EAASN,CAAK;AAE7B,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIO,EAAUP,CAAK;AAE9B,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIQ,EAAcR,CAAK;AAElC,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIS,EAAST,CAAK;AAE7B,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIU,EAAgBV,CAAK;AAEpC,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIiB,EAAUjB,CAAK;AAE9B,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIY,EAAgBZ,CAAK;AAEpC,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIe,EAAkBf,CAAK;AAEtC,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIgB,EAAUhB,CAAK;AAE9B,UAAIA,EAAM,SAAS;AACf,eAAO,IAAIW,EAAcX,CAAK;AAElC,MAAAoC,EAAWpC,GAAO,oBAAoB;AAAA,IAC1C,CAAC,EACA,OAAO,OAAO;AAAA,EACvB;AACJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"BoxElement.js","sources":["../../../../src/discrete/components/layers/BoxElement.tsx"],"sourcesContent":["import { createPortal } from 'react-dom';\nimport type { TooltipsData } from '../../../common/Tooltip';\nimport { Tooltip } from '../../../common/Tooltip';\nimport { NO_GROUPED } from '../../../DataFrame';\nimport type { AesItem, InheritAesDiscrete, Orientation } from '../../../types';\nimport { getLineShape } from '../../../utils/getLineShape';\nimport { getPointShape } from '../../../utils/getPointShape';\nimport { numberFormat } from '../../../utils/numberFormat';\nimport type { BoxLayer } from '../../DiscreteSettingsImpl';\nimport type { Box } from '../../layers';\nimport type { ChartScales } from '../types';\n\ninterface BoxProps {\n facetKey: string;\n scales: ChartScales;\n box: Box;\n orientation: Orientation;\n aes: BoxLayer['aes'];\n hasKeyFromColumn: boolean;\n sideDistances: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n showTooltips: boolean;\n elementsAmount: number;\n tooltipsData: TooltipsData<unknown>;\n activeElementContainer?: Element;\n tooltipsContainer?: Element;\n}\n\nfunction getAesValue<ValueType>(\n scales: ChartScales,\n field: keyof AesItem,\n value: ValueType | InheritAesDiscrete,\n geom: Box\n): ValueType {\n if (value && typeof value === 'object' && 'type' in value) {\n if (value.type === 'primaryGrouping') {\n return geom.primaryGrouping !== NO_GROUPED\n ? scales.xPrimaryAes(geom.primaryGrouping)[field] as ValueType\n : undefined as ValueType;\n }\n if (value.type === 'secondaryGrouping') {\n return geom.secondaryGrouping !== NO_GROUPED\n ? scales.xSecondaryAes(geom.secondaryGrouping)[field] as ValueType\n : undefined as ValueType;\n }\n }\n return value as ValueType;\n}\n\nfunction getTooltipContent(outlier: Box['outliers'][0], hasKeyFromColumn: boolean) {\n if (hasKeyFromColumn) {\n return [outlier.id, `${numberFormat(outlier.y)}`];\n }\n return [`${numberFormat(outlier.y)}`];\n}\n\nexport function BoxElement({\n facetKey,\n scales,\n orientation,\n box,\n aes,\n hasKeyFromColumn,\n sideDistances,\n showTooltips,\n elementsAmount,\n activeElementContainer,\n tooltipsContainer,\n tooltipsData,\n}: BoxProps) {\n const isVertical = orientation === 'vertical';\n const boxXPosition =\n (scales.xPrimary(box.primaryGrouping as string) ?? 0) +\n (scales.xSecondary(box.secondaryGrouping as string) ?? 0) +\n scales.xSecondary.bandwidth() / 2;\n const boxOuterWidth = scales.xSecondary.bandwidth();\n const boxWidth = aes.boxWidth === 'auto' ? boxOuterWidth * 0.8 : Math.min(boxOuterWidth, aes.boxWidth);\n const boxHeight = Math.abs(scales.y(box.lower) - scales.y(box.upper));\n const lineColor = getAesValue(scales, 'lineColor', aes.lineColor, box);\n const fillColor = getAesValue(scales, 'fillColor', aes.fillColor, box);\n const outliersShape = getAesValue(scales, 'dotShape', aes.dotShape, box);\n const outliersSize = getAesValue(scales, 'dotSize', aes.dotSize, box);\n const shape = getPointShape(outliersShape, outliersSize, lineColor);\n\n const yRange = Math.abs(scales.y.range()[0] - scales.y.range()[1]);\n\n const dimmedBackground = activeElementContainer && tooltipsData.fixed;\n const highlightedBox = tooltipsData.selectedData === box && dimmedBackground;\n\n const boxElement = (\n <g\n transform={isVertical ? `translate(${boxXPosition},0)` : `translate(0, ${boxXPosition})`}\n opacity={aes.opacity}\n stroke={lineColor}\n strokeWidth={aes.lineWidth}\n strokeDasharray={getLineShape(aes.lineShape)}\n >\n <line\n x1={isVertical ? 0 : scales.y(box.min)}\n x2={isVertical ? 0 : scales.y(box.lower)}\n y1={isVertical ? scales.y(box.min) : 0}\n y2={isVertical ? scales.y(box.lower) : 0}\n />\n <line\n x1={isVertical ? 0 : scales.y(box.upper)}\n x2={isVertical ? 0 : scales.y(box.max)}\n y1={isVertical ? scales.y(box.upper) : 0}\n y2={isVertical ? scales.y(box.max) : 0}\n />\n <rect\n width={isVertical ? boxWidth : boxHeight}\n height={isVertical ? boxHeight : boxWidth}\n x={isVertical ? -boxWidth / 2 : scales.y(box.lower)}\n y={isVertical ? scales.y(box.upper) : -boxWidth / 2}\n fill={fillColor}\n />\n <line\n x1={isVertical ? -boxWidth / 2 : scales.y(box.middle)}\n x2={isVertical ? boxWidth / 2 : scales.y(box.middle)}\n y1={isVertical ? scales.y(box.middle) : -boxWidth / 2}\n y2={isVertical ? scales.y(box.middle) : boxWidth / 2}\n />\n {showTooltips && tooltipsContainer && (\n <rect\n onMouseOver={() => tooltipsData.onMouseEnter(box, facetKey)}\n onMouseLeave={tooltipsData.onMouseLeave}\n width={isVertical ? boxOuterWidth : yRange}\n x={isVertical ? -boxOuterWidth / 2 : 0}\n y={isVertical ? 0 : -boxOuterWidth / 2}\n height={isVertical ? yRange : boxOuterWidth}\n fill=\"transparent\"\n stroke=\"none\"\n />\n )}\n {aes.showOutliers &&\n box.outliers.map(outlier => {\n const highlightedOutlier = tooltipsData.selectedData === outlier && tooltipsData.currentFacet === facetKey && dimmedBackground;\n const x = isVertical ? (highlightedOutlier ? boxXPosition : 0) : scales.y(outlier.y);\n const y = isVertical ? scales.y(outlier.y) : (highlightedOutlier ? boxXPosition : 0);\n const el = (\n <g\n key={outlier.id}\n transform={`translate(${x},${y})`}\n strokeDasharray=\"0\"\n >\n {shape}\n {showTooltips && tooltipsContainer && (\n <circle\n onMouseOver={() => tooltipsData.onMouseEnter(outlier, facetKey)}\n onMouseLeave={tooltipsData.onMouseLeave}\n r=\"15\"\n fill=\"transparent\"\n stroke=\"none\"\n />\n )}\n {showTooltips && (\n <Tooltip\n content={getTooltipContent(outlier, hasKeyFromColumn)}\n x={isVertical ? boxXPosition : scales.y(outlier.y)}\n y={isVertical ? scales.y(outlier.y) : boxXPosition}\n sideDistances={sideDistances}\n horizontal\n active={tooltipsData.selectedData === outlier && tooltipsData.currentFacet === facetKey}\n onClose={tooltipsData.onClose}\n fixed={tooltipsData.fixed}\n container={tooltipsContainer}\n />\n )}\n </g>\n );\n return highlightedOutlier ? createPortal(el, activeElementContainer) : el;\n })}\n {showTooltips && (\n <Tooltip\n content={[\n `Max = ${numberFormat(box.max)}`,\n `Upper = ${numberFormat(box.upper)}`,\n `Median = ${numberFormat(box.middle)}`,\n `Lower = ${numberFormat(box.lower)}`,\n `Min = ${numberFormat(box.min)}`,\n ]}\n x={isVertical ? boxXPosition : scales.y(box.middle)}\n y={isVertical ? scales.y(box.middle) : boxXPosition}\n sideDistances={sideDistances}\n horizontal={isVertical}\n active={tooltipsData.active && tooltipsData.selectedData === box && tooltipsData.currentFacet === facetKey}\n fixed={tooltipsData.fixed}\n onClose={tooltipsData.onClose}\n offset={elementsAmount > 1 ? boxOuterWidth / 2 : boxOuterWidth / 4}\n container={tooltipsContainer}\n />\n )}\n </g>\n );\n return highlightedBox ? createPortal(boxElement, activeElementContainer) : boxElement;\n}\n"],"names":["getAesValue","scales","field","value","geom","NO_GROUPED","getTooltipContent","outlier","hasKeyFromColumn","numberFormat","BoxElement","facetKey","orientation","box","aes","sideDistances","showTooltips","elementsAmount","activeElementContainer","tooltipsContainer","tooltipsData","isVertical","boxXPosition","boxOuterWidth","boxWidth","boxHeight","lineColor","fillColor","outliersShape","outliersSize","shape","getPointShape","yRange","dimmedBackground","highlightedBox","boxElement","jsxs","getLineShape","jsx","highlightedOutlier","x","y","el","Tooltip","createPortal"],"mappings":"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"}
1
+ {"version":3,"file":"BoxElement.js","sources":["../../../../src/discrete/components/layers/BoxElement.tsx"],"sourcesContent":["import { createPortal } from 'react-dom';\nimport type { TooltipsData } from '../../../common/Tooltip';\nimport { Tooltip } from '../../../common/Tooltip';\nimport { NO_GROUPED } from '../../../DataFrame';\nimport type { AesItem, InheritAesDiscrete, Orientation } from '../../../types';\nimport { getLineShape } from '../../../utils/getLineShape';\nimport { getPointShape } from '../../../utils/getPointShape';\nimport { numberFormat } from '../../../utils/numberFormat';\nimport type { BoxLayer } from '../../DiscreteSettingsImpl';\nimport type { Box } from '../../layers';\nimport type { ChartScales } from '../types';\n\ninterface BoxProps {\n facetKey: string;\n scales: ChartScales;\n box: Box;\n orientation: Orientation;\n aes: BoxLayer['aes'];\n hasKeyFromColumn: boolean;\n sideDistances: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n showTooltips: boolean;\n elementsAmount: number;\n tooltipsData: TooltipsData<unknown>;\n activeElementContainer?: Element;\n tooltipsContainer?: Element;\n}\n\nfunction getAesValue<ValueType>(\n scales: ChartScales,\n field: keyof AesItem,\n value: ValueType | InheritAesDiscrete,\n geom: Box\n): ValueType {\n if (value && typeof value === 'object' && 'type' in value) {\n if (value.type === 'primaryGrouping') {\n return geom.primaryGrouping !== NO_GROUPED\n ? scales.xPrimaryAes(geom.primaryGrouping)[field] as ValueType\n : undefined as ValueType;\n }\n if (value.type === 'secondaryGrouping') {\n return geom.secondaryGrouping !== NO_GROUPED\n ? scales.xSecondaryAes(geom.secondaryGrouping)[field] as ValueType\n : undefined as ValueType;\n }\n }\n return value as ValueType;\n}\n\nfunction getTooltipContent(outlier: Box['outliers'][number], hasKeyFromColumn: boolean) {\n if (hasKeyFromColumn) {\n return [outlier.id, `${numberFormat(outlier.y)}`];\n }\n return [`${numberFormat(outlier.y)}`];\n}\n\nexport function BoxElement({\n facetKey,\n scales,\n orientation,\n box,\n aes,\n hasKeyFromColumn,\n sideDistances,\n showTooltips,\n elementsAmount,\n activeElementContainer,\n tooltipsContainer,\n tooltipsData,\n}: BoxProps) {\n const isVertical = orientation === 'vertical';\n const boxXPosition =\n (scales.xPrimary(box.primaryGrouping as string) ?? 0) +\n (scales.xSecondary(box.secondaryGrouping as string) ?? 0) +\n scales.xSecondary.bandwidth() / 2;\n const boxOuterWidth = scales.xSecondary.bandwidth();\n const boxWidth = aes.boxWidth === 'auto' ? boxOuterWidth * 0.8 : Math.min(boxOuterWidth, aes.boxWidth);\n const boxHeight = Math.abs(scales.y(box.lower) - scales.y(box.upper));\n const lineColor = getAesValue(scales, 'lineColor', aes.lineColor, box);\n const fillColor = getAesValue(scales, 'fillColor', aes.fillColor, box);\n const outliersShape = getAesValue(scales, 'dotShape', aes.dotShape, box);\n const outliersSize = getAesValue(scales, 'dotSize', aes.dotSize, box);\n const shape = getPointShape(outliersShape, outliersSize, lineColor);\n\n const yRange = Math.abs(scales.y.range()[0] - scales.y.range()[1]);\n\n const dimmedBackground = activeElementContainer && tooltipsData.fixed;\n const highlightedBox = tooltipsData.selectedData === box && dimmedBackground;\n\n const boxElement = (\n <g\n transform={isVertical ? `translate(${boxXPosition},0)` : `translate(0, ${boxXPosition})`}\n opacity={aes.opacity}\n stroke={lineColor}\n strokeWidth={aes.lineWidth}\n strokeDasharray={getLineShape(aes.lineShape)}\n >\n <line\n x1={isVertical ? 0 : scales.y(box.min)}\n x2={isVertical ? 0 : scales.y(box.lower)}\n y1={isVertical ? scales.y(box.min) : 0}\n y2={isVertical ? scales.y(box.lower) : 0}\n />\n <line\n x1={isVertical ? 0 : scales.y(box.upper)}\n x2={isVertical ? 0 : scales.y(box.max)}\n y1={isVertical ? scales.y(box.upper) : 0}\n y2={isVertical ? scales.y(box.max) : 0}\n />\n <rect\n width={isVertical ? boxWidth : boxHeight}\n height={isVertical ? boxHeight : boxWidth}\n x={isVertical ? -boxWidth / 2 : scales.y(box.lower)}\n y={isVertical ? scales.y(box.upper) : -boxWidth / 2}\n fill={fillColor}\n />\n <line\n x1={isVertical ? -boxWidth / 2 : scales.y(box.middle)}\n x2={isVertical ? boxWidth / 2 : scales.y(box.middle)}\n y1={isVertical ? scales.y(box.middle) : -boxWidth / 2}\n y2={isVertical ? scales.y(box.middle) : boxWidth / 2}\n />\n {showTooltips && tooltipsContainer && (\n <rect\n onMouseOver={() => tooltipsData.onMouseEnter(box, facetKey)}\n onMouseLeave={tooltipsData.onMouseLeave}\n width={isVertical ? boxOuterWidth : yRange}\n x={isVertical ? -boxOuterWidth / 2 : 0}\n y={isVertical ? 0 : -boxOuterWidth / 2}\n height={isVertical ? yRange : boxOuterWidth}\n fill=\"transparent\"\n stroke=\"none\"\n />\n )}\n {aes.showOutliers &&\n box.outliers.map(outlier => {\n const highlightedOutlier = tooltipsData.selectedData === outlier && tooltipsData.currentFacet === facetKey && dimmedBackground;\n const x = isVertical ? (highlightedOutlier ? boxXPosition : 0) : scales.y(outlier.y);\n const y = isVertical ? scales.y(outlier.y) : (highlightedOutlier ? boxXPosition : 0);\n const el = (\n <g\n key={outlier.id}\n transform={`translate(${x},${y})`}\n strokeDasharray=\"0\"\n >\n {shape}\n {showTooltips && tooltipsContainer && (\n <circle\n onMouseOver={() => tooltipsData.onMouseEnter(outlier, facetKey)}\n onMouseLeave={tooltipsData.onMouseLeave}\n r=\"15\"\n fill=\"transparent\"\n stroke=\"none\"\n />\n )}\n {showTooltips && (\n <Tooltip\n content={getTooltipContent(outlier, hasKeyFromColumn)}\n x={isVertical ? boxXPosition : scales.y(outlier.y)}\n y={isVertical ? scales.y(outlier.y) : boxXPosition}\n sideDistances={sideDistances}\n horizontal\n active={tooltipsData.selectedData === outlier && tooltipsData.currentFacet === facetKey}\n onClose={tooltipsData.onClose}\n fixed={tooltipsData.fixed}\n container={tooltipsContainer}\n />\n )}\n </g>\n );\n return highlightedOutlier ? createPortal(el, activeElementContainer) : el;\n })}\n {showTooltips && (\n <Tooltip\n content={[\n `Max = ${numberFormat(box.max)}`,\n `Upper = ${numberFormat(box.upper)}`,\n `Median = ${numberFormat(box.middle)}`,\n `Lower = ${numberFormat(box.lower)}`,\n `Min = ${numberFormat(box.min)}`,\n ]}\n x={isVertical ? boxXPosition : scales.y(box.middle)}\n y={isVertical ? scales.y(box.middle) : boxXPosition}\n sideDistances={sideDistances}\n horizontal={isVertical}\n active={tooltipsData.active && tooltipsData.selectedData === box && tooltipsData.currentFacet === facetKey}\n fixed={tooltipsData.fixed}\n onClose={tooltipsData.onClose}\n offset={elementsAmount > 1 ? boxOuterWidth / 2 : boxOuterWidth / 4}\n container={tooltipsContainer}\n />\n )}\n </g>\n );\n return highlightedBox ? createPortal(boxElement, activeElementContainer) : boxElement;\n}\n"],"names":["getAesValue","scales","field","value","geom","NO_GROUPED","getTooltipContent","outlier","hasKeyFromColumn","numberFormat","BoxElement","facetKey","orientation","box","aes","sideDistances","showTooltips","elementsAmount","activeElementContainer","tooltipsContainer","tooltipsData","isVertical","boxXPosition","boxOuterWidth","boxWidth","boxHeight","lineColor","fillColor","outliersShape","outliersSize","shape","getPointShape","yRange","dimmedBackground","highlightedBox","boxElement","jsxs","getLineShape","jsx","highlightedOutlier","x","y","el","Tooltip","createPortal"],"mappings":";;;;;;;AAgCA,SAASA,EACLC,GACAC,GACAC,GACAC,GACS;AACT,MAAID,KAAS,OAAOA,KAAU,YAAY,UAAUA,GAAO;AACvD,QAAIA,EAAM,SAAS;AACf,aAAOC,EAAK,oBAAoBC,IAC1BJ,EAAO,YAAYG,EAAK,eAAe,EAAEF,CAAK,IAC9C;AAEV,QAAIC,EAAM,SAAS;AACf,aAAOC,EAAK,sBAAsBC,IAC5BJ,EAAO,cAAcG,EAAK,iBAAiB,EAAEF,CAAK,IAClD;AAAA,EAEd;AACA,SAAOC;AACX;AAEA,SAASG,EAAkBC,GAAkCC,GAA2B;AACpF,SAAIA,IACO,CAACD,EAAQ,IAAI,GAAGE,EAAaF,EAAQ,CAAC,CAAC,EAAE,IAE7C,CAAC,GAAGE,EAAaF,EAAQ,CAAC,CAAC,EAAE;AACxC;AAEO,SAASG,EAAW;AAAA,EACvB,UAAAC;AAAA,EACA,QAAAV;AAAA,EACA,aAAAW;AAAA,EACA,KAAAC;AAAA,EACA,KAAAC;AAAA,EACA,kBAAAN;AAAA,EACA,eAAAO;AAAA,EACA,cAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,cAAAC;AACJ,GAAa;AACT,QAAMC,IAAaT,MAAgB,YAC7BU,KACDrB,EAAO,SAASY,EAAI,eAAyB,KAAK,MAClDZ,EAAO,WAAWY,EAAI,iBAA2B,KAAK,KACvDZ,EAAO,WAAW,cAAc,GAC9BsB,IAAgBtB,EAAO,WAAW,UAAA,GAClCuB,IAAWV,EAAI,aAAa,SAASS,IAAgB,MAAM,KAAK,IAAIA,GAAeT,EAAI,QAAQ,GAC/FW,IAAY,KAAK,IAAIxB,EAAO,EAAEY,EAAI,KAAK,IAAIZ,EAAO,EAAEY,EAAI,KAAK,CAAC,GAC9Da,IAAY1B,EAAYC,GAAQ,aAAaa,EAAI,WAAWD,CAAG,GAC/Dc,IAAY3B,EAAYC,GAAQ,aAAaa,EAAI,WAAWD,CAAG,GAC/De,IAAgB5B,EAAYC,GAAQ,YAAYa,EAAI,UAAUD,CAAG,GACjEgB,IAAe7B,EAAYC,GAAQ,WAAWa,EAAI,SAASD,CAAG,GAC9DiB,IAAQC,EAAcH,GAAeC,GAAcH,CAAS,GAE5DM,IAAS,KAAK,IAAI/B,EAAO,EAAE,MAAA,EAAQ,CAAC,IAAIA,EAAO,EAAE,MAAA,EAAQ,CAAC,CAAC,GAE3DgC,IAAmBf,KAA0BE,EAAa,OAC1Dc,IAAiBd,EAAa,iBAAiBP,KAAOoB,GAEtDE,IACFC,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACG,WAAWf,IAAa,aAAaC,CAAY,QAAQ,gBAAgBA,CAAY;AAAA,MACrF,SAASR,EAAI;AAAA,MACb,QAAQY;AAAA,MACR,aAAaZ,EAAI;AAAA,MACjB,iBAAiBuB,EAAavB,EAAI,SAAS;AAAA,MAE3C,UAAA;AAAA,QAAAwB,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACG,IAAIjB,IAAa,IAAIpB,EAAO,EAAEY,EAAI,GAAG;AAAA,YACrC,IAAIQ,IAAa,IAAIpB,EAAO,EAAEY,EAAI,KAAK;AAAA,YACvC,IAAIQ,IAAapB,EAAO,EAAEY,EAAI,GAAG,IAAI;AAAA,YACrC,IAAIQ,IAAapB,EAAO,EAAEY,EAAI,KAAK,IAAI;AAAA,UAAA;AAAA,QAAA;AAAA,QAE3CyB,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACG,IAAIjB,IAAa,IAAIpB,EAAO,EAAEY,EAAI,KAAK;AAAA,YACvC,IAAIQ,IAAa,IAAIpB,EAAO,EAAEY,EAAI,GAAG;AAAA,YACrC,IAAIQ,IAAapB,EAAO,EAAEY,EAAI,KAAK,IAAI;AAAA,YACvC,IAAIQ,IAAapB,EAAO,EAAEY,EAAI,GAAG,IAAI;AAAA,UAAA;AAAA,QAAA;AAAA,QAEzCyB,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACG,OAAOjB,IAAaG,IAAWC;AAAA,YAC/B,QAAQJ,IAAaI,IAAYD;AAAA,YACjC,GAAGH,IAAa,CAACG,IAAW,IAAIvB,EAAO,EAAEY,EAAI,KAAK;AAAA,YAClD,GAAGQ,IAAapB,EAAO,EAAEY,EAAI,KAAK,IAAI,CAACW,IAAW;AAAA,YAClD,MAAMG;AAAA,UAAA;AAAA,QAAA;AAAA,QAEVW,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACG,IAAIjB,IAAa,CAACG,IAAW,IAAIvB,EAAO,EAAEY,EAAI,MAAM;AAAA,YACpD,IAAIQ,IAAaG,IAAW,IAAIvB,EAAO,EAAEY,EAAI,MAAM;AAAA,YACnD,IAAIQ,IAAapB,EAAO,EAAEY,EAAI,MAAM,IAAI,CAACW,IAAW;AAAA,YACpD,IAAIH,IAAapB,EAAO,EAAEY,EAAI,MAAM,IAAIW,IAAW;AAAA,UAAA;AAAA,QAAA;AAAA,QAEtDR,KAAgBG,KACbmB,gBAAAA,EAAAA;AAAAA,UAAC;AAAA,UAAA;AAAA,YACG,aAAa,MAAMlB,EAAa,aAAaP,GAAKF,CAAQ;AAAA,YAC1D,cAAcS,EAAa;AAAA,YAC3B,OAAOC,IAAaE,IAAgBS;AAAA,YACpC,GAAGX,IAAa,CAACE,IAAgB,IAAI;AAAA,YACrC,GAAGF,IAAa,IAAI,CAACE,IAAgB;AAAA,YACrC,QAAQF,IAAaW,IAAST;AAAA,YAC9B,MAAK;AAAA,YACL,QAAO;AAAA,UAAA;AAAA,QAAA;AAAA,QAGdT,EAAI,gBACDD,EAAI,SAAS,IAAI,CAAAN,MAAW;AACxB,gBAAMgC,IAAqBnB,EAAa,iBAAkBb,KAAWa,EAAa,iBAAiBT,KAAYsB,GACzGO,IAAInB,IAAckB,IAAqBjB,IAAe,IAAKrB,EAAO,EAAEM,EAAQ,CAAC,GAC7EkC,IAAIpB,IAAapB,EAAO,EAAEM,EAAQ,CAAC,IAAKgC,IAAqBjB,IAAe,GAC5EoB,IACFN,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cAEG,WAAW,aAAaI,CAAC,IAAIC,CAAC;AAAA,cAC9B,iBAAgB;AAAA,cAEf,UAAA;AAAA,gBAAAX;AAAA,gBACAd,KAAgBG,KACbmB,gBAAAA,EAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACG,aAAa,MAAMlB,EAAa,aAAab,GAASI,CAAQ;AAAA,oBAC9D,cAAcS,EAAa;AAAA,oBAC3B,GAAE;AAAA,oBACF,MAAK;AAAA,oBACL,QAAO;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGdJ,KACGsB,gBAAAA,EAAAA;AAAAA,kBAACK;AAAA,kBAAA;AAAA,oBACG,SAASrC,EAAkBC,GAASC,CAAgB;AAAA,oBACpD,GAAGa,IAAaC,IAAerB,EAAO,EAAEM,EAAQ,CAAC;AAAA,oBACjD,GAAGc,IAAapB,EAAO,EAAEM,EAAQ,CAAC,IAAIe;AAAA,oBACtC,eAAAP;AAAA,oBACA,YAAU;AAAA,oBACV,QAAQK,EAAa,iBAAiBb,KAAWa,EAAa,iBAAiBT;AAAA,oBAC/E,SAASS,EAAa;AAAA,oBACtB,OAAOA,EAAa;AAAA,oBACpB,WAAWD;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACf;AAAA,YAAA;AAAA,YAzBCZ,EAAQ;AAAA,UAAA;AA6BrB,iBAAOgC,IAAqBK,EAAAA,aAAaF,GAAIxB,CAAsB,IAAIwB;AAAA,QAC3E,CAAC;AAAA,QACJ1B,KACGsB,gBAAAA,EAAAA;AAAAA,UAACK;AAAA,UAAA;AAAA,YACG,SAAS;AAAA,cACL,SAASlC,EAAaI,EAAI,GAAG,CAAC;AAAA,cAC9B,WAAWJ,EAAaI,EAAI,KAAK,CAAC;AAAA,cAClC,YAAYJ,EAAaI,EAAI,MAAM,CAAC;AAAA,cACpC,WAAWJ,EAAaI,EAAI,KAAK,CAAC;AAAA,cAClC,SAASJ,EAAaI,EAAI,GAAG,CAAC;AAAA,YAAA;AAAA,YAElC,GAAGQ,IAAaC,IAAerB,EAAO,EAAEY,EAAI,MAAM;AAAA,YAClD,GAAGQ,IAAapB,EAAO,EAAEY,EAAI,MAAM,IAAIS;AAAA,YACvC,eAAAP;AAAA,YACA,YAAYM;AAAA,YACZ,QAAQD,EAAa,UAAUA,EAAa,iBAAiBP,KAAOO,EAAa,iBAAiBT;AAAA,YAClG,OAAOS,EAAa;AAAA,YACpB,SAASA,EAAa;AAAA,YACtB,QAAQH,IAAiB,IAAIM,IAAgB,IAAIA,IAAgB;AAAA,YACjE,WAAWJ;AAAA,UAAA;AAAA,QAAA;AAAA,MACf;AAAA,IAAA;AAAA,EAAA;AAIZ,SAAOe,IAAiBU,EAAAA,aAAaT,GAAYjB,CAAsB,IAAIiB;AAC/E;"}