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

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 (428) hide show
  1. package/README.md +8 -7
  2. package/dist/v2/core/data/index.d.ts +3 -0
  3. package/dist/v2/core/data/index.d.ts.map +1 -0
  4. package/dist/v2/core/data/index.js +1 -0
  5. package/dist/v2/core/data/normalize.d.ts +8 -0
  6. package/dist/v2/core/data/normalize.d.ts.map +1 -0
  7. package/dist/v2/core/data/normalize.js +229 -0
  8. package/dist/v2/core/data/normalizeValues.d.ts +16 -0
  9. package/dist/v2/core/data/normalizeValues.d.ts.map +1 -0
  10. package/dist/v2/core/data/normalizeValues.js +96 -0
  11. package/dist/v2/core/data/types.d.ts +161 -0
  12. package/dist/v2/core/data/types.d.ts.map +1 -0
  13. package/dist/v2/core/data/types.js +1 -0
  14. package/dist/v2/core/geometry/areaPath.d.ts +3 -0
  15. package/dist/v2/core/geometry/areaPath.d.ts.map +1 -0
  16. package/dist/v2/core/geometry/areaPath.js +36 -0
  17. package/dist/v2/core/geometry/barRects.d.ts +44 -0
  18. package/dist/v2/core/geometry/barRects.d.ts.map +1 -0
  19. package/dist/v2/core/geometry/barRects.js +201 -0
  20. package/dist/v2/core/geometry/contributionHeatmap.d.ts +49 -0
  21. package/dist/v2/core/geometry/contributionHeatmap.d.ts.map +1 -0
  22. package/dist/v2/core/geometry/contributionHeatmap.js +107 -0
  23. package/dist/v2/core/geometry/horizontalBarRects.d.ts +27 -0
  24. package/dist/v2/core/geometry/horizontalBarRects.d.ts.map +1 -0
  25. package/dist/v2/core/geometry/horizontalBarRects.js +202 -0
  26. package/dist/v2/core/geometry/index.d.ts +12 -0
  27. package/dist/v2/core/geometry/index.d.ts.map +1 -0
  28. package/dist/v2/core/geometry/index.js +11 -0
  29. package/dist/v2/core/geometry/lineDecimation.d.ts +8 -0
  30. package/dist/v2/core/geometry/lineDecimation.d.ts.map +1 -0
  31. package/dist/v2/core/geometry/lineDecimation.js +110 -0
  32. package/dist/v2/core/geometry/linePath.d.ts +5 -0
  33. package/dist/v2/core/geometry/linePath.d.ts.map +1 -0
  34. package/dist/v2/core/geometry/linePath.js +98 -0
  35. package/dist/v2/core/geometry/lineSeries.d.ts +29 -0
  36. package/dist/v2/core/geometry/lineSeries.d.ts.map +1 -0
  37. package/dist/v2/core/geometry/lineSeries.js +51 -0
  38. package/dist/v2/core/geometry/path.d.ts +6 -0
  39. package/dist/v2/core/geometry/path.d.ts.map +1 -0
  40. package/dist/v2/core/geometry/path.js +24 -0
  41. package/dist/v2/core/geometry/pieArcs.d.ts +29 -0
  42. package/dist/v2/core/geometry/pieArcs.d.ts.map +1 -0
  43. package/dist/v2/core/geometry/pieArcs.js +142 -0
  44. package/dist/v2/core/geometry/progressRings.d.ts +30 -0
  45. package/dist/v2/core/geometry/progressRings.d.ts.map +1 -0
  46. package/dist/v2/core/geometry/progressRings.js +104 -0
  47. package/dist/v2/core/geometry/types.d.ts +32 -0
  48. package/dist/v2/core/geometry/types.d.ts.map +1 -0
  49. package/dist/v2/core/geometry/types.js +1 -0
  50. package/dist/v2/core/index.d.ts +6 -0
  51. package/dist/v2/core/index.d.ts.map +1 -0
  52. package/dist/v2/core/index.js +6 -0
  53. package/dist/v2/core/interaction/index.d.ts +5 -0
  54. package/dist/v2/core/interaction/index.d.ts.map +1 -0
  55. package/dist/v2/core/interaction/index.js +2 -0
  56. package/dist/v2/core/interaction/viewport.d.ts +71 -0
  57. package/dist/v2/core/interaction/viewport.d.ts.map +1 -0
  58. package/dist/v2/core/interaction/viewport.js +216 -0
  59. package/dist/v2/core/interaction/viewportTransform.d.ts +17 -0
  60. package/dist/v2/core/interaction/viewportTransform.d.ts.map +1 -0
  61. package/dist/v2/core/interaction/viewportTransform.js +70 -0
  62. package/dist/v2/core/layout/autoPadding.d.ts +3 -0
  63. package/dist/v2/core/layout/autoPadding.d.ts.map +1 -0
  64. package/dist/v2/core/layout/autoPadding.js +33 -0
  65. package/dist/v2/core/layout/chartBox.d.ts +5 -0
  66. package/dist/v2/core/layout/chartBox.d.ts.map +1 -0
  67. package/dist/v2/core/layout/chartBox.js +22 -0
  68. package/dist/v2/core/layout/debugLayout.d.ts +3 -0
  69. package/dist/v2/core/layout/debugLayout.d.ts.map +1 -0
  70. package/dist/v2/core/layout/debugLayout.js +20 -0
  71. package/dist/v2/core/layout/index.d.ts +8 -0
  72. package/dist/v2/core/layout/index.d.ts.map +1 -0
  73. package/dist/v2/core/layout/index.js +6 -0
  74. package/dist/v2/core/layout/labelCollision.d.ts +3 -0
  75. package/dist/v2/core/layout/labelCollision.d.ts.map +1 -0
  76. package/dist/v2/core/layout/labelCollision.js +90 -0
  77. package/dist/v2/core/layout/legendLayout.d.ts +3 -0
  78. package/dist/v2/core/layout/legendLayout.d.ts.map +1 -0
  79. package/dist/v2/core/layout/legendLayout.js +39 -0
  80. package/dist/v2/core/layout/tooltipPlacement.d.ts +3 -0
  81. package/dist/v2/core/layout/tooltipPlacement.d.ts.map +1 -0
  82. package/dist/v2/core/layout/tooltipPlacement.js +76 -0
  83. package/dist/v2/core/layout/types.d.ts +114 -0
  84. package/dist/v2/core/layout/types.d.ts.map +1 -0
  85. package/dist/v2/core/layout/types.js +1 -0
  86. package/dist/v2/core/scales/band.d.ts +15 -0
  87. package/dist/v2/core/scales/band.d.ts.map +1 -0
  88. package/dist/v2/core/scales/band.js +34 -0
  89. package/dist/v2/core/scales/domain.d.ts +6 -0
  90. package/dist/v2/core/scales/domain.d.ts.map +1 -0
  91. package/dist/v2/core/scales/domain.js +109 -0
  92. package/dist/v2/core/scales/index.d.ts +7 -0
  93. package/dist/v2/core/scales/index.d.ts.map +1 -0
  94. package/dist/v2/core/scales/index.js +5 -0
  95. package/dist/v2/core/scales/linear.d.ts +8 -0
  96. package/dist/v2/core/scales/linear.d.ts.map +1 -0
  97. package/dist/v2/core/scales/linear.js +22 -0
  98. package/dist/v2/core/scales/ticks.d.ts +4 -0
  99. package/dist/v2/core/scales/ticks.d.ts.map +1 -0
  100. package/dist/v2/core/scales/ticks.js +111 -0
  101. package/dist/v2/core/scales/time.d.ts +8 -0
  102. package/dist/v2/core/scales/time.d.ts.map +1 -0
  103. package/dist/v2/core/scales/time.js +23 -0
  104. package/dist/v2/core/scales/types.d.ts +46 -0
  105. package/dist/v2/core/scales/types.d.ts.map +1 -0
  106. package/dist/v2/core/scales/types.js +1 -0
  107. package/dist/v2/index.d.ts +1 -0
  108. package/dist/v2/index.js +1 -0
  109. package/dist/v2/react-native/charts/bar/BarChart.d.ts +6 -0
  110. package/dist/v2/react-native/charts/bar/BarChart.d.ts.map +1 -0
  111. package/dist/v2/react-native/charts/bar/BarChart.js +198 -0
  112. package/dist/v2/react-native/charts/bar/BarChartSurface.d.ts +36 -0
  113. package/dist/v2/react-native/charts/bar/BarChartSurface.d.ts.map +1 -0
  114. package/dist/v2/react-native/charts/bar/BarChartSurface.js +126 -0
  115. package/dist/v2/react-native/charts/bar/StackedBarChart.d.ts +4 -0
  116. package/dist/v2/react-native/charts/bar/StackedBarChart.d.ts.map +1 -0
  117. package/dist/v2/react-native/charts/bar/StackedBarChart.js +9 -0
  118. package/dist/v2/react-native/charts/bar/accessibility.d.ts +31 -0
  119. package/dist/v2/react-native/charts/bar/accessibility.d.ts.map +1 -0
  120. package/dist/v2/react-native/charts/bar/accessibility.js +87 -0
  121. package/dist/v2/react-native/charts/bar/interaction.d.ts +18 -0
  122. package/dist/v2/react-native/charts/bar/interaction.d.ts.map +1 -0
  123. package/dist/v2/react-native/charts/bar/interaction.js +62 -0
  124. package/dist/v2/react-native/charts/bar/model.d.ts +3 -0
  125. package/dist/v2/react-native/charts/bar/model.d.ts.map +1 -0
  126. package/dist/v2/react-native/charts/bar/model.js +326 -0
  127. package/dist/v2/react-native/charts/bar/modelUtils.d.ts +27 -0
  128. package/dist/v2/react-native/charts/bar/modelUtils.d.ts.map +1 -0
  129. package/dist/v2/react-native/charts/bar/modelUtils.js +58 -0
  130. package/dist/v2/react-native/charts/bar/options.d.ts +7 -0
  131. package/dist/v2/react-native/charts/bar/options.d.ts.map +1 -0
  132. package/dist/v2/react-native/charts/bar/options.js +49 -0
  133. package/dist/v2/react-native/charts/bar/rendererSafety.d.ts +12 -0
  134. package/dist/v2/react-native/charts/bar/rendererSafety.d.ts.map +1 -0
  135. package/dist/v2/react-native/charts/bar/rendererSafety.js +31 -0
  136. package/dist/v2/react-native/charts/bar/selectionAnimation.d.ts +42 -0
  137. package/dist/v2/react-native/charts/bar/selectionAnimation.d.ts.map +1 -0
  138. package/dist/v2/react-native/charts/bar/selectionAnimation.js +158 -0
  139. package/dist/v2/react-native/charts/bar/stackedCompat.d.ts +55 -0
  140. package/dist/v2/react-native/charts/bar/stackedCompat.d.ts.map +1 -0
  141. package/dist/v2/react-native/charts/bar/stackedCompat.js +105 -0
  142. package/dist/v2/react-native/charts/bar/tooltip.d.ts +11 -0
  143. package/dist/v2/react-native/charts/bar/tooltip.d.ts.map +1 -0
  144. package/dist/v2/react-native/charts/bar/tooltip.js +15 -0
  145. package/dist/v2/react-native/charts/bar/tooltipModel.d.ts +33 -0
  146. package/dist/v2/react-native/charts/bar/tooltipModel.d.ts.map +1 -0
  147. package/dist/v2/react-native/charts/bar/tooltipModel.js +40 -0
  148. package/dist/v2/react-native/charts/bar/tooltipPlacement.d.ts +9 -0
  149. package/dist/v2/react-native/charts/bar/tooltipPlacement.d.ts.map +1 -0
  150. package/dist/v2/react-native/charts/bar/tooltipPlacement.js +9 -0
  151. package/dist/v2/react-native/charts/bar/types.d.ts +211 -0
  152. package/dist/v2/react-native/charts/bar/types.d.ts.map +1 -0
  153. package/dist/v2/react-native/charts/bar/types.js +1 -0
  154. package/dist/v2/react-native/charts/bar/useAnimatedTooltipModel.d.ts +10 -0
  155. package/dist/v2/react-native/charts/bar/useAnimatedTooltipModel.d.ts.map +1 -0
  156. package/dist/v2/react-native/charts/bar/useAnimatedTooltipModel.js +87 -0
  157. package/dist/v2/react-native/charts/bar/viewport.d.ts +20 -0
  158. package/dist/v2/react-native/charts/bar/viewport.d.ts.map +1 -0
  159. package/dist/v2/react-native/charts/bar/viewport.js +47 -0
  160. package/dist/v2/react-native/charts/contribution/ContributionGraph.d.ts +13 -0
  161. package/dist/v2/react-native/charts/contribution/ContributionGraph.d.ts.map +1 -0
  162. package/dist/v2/react-native/charts/contribution/ContributionGraph.js +65 -0
  163. package/dist/v2/react-native/charts/contribution/accessibility.d.ts +25 -0
  164. package/dist/v2/react-native/charts/contribution/accessibility.d.ts.map +1 -0
  165. package/dist/v2/react-native/charts/contribution/accessibility.js +50 -0
  166. package/dist/v2/react-native/charts/contribution/model.d.ts +17 -0
  167. package/dist/v2/react-native/charts/contribution/model.d.ts.map +1 -0
  168. package/dist/v2/react-native/charts/contribution/model.js +102 -0
  169. package/dist/v2/react-native/charts/contribution/types.d.ts +50 -0
  170. package/dist/v2/react-native/charts/contribution/types.d.ts.map +1 -0
  171. package/dist/v2/react-native/charts/contribution/types.js +1 -0
  172. package/dist/v2/react-native/charts/line/AreaChart.d.ts +3 -0
  173. package/dist/v2/react-native/charts/line/AreaChart.d.ts.map +1 -0
  174. package/dist/v2/react-native/charts/line/AreaChart.js +3 -0
  175. package/dist/v2/react-native/charts/line/ChartSurface.d.ts +16 -0
  176. package/dist/v2/react-native/charts/line/ChartSurface.d.ts.map +1 -0
  177. package/dist/v2/react-native/charts/line/ChartSurface.js +151 -0
  178. package/dist/v2/react-native/charts/line/LineChart.d.ts +6 -0
  179. package/dist/v2/react-native/charts/line/LineChart.d.ts.map +1 -0
  180. package/dist/v2/react-native/charts/line/LineChart.js +294 -0
  181. package/dist/v2/react-native/charts/line/StickyYAxis.d.ts +15 -0
  182. package/dist/v2/react-native/charts/line/StickyYAxis.d.ts.map +1 -0
  183. package/dist/v2/react-native/charts/line/StickyYAxis.js +26 -0
  184. package/dist/v2/react-native/charts/line/accessibility.d.ts +34 -0
  185. package/dist/v2/react-native/charts/line/accessibility.d.ts.map +1 -0
  186. package/dist/v2/react-native/charts/line/accessibility.js +103 -0
  187. package/dist/v2/react-native/charts/line/axisLabels.d.ts +37 -0
  188. package/dist/v2/react-native/charts/line/axisLabels.d.ts.map +1 -0
  189. package/dist/v2/react-native/charts/line/axisLabels.js +55 -0
  190. package/dist/v2/react-native/charts/line/debugLayout.d.ts +26 -0
  191. package/dist/v2/react-native/charts/line/debugLayout.d.ts.map +1 -0
  192. package/dist/v2/react-native/charts/line/debugLayout.js +77 -0
  193. package/dist/v2/react-native/charts/line/debugOverlay.d.ts +9 -0
  194. package/dist/v2/react-native/charts/line/debugOverlay.d.ts.map +1 -0
  195. package/dist/v2/react-native/charts/line/debugOverlay.js +30 -0
  196. package/dist/v2/react-native/charts/line/defaultTooltip.d.ts +3 -0
  197. package/dist/v2/react-native/charts/line/defaultTooltip.d.ts.map +1 -0
  198. package/dist/v2/react-native/charts/line/defaultTooltip.js +17 -0
  199. package/dist/v2/react-native/charts/line/interaction.d.ts +82 -0
  200. package/dist/v2/react-native/charts/line/interaction.d.ts.map +1 -0
  201. package/dist/v2/react-native/charts/line/interaction.js +94 -0
  202. package/dist/v2/react-native/charts/line/legend.d.ts +35 -0
  203. package/dist/v2/react-native/charts/line/legend.d.ts.map +1 -0
  204. package/dist/v2/react-native/charts/line/legend.js +95 -0
  205. package/dist/v2/react-native/charts/line/markers.d.ts +11 -0
  206. package/dist/v2/react-native/charts/line/markers.d.ts.map +1 -0
  207. package/dist/v2/react-native/charts/line/markers.js +52 -0
  208. package/dist/v2/react-native/charts/line/options.d.ts +172 -0
  209. package/dist/v2/react-native/charts/line/options.d.ts.map +1 -0
  210. package/dist/v2/react-native/charts/line/options.js +168 -0
  211. package/dist/v2/react-native/charts/line/outsidePressSurfaces.d.ts +15 -0
  212. package/dist/v2/react-native/charts/line/outsidePressSurfaces.d.ts.map +1 -0
  213. package/dist/v2/react-native/charts/line/outsidePressSurfaces.js +37 -0
  214. package/dist/v2/react-native/charts/line/overviewProps.d.ts +45 -0
  215. package/dist/v2/react-native/charts/line/overviewProps.d.ts.map +1 -0
  216. package/dist/v2/react-native/charts/line/overviewProps.js +4 -0
  217. package/dist/v2/react-native/charts/line/rangeSelector.d.ts +19 -0
  218. package/dist/v2/react-native/charts/line/rangeSelector.d.ts.map +1 -0
  219. package/dist/v2/react-native/charts/line/rangeSelector.js +176 -0
  220. package/dist/v2/react-native/charts/line/rangeSelectorConfig.d.ts +38 -0
  221. package/dist/v2/react-native/charts/line/rangeSelectorConfig.d.ts.map +1 -0
  222. package/dist/v2/react-native/charts/line/rangeSelectorConfig.js +41 -0
  223. package/dist/v2/react-native/charts/line/referenceLabelPlacement.d.ts +21 -0
  224. package/dist/v2/react-native/charts/line/referenceLabelPlacement.d.ts.map +1 -0
  225. package/dist/v2/react-native/charts/line/referenceLabelPlacement.js +113 -0
  226. package/dist/v2/react-native/charts/line/references.d.ts +62 -0
  227. package/dist/v2/react-native/charts/line/references.d.ts.map +1 -0
  228. package/dist/v2/react-native/charts/line/references.js +156 -0
  229. package/dist/v2/react-native/charts/line/renderer.d.ts +4 -0
  230. package/dist/v2/react-native/charts/line/renderer.d.ts.map +1 -0
  231. package/dist/v2/react-native/charts/line/renderer.js +23 -0
  232. package/dist/v2/react-native/charts/line/responders.d.ts +13 -0
  233. package/dist/v2/react-native/charts/line/responders.d.ts.map +1 -0
  234. package/dist/v2/react-native/charts/line/responders.js +59 -0
  235. package/dist/v2/react-native/charts/line/selection.d.ts +31 -0
  236. package/dist/v2/react-native/charts/line/selection.d.ts.map +1 -0
  237. package/dist/v2/react-native/charts/line/selection.js +26 -0
  238. package/dist/v2/react-native/charts/line/seriesInput.d.ts +4 -0
  239. package/dist/v2/react-native/charts/line/seriesInput.d.ts.map +1 -0
  240. package/dist/v2/react-native/charts/line/seriesInput.js +13 -0
  241. package/dist/v2/react-native/charts/line/seriesStyles.d.ts +20 -0
  242. package/dist/v2/react-native/charts/line/seriesStyles.d.ts.map +1 -0
  243. package/dist/v2/react-native/charts/line/seriesStyles.js +33 -0
  244. package/dist/v2/react-native/charts/line/stickyYAxisLayout.d.ts +6 -0
  245. package/dist/v2/react-native/charts/line/stickyYAxisLayout.d.ts.map +1 -0
  246. package/dist/v2/react-native/charts/line/stickyYAxisLayout.js +2 -0
  247. package/dist/v2/react-native/charts/line/text.d.ts +7 -0
  248. package/dist/v2/react-native/charts/line/text.d.ts.map +1 -0
  249. package/dist/v2/react-native/charts/line/text.js +7 -0
  250. package/dist/v2/react-native/charts/line/thresholdRendering.d.ts +28 -0
  251. package/dist/v2/react-native/charts/line/thresholdRendering.d.ts.map +1 -0
  252. package/dist/v2/react-native/charts/line/thresholdRendering.js +145 -0
  253. package/dist/v2/react-native/charts/line/tooltip.d.ts +70 -0
  254. package/dist/v2/react-native/charts/line/tooltip.d.ts.map +1 -0
  255. package/dist/v2/react-native/charts/line/tooltip.js +87 -0
  256. package/dist/v2/react-native/charts/line/types.d.ts +371 -0
  257. package/dist/v2/react-native/charts/line/types.d.ts.map +1 -0
  258. package/dist/v2/react-native/charts/line/types.js +1 -0
  259. package/dist/v2/react-native/charts/line/useAnimatedTooltipModel.d.ts +13 -0
  260. package/dist/v2/react-native/charts/line/useAnimatedTooltipModel.d.ts.map +1 -0
  261. package/dist/v2/react-native/charts/line/useAnimatedTooltipModel.js +84 -0
  262. package/dist/v2/react-native/charts/line/useAnimatedYAxisLabels.d.ts +5 -0
  263. package/dist/v2/react-native/charts/line/useAnimatedYAxisLabels.d.ts.map +1 -0
  264. package/dist/v2/react-native/charts/line/useAnimatedYAxisLabels.js +141 -0
  265. package/dist/v2/react-native/charts/line/useChartModel.d.ts +103 -0
  266. package/dist/v2/react-native/charts/line/useChartModel.d.ts.map +1 -0
  267. package/dist/v2/react-native/charts/line/useChartModel.js +367 -0
  268. package/dist/v2/react-native/charts/line/useDebugLayout.d.ts +16 -0
  269. package/dist/v2/react-native/charts/line/useDebugLayout.d.ts.map +1 -0
  270. package/dist/v2/react-native/charts/line/useDebugLayout.js +35 -0
  271. package/dist/v2/react-native/charts/line/utils.d.ts +10 -0
  272. package/dist/v2/react-native/charts/line/utils.d.ts.map +1 -0
  273. package/dist/v2/react-native/charts/line/utils.js +40 -0
  274. package/dist/v2/react-native/charts/line/viewportInteraction.d.ts +3 -0
  275. package/dist/v2/react-native/charts/line/viewportInteraction.d.ts.map +1 -0
  276. package/dist/v2/react-native/charts/line/viewportInteraction.js +1 -0
  277. package/dist/v2/react-native/charts/line/viewportInteractionConfig.d.ts +3 -0
  278. package/dist/v2/react-native/charts/line/viewportInteractionConfig.d.ts.map +1 -0
  279. package/dist/v2/react-native/charts/line/viewportInteractionConfig.js +1 -0
  280. package/dist/v2/react-native/charts/line/viewportPinchZoom.d.ts +2 -0
  281. package/dist/v2/react-native/charts/line/viewportPinchZoom.d.ts.map +1 -0
  282. package/dist/v2/react-native/charts/line/viewportPinchZoom.js +1 -0
  283. package/dist/v2/react-native/charts/line/xLabelCandidates.d.ts +13 -0
  284. package/dist/v2/react-native/charts/line/xLabelCandidates.d.ts.map +1 -0
  285. package/dist/v2/react-native/charts/line/xLabelCandidates.js +23 -0
  286. package/dist/v2/react-native/charts/line/xLabels.d.ts +39 -0
  287. package/dist/v2/react-native/charts/line/xLabels.d.ts.map +1 -0
  288. package/dist/v2/react-native/charts/line/xLabels.js +289 -0
  289. package/dist/v2/react-native/charts/line/xScale.d.ts +6 -0
  290. package/dist/v2/react-native/charts/line/xScale.d.ts.map +1 -0
  291. package/dist/v2/react-native/charts/line/xScale.js +25 -0
  292. package/dist/v2/react-native/charts/line/yAxisModel.d.ts +29 -0
  293. package/dist/v2/react-native/charts/line/yAxisModel.d.ts.map +1 -0
  294. package/dist/v2/react-native/charts/line/yAxisModel.js +39 -0
  295. package/dist/v2/react-native/charts/pie/PieChart.d.ts +7 -0
  296. package/dist/v2/react-native/charts/pie/PieChart.d.ts.map +1 -0
  297. package/dist/v2/react-native/charts/pie/PieChart.js +244 -0
  298. package/dist/v2/react-native/charts/pie/accessibility.d.ts +28 -0
  299. package/dist/v2/react-native/charts/pie/accessibility.d.ts.map +1 -0
  300. package/dist/v2/react-native/charts/pie/accessibility.js +49 -0
  301. package/dist/v2/react-native/charts/pie/activeSlice.d.ts +15 -0
  302. package/dist/v2/react-native/charts/pie/activeSlice.d.ts.map +1 -0
  303. package/dist/v2/react-native/charts/pie/activeSlice.js +26 -0
  304. package/dist/v2/react-native/charts/pie/arcLabels.d.ts +32 -0
  305. package/dist/v2/react-native/charts/pie/arcLabels.d.ts.map +1 -0
  306. package/dist/v2/react-native/charts/pie/arcLabels.js +191 -0
  307. package/dist/v2/react-native/charts/pie/interaction.d.ts +26 -0
  308. package/dist/v2/react-native/charts/pie/interaction.d.ts.map +1 -0
  309. package/dist/v2/react-native/charts/pie/interaction.js +66 -0
  310. package/dist/v2/react-native/charts/pie/model.d.ts +15 -0
  311. package/dist/v2/react-native/charts/pie/model.d.ts.map +1 -0
  312. package/dist/v2/react-native/charts/pie/model.js +157 -0
  313. package/dist/v2/react-native/charts/pie/selectionAnimation.d.ts +33 -0
  314. package/dist/v2/react-native/charts/pie/selectionAnimation.d.ts.map +1 -0
  315. package/dist/v2/react-native/charts/pie/selectionAnimation.js +121 -0
  316. package/dist/v2/react-native/charts/pie/sliceSeparator.d.ts +7 -0
  317. package/dist/v2/react-native/charts/pie/sliceSeparator.d.ts.map +1 -0
  318. package/dist/v2/react-native/charts/pie/sliceSeparator.js +26 -0
  319. package/dist/v2/react-native/charts/pie/slices.d.ts +20 -0
  320. package/dist/v2/react-native/charts/pie/slices.d.ts.map +1 -0
  321. package/dist/v2/react-native/charts/pie/slices.js +54 -0
  322. package/dist/v2/react-native/charts/pie/types.d.ts +165 -0
  323. package/dist/v2/react-native/charts/pie/types.d.ts.map +1 -0
  324. package/dist/v2/react-native/charts/pie/types.js +1 -0
  325. package/dist/v2/react-native/charts/progress/ProgressChart.d.ts +7 -0
  326. package/dist/v2/react-native/charts/progress/ProgressChart.d.ts.map +1 -0
  327. package/dist/v2/react-native/charts/progress/ProgressChart.js +111 -0
  328. package/dist/v2/react-native/charts/progress/accessibility.d.ts +26 -0
  329. package/dist/v2/react-native/charts/progress/accessibility.d.ts.map +1 -0
  330. package/dist/v2/react-native/charts/progress/accessibility.js +71 -0
  331. package/dist/v2/react-native/charts/progress/animation.d.ts +36 -0
  332. package/dist/v2/react-native/charts/progress/animation.d.ts.map +1 -0
  333. package/dist/v2/react-native/charts/progress/animation.js +103 -0
  334. package/dist/v2/react-native/charts/progress/model.d.ts +14 -0
  335. package/dist/v2/react-native/charts/progress/model.d.ts.map +1 -0
  336. package/dist/v2/react-native/charts/progress/model.js +133 -0
  337. package/dist/v2/react-native/charts/progress/types.d.ts +72 -0
  338. package/dist/v2/react-native/charts/progress/types.d.ts.map +1 -0
  339. package/dist/v2/react-native/charts/progress/types.js +1 -0
  340. package/dist/v2/react-native/index.d.ts +24 -0
  341. package/dist/v2/react-native/index.d.ts.map +1 -0
  342. package/dist/v2/react-native/index.js +14 -0
  343. package/dist/v2/react-native/selection/ChartSelectionProvider.d.ts +27 -0
  344. package/dist/v2/react-native/selection/ChartSelectionProvider.d.ts.map +1 -0
  345. package/dist/v2/react-native/selection/ChartSelectionProvider.js +92 -0
  346. package/dist/v2/react-native/selection/index.d.ts +2 -0
  347. package/dist/v2/react-native/selection/index.d.ts.map +1 -0
  348. package/dist/v2/react-native/selection/index.js +1 -0
  349. package/dist/v2/react-native/selection/scope.d.ts +16 -0
  350. package/dist/v2/react-native/selection/scope.d.ts.map +1 -0
  351. package/dist/v2/react-native/selection/scope.js +18 -0
  352. package/dist/v2/react-native/theme/index.d.ts +4 -0
  353. package/dist/v2/react-native/theme/index.d.ts.map +1 -0
  354. package/dist/v2/react-native/theme/index.js +2 -0
  355. package/dist/v2/react-native/theme/presets.d.ts +84 -0
  356. package/dist/v2/react-native/theme/presets.d.ts.map +1 -0
  357. package/dist/v2/react-native/theme/presets.js +298 -0
  358. package/dist/v2/react-native/theme/provider.d.ts +20 -0
  359. package/dist/v2/react-native/theme/provider.d.ts.map +1 -0
  360. package/dist/v2/react-native/theme/provider.js +27 -0
  361. package/dist/v2/react-native/viewport/bounds.d.ts +7 -0
  362. package/dist/v2/react-native/viewport/bounds.d.ts.map +1 -0
  363. package/dist/v2/react-native/viewport/bounds.js +7 -0
  364. package/dist/v2/react-native/viewport/config.d.ts +13 -0
  365. package/dist/v2/react-native/viewport/config.d.ts.map +1 -0
  366. package/dist/v2/react-native/viewport/config.js +64 -0
  367. package/dist/v2/react-native/viewport/pan.d.ts +23 -0
  368. package/dist/v2/react-native/viewport/pan.d.ts.map +1 -0
  369. package/dist/v2/react-native/viewport/pan.js +110 -0
  370. package/dist/v2/react-native/viewport/panResponder.d.ts +14 -0
  371. package/dist/v2/react-native/viewport/panResponder.d.ts.map +1 -0
  372. package/dist/v2/react-native/viewport/panResponder.js +115 -0
  373. package/dist/v2/react-native/viewport/pinchZoom.d.ts +17 -0
  374. package/dist/v2/react-native/viewport/pinchZoom.d.ts.map +1 -0
  375. package/dist/v2/react-native/viewport/pinchZoom.js +131 -0
  376. package/dist/v2/react-native/viewport/types.d.ts +55 -0
  377. package/dist/v2/react-native/viewport/types.d.ts.map +1 -0
  378. package/dist/v2/react-native/viewport/types.js +1 -0
  379. package/dist/v2/svg-renderer/capabilities.d.ts +3 -0
  380. package/dist/v2/svg-renderer/capabilities.d.ts.map +1 -0
  381. package/dist/v2/svg-renderer/capabilities.js +12 -0
  382. package/dist/v2/svg-renderer/clipPath.d.ts +4 -0
  383. package/dist/v2/svg-renderer/clipPath.d.ts.map +1 -0
  384. package/dist/v2/svg-renderer/clipPath.js +35 -0
  385. package/dist/v2/svg-renderer/defs.d.ts +6 -0
  386. package/dist/v2/svg-renderer/defs.d.ts.map +1 -0
  387. package/dist/v2/svg-renderer/defs.js +18 -0
  388. package/dist/v2/svg-renderer/ensureConsole.d.ts +4 -0
  389. package/dist/v2/svg-renderer/ensureConsole.d.ts.map +1 -0
  390. package/dist/v2/svg-renderer/ensureConsole.js +54 -0
  391. package/dist/v2/svg-renderer/hitRegions.d.ts +3 -0
  392. package/dist/v2/svg-renderer/hitRegions.d.ts.map +1 -0
  393. package/dist/v2/svg-renderer/hitRegions.js +6 -0
  394. package/dist/v2/svg-renderer/index.d.ts +14 -0
  395. package/dist/v2/svg-renderer/index.d.ts.map +1 -0
  396. package/dist/v2/svg-renderer/index.js +13 -0
  397. package/dist/v2/svg-renderer/layerOrder.d.ts +19 -0
  398. package/dist/v2/svg-renderer/layerOrder.d.ts.map +1 -0
  399. package/dist/v2/svg-renderer/layerOrder.js +18 -0
  400. package/dist/v2/svg-renderer/layers.d.ts +3 -0
  401. package/dist/v2/svg-renderer/layers.d.ts.map +1 -0
  402. package/dist/v2/svg-renderer/layers.js +4 -0
  403. package/dist/v2/svg-renderer/primitives.d.ts +12 -0
  404. package/dist/v2/svg-renderer/primitives.d.ts.map +1 -0
  405. package/dist/v2/svg-renderer/primitives.js +13 -0
  406. package/dist/v2/svg-renderer/renderer.d.ts +4 -0
  407. package/dist/v2/svg-renderer/renderer.d.ts.map +1 -0
  408. package/dist/v2/svg-renderer/renderer.js +24 -0
  409. package/dist/v2/svg-renderer/symbolGeometry.d.ts +6 -0
  410. package/dist/v2/svg-renderer/symbolGeometry.d.ts.map +1 -0
  411. package/dist/v2/svg-renderer/symbolGeometry.js +10 -0
  412. package/dist/v2/svg-renderer/symbols.d.ts +3 -0
  413. package/dist/v2/svg-renderer/symbols.d.ts.map +1 -0
  414. package/dist/v2/svg-renderer/symbols.js +23 -0
  415. package/dist/v2/svg-renderer/testIds.d.ts +2 -0
  416. package/dist/v2/svg-renderer/testIds.d.ts.map +1 -0
  417. package/dist/v2/svg-renderer/testIds.js +10 -0
  418. package/dist/v2/svg-renderer/textMeasurement.d.ts +4 -0
  419. package/dist/v2/svg-renderer/textMeasurement.d.ts.map +1 -0
  420. package/dist/v2/svg-renderer/textMeasurement.js +37 -0
  421. package/dist/v2/svg-renderer/types.d.ts +134 -0
  422. package/dist/v2/svg-renderer/types.d.ts.map +1 -0
  423. package/dist/v2/svg-renderer/types.js +1 -0
  424. package/package.json +39 -48
  425. package/v2/index.d.ts +1 -0
  426. package/v2/index.js +1 -0
  427. package/v2/package.json +6 -0
  428. package/scripts/chartkit-codemod.mjs +0 -256
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rendererSafety.d.ts","sourceRoot":"","sources":["../../../src/charts/bar/rendererSafety.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAsChD,eAAO,MAAM,2BAA2B,GAAI,wCAIzC;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACvC,UAAU,EAAE,OAAO,GAAG,SAAS,CAAC;CACjC,WAOA,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,wCAIrC;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACvC,UAAU,EAAE,OAAO,GAAG,SAAS,CAAC;CACjC,kDAMA,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { lineChartSvgRenderer } from "../line/renderer";
2
+ const conservativeNativeMaxSurfaceWidth = 2730;
3
+ const isInjectedRenderer = (renderer) => renderer !== undefined &&
4
+ renderer !== lineChartSvgRenderer &&
5
+ renderer.name !== "svg";
6
+ const getRendererMaxSurfaceWidth = (renderer) => renderer?.capabilities?.maxSurfaceWidth ??
7
+ (isInjectedRenderer(renderer)
8
+ ? conservativeNativeMaxSurfaceWidth
9
+ : undefined);
10
+ const canRenderWideViewport = (renderer) => renderer?.capabilities?.viewportWindowing === true;
11
+ const shouldConstrainSurfaceWidth = ({ contentWidth, renderer, scrollable }) => {
12
+ const maxSurfaceWidth = getRendererMaxSurfaceWidth(renderer);
13
+ return (scrollable &&
14
+ typeof maxSurfaceWidth === "number" &&
15
+ Number.isFinite(maxSurfaceWidth) &&
16
+ contentWidth > maxSurfaceWidth &&
17
+ !canRenderWideViewport(renderer));
18
+ };
19
+ export const getSafeBarChartContentWidth = ({ contentWidth, renderer, scrollable }) => {
20
+ const maxSurfaceWidth = getRendererMaxSurfaceWidth(renderer);
21
+ return shouldConstrainSurfaceWidth({ contentWidth, renderer, scrollable }) &&
22
+ typeof maxSurfaceWidth === "number"
23
+ ? maxSurfaceWidth
24
+ : contentWidth;
25
+ };
26
+ export const getSafeBarChartRenderer = ({ contentWidth, renderer, scrollable }) => {
27
+ if (shouldConstrainSurfaceWidth({ contentWidth, renderer, scrollable })) {
28
+ return lineChartSvgRenderer;
29
+ }
30
+ return renderer;
31
+ };
@@ -0,0 +1,42 @@
1
+ import type { BarChartSelectionAnimationConfig } from "./types";
2
+ export type ResolvedBarChartSelectionAnimationConfig = {
3
+ enabled: boolean;
4
+ duration: number;
5
+ };
6
+ export type BarChartSelectionAnimationState = {
7
+ fromKey: string | undefined;
8
+ toKey: string | undefined;
9
+ progress: number;
10
+ };
11
+ export declare const getSettledBarChartSelectionAnimationState: (selectedBarKey: string | undefined) => BarChartSelectionAnimationState;
12
+ export declare const resolveBarChartSelectionAnimationConfig: (animation: boolean | BarChartSelectionAnimationConfig | undefined) => ResolvedBarChartSelectionAnimationConfig;
13
+ export declare const getAnimatedBarSelectionOpacity: ({ barKey, state }: {
14
+ barKey: string;
15
+ state: BarChartSelectionAnimationState;
16
+ }) => number;
17
+ export declare const getAnimatedBarSelectionFill: ({ backgroundColor, barKey, color, state }: {
18
+ backgroundColor: string;
19
+ barKey: string;
20
+ color: string;
21
+ state: BarChartSelectionAnimationState;
22
+ }) => string;
23
+ export declare const getAnimatedBarSelectionStrokeOpacity: ({ barKey, state }: {
24
+ barKey: string;
25
+ state: BarChartSelectionAnimationState;
26
+ }) => number;
27
+ export declare const getAnimatedBarSelectionGridOpacity: ({ state }: {
28
+ state: BarChartSelectionAnimationState;
29
+ }) => 0 | 0.78;
30
+ export declare const getBarChartSelectionGridOpacity: ({ selectedBarKey, state }: {
31
+ selectedBarKey: string | undefined;
32
+ state: BarChartSelectionAnimationState;
33
+ }) => 0 | 0.78;
34
+ export declare const shouldRenderBarChartGridLines: ({ selectedBarKey, state }: {
35
+ selectedBarKey: string | undefined;
36
+ state: BarChartSelectionAnimationState;
37
+ }) => boolean;
38
+ export declare const useBarChartSelectionAnimation: ({ animation, selectedBarKey }: {
39
+ animation: boolean | BarChartSelectionAnimationConfig | undefined;
40
+ selectedBarKey: string | undefined;
41
+ }) => BarChartSelectionAnimationState;
42
+ //# sourceMappingURL=selectionAnimation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectionAnimation.d.ts","sourceRoot":"","sources":["../../../src/charts/bar/selectionAnimation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,SAAS,CAAC;AAQhE,MAAM,MAAM,wCAAwC,GAAG;IACrD,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC5C,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,eAAO,MAAM,yCAAyC,GACpD,gBAAgB,MAAM,GAAG,SAAS,KACjC,+BAID,CAAC;AAEH,eAAO,MAAM,uCAAuC,GAClD,WAAW,OAAO,GAAG,gCAAgC,GAAG,SAAS,KAChE,wCAeF,CAAC;AAuHF,eAAO,MAAM,8BAA8B,GAAI,mBAG5C;IACD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,+BAA+B,CAAC;CACxC,WAKE,CAAC;AAEJ,eAAO,MAAM,2BAA2B,GAAI,2CAKzC;IACD,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,+BAA+B,CAAC;CACxC,WAMA,CAAC;AAEF,eAAO,MAAM,oCAAoC,GAAI,mBAGlD;IACD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,+BAA+B,CAAC;CACxC,WAKE,CAAC;AAEJ,eAAO,MAAM,kCAAkC,GAAI,WAEhD;IACD,KAAK,EAAE,+BAA+B,CAAC;CACxC,aAMA,CAAC;AAEF,eAAO,MAAM,+BAA+B,GAAI,2BAG7C;IACD,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,KAAK,EAAE,+BAA+B,CAAC;CACxC,aAMA,CAAC;AAEF,eAAO,MAAM,6BAA6B,GAAI,2BAG3C;IACD,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,KAAK,EAAE,+BAA+B,CAAC;CACxC,YAG0B,CAAC;AAE5B,eAAO,MAAM,6BAA6B,GAAI,+BAG3C;IACD,SAAS,EAAE,OAAO,GAAG,gCAAgC,GAAG,SAAS,CAAC;IAClE,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,KAAG,+BAsEH,CAAC"}
@@ -0,0 +1,158 @@
1
+ import { useEffect, useRef, useState } from "react";
2
+ const defaultSelectionAnimationDuration = 180;
3
+ const dimmedBarOpacity = 0.54;
4
+ const defaultGridStrokeOpacity = 0.78;
5
+ const selectedGridStrokeOpacity = 0;
6
+ const selectedStrokeOpacity = 0;
7
+ export const getSettledBarChartSelectionAnimationState = (selectedBarKey) => ({
8
+ fromKey: selectedBarKey,
9
+ toKey: selectedBarKey,
10
+ progress: 1
11
+ });
12
+ export const resolveBarChartSelectionAnimationConfig = (animation) => {
13
+ if (animation === false) {
14
+ return { enabled: false, duration: 0 };
15
+ }
16
+ const config = typeof animation === "object" ? animation : {};
17
+ const duration = typeof config.duration === "number" && Number.isFinite(config.duration)
18
+ ? Math.max(0, config.duration)
19
+ : defaultSelectionAnimationDuration;
20
+ return {
21
+ enabled: true,
22
+ duration
23
+ };
24
+ };
25
+ const easeOutCubic = (progress) => {
26
+ const clampedProgress = Math.min(Math.max(progress, 0), 1);
27
+ return 1 - Math.pow(1 - clampedProgress, 3);
28
+ };
29
+ const interpolate = (from, to, progress) => from + (to - from) * progress;
30
+ const parseHexColor = (color) => {
31
+ const normalized = color.trim();
32
+ const hex = normalized.startsWith("#") ? normalized.slice(1) : "";
33
+ if (!/^[\da-f]+$/i.test(hex)) {
34
+ return undefined;
35
+ }
36
+ if (hex.length === 3 || hex.length === 4) {
37
+ const [r, g, b] = hex.split("");
38
+ if (!r || !g || !b) {
39
+ return undefined;
40
+ }
41
+ return {
42
+ b: Number.parseInt(`${b}${b}`, 16),
43
+ g: Number.parseInt(`${g}${g}`, 16),
44
+ r: Number.parseInt(`${r}${r}`, 16)
45
+ };
46
+ }
47
+ if (hex.length === 6 || hex.length === 8) {
48
+ return {
49
+ b: Number.parseInt(hex.slice(4, 6), 16),
50
+ g: Number.parseInt(hex.slice(2, 4), 16),
51
+ r: Number.parseInt(hex.slice(0, 2), 16)
52
+ };
53
+ }
54
+ return undefined;
55
+ };
56
+ const parseRgbColor = (color) => {
57
+ const match = color
58
+ .trim()
59
+ .match(/^rgba?\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)/i);
60
+ if (!match) {
61
+ return undefined;
62
+ }
63
+ return {
64
+ b: Number(match[3]),
65
+ g: Number(match[2]),
66
+ r: Number(match[1])
67
+ };
68
+ };
69
+ const parseColor = (color) => parseHexColor(color) ?? parseRgbColor(color);
70
+ const clampChannel = (channel) => Math.max(0, Math.min(255, Math.round(channel)));
71
+ const toHexChannel = (channel) => clampChannel(channel).toString(16).padStart(2, "0");
72
+ const blendOpaqueColor = ({ backgroundColor, color, opacity }) => {
73
+ const foreground = parseColor(color);
74
+ const background = parseColor(backgroundColor);
75
+ if (!foreground || !background) {
76
+ return color;
77
+ }
78
+ const clampedOpacity = Math.max(0, Math.min(1, opacity));
79
+ return `#${toHexChannel(foreground.r * clampedOpacity + background.r * (1 - clampedOpacity))}${toHexChannel(foreground.g * clampedOpacity + background.g * (1 - clampedOpacity))}${toHexChannel(foreground.b * clampedOpacity + background.b * (1 - clampedOpacity))}`;
80
+ };
81
+ const getOpacityForSelectionKey = ({ barKey, selectedKey }) => selectedKey === undefined || selectedKey === barKey ? 1 : dimmedBarOpacity;
82
+ const getStrokeOpacityForSelectionKey = ({ barKey, selectedKey }) => (selectedKey === barKey ? selectedStrokeOpacity : 0);
83
+ export const getAnimatedBarSelectionOpacity = ({ barKey, state }) => interpolate(getOpacityForSelectionKey({ barKey, selectedKey: state.fromKey }), getOpacityForSelectionKey({ barKey, selectedKey: state.toKey }), state.progress);
84
+ export const getAnimatedBarSelectionFill = ({ backgroundColor, barKey, color, state }) => {
85
+ const opacity = getAnimatedBarSelectionOpacity({ barKey, state });
86
+ return opacity >= 0.999
87
+ ? color
88
+ : blendOpaqueColor({ backgroundColor, color, opacity });
89
+ };
90
+ export const getAnimatedBarSelectionStrokeOpacity = ({ barKey, state }) => interpolate(getStrokeOpacityForSelectionKey({ barKey, selectedKey: state.fromKey }), getStrokeOpacityForSelectionKey({ barKey, selectedKey: state.toKey }), state.progress);
91
+ export const getAnimatedBarSelectionGridOpacity = ({ state }) => {
92
+ if (state.fromKey !== undefined || state.toKey !== undefined) {
93
+ return selectedGridStrokeOpacity;
94
+ }
95
+ return defaultGridStrokeOpacity;
96
+ };
97
+ export const getBarChartSelectionGridOpacity = ({ selectedBarKey, state }) => {
98
+ if (selectedBarKey !== undefined) {
99
+ return selectedGridStrokeOpacity;
100
+ }
101
+ return getAnimatedBarSelectionGridOpacity({ state });
102
+ };
103
+ export const shouldRenderBarChartGridLines = ({ selectedBarKey, state }) => selectedBarKey === undefined &&
104
+ state.fromKey === undefined &&
105
+ state.toKey === undefined;
106
+ export const useBarChartSelectionAnimation = ({ animation, selectedBarKey }) => {
107
+ const config = resolveBarChartSelectionAnimationConfig(animation);
108
+ const previousTargetRef = useRef(selectedBarKey);
109
+ const [state, setState] = useState({
110
+ fromKey: selectedBarKey,
111
+ toKey: selectedBarKey,
112
+ progress: 1
113
+ });
114
+ useEffect(() => {
115
+ const fromKey = previousTargetRef.current;
116
+ if (fromKey === selectedBarKey) {
117
+ return undefined;
118
+ }
119
+ previousTargetRef.current = selectedBarKey;
120
+ if (!config.enabled || config.duration <= 0) {
121
+ const animationFrame = requestAnimationFrame(() => {
122
+ setState({
123
+ fromKey: selectedBarKey,
124
+ toKey: selectedBarKey,
125
+ progress: 1
126
+ });
127
+ });
128
+ return () => {
129
+ cancelAnimationFrame(animationFrame);
130
+ };
131
+ }
132
+ let animationFrame = 0;
133
+ let startTime;
134
+ const tick = (timestamp) => {
135
+ startTime ?? (startTime = timestamp);
136
+ const rawProgress = Math.min((timestamp - startTime) / config.duration, 1);
137
+ const progress = easeOutCubic(rawProgress);
138
+ setState(rawProgress >= 1
139
+ ? getSettledBarChartSelectionAnimationState(selectedBarKey)
140
+ : {
141
+ fromKey,
142
+ toKey: selectedBarKey,
143
+ progress
144
+ });
145
+ if (rawProgress < 1) {
146
+ animationFrame = requestAnimationFrame(tick);
147
+ }
148
+ };
149
+ animationFrame = requestAnimationFrame((timestamp) => {
150
+ setState({ fromKey, toKey: selectedBarKey, progress: 0 });
151
+ tick(timestamp);
152
+ });
153
+ return () => {
154
+ cancelAnimationFrame(animationFrame);
155
+ };
156
+ }, [config.duration, config.enabled, selectedBarKey]);
157
+ return state;
158
+ };
@@ -0,0 +1,55 @@
1
+ import type { StyleProp, ViewStyle } from "react-native";
2
+ import type { CartesianChartTheme, ChartKitThemeMode } from "../../theme";
3
+ import type { BarChartProps } from "./types";
4
+ export type StackedBarChartLegacyData = {
5
+ labels: string[];
6
+ legend: string[];
7
+ data: Array<Array<number | null | undefined>>;
8
+ barColors: string[];
9
+ };
10
+ export type StackedBarChartLegacyConfig = {
11
+ backgroundColor?: string;
12
+ backgroundGradientFrom?: string;
13
+ backgroundGradientTo?: string;
14
+ color?: (opacity?: number, index?: number) => string;
15
+ labelColor?: (opacity?: number) => string;
16
+ decimalPlaces?: number;
17
+ barPercentage?: number;
18
+ barRadius?: number;
19
+ propsForBackgroundLines?: {
20
+ stroke?: string;
21
+ };
22
+ };
23
+ export type StackedBarChartProps = {
24
+ data: StackedBarChartLegacyData;
25
+ width: number;
26
+ height: number;
27
+ chartConfig: StackedBarChartLegacyConfig;
28
+ hideLegend?: boolean;
29
+ style?: StyleProp<ViewStyle>;
30
+ barPercentage?: number;
31
+ decimalPlaces?: number;
32
+ withVerticalLabels?: boolean;
33
+ withHorizontalLabels?: boolean;
34
+ withInnerLines?: boolean;
35
+ segments?: number;
36
+ percentile?: boolean;
37
+ fromZero?: boolean;
38
+ yAxisLabel?: string;
39
+ yAxisSuffix?: string;
40
+ verticalLabelsHeightPercentage?: number;
41
+ formatYLabel?: (yLabel: string) => string;
42
+ theme?: ChartKitThemeMode | CartesianChartTheme;
43
+ preset?: BarChartProps<StackedBarChartRow>["preset"];
44
+ accessibilityLabel?: string;
45
+ testID?: string;
46
+ };
47
+ export type StackedBarChartRow = Record<string, number | string | null | undefined> & {
48
+ label: string;
49
+ };
50
+ export type StackedBarChartCompatProps = {
51
+ barChartProps: BarChartProps<StackedBarChartRow>;
52
+ style: StyleProp<ViewStyle> | undefined;
53
+ };
54
+ export declare const buildStackedBarChartCompatProps: ({ accessibilityLabel, barPercentage, chartConfig, data, decimalPlaces, formatYLabel, fromZero, height, hideLegend, percentile, preset, segments, style, testID, theme, width, withHorizontalLabels, withInnerLines, withVerticalLabels, yAxisLabel, yAxisSuffix }: StackedBarChartProps) => StackedBarChartCompatProps;
55
+ //# sourceMappingURL=stackedCompat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stackedCompat.d.ts","sourceRoot":"","sources":["../../../src/charts/bar/stackedCompat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,SAAS,CAAC;AAE7D,MAAM,MAAM,yBAAyB,GAAG;IACtC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC;IAC9C,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IACrD,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uBAAuB,CAAC,EAAE;QACxB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,yBAAyB,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,2BAA2B,CAAC;IACzC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,KAAK,CAAC,EAAE,iBAAiB,GAAG,mBAAmB,CAAC;IAChD,MAAM,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,CAAC;IACrD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,CACrC,MAAM,EACN,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CACnC,GAAG;IACF,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,aAAa,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IACjD,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;CACzC,CAAC;AA+DF,eAAO,MAAM,+BAA+B,GAAI,mQAsB7C,oBAAoB,KAAG,0BA6FzB,CAAC"}
@@ -0,0 +1,105 @@
1
+ const getSegmentCount = (data) => Math.max(data.legend.length, data.barColors.length, ...data.data.map((group) => group.length));
2
+ const clampRatio = (value, fallback) => {
3
+ if (typeof value !== "number" || !Number.isFinite(value)) {
4
+ return fallback;
5
+ }
6
+ return Math.max(0.05, Math.min(1, value));
7
+ };
8
+ const getLegacyTheme = ({ chartConfig, fallbackSeries }) => {
9
+ const background = chartConfig.backgroundColor ??
10
+ chartConfig.backgroundGradientFrom ??
11
+ chartConfig.backgroundGradientTo;
12
+ const plotBackground = chartConfig.backgroundGradientTo ??
13
+ chartConfig.backgroundGradientFrom ??
14
+ background;
15
+ const labelColor = chartConfig.labelColor?.(1);
16
+ const lineColor = chartConfig.propsForBackgroundLines?.stroke;
17
+ return {
18
+ ...(background ? { background } : {}),
19
+ ...(plotBackground ? { plotBackground } : {}),
20
+ ...(lineColor ? { axis: lineColor, grid: lineColor } : {}),
21
+ ...(labelColor ? { mutedText: labelColor, text: labelColor } : {}),
22
+ ...(fallbackSeries.length > 0 ? { series: fallbackSeries } : {})
23
+ };
24
+ };
25
+ const formatStackedBarValue = ({ decimalPlaces, formatYLabel, value, yAxisLabel, yAxisSuffix }) => {
26
+ const fixed = value.toFixed(decimalPlaces);
27
+ const formatted = formatYLabel ? formatYLabel(fixed) : fixed;
28
+ return `${yAxisLabel ?? ""}${formatted}${yAxisSuffix ?? ""}`;
29
+ };
30
+ export const buildStackedBarChartCompatProps = ({ accessibilityLabel, barPercentage, chartConfig, data, decimalPlaces, formatYLabel, fromZero, height, hideLegend, percentile, preset, segments, style, testID, theme, width, withHorizontalLabels, withInnerLines, withVerticalLabels, yAxisLabel, yAxisSuffix }) => {
31
+ const segmentCount = getSegmentCount(data);
32
+ const yKeys = Array.from({ length: segmentCount }, (_, index) => `series${index}`);
33
+ const rows = data.data.map((group, groupIndex) => {
34
+ const row = {
35
+ label: data.labels[groupIndex] ?? String(groupIndex)
36
+ };
37
+ yKeys.forEach((key, segmentIndex) => {
38
+ row[key] = group[segmentIndex] ?? null;
39
+ });
40
+ return row;
41
+ });
42
+ const series = yKeys.map((key, index) => {
43
+ const color = data.barColors[index] ?? chartConfig.color?.(1, index);
44
+ return {
45
+ ...(color ? { color } : {}),
46
+ key,
47
+ label: data.legend[index] ?? `Series ${index + 1}`,
48
+ yKey: key
49
+ };
50
+ });
51
+ const resolvedDecimalPlaces = decimalPlaces ?? chartConfig.decimalPlaces ?? (percentile ? 0 : 2);
52
+ const resolvedTheme = typeof theme === "object"
53
+ ? theme
54
+ : getLegacyTheme({
55
+ chartConfig,
56
+ fallbackSeries: series
57
+ .map((item) => item.color)
58
+ .filter((color) => Boolean(color))
59
+ });
60
+ const resolvedBarRatio = clampRatio(barPercentage ?? chartConfig.barPercentage, 0.72);
61
+ const barChartProps = {
62
+ barRadius: Math.max(0, chartConfig.barRadius ?? 5),
63
+ barWidthRatio: resolvedBarRatio,
64
+ data: rows,
65
+ formatYLabel: (value) => formatStackedBarValue({
66
+ decimalPlaces: resolvedDecimalPlaces,
67
+ formatYLabel,
68
+ value,
69
+ yAxisLabel,
70
+ yAxisSuffix
71
+ }),
72
+ height,
73
+ legend: !hideLegend,
74
+ mode: percentile ? "stacked100" : "stacked",
75
+ series,
76
+ showHorizontalGridLines: withInnerLines ?? true,
77
+ showValuesOnTopOfBars: false,
78
+ showXAxisLabels: withVerticalLabels ?? true,
79
+ showYAxisLabels: withHorizontalLabels ?? true,
80
+ theme: resolvedTheme,
81
+ width,
82
+ xKey: "label",
83
+ yDomain: percentile
84
+ ? [0, 100]
85
+ : fromZero
86
+ ? { includeZero: true, min: 0, nice: true }
87
+ : { includeZero: true, nice: true }
88
+ };
89
+ if (accessibilityLabel) {
90
+ barChartProps.accessibilityLabel = accessibilityLabel;
91
+ }
92
+ if (preset) {
93
+ barChartProps.preset = preset;
94
+ }
95
+ if (testID) {
96
+ barChartProps.testID = testID;
97
+ }
98
+ if (segments) {
99
+ barChartProps.yTickCount = segments + 1;
100
+ }
101
+ return {
102
+ style,
103
+ barChartProps
104
+ };
105
+ };
@@ -0,0 +1,11 @@
1
+ import type { BarChartBarModel, BarChartRenderer, ResolvedBarChartTooltipConfig } from "./types";
2
+ export type { BarChartTooltipModel } from "./tooltipModel";
3
+ export declare const renderDefaultBarChartTooltip: <TData>({ config, height, width, x, y, bar }: {
4
+ bar: BarChartBarModel<TData>;
5
+ config: ResolvedBarChartTooltipConfig;
6
+ height: number;
7
+ width: number;
8
+ x: number;
9
+ y: number;
10
+ }, renderer: BarChartRenderer) => import("react/jsx-runtime").JSX.Element | null;
11
+ //# sourceMappingURL=tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../../src/charts/bar/tooltip.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,6BAA6B,EAC9B,MAAM,SAAS,CAAC;AAEjB,YAAY,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAI3D,eAAO,MAAM,4BAA4B,GAAI,KAAK,EAChD,sCAOG;IACD,GAAG,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,EAAE,6BAA6B,CAAC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,EACD,UAAU,gBAAgB,mDAkE3B,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { getFontFamilyProps } from "../line/text";
3
+ const tooltipLineHeight = 18;
4
+ export const renderDefaultBarChartTooltip = ({ config, height, width, x, y, bar }, renderer) => {
5
+ if (renderer.capabilities?.text === false) {
6
+ return null;
7
+ }
8
+ const contentX = x + config.padding;
9
+ const labelY = y + config.padding + config.labelFontSize;
10
+ const valueY = labelY + tooltipLineHeight;
11
+ const hasShadow = config.shadowOpacity > 0;
12
+ const { Circle, Group, Rect, Text } = renderer;
13
+ const valueText = `${bar.seriesLabel}: ${bar.formattedValue}`;
14
+ return (_jsxs(Group, { children: [hasShadow ? (_jsx(Rect, { x: x + config.shadowOffsetX, y: y + config.shadowOffsetY, width: width, height: height, rx: config.borderRadius, fill: config.shadowColor, opacity: config.shadowOpacity })) : null, _jsx(Rect, { x: x, y: y, width: width, height: height, rx: config.borderRadius, fill: config.backgroundColor, stroke: config.borderColor, strokeOpacity: 0.2, strokeWidth: 1 }), _jsx(Text, { x: contentX, y: labelY, fill: config.labelColor, fontSize: config.labelFontSize, fontWeight: "600", text: bar.xLabel, ...getFontFamilyProps(config.fontFamily), children: bar.xLabel }), _jsx(Circle, { cx: contentX + 3, cy: valueY - config.fontSize * 0.32, r: 3, fill: bar.color }), _jsx(Text, { x: contentX + 12, y: valueY, fill: config.textColor, fontSize: config.fontSize, text: valueText, ...getFontFamilyProps(config.fontFamily), children: valueText })] }));
15
+ };
@@ -0,0 +1,33 @@
1
+ import type { BarChartBarModel, ResolvedBarChartTooltipConfig } from "./types";
2
+ export type BarChartTooltipModel<TData = unknown> = {
3
+ bar: BarChartBarModel<TData>;
4
+ height: number;
5
+ width: number;
6
+ x: number;
7
+ y: number;
8
+ };
9
+ export type BarChartTooltipPointer = {
10
+ key: string;
11
+ x: number;
12
+ y: number;
13
+ };
14
+ export declare const getBarChartTooltipModel: <TData>({ bar, boxes, config, pointer }: {
15
+ bar: BarChartBarModel<TData> | undefined;
16
+ boxes: {
17
+ outer: {
18
+ x: number;
19
+ y: number;
20
+ width: number;
21
+ height: number;
22
+ };
23
+ plot: {
24
+ x: number;
25
+ y: number;
26
+ width: number;
27
+ height: number;
28
+ };
29
+ };
30
+ config: ResolvedBarChartTooltipConfig;
31
+ pointer?: BarChartTooltipPointer | undefined;
32
+ }) => BarChartTooltipModel<TData> | undefined;
33
+ //# sourceMappingURL=tooltipModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltipModel.d.ts","sourceRoot":"","sources":["../../../src/charts/bar/tooltipModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAC;AAE/E,MAAM,MAAM,oBAAoB,CAAC,KAAK,GAAG,OAAO,IAAI;IAClD,GAAG,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAYF,eAAO,MAAM,uBAAuB,GAAI,KAAK,EAAE,iCAK5C;IACD,GAAG,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;IACzC,KAAK,EAAE;QACL,KAAK,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/D,IAAI,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;KAC/D,CAAC;IACF,MAAM,EAAE,6BAA6B,CAAC;IACtC,OAAO,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;CAC9C,KAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,SAsCjC,CAAC"}
@@ -0,0 +1,40 @@
1
+ const tooltipLineHeight = 18;
2
+ const clamp = (value, min, max) => {
3
+ if (max < min) {
4
+ return min;
5
+ }
6
+ return Math.min(Math.max(value, min), max);
7
+ };
8
+ export const getBarChartTooltipModel = ({ bar, boxes, config, pointer }) => {
9
+ if (!bar || !config.visible) {
10
+ return undefined;
11
+ }
12
+ const height = config.padding * 2 + config.labelFontSize + tooltipLineHeight + 2;
13
+ const pointerAnchor = config.anchor === "pointer" && pointer?.key === bar.key
14
+ ? pointer
15
+ : undefined;
16
+ const anchorX = pointerAnchor?.x ?? bar.x + bar.width / 2;
17
+ const anchorY = pointerAnchor?.y ?? bar.y;
18
+ const belowAnchorY = pointerAnchor?.y ?? bar.y + bar.height;
19
+ const minX = boxes.plot.x + config.edgePadding;
20
+ const maxX = boxes.plot.x + boxes.plot.width - config.width - config.edgePadding;
21
+ const x = clamp(anchorX - config.width / 2, minX, maxX);
22
+ const minY = boxes.outer.y + config.edgePadding;
23
+ const maxY = boxes.outer.y + boxes.outer.height - height - config.edgePadding;
24
+ const aboveY = anchorY - height - config.offset;
25
+ const belowY = belowAnchorY + config.offset;
26
+ const y = config.placement === "above"
27
+ ? clamp(aboveY, minY, maxY)
28
+ : config.placement === "below"
29
+ ? clamp(belowY, minY, maxY)
30
+ : aboveY >= minY
31
+ ? aboveY
32
+ : clamp(belowY, minY, maxY);
33
+ return {
34
+ bar,
35
+ height,
36
+ width: config.width,
37
+ x,
38
+ y
39
+ };
40
+ };
@@ -0,0 +1,9 @@
1
+ import type { BarChartTooltipModel } from "./tooltip";
2
+ export declare const offsetBarChartTooltipForViewport: <TData>({ leftInset, rightInset, tooltip, viewportOffsetX, viewportWidth }: {
3
+ leftInset: number;
4
+ rightInset?: number;
5
+ tooltip: BarChartTooltipModel<TData>;
6
+ viewportOffsetX: number;
7
+ viewportWidth: number;
8
+ }) => BarChartTooltipModel<TData>;
9
+ //# sourceMappingURL=tooltipPlacement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltipPlacement.d.ts","sourceRoot":"","sources":["../../../src/charts/bar/tooltipPlacement.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAEtD,eAAO,MAAM,gCAAgC,GAAI,KAAK,EAAE,oEAMrD;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB,KAAG,oBAAoB,CAAC,KAAK,CAS7B,CAAC"}
@@ -0,0 +1,9 @@
1
+ export const offsetBarChartTooltipForViewport = ({ leftInset, rightInset = 4, tooltip, viewportOffsetX, viewportWidth }) => {
2
+ const minX = Math.max(0, leftInset);
3
+ const maxX = Math.max(minX, viewportWidth - tooltip.width - rightInset);
4
+ const viewportX = tooltip.x - viewportOffsetX;
5
+ return {
6
+ ...tooltip,
7
+ x: Math.max(minX, Math.min(maxX, viewportX))
8
+ };
9
+ };