react-native-chart-kit 7.0.0-next.1 → 7.0.0-next.3

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 (427) hide show
  1. package/README.md +89 -521
  2. package/dist/charts/line/LineChart.d.ts +3 -3
  3. package/dist/charts/line/LineChart.js +1 -1
  4. package/dist/v2/core/data/index.d.ts +3 -0
  5. package/dist/v2/core/data/index.d.ts.map +1 -0
  6. package/dist/v2/core/data/index.js +1 -0
  7. package/dist/v2/core/data/normalize.d.ts +8 -0
  8. package/dist/v2/core/data/normalize.d.ts.map +1 -0
  9. package/dist/v2/core/data/normalize.js +229 -0
  10. package/dist/v2/core/data/normalizeValues.d.ts +16 -0
  11. package/dist/v2/core/data/normalizeValues.d.ts.map +1 -0
  12. package/dist/v2/core/data/normalizeValues.js +96 -0
  13. package/dist/v2/core/data/types.d.ts +161 -0
  14. package/dist/v2/core/data/types.d.ts.map +1 -0
  15. package/dist/v2/core/data/types.js +1 -0
  16. package/dist/v2/core/geometry/areaPath.d.ts +3 -0
  17. package/dist/v2/core/geometry/areaPath.d.ts.map +1 -0
  18. package/dist/v2/core/geometry/areaPath.js +36 -0
  19. package/dist/v2/core/geometry/barRects.d.ts +44 -0
  20. package/dist/v2/core/geometry/barRects.d.ts.map +1 -0
  21. package/dist/v2/core/geometry/barRects.js +201 -0
  22. package/dist/v2/core/geometry/contributionHeatmap.d.ts +49 -0
  23. package/dist/v2/core/geometry/contributionHeatmap.d.ts.map +1 -0
  24. package/dist/v2/core/geometry/contributionHeatmap.js +107 -0
  25. package/dist/v2/core/geometry/horizontalBarRects.d.ts +27 -0
  26. package/dist/v2/core/geometry/horizontalBarRects.d.ts.map +1 -0
  27. package/dist/v2/core/geometry/horizontalBarRects.js +202 -0
  28. package/dist/v2/core/geometry/index.d.ts +12 -0
  29. package/dist/v2/core/geometry/index.d.ts.map +1 -0
  30. package/dist/v2/core/geometry/index.js +11 -0
  31. package/dist/v2/core/geometry/lineDecimation.d.ts +8 -0
  32. package/dist/v2/core/geometry/lineDecimation.d.ts.map +1 -0
  33. package/dist/v2/core/geometry/lineDecimation.js +110 -0
  34. package/dist/v2/core/geometry/linePath.d.ts +5 -0
  35. package/dist/v2/core/geometry/linePath.d.ts.map +1 -0
  36. package/dist/v2/core/geometry/linePath.js +98 -0
  37. package/dist/v2/core/geometry/lineSeries.d.ts +29 -0
  38. package/dist/v2/core/geometry/lineSeries.d.ts.map +1 -0
  39. package/dist/v2/core/geometry/lineSeries.js +51 -0
  40. package/dist/v2/core/geometry/path.d.ts +6 -0
  41. package/dist/v2/core/geometry/path.d.ts.map +1 -0
  42. package/dist/v2/core/geometry/path.js +24 -0
  43. package/dist/v2/core/geometry/pieArcs.d.ts +29 -0
  44. package/dist/v2/core/geometry/pieArcs.d.ts.map +1 -0
  45. package/dist/v2/core/geometry/pieArcs.js +142 -0
  46. package/dist/v2/core/geometry/progressRings.d.ts +30 -0
  47. package/dist/v2/core/geometry/progressRings.d.ts.map +1 -0
  48. package/dist/v2/core/geometry/progressRings.js +104 -0
  49. package/dist/v2/core/geometry/types.d.ts +32 -0
  50. package/dist/v2/core/geometry/types.d.ts.map +1 -0
  51. package/dist/v2/core/geometry/types.js +1 -0
  52. package/dist/v2/core/index.d.ts +6 -0
  53. package/dist/v2/core/index.d.ts.map +1 -0
  54. package/dist/v2/core/index.js +6 -0
  55. package/dist/v2/core/interaction/index.d.ts +5 -0
  56. package/dist/v2/core/interaction/index.d.ts.map +1 -0
  57. package/dist/v2/core/interaction/index.js +2 -0
  58. package/dist/v2/core/interaction/viewport.d.ts +71 -0
  59. package/dist/v2/core/interaction/viewport.d.ts.map +1 -0
  60. package/dist/v2/core/interaction/viewport.js +216 -0
  61. package/dist/v2/core/interaction/viewportTransform.d.ts +17 -0
  62. package/dist/v2/core/interaction/viewportTransform.d.ts.map +1 -0
  63. package/dist/v2/core/interaction/viewportTransform.js +70 -0
  64. package/dist/v2/core/layout/autoPadding.d.ts +3 -0
  65. package/dist/v2/core/layout/autoPadding.d.ts.map +1 -0
  66. package/dist/v2/core/layout/autoPadding.js +33 -0
  67. package/dist/v2/core/layout/chartBox.d.ts +5 -0
  68. package/dist/v2/core/layout/chartBox.d.ts.map +1 -0
  69. package/dist/v2/core/layout/chartBox.js +22 -0
  70. package/dist/v2/core/layout/debugLayout.d.ts +3 -0
  71. package/dist/v2/core/layout/debugLayout.d.ts.map +1 -0
  72. package/dist/v2/core/layout/debugLayout.js +20 -0
  73. package/dist/v2/core/layout/index.d.ts +8 -0
  74. package/dist/v2/core/layout/index.d.ts.map +1 -0
  75. package/dist/v2/core/layout/index.js +6 -0
  76. package/dist/v2/core/layout/labelCollision.d.ts +3 -0
  77. package/dist/v2/core/layout/labelCollision.d.ts.map +1 -0
  78. package/dist/v2/core/layout/labelCollision.js +90 -0
  79. package/dist/v2/core/layout/legendLayout.d.ts +3 -0
  80. package/dist/v2/core/layout/legendLayout.d.ts.map +1 -0
  81. package/dist/v2/core/layout/legendLayout.js +39 -0
  82. package/dist/v2/core/layout/tooltipPlacement.d.ts +3 -0
  83. package/dist/v2/core/layout/tooltipPlacement.d.ts.map +1 -0
  84. package/dist/v2/core/layout/tooltipPlacement.js +76 -0
  85. package/dist/v2/core/layout/types.d.ts +114 -0
  86. package/dist/v2/core/layout/types.d.ts.map +1 -0
  87. package/dist/v2/core/layout/types.js +1 -0
  88. package/dist/v2/core/scales/band.d.ts +15 -0
  89. package/dist/v2/core/scales/band.d.ts.map +1 -0
  90. package/dist/v2/core/scales/band.js +34 -0
  91. package/dist/v2/core/scales/domain.d.ts +6 -0
  92. package/dist/v2/core/scales/domain.d.ts.map +1 -0
  93. package/dist/v2/core/scales/domain.js +109 -0
  94. package/dist/v2/core/scales/index.d.ts +7 -0
  95. package/dist/v2/core/scales/index.d.ts.map +1 -0
  96. package/dist/v2/core/scales/index.js +5 -0
  97. package/dist/v2/core/scales/linear.d.ts +8 -0
  98. package/dist/v2/core/scales/linear.d.ts.map +1 -0
  99. package/dist/v2/core/scales/linear.js +22 -0
  100. package/dist/v2/core/scales/ticks.d.ts +4 -0
  101. package/dist/v2/core/scales/ticks.d.ts.map +1 -0
  102. package/dist/v2/core/scales/ticks.js +111 -0
  103. package/dist/v2/core/scales/time.d.ts +8 -0
  104. package/dist/v2/core/scales/time.d.ts.map +1 -0
  105. package/dist/v2/core/scales/time.js +23 -0
  106. package/dist/v2/core/scales/types.d.ts +46 -0
  107. package/dist/v2/core/scales/types.d.ts.map +1 -0
  108. package/dist/v2/core/scales/types.js +1 -0
  109. package/dist/v2/index.d.ts +1 -0
  110. package/dist/v2/index.js +1 -0
  111. package/dist/v2/react-native/charts/bar/BarChart.d.ts +6 -0
  112. package/dist/v2/react-native/charts/bar/BarChart.d.ts.map +1 -0
  113. package/dist/v2/react-native/charts/bar/BarChart.js +199 -0
  114. package/dist/v2/react-native/charts/bar/BarChartSurface.d.ts +36 -0
  115. package/dist/v2/react-native/charts/bar/BarChartSurface.d.ts.map +1 -0
  116. package/dist/v2/react-native/charts/bar/BarChartSurface.js +134 -0
  117. package/dist/v2/react-native/charts/bar/StackedBarChart.d.ts +4 -0
  118. package/dist/v2/react-native/charts/bar/StackedBarChart.d.ts.map +1 -0
  119. package/dist/v2/react-native/charts/bar/StackedBarChart.js +9 -0
  120. package/dist/v2/react-native/charts/bar/accessibility.d.ts +31 -0
  121. package/dist/v2/react-native/charts/bar/accessibility.d.ts.map +1 -0
  122. package/dist/v2/react-native/charts/bar/accessibility.js +87 -0
  123. package/dist/v2/react-native/charts/bar/interaction.d.ts +18 -0
  124. package/dist/v2/react-native/charts/bar/interaction.d.ts.map +1 -0
  125. package/dist/v2/react-native/charts/bar/interaction.js +62 -0
  126. package/dist/v2/react-native/charts/bar/model.d.ts +3 -0
  127. package/dist/v2/react-native/charts/bar/model.d.ts.map +1 -0
  128. package/dist/v2/react-native/charts/bar/model.js +326 -0
  129. package/dist/v2/react-native/charts/bar/modelUtils.d.ts +27 -0
  130. package/dist/v2/react-native/charts/bar/modelUtils.d.ts.map +1 -0
  131. package/dist/v2/react-native/charts/bar/modelUtils.js +58 -0
  132. package/dist/v2/react-native/charts/bar/options.d.ts +7 -0
  133. package/dist/v2/react-native/charts/bar/options.d.ts.map +1 -0
  134. package/dist/v2/react-native/charts/bar/options.js +49 -0
  135. package/dist/v2/react-native/charts/bar/rendererSafety.d.ts +12 -0
  136. package/dist/v2/react-native/charts/bar/rendererSafety.d.ts.map +1 -0
  137. package/dist/v2/react-native/charts/bar/rendererSafety.js +31 -0
  138. package/dist/v2/react-native/charts/bar/selectionAnimation.d.ts +42 -0
  139. package/dist/v2/react-native/charts/bar/selectionAnimation.d.ts.map +1 -0
  140. package/dist/v2/react-native/charts/bar/selectionAnimation.js +158 -0
  141. package/dist/v2/react-native/charts/bar/stackedCompat.d.ts +55 -0
  142. package/dist/v2/react-native/charts/bar/stackedCompat.d.ts.map +1 -0
  143. package/dist/v2/react-native/charts/bar/stackedCompat.js +105 -0
  144. package/dist/v2/react-native/charts/bar/tooltip.d.ts +11 -0
  145. package/dist/v2/react-native/charts/bar/tooltip.d.ts.map +1 -0
  146. package/dist/v2/react-native/charts/bar/tooltip.js +18 -0
  147. package/dist/v2/react-native/charts/bar/tooltipModel.d.ts +33 -0
  148. package/dist/v2/react-native/charts/bar/tooltipModel.d.ts.map +1 -0
  149. package/dist/v2/react-native/charts/bar/tooltipModel.js +46 -0
  150. package/dist/v2/react-native/charts/bar/tooltipPlacement.d.ts +9 -0
  151. package/dist/v2/react-native/charts/bar/tooltipPlacement.d.ts.map +1 -0
  152. package/dist/v2/react-native/charts/bar/tooltipPlacement.js +9 -0
  153. package/dist/v2/react-native/charts/bar/types.d.ts +211 -0
  154. package/dist/v2/react-native/charts/bar/types.d.ts.map +1 -0
  155. package/dist/v2/react-native/charts/bar/types.js +1 -0
  156. package/dist/v2/react-native/charts/bar/useAnimatedTooltipModel.d.ts +10 -0
  157. package/dist/v2/react-native/charts/bar/useAnimatedTooltipModel.d.ts.map +1 -0
  158. package/dist/v2/react-native/charts/bar/useAnimatedTooltipModel.js +87 -0
  159. package/dist/v2/react-native/charts/bar/viewport.d.ts +20 -0
  160. package/dist/v2/react-native/charts/bar/viewport.d.ts.map +1 -0
  161. package/dist/v2/react-native/charts/bar/viewport.js +47 -0
  162. package/dist/v2/react-native/charts/contribution/ContributionGraph.d.ts +13 -0
  163. package/dist/v2/react-native/charts/contribution/ContributionGraph.d.ts.map +1 -0
  164. package/dist/v2/react-native/charts/contribution/ContributionGraph.js +159 -0
  165. package/dist/v2/react-native/charts/contribution/accessibility.d.ts +25 -0
  166. package/dist/v2/react-native/charts/contribution/accessibility.d.ts.map +1 -0
  167. package/dist/v2/react-native/charts/contribution/accessibility.js +50 -0
  168. package/dist/v2/react-native/charts/contribution/interaction.d.ts +23 -0
  169. package/dist/v2/react-native/charts/contribution/interaction.d.ts.map +1 -0
  170. package/dist/v2/react-native/charts/contribution/interaction.js +75 -0
  171. package/dist/v2/react-native/charts/contribution/model.d.ts +17 -0
  172. package/dist/v2/react-native/charts/contribution/model.d.ts.map +1 -0
  173. package/dist/v2/react-native/charts/contribution/model.js +102 -0
  174. package/dist/v2/react-native/charts/contribution/types.d.ts +71 -0
  175. package/dist/v2/react-native/charts/contribution/types.d.ts.map +1 -0
  176. package/dist/v2/react-native/charts/contribution/types.js +1 -0
  177. package/dist/v2/react-native/charts/line/AreaChart.d.ts +3 -0
  178. package/dist/v2/react-native/charts/line/AreaChart.d.ts.map +1 -0
  179. package/dist/v2/react-native/charts/line/AreaChart.js +3 -0
  180. package/dist/v2/react-native/charts/line/ChartSurface.d.ts +16 -0
  181. package/dist/v2/react-native/charts/line/ChartSurface.d.ts.map +1 -0
  182. package/dist/v2/react-native/charts/line/ChartSurface.js +151 -0
  183. package/dist/v2/react-native/charts/line/LineChart.d.ts +6 -0
  184. package/dist/v2/react-native/charts/line/LineChart.d.ts.map +1 -0
  185. package/dist/v2/react-native/charts/line/LineChart.js +294 -0
  186. package/dist/v2/react-native/charts/line/StickyYAxis.d.ts +15 -0
  187. package/dist/v2/react-native/charts/line/StickyYAxis.d.ts.map +1 -0
  188. package/dist/v2/react-native/charts/line/StickyYAxis.js +26 -0
  189. package/dist/v2/react-native/charts/line/accessibility.d.ts +34 -0
  190. package/dist/v2/react-native/charts/line/accessibility.d.ts.map +1 -0
  191. package/dist/v2/react-native/charts/line/accessibility.js +103 -0
  192. package/dist/v2/react-native/charts/line/axisLabels.d.ts +37 -0
  193. package/dist/v2/react-native/charts/line/axisLabels.d.ts.map +1 -0
  194. package/dist/v2/react-native/charts/line/axisLabels.js +55 -0
  195. package/dist/v2/react-native/charts/line/debugLayout.d.ts +26 -0
  196. package/dist/v2/react-native/charts/line/debugLayout.d.ts.map +1 -0
  197. package/dist/v2/react-native/charts/line/debugLayout.js +77 -0
  198. package/dist/v2/react-native/charts/line/debugOverlay.d.ts +9 -0
  199. package/dist/v2/react-native/charts/line/debugOverlay.d.ts.map +1 -0
  200. package/dist/v2/react-native/charts/line/debugOverlay.js +30 -0
  201. package/dist/v2/react-native/charts/line/defaultTooltip.d.ts +3 -0
  202. package/dist/v2/react-native/charts/line/defaultTooltip.d.ts.map +1 -0
  203. package/dist/v2/react-native/charts/line/defaultTooltip.js +17 -0
  204. package/dist/v2/react-native/charts/line/interaction.d.ts +82 -0
  205. package/dist/v2/react-native/charts/line/interaction.d.ts.map +1 -0
  206. package/dist/v2/react-native/charts/line/interaction.js +94 -0
  207. package/dist/v2/react-native/charts/line/legend.d.ts +35 -0
  208. package/dist/v2/react-native/charts/line/legend.d.ts.map +1 -0
  209. package/dist/v2/react-native/charts/line/legend.js +95 -0
  210. package/dist/v2/react-native/charts/line/markers.d.ts +11 -0
  211. package/dist/v2/react-native/charts/line/markers.d.ts.map +1 -0
  212. package/dist/v2/react-native/charts/line/markers.js +52 -0
  213. package/dist/v2/react-native/charts/line/options.d.ts +172 -0
  214. package/dist/v2/react-native/charts/line/options.d.ts.map +1 -0
  215. package/dist/v2/react-native/charts/line/options.js +168 -0
  216. package/dist/v2/react-native/charts/line/outsidePressSurfaces.d.ts +15 -0
  217. package/dist/v2/react-native/charts/line/outsidePressSurfaces.d.ts.map +1 -0
  218. package/dist/v2/react-native/charts/line/outsidePressSurfaces.js +37 -0
  219. package/dist/v2/react-native/charts/line/overviewProps.d.ts +45 -0
  220. package/dist/v2/react-native/charts/line/overviewProps.d.ts.map +1 -0
  221. package/dist/v2/react-native/charts/line/overviewProps.js +4 -0
  222. package/dist/v2/react-native/charts/line/rangeSelector.d.ts +19 -0
  223. package/dist/v2/react-native/charts/line/rangeSelector.d.ts.map +1 -0
  224. package/dist/v2/react-native/charts/line/rangeSelector.js +185 -0
  225. package/dist/v2/react-native/charts/line/rangeSelectorConfig.d.ts +38 -0
  226. package/dist/v2/react-native/charts/line/rangeSelectorConfig.d.ts.map +1 -0
  227. package/dist/v2/react-native/charts/line/rangeSelectorConfig.js +41 -0
  228. package/dist/v2/react-native/charts/line/referenceLabelPlacement.d.ts +21 -0
  229. package/dist/v2/react-native/charts/line/referenceLabelPlacement.d.ts.map +1 -0
  230. package/dist/v2/react-native/charts/line/referenceLabelPlacement.js +113 -0
  231. package/dist/v2/react-native/charts/line/references.d.ts +62 -0
  232. package/dist/v2/react-native/charts/line/references.d.ts.map +1 -0
  233. package/dist/v2/react-native/charts/line/references.js +156 -0
  234. package/dist/v2/react-native/charts/line/renderer.d.ts +4 -0
  235. package/dist/v2/react-native/charts/line/renderer.d.ts.map +1 -0
  236. package/dist/v2/react-native/charts/line/renderer.js +23 -0
  237. package/dist/v2/react-native/charts/line/responders.d.ts +13 -0
  238. package/dist/v2/react-native/charts/line/responders.d.ts.map +1 -0
  239. package/dist/v2/react-native/charts/line/responders.js +62 -0
  240. package/dist/v2/react-native/charts/line/selection.d.ts +31 -0
  241. package/dist/v2/react-native/charts/line/selection.d.ts.map +1 -0
  242. package/dist/v2/react-native/charts/line/selection.js +26 -0
  243. package/dist/v2/react-native/charts/line/seriesInput.d.ts +4 -0
  244. package/dist/v2/react-native/charts/line/seriesInput.d.ts.map +1 -0
  245. package/dist/v2/react-native/charts/line/seriesInput.js +13 -0
  246. package/dist/v2/react-native/charts/line/seriesStyles.d.ts +20 -0
  247. package/dist/v2/react-native/charts/line/seriesStyles.d.ts.map +1 -0
  248. package/dist/v2/react-native/charts/line/seriesStyles.js +33 -0
  249. package/dist/v2/react-native/charts/line/stickyYAxisLayout.d.ts +6 -0
  250. package/dist/v2/react-native/charts/line/stickyYAxisLayout.d.ts.map +1 -0
  251. package/dist/v2/react-native/charts/line/stickyYAxisLayout.js +2 -0
  252. package/dist/v2/react-native/charts/line/text.d.ts +7 -0
  253. package/dist/v2/react-native/charts/line/text.d.ts.map +1 -0
  254. package/dist/v2/react-native/charts/line/text.js +7 -0
  255. package/dist/v2/react-native/charts/line/thresholdRendering.d.ts +28 -0
  256. package/dist/v2/react-native/charts/line/thresholdRendering.d.ts.map +1 -0
  257. package/dist/v2/react-native/charts/line/thresholdRendering.js +145 -0
  258. package/dist/v2/react-native/charts/line/tooltip.d.ts +70 -0
  259. package/dist/v2/react-native/charts/line/tooltip.d.ts.map +1 -0
  260. package/dist/v2/react-native/charts/line/tooltip.js +87 -0
  261. package/dist/v2/react-native/charts/line/types.d.ts +371 -0
  262. package/dist/v2/react-native/charts/line/types.d.ts.map +1 -0
  263. package/dist/v2/react-native/charts/line/types.js +1 -0
  264. package/dist/v2/react-native/charts/line/useAnimatedTooltipModel.d.ts +13 -0
  265. package/dist/v2/react-native/charts/line/useAnimatedTooltipModel.d.ts.map +1 -0
  266. package/dist/v2/react-native/charts/line/useAnimatedTooltipModel.js +84 -0
  267. package/dist/v2/react-native/charts/line/useAnimatedYAxisLabels.d.ts +5 -0
  268. package/dist/v2/react-native/charts/line/useAnimatedYAxisLabels.d.ts.map +1 -0
  269. package/dist/v2/react-native/charts/line/useAnimatedYAxisLabels.js +141 -0
  270. package/dist/v2/react-native/charts/line/useChartModel.d.ts +103 -0
  271. package/dist/v2/react-native/charts/line/useChartModel.d.ts.map +1 -0
  272. package/dist/v2/react-native/charts/line/useChartModel.js +367 -0
  273. package/dist/v2/react-native/charts/line/useDebugLayout.d.ts +16 -0
  274. package/dist/v2/react-native/charts/line/useDebugLayout.d.ts.map +1 -0
  275. package/dist/v2/react-native/charts/line/useDebugLayout.js +35 -0
  276. package/dist/v2/react-native/charts/line/utils.d.ts +10 -0
  277. package/dist/v2/react-native/charts/line/utils.d.ts.map +1 -0
  278. package/dist/v2/react-native/charts/line/utils.js +40 -0
  279. package/dist/v2/react-native/charts/line/viewportInteraction.d.ts +3 -0
  280. package/dist/v2/react-native/charts/line/viewportInteraction.d.ts.map +1 -0
  281. package/dist/v2/react-native/charts/line/viewportInteraction.js +1 -0
  282. package/dist/v2/react-native/charts/line/viewportPinchZoom.d.ts +2 -0
  283. package/dist/v2/react-native/charts/line/viewportPinchZoom.d.ts.map +1 -0
  284. package/dist/v2/react-native/charts/line/viewportPinchZoom.js +1 -0
  285. package/dist/v2/react-native/charts/line/xLabelCandidates.d.ts +13 -0
  286. package/dist/v2/react-native/charts/line/xLabelCandidates.d.ts.map +1 -0
  287. package/dist/v2/react-native/charts/line/xLabelCandidates.js +23 -0
  288. package/dist/v2/react-native/charts/line/xLabels.d.ts +39 -0
  289. package/dist/v2/react-native/charts/line/xLabels.d.ts.map +1 -0
  290. package/dist/v2/react-native/charts/line/xLabels.js +289 -0
  291. package/dist/v2/react-native/charts/line/xScale.d.ts +6 -0
  292. package/dist/v2/react-native/charts/line/xScale.d.ts.map +1 -0
  293. package/dist/v2/react-native/charts/line/xScale.js +25 -0
  294. package/dist/v2/react-native/charts/line/yAxisModel.d.ts +29 -0
  295. package/dist/v2/react-native/charts/line/yAxisModel.d.ts.map +1 -0
  296. package/dist/v2/react-native/charts/line/yAxisModel.js +39 -0
  297. package/dist/v2/react-native/charts/pie/PieChart.d.ts +7 -0
  298. package/dist/v2/react-native/charts/pie/PieChart.d.ts.map +1 -0
  299. package/dist/v2/react-native/charts/pie/PieChart.js +253 -0
  300. package/dist/v2/react-native/charts/pie/accessibility.d.ts +28 -0
  301. package/dist/v2/react-native/charts/pie/accessibility.d.ts.map +1 -0
  302. package/dist/v2/react-native/charts/pie/accessibility.js +49 -0
  303. package/dist/v2/react-native/charts/pie/activeSlice.d.ts +15 -0
  304. package/dist/v2/react-native/charts/pie/activeSlice.d.ts.map +1 -0
  305. package/dist/v2/react-native/charts/pie/activeSlice.js +26 -0
  306. package/dist/v2/react-native/charts/pie/arcLabels.d.ts +32 -0
  307. package/dist/v2/react-native/charts/pie/arcLabels.d.ts.map +1 -0
  308. package/dist/v2/react-native/charts/pie/arcLabels.js +191 -0
  309. package/dist/v2/react-native/charts/pie/interaction.d.ts +26 -0
  310. package/dist/v2/react-native/charts/pie/interaction.d.ts.map +1 -0
  311. package/dist/v2/react-native/charts/pie/interaction.js +66 -0
  312. package/dist/v2/react-native/charts/pie/model.d.ts +15 -0
  313. package/dist/v2/react-native/charts/pie/model.d.ts.map +1 -0
  314. package/dist/v2/react-native/charts/pie/model.js +157 -0
  315. package/dist/v2/react-native/charts/pie/selectionAnimation.d.ts +33 -0
  316. package/dist/v2/react-native/charts/pie/selectionAnimation.d.ts.map +1 -0
  317. package/dist/v2/react-native/charts/pie/selectionAnimation.js +121 -0
  318. package/dist/v2/react-native/charts/pie/sliceSeparator.d.ts +7 -0
  319. package/dist/v2/react-native/charts/pie/sliceSeparator.d.ts.map +1 -0
  320. package/dist/v2/react-native/charts/pie/sliceSeparator.js +26 -0
  321. package/dist/v2/react-native/charts/pie/slices.d.ts +20 -0
  322. package/dist/v2/react-native/charts/pie/slices.d.ts.map +1 -0
  323. package/dist/v2/react-native/charts/pie/slices.js +54 -0
  324. package/dist/v2/react-native/charts/pie/types.d.ts +165 -0
  325. package/dist/v2/react-native/charts/pie/types.d.ts.map +1 -0
  326. package/dist/v2/react-native/charts/pie/types.js +1 -0
  327. package/dist/v2/react-native/charts/progress/ProgressChart.d.ts +7 -0
  328. package/dist/v2/react-native/charts/progress/ProgressChart.d.ts.map +1 -0
  329. package/dist/v2/react-native/charts/progress/ProgressChart.js +111 -0
  330. package/dist/v2/react-native/charts/progress/accessibility.d.ts +26 -0
  331. package/dist/v2/react-native/charts/progress/accessibility.d.ts.map +1 -0
  332. package/dist/v2/react-native/charts/progress/accessibility.js +71 -0
  333. package/dist/v2/react-native/charts/progress/animation.d.ts +36 -0
  334. package/dist/v2/react-native/charts/progress/animation.d.ts.map +1 -0
  335. package/dist/v2/react-native/charts/progress/animation.js +103 -0
  336. package/dist/v2/react-native/charts/progress/model.d.ts +14 -0
  337. package/dist/v2/react-native/charts/progress/model.d.ts.map +1 -0
  338. package/dist/v2/react-native/charts/progress/model.js +133 -0
  339. package/dist/v2/react-native/charts/progress/types.d.ts +72 -0
  340. package/dist/v2/react-native/charts/progress/types.d.ts.map +1 -0
  341. package/dist/v2/react-native/charts/progress/types.js +1 -0
  342. package/dist/v2/react-native/index.d.ts +24 -0
  343. package/dist/v2/react-native/index.d.ts.map +1 -0
  344. package/dist/v2/react-native/index.js +14 -0
  345. package/dist/v2/react-native/selection/ChartSelectionProvider.d.ts +27 -0
  346. package/dist/v2/react-native/selection/ChartSelectionProvider.d.ts.map +1 -0
  347. package/dist/v2/react-native/selection/ChartSelectionProvider.js +92 -0
  348. package/dist/v2/react-native/selection/index.d.ts +2 -0
  349. package/dist/v2/react-native/selection/index.d.ts.map +1 -0
  350. package/dist/v2/react-native/selection/index.js +1 -0
  351. package/dist/v2/react-native/selection/scope.d.ts +16 -0
  352. package/dist/v2/react-native/selection/scope.d.ts.map +1 -0
  353. package/dist/v2/react-native/selection/scope.js +18 -0
  354. package/dist/v2/react-native/theme/index.d.ts +4 -0
  355. package/dist/v2/react-native/theme/index.d.ts.map +1 -0
  356. package/dist/v2/react-native/theme/index.js +2 -0
  357. package/dist/v2/react-native/theme/presets.d.ts +84 -0
  358. package/dist/v2/react-native/theme/presets.d.ts.map +1 -0
  359. package/dist/v2/react-native/theme/presets.js +298 -0
  360. package/dist/v2/react-native/theme/provider.d.ts +20 -0
  361. package/dist/v2/react-native/theme/provider.d.ts.map +1 -0
  362. package/dist/v2/react-native/theme/provider.js +27 -0
  363. package/dist/v2/react-native/viewport/bounds.d.ts +7 -0
  364. package/dist/v2/react-native/viewport/bounds.d.ts.map +1 -0
  365. package/dist/v2/react-native/viewport/bounds.js +7 -0
  366. package/dist/v2/react-native/viewport/config.d.ts +13 -0
  367. package/dist/v2/react-native/viewport/config.d.ts.map +1 -0
  368. package/dist/v2/react-native/viewport/config.js +64 -0
  369. package/dist/v2/react-native/viewport/pan.d.ts +23 -0
  370. package/dist/v2/react-native/viewport/pan.d.ts.map +1 -0
  371. package/dist/v2/react-native/viewport/pan.js +110 -0
  372. package/dist/v2/react-native/viewport/pinchZoom.d.ts +17 -0
  373. package/dist/v2/react-native/viewport/pinchZoom.d.ts.map +1 -0
  374. package/dist/v2/react-native/viewport/pinchZoom.js +131 -0
  375. package/dist/v2/react-native/viewport/types.d.ts +55 -0
  376. package/dist/v2/react-native/viewport/types.d.ts.map +1 -0
  377. package/dist/v2/react-native/viewport/types.js +1 -0
  378. package/dist/v2/svg-renderer/capabilities.d.ts +3 -0
  379. package/dist/v2/svg-renderer/capabilities.d.ts.map +1 -0
  380. package/dist/v2/svg-renderer/capabilities.js +12 -0
  381. package/dist/v2/svg-renderer/clipPath.d.ts +4 -0
  382. package/dist/v2/svg-renderer/clipPath.d.ts.map +1 -0
  383. package/dist/v2/svg-renderer/clipPath.js +35 -0
  384. package/dist/v2/svg-renderer/defs.d.ts +6 -0
  385. package/dist/v2/svg-renderer/defs.d.ts.map +1 -0
  386. package/dist/v2/svg-renderer/defs.js +18 -0
  387. package/dist/v2/svg-renderer/ensureConsole.d.ts +4 -0
  388. package/dist/v2/svg-renderer/ensureConsole.d.ts.map +1 -0
  389. package/dist/v2/svg-renderer/ensureConsole.js +54 -0
  390. package/dist/v2/svg-renderer/hitRegions.d.ts +3 -0
  391. package/dist/v2/svg-renderer/hitRegions.d.ts.map +1 -0
  392. package/dist/v2/svg-renderer/hitRegions.js +6 -0
  393. package/dist/v2/svg-renderer/index.d.ts +14 -0
  394. package/dist/v2/svg-renderer/index.d.ts.map +1 -0
  395. package/dist/v2/svg-renderer/index.js +13 -0
  396. package/dist/v2/svg-renderer/layerOrder.d.ts +19 -0
  397. package/dist/v2/svg-renderer/layerOrder.d.ts.map +1 -0
  398. package/dist/v2/svg-renderer/layerOrder.js +18 -0
  399. package/dist/v2/svg-renderer/layers.d.ts +3 -0
  400. package/dist/v2/svg-renderer/layers.d.ts.map +1 -0
  401. package/dist/v2/svg-renderer/layers.js +4 -0
  402. package/dist/v2/svg-renderer/primitives.d.ts +12 -0
  403. package/dist/v2/svg-renderer/primitives.d.ts.map +1 -0
  404. package/dist/v2/svg-renderer/primitives.js +13 -0
  405. package/dist/v2/svg-renderer/renderer.d.ts +4 -0
  406. package/dist/v2/svg-renderer/renderer.d.ts.map +1 -0
  407. package/dist/v2/svg-renderer/renderer.js +24 -0
  408. package/dist/v2/svg-renderer/symbolGeometry.d.ts +6 -0
  409. package/dist/v2/svg-renderer/symbolGeometry.d.ts.map +1 -0
  410. package/dist/v2/svg-renderer/symbolGeometry.js +10 -0
  411. package/dist/v2/svg-renderer/symbols.d.ts +3 -0
  412. package/dist/v2/svg-renderer/symbols.d.ts.map +1 -0
  413. package/dist/v2/svg-renderer/symbols.js +23 -0
  414. package/dist/v2/svg-renderer/testIds.d.ts +2 -0
  415. package/dist/v2/svg-renderer/testIds.d.ts.map +1 -0
  416. package/dist/v2/svg-renderer/testIds.js +10 -0
  417. package/dist/v2/svg-renderer/textMeasurement.d.ts +4 -0
  418. package/dist/v2/svg-renderer/textMeasurement.d.ts.map +1 -0
  419. package/dist/v2/svg-renderer/textMeasurement.js +37 -0
  420. package/dist/v2/svg-renderer/types.d.ts +134 -0
  421. package/dist/v2/svg-renderer/types.d.ts.map +1 -0
  422. package/dist/v2/svg-renderer/types.js +1 -0
  423. package/package.json +56 -50
  424. package/v2/index.d.ts +1 -0
  425. package/v2/index.js +1 -0
  426. package/v2/package.json +6 -0
  427. package/scripts/chartkit-codemod.mjs +0 -256
@@ -0,0 +1,253 @@
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useId, useMemo, useState } from "react";
3
+ import { StyleSheet, Text, View } from "react-native";
4
+ import { useChartKitTheme } from "../../theme";
5
+ import { useScopedChartSelection } from "../../selection/ChartSelectionProvider";
6
+ import { getLineChartRenderer as getPieChartRenderer } from "../line/renderer";
7
+ import { getPieChartAccessibilitySummary } from "./accessibility";
8
+ import { resolvePieChartActiveSliceConfig } from "./activeSlice";
9
+ import { buildPieChartSelectEvent, getPieChartInteractionConfig, getPieChartSliceAtPoint, isPieChartInteractionEnabled, normalizePieChartSelectedIndex } from "./interaction";
10
+ import { buildPieChartModel } from "./model";
11
+ import { usePieChartSelectionAnimation } from "./selectionAnimation";
12
+ import { PieChartSlices } from "./slices";
13
+ export { getPieChartAccessibilitySummary, getPieChartDataTable } from "./accessibility";
14
+ const defaultDonutInnerRadiusRatio = 0.58;
15
+ const defaultPieLegendGap = 8;
16
+ const RendererLayer = ({ children }) => _jsx(_Fragment, { children: children });
17
+ export const PieChart = (props) => {
18
+ const generatedChartId = useId().replace(/:/g, "");
19
+ const scopedChartId = props.id ?? generatedChartId;
20
+ const chartKitTheme = useChartKitTheme();
21
+ const interactionConfig = useMemo(() => getPieChartInteractionConfig(props.interaction), [props.interaction]);
22
+ const [gestureSelectedIndex, setGestureSelectedIndex] = useState(() => normalizePieChartSelectedIndex(props.defaultSelectedIndex));
23
+ const selectedIndex = normalizePieChartSelectedIndex(props.selectedIndex) ?? gestureSelectedIndex;
24
+ const model = useMemo(() => buildPieChartModel({ chartKitTheme, props, selectedIndex }), [chartKitTheme, props, selectedIndex]);
25
+ const { arcLabels, arcs, centerX, centerY, chartHeight, legendItems, legendVisible, resolvedTheme, radius, sliceSeparator, total } = model;
26
+ const legendConfig = typeof props.legend === "object" ? props.legend : {};
27
+ const activeSlice = resolvePieChartActiveSliceConfig({
28
+ activeSlice: props.activeSlice,
29
+ backgroundColor: resolvedTheme.background
30
+ });
31
+ const selectionAnimationState = usePieChartSelectionAnimation({
32
+ animation: props.selectionAnimation,
33
+ selectedIndex
34
+ });
35
+ const isInteractionEnabled = isPieChartInteractionEnabled(interactionConfig);
36
+ const hasSelectedSlice = selectedIndex !== undefined;
37
+ const clearGestureSelection = useCallback((reason) => {
38
+ if (props.selectedIndex === undefined) {
39
+ setGestureSelectedIndex(undefined);
40
+ }
41
+ interactionConfig.onDeselect?.({ reason });
42
+ }, [interactionConfig, props.selectedIndex]);
43
+ const clearSelectionFromScope = useCallback((reason) => {
44
+ if (reason === "scopeChange") {
45
+ if (props.selectedIndex === undefined) {
46
+ setGestureSelectedIndex(undefined);
47
+ }
48
+ return;
49
+ }
50
+ clearGestureSelection(reason);
51
+ }, [clearGestureSelection, props.selectedIndex]);
52
+ const scopedSelection = useScopedChartSelection({
53
+ chartId: scopedChartId,
54
+ controlled: props.selectedIndex !== undefined,
55
+ hasSelection: hasSelectedSlice,
56
+ onClear: clearSelectionFromScope
57
+ });
58
+ const clearScopedGestureSelection = useCallback((reason) => {
59
+ clearGestureSelection(reason);
60
+ if (reason !== "programmatic") {
61
+ scopedSelection.dismissSelection?.(reason);
62
+ }
63
+ }, [clearGestureSelection, scopedSelection]);
64
+ const handleResponderRelease = useCallback((event) => {
65
+ event.preventDefault();
66
+ const { locationX, locationY } = event.nativeEvent;
67
+ const tappedSlice = getPieChartSliceAtPoint({
68
+ arcs,
69
+ centerX,
70
+ centerY,
71
+ innerRadius: model.innerRadius,
72
+ locationX,
73
+ locationY,
74
+ radius
75
+ });
76
+ if (!tappedSlice) {
77
+ if (interactionConfig.deselectOnOutsidePress) {
78
+ clearScopedGestureSelection("outsidePress");
79
+ }
80
+ return;
81
+ }
82
+ if (props.selectedIndex === undefined) {
83
+ setGestureSelectedIndex(tappedSlice.index);
84
+ }
85
+ scopedSelection.selectChart();
86
+ const selectEvent = buildPieChartSelectEvent(tappedSlice);
87
+ if (selectEvent) {
88
+ interactionConfig.onSelect?.(selectEvent);
89
+ }
90
+ }, [
91
+ arcs,
92
+ centerX,
93
+ centerY,
94
+ clearScopedGestureSelection,
95
+ interactionConfig,
96
+ model.innerRadius,
97
+ props.selectedIndex,
98
+ radius,
99
+ scopedSelection
100
+ ]);
101
+ const responderProps = isInteractionEnabled
102
+ ? {
103
+ onStartShouldSetResponderCapture: () => true,
104
+ onStartShouldSetResponder: () => true,
105
+ onResponderGrant: (event) => {
106
+ event.preventDefault();
107
+ },
108
+ onResponderRelease: handleResponderRelease,
109
+ onResponderTerminationRequest: () => true
110
+ }
111
+ : {};
112
+ const centerLabelProps = {
113
+ arcs,
114
+ theme: resolvedTheme,
115
+ total
116
+ };
117
+ if (selectedIndex !== undefined) {
118
+ centerLabelProps.selectedIndex = selectedIndex;
119
+ const selectedArc = arcs[selectedIndex];
120
+ if (selectedArc) {
121
+ centerLabelProps.selectedArc = selectedArc;
122
+ }
123
+ }
124
+ const centerLabel = typeof props.centerLabel === "function"
125
+ ? props.centerLabel(centerLabelProps)
126
+ : props.centerLabel;
127
+ const isTextCenterLabel = typeof centerLabel === "string" && centerLabel.length > 0;
128
+ const customCenterLabel = centerLabel !== undefined && centerLabel !== null && !isTextCenterLabel
129
+ ? centerLabel
130
+ : null;
131
+ const accessibilityLabel = props.accessibilityLabel ??
132
+ getPieChartAccessibilitySummary({
133
+ colorKey: props.colorKey,
134
+ colors: props.colors,
135
+ data: props.data,
136
+ formatPercentage: props.formatPercentage,
137
+ formatValue: props.formatValue,
138
+ labelKey: props.labelKey,
139
+ valueKey: props.valueKey
140
+ });
141
+ const renderer = getPieChartRenderer(props.renderer ?? chartKitTheme.renderer);
142
+ const Layer = renderer.Layer ?? RendererLayer;
143
+ const Line = renderer.Line;
144
+ const Surface = renderer.Surface;
145
+ const SvgText = renderer.Text;
146
+ const canRenderText = renderer.capabilities?.text !== false;
147
+ return (_jsxs(View, { accessible: true, accessibilityLabel: accessibilityLabel, accessibilityRole: "image", collapsable: false, style: [
148
+ styles.container,
149
+ {
150
+ backgroundColor: resolvedTheme.background,
151
+ height: props.height,
152
+ position: "relative",
153
+ width: props.width
154
+ }
155
+ ], testID: props.testID, children: [_jsxs(View, { style: [
156
+ styles.plotArea,
157
+ {
158
+ height: chartHeight,
159
+ width: props.width
160
+ }
161
+ ], children: [_jsxs(Surface, { width: props.width, height: chartHeight, children: [_jsx(Layer, { name: "background", children: _jsx(PieChartSlices, { activeSlice: activeSlice, arcs: arcs, centerX: centerX, centerY: centerY, innerRadius: model.innerRadius, radius: radius, renderer: renderer, resolvedTheme: resolvedTheme, selectedIndex: selectedIndex, selectionAnimationState: selectionAnimationState, sliceSeparator: sliceSeparator, testID: props.testID }) }), isTextCenterLabel && canRenderText ? (_jsx(Layer, { name: "overlays", children: _jsx(SvgText, { fill: resolvedTheme.text, fontSize: 16, fontWeight: "800", text: centerLabel, textAnchor: "middle", x: centerX, y: centerY + 5, ...(resolvedTheme.typography.fontFamily
162
+ ? { fontFamily: resolvedTheme.typography.fontFamily }
163
+ : {}), children: centerLabel }) })) : null, arcLabels.length > 0 ? (_jsxs(Layer, { name: "interaction", children: [arcLabels.map((label) => label.connectorVisible ? (_jsx(Line, { x1: label.connectorStartX, x2: label.connectorBendX, y1: label.connectorStartY, y2: label.connectorBendY, stroke: label.connectorColor, strokeOpacity: label.connectorOpacity, strokeWidth: label.connectorWidth }, `${label.key}-connector-a`)) : null), arcLabels.map((label) => label.connectorVisible ? (_jsx(Line, { x1: label.connectorBendX, x2: label.connectorEndX, y1: label.connectorBendY, y2: label.connectorEndY, stroke: label.connectorColor, strokeOpacity: label.connectorOpacity, strokeWidth: label.connectorWidth }, `${label.key}-connector-b`)) : null), canRenderText
164
+ ? arcLabels.map((label) => (_jsx(SvgText, { fill: resolvedTheme.text, fontSize: label.fontSize, fontWeight: "800", text: label.text, textAnchor: label.textAnchor, x: label.x, y: label.y + label.fontSize / 3, ...(resolvedTheme.typography.fontFamily
165
+ ? { fontFamily: resolvedTheme.typography.fontFamily }
166
+ : {}), children: label.text }, label.key)))
167
+ : null] })) : null] }), customCenterLabel ? (_jsx(View, { pointerEvents: "none", style: [
168
+ styles.centerLabelOverlay,
169
+ {
170
+ height: Math.max(44, Math.min(76, radius * 0.82)),
171
+ top: centerY - Math.max(22, Math.min(38, radius * 0.41)),
172
+ width: props.width
173
+ }
174
+ ], children: customCenterLabel })) : null, isInteractionEnabled ? (_jsx(View, { accessible: false, collapsable: false, importantForAccessibility: "no", pointerEvents: "auto", style: styles.interactionOverlay, ...responderProps })) : null] }), legendVisible && legendItems.length > 0 ? (_jsx(View, { style: [
175
+ styles.legend,
176
+ {
177
+ gap: legendConfig.itemGap ?? defaultPieLegendGap
178
+ }
179
+ ], children: legendItems.map((item, index) => {
180
+ const selected = selectedIndex === item.index;
181
+ const renderedItem = legendConfig.renderItem?.({
182
+ index,
183
+ item,
184
+ selected,
185
+ theme: resolvedTheme
186
+ });
187
+ return (_jsx(View, { style: [
188
+ styles.legendItem,
189
+ {
190
+ maxWidth: legendConfig.maxItemWidth ?? "48%"
191
+ }
192
+ ], children: renderedItem ?? (_jsxs(_Fragment, { children: [_jsx(View, { style: [
193
+ styles.legendSwatch,
194
+ { backgroundColor: item.color }
195
+ ] }), _jsx(Text, { numberOfLines: 1, style: [styles.legendText, { color: resolvedTheme.text }], children: item.label }), _jsx(Text, { numberOfLines: 1, style: [
196
+ styles.legendValue,
197
+ { color: resolvedTheme.mutedText }
198
+ ], children: item.percentageLabel })] })) }, item.key));
199
+ }) })) : null] }));
200
+ };
201
+ export const DonutChart = (props) => (_jsx(PieChart, { ...props, innerRadiusRatio: props.innerRadiusRatio ?? defaultDonutInnerRadiusRatio }));
202
+ const styles = StyleSheet.create({
203
+ container: {
204
+ borderRadius: 8,
205
+ overflow: "hidden"
206
+ },
207
+ centerLabelOverlay: {
208
+ alignItems: "center",
209
+ justifyContent: "center",
210
+ left: 0,
211
+ position: "absolute"
212
+ },
213
+ plotArea: {
214
+ position: "relative"
215
+ },
216
+ legend: {
217
+ alignContent: "center",
218
+ flexDirection: "row",
219
+ flexWrap: "wrap",
220
+ gap: defaultPieLegendGap,
221
+ justifyContent: "center",
222
+ paddingHorizontal: 8,
223
+ paddingTop: 4
224
+ },
225
+ legendItem: {
226
+ alignItems: "center",
227
+ flexDirection: "row",
228
+ gap: 5,
229
+ maxWidth: "48%",
230
+ minHeight: 18
231
+ },
232
+ legendSwatch: {
233
+ borderRadius: 4,
234
+ height: 8,
235
+ width: 8
236
+ },
237
+ legendText: {
238
+ flexShrink: 1,
239
+ fontSize: 11,
240
+ fontWeight: "700"
241
+ },
242
+ legendValue: {
243
+ fontSize: 10,
244
+ fontWeight: "700"
245
+ },
246
+ interactionOverlay: {
247
+ bottom: 0,
248
+ left: 0,
249
+ position: "absolute",
250
+ right: 0,
251
+ top: 0
252
+ }
253
+ });
@@ -0,0 +1,28 @@
1
+ import type { PieChartProps } from "./types";
2
+ export type PieChartDataTableRow<TData = unknown> = {
3
+ color?: string | undefined;
4
+ formattedValue: string;
5
+ index: number;
6
+ label: string;
7
+ percentage: number;
8
+ percentageLabel: string;
9
+ raw: TData;
10
+ value: number | null;
11
+ };
12
+ export type PieChartDataTable<TData = unknown> = {
13
+ rows: Array<PieChartDataTableRow<TData>>;
14
+ total: number;
15
+ };
16
+ type PieChartAccessibilityInput<TData extends Record<string, unknown>> = {
17
+ colorKey?: PieChartProps<TData>["colorKey"] | undefined;
18
+ colors?: PieChartProps<TData>["colors"] | undefined;
19
+ data: PieChartProps<TData>["data"];
20
+ formatPercentage?: PieChartProps<TData>["formatPercentage"] | undefined;
21
+ formatValue?: PieChartProps<TData>["formatValue"] | undefined;
22
+ labelKey?: PieChartProps<TData>["labelKey"] | undefined;
23
+ valueKey: PieChartProps<TData>["valueKey"];
24
+ };
25
+ export declare const getPieChartDataTable: <TData extends Record<string, unknown>>({ colorKey, colors, data, formatPercentage, formatValue, labelKey, valueKey }: PieChartAccessibilityInput<TData>) => PieChartDataTable<TData>;
26
+ export declare const getPieChartAccessibilitySummary: <TData extends Record<string, unknown>>(input: PieChartAccessibilityInput<TData>) => string;
27
+ export {};
28
+ //# sourceMappingURL=accessibility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accessibility.d.ts","sourceRoot":"","sources":["../../../src/charts/pie/accessibility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,MAAM,oBAAoB,CAAC,KAAK,GAAG,OAAO,IAAI;IAClD,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,GAAG,EAAE,KAAK,CAAC;IACX,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,iBAAiB,CAAC,KAAK,GAAG,OAAO,IAAI;IAC/C,IAAI,EAAE,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,KAAK,0BAA0B,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;IACvE,QAAQ,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;IACxD,MAAM,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IACpD,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;IACnC,gBAAgB,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAC;IACxE,WAAW,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;IAC9D,QAAQ,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;IACxD,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;CAC5C,CAAC;AA4BF,eAAO,MAAM,oBAAoB,GAAI,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,+EAQzE,0BAA0B,CAAC,KAAK,CAAC,KAAG,iBAAiB,CAAC,KAAK,CAoC7D,CAAC;AAEF,eAAO,MAAM,+BAA+B,GAC1C,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAErC,OAAO,0BAA0B,CAAC,KAAK,CAAC,WAiBzC,CAAC"}
@@ -0,0 +1,49 @@
1
+ const defaultLabelKey = "name";
2
+ const defaultColorKey = "color";
3
+ const defaultFormatValue = (value) => String(value);
4
+ const defaultFormatPercentage = (percentage) => `${Math.round(percentage * 100)}%`;
5
+ const getStringValue = (value, fallback) => typeof value === "string" && value.length > 0 ? value : fallback;
6
+ const getColorValue = (value, fallback) => typeof value === "string" && value.length > 0 ? value : fallback;
7
+ const getPieValue = (value) => typeof value === "number" && Number.isFinite(value) && value >= 0
8
+ ? value
9
+ : null;
10
+ const getMaxRow = (rows) => rows.reduce((max, row) => typeof row.value === "number" && (!max || row.value > (max.value ?? 0))
11
+ ? row
12
+ : max, undefined);
13
+ export const getPieChartDataTable = ({ colorKey, colors, data, formatPercentage = defaultFormatPercentage, formatValue = defaultFormatValue, labelKey, valueKey }) => {
14
+ const values = data.map((item) => getPieValue(item[valueKey]));
15
+ const total = values.reduce((sum, value) => (value === null ? sum : sum + value), 0);
16
+ return {
17
+ total,
18
+ rows: data.map((item, index) => {
19
+ const value = values[index] ?? null;
20
+ const percentage = value !== null && total > 0 ? value / total : 0;
21
+ const color = getColorValue(item[colorKey ?? defaultColorKey], colors?.[index]);
22
+ const row = {
23
+ formattedValue: value === null ? "No value" : formatValue(value),
24
+ index,
25
+ label: getStringValue(item[labelKey ?? defaultLabelKey], `Slice ${index + 1}`),
26
+ percentage,
27
+ percentageLabel: formatPercentage(percentage),
28
+ raw: item,
29
+ value
30
+ };
31
+ if (color !== undefined) {
32
+ row.color = color;
33
+ }
34
+ return row;
35
+ })
36
+ };
37
+ };
38
+ export const getPieChartAccessibilitySummary = (input) => {
39
+ const table = getPieChartDataTable(input);
40
+ const definedRows = table.rows.filter((row) => row.value !== null);
41
+ if (definedRows.length === 0) {
42
+ return "Pie chart with no defined slices.";
43
+ }
44
+ const maxRow = getMaxRow(definedRows);
45
+ const intro = `Pie chart with ${definedRows.length} ${definedRows.length === 1 ? "slice" : "slices"}. Total ${input.formatValue?.(table.total) ?? defaultFormatValue(table.total)}.`;
46
+ return maxRow
47
+ ? `${intro} Largest slice is ${maxRow.label} at ${maxRow.percentageLabel}.`
48
+ : intro;
49
+ };
@@ -0,0 +1,15 @@
1
+ import type { PieChartActiveSliceConfig, PieChartProps } from "./types";
2
+ export type ResolvedPieChartActiveSliceConfig = Required<PieChartActiveSliceConfig>;
3
+ export declare const resolvePieChartActiveSliceConfig: ({ activeSlice, backgroundColor }: {
4
+ activeSlice: PieChartActiveSliceConfig | undefined;
5
+ backgroundColor: string;
6
+ }) => ResolvedPieChartActiveSliceConfig;
7
+ export declare const shouldReservePieChartActiveSliceGutter: <TData extends Record<string, unknown>>({ props, selectedIndex }: {
8
+ props: PieChartProps<TData>;
9
+ selectedIndex: number | undefined;
10
+ }) => boolean;
11
+ export declare const getPieChartActiveSliceGutter: ({ activeSlice, radius }: {
12
+ activeSlice: ResolvedPieChartActiveSliceConfig;
13
+ radius: number;
14
+ }) => number;
15
+ //# sourceMappingURL=activeSlice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activeSlice.d.ts","sourceRoot":"","sources":["../../../src/charts/pie/activeSlice.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EAEzB,aAAa,EACd,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,iCAAiC,GAC3C,QAAQ,CAAC,yBAAyB,CAAC,CAAC;AAEtC,eAAO,MAAM,gCAAgC,GAAI,kCAG9C;IACD,WAAW,EAAE,yBAAyB,GAAG,SAAS,CAAC;IACnD,eAAe,EAAE,MAAM,CAAC;CACzB,KAAG,iCAOF,CAAC;AAgBH,eAAO,MAAM,sCAAsC,GACjD,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,0BAGC;IACD,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC,YAKqC,CAAC;AAEvC,eAAO,MAAM,4BAA4B,GAAI,yBAG1C;IACD,WAAW,EAAE,iCAAiC,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC;CAChB,WAME,CAAC"}
@@ -0,0 +1,26 @@
1
+ export const resolvePieChartActiveSliceConfig = ({ activeSlice, backgroundColor }) => ({
2
+ activeOpacity: activeSlice?.activeOpacity ?? 1,
3
+ inactiveOpacity: activeSlice?.inactiveOpacity ?? 0.62,
4
+ activeOffset: activeSlice?.activeOffset ?? 5,
5
+ activeScale: activeSlice?.activeScale ?? 1.025,
6
+ strokeColor: activeSlice?.strokeColor ?? backgroundColor,
7
+ strokeWidth: activeSlice?.strokeWidth ?? 0
8
+ });
9
+ const hasTapInteraction = (interaction) => {
10
+ if (interaction === "tap") {
11
+ return true;
12
+ }
13
+ if (!interaction || interaction === "none") {
14
+ return false;
15
+ }
16
+ return interaction.mode === undefined || interaction.mode === "tap";
17
+ };
18
+ export const shouldReservePieChartActiveSliceGutter = ({ props, selectedIndex }) => props.activeSlice !== undefined ||
19
+ selectedIndex !== undefined ||
20
+ props.defaultSelectedIndex !== undefined ||
21
+ props.selectedIndex !== undefined ||
22
+ hasTapInteraction(props.interaction);
23
+ export const getPieChartActiveSliceGutter = ({ activeSlice, radius }) => Math.ceil(activeSlice.activeOffset +
24
+ radius * Math.max(0, activeSlice.activeScale - 1) +
25
+ Math.max(0, activeSlice.strokeWidth) / 2 +
26
+ 2);
@@ -0,0 +1,32 @@
1
+ import type { PieArcModel } from "../../../core/index";
2
+ import type { ResolvedCartesianChartTheme } from "../../theme";
3
+ import type { PieChartArcLabelModel, PieChartArcLabelsConfig, PieChartArcLabelRenderProps, PieChartLegendItem } from "./types";
4
+ export type ResolvedPieChartArcLabelsConfig<TData = unknown> = {
5
+ connectorColor: string | undefined;
6
+ connectorLength: number;
7
+ connectorLines: boolean;
8
+ connectorOpacity: number;
9
+ connectorWidth: number;
10
+ fontSize: number;
11
+ formatLabel: ((props: PieChartArcLabelRenderProps<TData>) => string | null) | undefined;
12
+ minPercentage: number;
13
+ offset: number;
14
+ reservedWidth: number;
15
+ visible: boolean;
16
+ };
17
+ export declare const getPieChartArcLabelsVisible: <TData = unknown>(arcLabels: boolean | PieChartArcLabelsConfig<TData> | undefined) => boolean;
18
+ export declare const resolvePieChartArcLabelsConfig: <TData = unknown>(arcLabels: boolean | PieChartArcLabelsConfig<TData> | undefined) => ResolvedPieChartArcLabelsConfig<TData>;
19
+ export declare const getPieChartArcLabelHorizontalReserve: <TData>(config: ResolvedPieChartArcLabelsConfig<TData>) => number;
20
+ export declare const buildPieChartArcLabels: <TData>({ arcs, chartHeight, chartWidth, centerX, centerY, config, legendItems, radius, selectedIndex, theme }: {
21
+ arcs: Array<PieArcModel<TData>>;
22
+ chartHeight: number;
23
+ chartWidth: number;
24
+ centerX: number;
25
+ centerY: number;
26
+ config: ResolvedPieChartArcLabelsConfig<TData>;
27
+ legendItems: Array<PieChartLegendItem<TData>>;
28
+ radius: number;
29
+ selectedIndex: number | undefined;
30
+ theme: ResolvedCartesianChartTheme;
31
+ }) => Array<PieChartArcLabelModel<TData>>;
32
+ //# sourceMappingURL=arcLabels.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arcLabels.d.ts","sourceRoot":"","sources":["../../../src/charts/pie/arcLabels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EACV,qBAAqB,EACrB,uBAAuB,EACvB,2BAA2B,EAC3B,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAajB,MAAM,MAAM,+BAA+B,CAAC,KAAK,GAAG,OAAO,IAAI;IAC7D,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EACP,CAAC,CAAC,KAAK,EAAE,2BAA2B,CAAC,KAAK,CAAC,KAAK,MAAM,GAAG,IAAI,CAAC,GAC9D,SAAS,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,KAAK,GAAG,OAAO,EACzD,WAAW,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,GAAG,SAAS,YAWhE,CAAC;AAEF,eAAO,MAAM,8BAA8B,GAAI,KAAK,GAAG,OAAO,EAC5D,WAAW,OAAO,GAAG,uBAAuB,CAAC,KAAK,CAAC,GAAG,SAAS,KAC9D,+BAA+B,CAAC,KAAK,CA0CvC,CAAC;AAqBF,eAAO,MAAM,oCAAoC,GAAI,KAAK,EACxD,QAAQ,+BAA+B,CAAC,KAAK,CAAC,WACJ,CAAC;AAqD7C,eAAO,MAAM,sBAAsB,GAAI,KAAK,EAAE,wGAW3C;IACD,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,+BAA+B,CAAC,KAAK,CAAC,CAAC;IAC/C,WAAW,EAAE,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,KAAK,EAAE,2BAA2B,CAAC;CACpC,KAAG,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,CA2GrC,CAAC"}
@@ -0,0 +1,191 @@
1
+ const defaultArcLabelFontSize = 11;
2
+ const defaultArcLabelMinPercentage = 0.07;
3
+ const defaultArcLabelOffset = 10;
4
+ const defaultConnectorLength = 12;
5
+ const defaultConnectorOpacity = 0.84;
6
+ const defaultConnectorWidth = 1.35;
7
+ const defaultReservedWidth = 86;
8
+ const minConnectorLabelGap = 6;
9
+ const labelEdgePadding = 10;
10
+ const estimatedCharacterWidthRatio = 0.78;
11
+ export const getPieChartArcLabelsVisible = (arcLabels) => {
12
+ if (arcLabels === undefined || arcLabels === false) {
13
+ return false;
14
+ }
15
+ if (typeof arcLabels === "object") {
16
+ return arcLabels.visible !== false;
17
+ }
18
+ return true;
19
+ };
20
+ export const resolvePieChartArcLabelsConfig = (arcLabels) => {
21
+ const config = typeof arcLabels === "object" ? arcLabels : {};
22
+ return {
23
+ connectorColor: config.connectorColor,
24
+ connectorLength: typeof config.connectorLength === "number" &&
25
+ Number.isFinite(config.connectorLength)
26
+ ? Math.max(0, config.connectorLength)
27
+ : defaultConnectorLength,
28
+ connectorLines: config.connectorLines !== false,
29
+ connectorOpacity: typeof config.connectorOpacity === "number" &&
30
+ Number.isFinite(config.connectorOpacity)
31
+ ? clamp(config.connectorOpacity, 0, 1)
32
+ : defaultConnectorOpacity,
33
+ connectorWidth: typeof config.connectorWidth === "number" &&
34
+ Number.isFinite(config.connectorWidth)
35
+ ? Math.max(0, config.connectorWidth)
36
+ : defaultConnectorWidth,
37
+ fontSize: typeof config.fontSize === "number" && Number.isFinite(config.fontSize)
38
+ ? Math.max(8, config.fontSize)
39
+ : defaultArcLabelFontSize,
40
+ formatLabel: config.formatLabel,
41
+ minPercentage: typeof config.minPercentage === "number" &&
42
+ Number.isFinite(config.minPercentage)
43
+ ? Math.max(0, config.minPercentage)
44
+ : defaultArcLabelMinPercentage,
45
+ offset: typeof config.offset === "number" && Number.isFinite(config.offset)
46
+ ? Math.max(0, config.offset)
47
+ : defaultArcLabelOffset,
48
+ reservedWidth: typeof config.reservedWidth === "number" &&
49
+ Number.isFinite(config.reservedWidth)
50
+ ? Math.max(0, config.reservedWidth)
51
+ : defaultReservedWidth,
52
+ visible: getPieChartArcLabelsVisible(arcLabels)
53
+ };
54
+ };
55
+ const getMidAngle = (arc) => arc.startAngle + (arc.endAngle - arc.startAngle) / 2;
56
+ const clamp = (value, min, max) => {
57
+ if (max < min) {
58
+ return min;
59
+ }
60
+ return Math.min(Math.max(value, min), max);
61
+ };
62
+ const estimateLabelWidth = ({ fontSize, text }) => text.length * fontSize * estimatedCharacterWidthRatio;
63
+ export const getPieChartArcLabelHorizontalReserve = (config) => config.reservedWidth + labelEdgePadding;
64
+ const spreadArcLabelsOnSide = ({ chartHeight, labels, minGap }) => {
65
+ const minY = labelEdgePadding + minGap / 2;
66
+ const maxY = Math.max(minY, chartHeight - labelEdgePadding);
67
+ const sorted = [...labels].sort((a, b) => a.y - b.y);
68
+ let cursorY = minY;
69
+ sorted.forEach((label) => {
70
+ const y = clamp(Math.max(label.y, cursorY), minY, maxY);
71
+ label.y = y;
72
+ label.connectorBendY = y;
73
+ label.connectorEndY = y;
74
+ cursorY = y + minGap;
75
+ });
76
+ for (let index = sorted.length - 2; index >= 0; index -= 1) {
77
+ const label = sorted[index];
78
+ const nextLabel = sorted[index + 1];
79
+ if (!label || !nextLabel) {
80
+ continue;
81
+ }
82
+ const maxAllowedY = nextLabel.y - minGap;
83
+ if (label.y > maxAllowedY) {
84
+ label.y = clamp(maxAllowedY, minY, maxY);
85
+ label.connectorBendY = label.y;
86
+ label.connectorEndY = label.y;
87
+ }
88
+ }
89
+ };
90
+ const alignArcLabelConnectors = (labels) => {
91
+ labels.forEach((label) => {
92
+ label.connectorBendX =
93
+ label.connectorStartX + (label.connectorEndX - label.connectorStartX) / 2;
94
+ label.connectorBendY =
95
+ label.connectorStartY + (label.connectorEndY - label.connectorStartY) / 2;
96
+ });
97
+ };
98
+ export const buildPieChartArcLabels = ({ arcs, chartHeight, chartWidth, centerX, centerY, config, legendItems, radius, selectedIndex, theme }) => {
99
+ if (!config.visible) {
100
+ return [];
101
+ }
102
+ const legendByIndex = new Map(legendItems.map((item) => [item.index, item]));
103
+ const labels = arcs.flatMap((arc) => {
104
+ const legendItem = legendByIndex.get(arc.index);
105
+ if (!arc.defined || !legendItem || arc.percentage < config.minPercentage) {
106
+ return [];
107
+ }
108
+ const angle = getMidAngle(arc);
109
+ const side = Math.cos(angle) >= 0 ? 1 : -1;
110
+ const startRadius = radius;
111
+ const bendRadius = radius + config.offset;
112
+ const preferredLabelX = centerX + side * (radius + config.offset + config.connectorLength + 2);
113
+ const labelY = centerY + bendRadius * Math.sin(angle);
114
+ const renderProps = {
115
+ arc,
116
+ color: legendItem.color,
117
+ index: legendItem.index,
118
+ label: legendItem.label,
119
+ percentageLabel: legendItem.percentageLabel,
120
+ selected: selectedIndex === arc.index,
121
+ theme,
122
+ valueLabel: legendItem.valueLabel
123
+ };
124
+ const text = config.formatLabel?.(renderProps) ??
125
+ `${legendItem.label} ${legendItem.percentageLabel}`;
126
+ if (text.length === 0) {
127
+ return [];
128
+ }
129
+ const labelWidth = estimateLabelWidth({ fontSize: config.fontSize, text });
130
+ const outsideRightX = centerX +
131
+ radius +
132
+ config.offset +
133
+ config.connectorLength +
134
+ minConnectorLabelGap;
135
+ const outsideLeftX = centerX -
136
+ radius -
137
+ config.offset -
138
+ config.connectorLength -
139
+ minConnectorLabelGap;
140
+ const rightEdgeLabelX = chartWidth - labelEdgePadding - labelWidth;
141
+ const leftEdgeLabelX = labelEdgePadding + labelWidth;
142
+ const labelX = side > 0
143
+ ? outsideRightX <= rightEdgeLabelX
144
+ ? clamp(preferredLabelX, outsideRightX, rightEdgeLabelX)
145
+ : rightEdgeLabelX
146
+ : leftEdgeLabelX <= outsideLeftX
147
+ ? clamp(preferredLabelX, leftEdgeLabelX, outsideLeftX)
148
+ : leftEdgeLabelX;
149
+ const rawConnectorEndX = labelX - side * 4;
150
+ const outerSliceEdgeX = centerX + side * radius;
151
+ const connectorEndX = side > 0
152
+ ? Math.max(rawConnectorEndX, outerSliceEdgeX + 1)
153
+ : Math.min(rawConnectorEndX, outerSliceEdgeX - 1);
154
+ return [
155
+ {
156
+ arc,
157
+ color: legendItem.color,
158
+ connectorColor: config.connectorColor ?? theme.mutedText,
159
+ connectorBendX: centerX + side * bendRadius * Math.cos(angle),
160
+ connectorBendY: centerY + bendRadius * Math.sin(angle),
161
+ connectorEndX,
162
+ connectorEndY: labelY,
163
+ connectorOpacity: config.connectorOpacity,
164
+ connectorStartX: centerX + startRadius * Math.cos(angle),
165
+ connectorStartY: centerY + startRadius * Math.sin(angle),
166
+ connectorVisible: config.connectorLines,
167
+ connectorWidth: config.connectorWidth,
168
+ fontSize: config.fontSize,
169
+ index: arc.index,
170
+ key: `${arc.index}-${arc.label}-arc-label`,
171
+ text,
172
+ textAnchor: side > 0 ? "start" : "end",
173
+ x: labelX,
174
+ y: labelY
175
+ }
176
+ ];
177
+ });
178
+ const minGap = config.fontSize + 5;
179
+ spreadArcLabelsOnSide({
180
+ chartHeight,
181
+ labels: labels.filter((label) => label.textAnchor === "start"),
182
+ minGap
183
+ });
184
+ spreadArcLabelsOnSide({
185
+ chartHeight,
186
+ labels: labels.filter((label) => label.textAnchor === "end"),
187
+ minGap
188
+ });
189
+ alignArcLabelConnectors(labels);
190
+ return labels;
191
+ };
@@ -0,0 +1,26 @@
1
+ import type { PieArcModel } from "../../../core/index";
2
+ import type { PieChartInteraction, PieChartInteractionConfig, PieChartSelectEvent } from "./types";
3
+ type PieChartPoint = {
4
+ locationX: number;
5
+ locationY: number;
6
+ };
7
+ type PieChartHitTestOptions<TData = unknown> = PieChartPoint & {
8
+ arcs: Array<PieArcModel<TData>>;
9
+ centerX: number;
10
+ centerY: number;
11
+ innerRadius: number;
12
+ radius: number;
13
+ };
14
+ export type ResolvedPieChartInteractionConfig<TData = unknown> = {
15
+ mode: "none" | "tap";
16
+ deselectOnOutsidePress: boolean;
17
+ onDeselect: PieChartInteractionConfig<TData>["onDeselect"] | undefined;
18
+ onSelect: PieChartInteractionConfig<TData>["onSelect"] | undefined;
19
+ };
20
+ export declare const getPieChartInteractionConfig: <TData>(interaction?: PieChartInteraction<TData> | undefined) => ResolvedPieChartInteractionConfig<TData>;
21
+ export declare const isPieChartInteractionEnabled: <TData>(config: ResolvedPieChartInteractionConfig<TData>) => boolean;
22
+ export declare const normalizePieChartSelectedIndex: (selectedIndex: number | undefined) => number | undefined;
23
+ export declare const getPieChartSliceAtPoint: <TData>({ arcs, centerX, centerY, innerRadius, locationX, locationY, radius }: PieChartHitTestOptions<TData>) => PieArcModel<TData> | undefined;
24
+ export declare const buildPieChartSelectEvent: <TData>(arc: PieArcModel<TData> | undefined) => PieChartSelectEvent<TData> | undefined;
25
+ export {};
26
+ //# sourceMappingURL=interaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interaction.d.ts","sourceRoot":"","sources":["../../../src/charts/pie/interaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAEjB,KAAK,aAAa,GAAG;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,sBAAsB,CAAC,KAAK,GAAG,OAAO,IAAI,aAAa,GAAG;IAC7D,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iCAAiC,CAAC,KAAK,GAAG,OAAO,IAAI;IAC/D,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IACrB,sBAAsB,EAAE,OAAO,CAAC;IAChC,UAAU,EAAE,yBAAyB,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC;IACvE,QAAQ,EAAE,yBAAyB,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;CACpE,CAAC;AAkBF,eAAO,MAAM,4BAA4B,GAAI,KAAK,EAChD,cAAc,mBAAmB,CAAC,KAAK,CAAC,GAAG,SAAS,KACnD,iCAAiC,CAAC,KAAK,CAyBzC,CAAC;AAEF,eAAO,MAAM,4BAA4B,GAAI,KAAK,EAChD,QAAQ,iCAAiC,CAAC,KAAK,CAAC,YACxB,CAAC;AAE3B,eAAO,MAAM,8BAA8B,GACzC,eAAe,MAAM,GAAG,SAAS,uBAIpB,CAAC;AAEhB,eAAO,MAAM,uBAAuB,GAAI,KAAK,EAAE,uEAQ5C,sBAAsB,CAAC,KAAK,CAAC,mCAuB/B,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,KAAK,EAC5C,KAAK,WAAW,CAAC,KAAK,CAAC,GAAG,SAAS,KAClC,mBAAmB,CAAC,KAAK,CAAC,GAAG,SAa/B,CAAC"}