@coinbase/cds-mobile-visualization 3.8.1 → 4.0.0

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 (303) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dts/chart/index.d.ts +1 -15
  3. package/dts/chart/index.d.ts.map +1 -1
  4. package/dts/index.d.ts.map +1 -1
  5. package/dts/sparkline/index.d.ts +1 -5
  6. package/dts/sparkline/index.d.ts.map +1 -1
  7. package/esm/chart/index.js +1 -17
  8. package/esm/index.js +1 -3
  9. package/esm/sparkline/index.js +1 -5
  10. package/package.json +26 -20
  11. package/dts/chart/CartesianChart.d.ts +0 -206
  12. package/dts/chart/CartesianChart.d.ts.map +0 -1
  13. package/dts/chart/ChartContextBridge.d.ts +0 -28
  14. package/dts/chart/ChartContextBridge.d.ts.map +0 -1
  15. package/dts/chart/ChartProvider.d.ts +0 -9
  16. package/dts/chart/ChartProvider.d.ts.map +0 -1
  17. package/dts/chart/Path.d.ts +0 -121
  18. package/dts/chart/Path.d.ts.map +0 -1
  19. package/dts/chart/PeriodSelector.d.ts +0 -100
  20. package/dts/chart/PeriodSelector.d.ts.map +0 -1
  21. package/dts/chart/area/Area.d.ts +0 -83
  22. package/dts/chart/area/Area.d.ts.map +0 -1
  23. package/dts/chart/area/AreaChart.d.ts +0 -155
  24. package/dts/chart/area/AreaChart.d.ts.map +0 -1
  25. package/dts/chart/area/DottedArea.d.ts +0 -46
  26. package/dts/chart/area/DottedArea.d.ts.map +0 -1
  27. package/dts/chart/area/GradientArea.d.ts +0 -36
  28. package/dts/chart/area/GradientArea.d.ts.map +0 -1
  29. package/dts/chart/area/SolidArea.d.ts +0 -23
  30. package/dts/chart/area/SolidArea.d.ts.map +0 -1
  31. package/dts/chart/area/index.d.ts +0 -6
  32. package/dts/chart/area/index.d.ts.map +0 -1
  33. package/dts/chart/axis/Axis.d.ts +0 -174
  34. package/dts/chart/axis/Axis.d.ts.map +0 -1
  35. package/dts/chart/axis/DefaultAxisTickLabel.d.ts +0 -8
  36. package/dts/chart/axis/DefaultAxisTickLabel.d.ts.map +0 -1
  37. package/dts/chart/axis/XAxis.d.ts +0 -22
  38. package/dts/chart/axis/XAxis.d.ts.map +0 -1
  39. package/dts/chart/axis/YAxis.d.ts +0 -22
  40. package/dts/chart/axis/YAxis.d.ts.map +0 -1
  41. package/dts/chart/axis/index.d.ts +0 -5
  42. package/dts/chart/axis/index.d.ts.map +0 -1
  43. package/dts/chart/bar/Bar.d.ts +0 -100
  44. package/dts/chart/bar/Bar.d.ts.map +0 -1
  45. package/dts/chart/bar/BarChart.d.ts +0 -158
  46. package/dts/chart/bar/BarChart.d.ts.map +0 -1
  47. package/dts/chart/bar/BarPlot.d.ts +0 -31
  48. package/dts/chart/bar/BarPlot.d.ts.map +0 -1
  49. package/dts/chart/bar/BarStack.d.ts +0 -127
  50. package/dts/chart/bar/BarStack.d.ts.map +0 -1
  51. package/dts/chart/bar/BarStackGroup.d.ts +0 -37
  52. package/dts/chart/bar/BarStackGroup.d.ts.map +0 -1
  53. package/dts/chart/bar/DefaultBar.d.ts +0 -7
  54. package/dts/chart/bar/DefaultBar.d.ts.map +0 -1
  55. package/dts/chart/bar/DefaultBarStack.d.ts +0 -7
  56. package/dts/chart/bar/DefaultBarStack.d.ts.map +0 -1
  57. package/dts/chart/bar/PercentageBarChart.d.ts +0 -106
  58. package/dts/chart/bar/PercentageBarChart.d.ts.map +0 -1
  59. package/dts/chart/bar/index.d.ts +0 -9
  60. package/dts/chart/bar/index.d.ts.map +0 -1
  61. package/dts/chart/gradient/Gradient.d.ts +0 -41
  62. package/dts/chart/gradient/Gradient.d.ts.map +0 -1
  63. package/dts/chart/gradient/index.d.ts +0 -2
  64. package/dts/chart/gradient/index.d.ts.map +0 -1
  65. package/dts/chart/legend/DefaultLegendEntry.d.ts +0 -5
  66. package/dts/chart/legend/DefaultLegendEntry.d.ts.map +0 -1
  67. package/dts/chart/legend/DefaultLegendShape.d.ts +0 -5
  68. package/dts/chart/legend/DefaultLegendShape.d.ts.map +0 -1
  69. package/dts/chart/legend/Legend.d.ts +0 -168
  70. package/dts/chart/legend/Legend.d.ts.map +0 -1
  71. package/dts/chart/legend/index.d.ts +0 -4
  72. package/dts/chart/legend/index.d.ts.map +0 -1
  73. package/dts/chart/line/DefaultReferenceLineLabel.d.ts +0 -9
  74. package/dts/chart/line/DefaultReferenceLineLabel.d.ts.map +0 -1
  75. package/dts/chart/line/DottedLine.d.ts +0 -20
  76. package/dts/chart/line/DottedLine.d.ts.map +0 -1
  77. package/dts/chart/line/Line.d.ts +0 -122
  78. package/dts/chart/line/Line.d.ts.map +0 -1
  79. package/dts/chart/line/LineChart.d.ts +0 -135
  80. package/dts/chart/line/LineChart.d.ts.map +0 -1
  81. package/dts/chart/line/ReferenceLine.d.ts +0 -140
  82. package/dts/chart/line/ReferenceLine.d.ts.map +0 -1
  83. package/dts/chart/line/SolidLine.d.ts +0 -15
  84. package/dts/chart/line/SolidLine.d.ts.map +0 -1
  85. package/dts/chart/line/index.d.ts +0 -7
  86. package/dts/chart/line/index.d.ts.map +0 -1
  87. package/dts/chart/point/DefaultPointLabel.d.ts +0 -10
  88. package/dts/chart/point/DefaultPointLabel.d.ts.map +0 -1
  89. package/dts/chart/point/Point.d.ts +0 -144
  90. package/dts/chart/point/Point.d.ts.map +0 -1
  91. package/dts/chart/point/index.d.ts +0 -3
  92. package/dts/chart/point/index.d.ts.map +0 -1
  93. package/dts/chart/scrubber/DefaultScrubberBeacon.d.ts +0 -38
  94. package/dts/chart/scrubber/DefaultScrubberBeacon.d.ts.map +0 -1
  95. package/dts/chart/scrubber/DefaultScrubberBeaconLabel.d.ts +0 -12
  96. package/dts/chart/scrubber/DefaultScrubberBeaconLabel.d.ts.map +0 -1
  97. package/dts/chart/scrubber/DefaultScrubberLabel.d.ts +0 -12
  98. package/dts/chart/scrubber/DefaultScrubberLabel.d.ts.map +0 -1
  99. package/dts/chart/scrubber/Scrubber.d.ts +0 -302
  100. package/dts/chart/scrubber/Scrubber.d.ts.map +0 -1
  101. package/dts/chart/scrubber/ScrubberAccessibilityView.d.ts +0 -12
  102. package/dts/chart/scrubber/ScrubberAccessibilityView.d.ts.map +0 -1
  103. package/dts/chart/scrubber/ScrubberBeaconGroup.d.ts +0 -54
  104. package/dts/chart/scrubber/ScrubberBeaconGroup.d.ts.map +0 -1
  105. package/dts/chart/scrubber/ScrubberBeaconLabelGroup.d.ts +0 -46
  106. package/dts/chart/scrubber/ScrubberBeaconLabelGroup.d.ts.map +0 -1
  107. package/dts/chart/scrubber/ScrubberProvider.d.ts +0 -20
  108. package/dts/chart/scrubber/ScrubberProvider.d.ts.map +0 -1
  109. package/dts/chart/scrubber/index.d.ts +0 -5
  110. package/dts/chart/scrubber/index.d.ts.map +0 -1
  111. package/dts/chart/text/ChartText.d.ts +0 -164
  112. package/dts/chart/text/ChartText.d.ts.map +0 -1
  113. package/dts/chart/text/ChartTextGroup.d.ts +0 -61
  114. package/dts/chart/text/ChartTextGroup.d.ts.map +0 -1
  115. package/dts/chart/text/index.d.ts +0 -3
  116. package/dts/chart/text/index.d.ts.map +0 -1
  117. package/dts/chart/utils/axis.d.ts +0 -387
  118. package/dts/chart/utils/axis.d.ts.map +0 -1
  119. package/dts/chart/utils/bar.d.ts +0 -225
  120. package/dts/chart/utils/bar.d.ts.map +0 -1
  121. package/dts/chart/utils/chart.d.ts +0 -165
  122. package/dts/chart/utils/chart.d.ts.map +0 -1
  123. package/dts/chart/utils/context.d.ts +0 -131
  124. package/dts/chart/utils/context.d.ts.map +0 -1
  125. package/dts/chart/utils/gradient.d.ts +0 -129
  126. package/dts/chart/utils/gradient.d.ts.map +0 -1
  127. package/dts/chart/utils/index.d.ts +0 -11
  128. package/dts/chart/utils/index.d.ts.map +0 -1
  129. package/dts/chart/utils/path.d.ts +0 -186
  130. package/dts/chart/utils/path.d.ts.map +0 -1
  131. package/dts/chart/utils/point.d.ts +0 -146
  132. package/dts/chart/utils/point.d.ts.map +0 -1
  133. package/dts/chart/utils/scale.d.ts +0 -145
  134. package/dts/chart/utils/scale.d.ts.map +0 -1
  135. package/dts/chart/utils/scrubber.d.ts +0 -40
  136. package/dts/chart/utils/scrubber.d.ts.map +0 -1
  137. package/dts/chart/utils/transition.d.ts +0 -181
  138. package/dts/chart/utils/transition.d.ts.map +0 -1
  139. package/dts/sparkline/Counter.d.ts +0 -8
  140. package/dts/sparkline/Counter.d.ts.map +0 -1
  141. package/dts/sparkline/Sparkline.d.ts +0 -74
  142. package/dts/sparkline/Sparkline.d.ts.map +0 -1
  143. package/dts/sparkline/SparklineArea.d.ts +0 -15
  144. package/dts/sparkline/SparklineArea.d.ts.map +0 -1
  145. package/dts/sparkline/SparklineAreaPattern.d.ts +0 -14
  146. package/dts/sparkline/SparklineAreaPattern.d.ts.map +0 -1
  147. package/dts/sparkline/SparklineGradient.d.ts +0 -24
  148. package/dts/sparkline/SparklineGradient.d.ts.map +0 -1
  149. package/dts/sparkline/__figma__/Sparkline.figma.d.ts +0 -2
  150. package/dts/sparkline/__figma__/Sparkline.figma.d.ts.map +0 -1
  151. package/dts/sparkline/generateSparklineWithId.d.ts +0 -11
  152. package/dts/sparkline/generateSparklineWithId.d.ts.map +0 -1
  153. package/dts/sparkline/sparkline-interactive/SparklineAccessibleView.d.ts +0 -23
  154. package/dts/sparkline/sparkline-interactive/SparklineAccessibleView.d.ts.map +0 -1
  155. package/dts/sparkline/sparkline-interactive/SparklineInteractive.d.ts +0 -185
  156. package/dts/sparkline/sparkline-interactive/SparklineInteractive.d.ts.map +0 -1
  157. package/dts/sparkline/sparkline-interactive/SparklineInteractiveAnimatedPath.d.ts +0 -25
  158. package/dts/sparkline/sparkline-interactive/SparklineInteractiveAnimatedPath.d.ts.map +0 -1
  159. package/dts/sparkline/sparkline-interactive/SparklineInteractiveHoverDate.d.ts +0 -28
  160. package/dts/sparkline/sparkline-interactive/SparklineInteractiveHoverDate.d.ts.map +0 -1
  161. package/dts/sparkline/sparkline-interactive/SparklineInteractiveLineVertical.d.ts +0 -13
  162. package/dts/sparkline/sparkline-interactive/SparklineInteractiveLineVertical.d.ts.map +0 -1
  163. package/dts/sparkline/sparkline-interactive/SparklineInteractiveMarkerDates.d.ts +0 -17
  164. package/dts/sparkline/sparkline-interactive/SparklineInteractiveMarkerDates.d.ts.map +0 -1
  165. package/dts/sparkline/sparkline-interactive/SparklineInteractiveMinMax.d.ts +0 -11
  166. package/dts/sparkline/sparkline-interactive/SparklineInteractiveMinMax.d.ts.map +0 -1
  167. package/dts/sparkline/sparkline-interactive/SparklineInteractivePanGestureHandler.d.ts +0 -26
  168. package/dts/sparkline/sparkline-interactive/SparklineInteractivePanGestureHandler.d.ts.map +0 -1
  169. package/dts/sparkline/sparkline-interactive/SparklineInteractivePaths.d.ts +0 -25
  170. package/dts/sparkline/sparkline-interactive/SparklineInteractivePaths.d.ts.map +0 -1
  171. package/dts/sparkline/sparkline-interactive/SparklineInteractivePeriodSelector.d.ts +0 -25
  172. package/dts/sparkline/sparkline-interactive/SparklineInteractivePeriodSelector.d.ts.map +0 -1
  173. package/dts/sparkline/sparkline-interactive/SparklineInteractiveProvider.d.ts +0 -39
  174. package/dts/sparkline/sparkline-interactive/SparklineInteractiveProvider.d.ts.map +0 -1
  175. package/dts/sparkline/sparkline-interactive/SparklineInteractiveTimeseriesPaths.d.ts +0 -31
  176. package/dts/sparkline/sparkline-interactive/SparklineInteractiveTimeseriesPaths.d.ts.map +0 -1
  177. package/dts/sparkline/sparkline-interactive/__figma__/SparklineInteractive.figma.d.ts +0 -2
  178. package/dts/sparkline/sparkline-interactive/__figma__/SparklineInteractive.figma.d.ts.map +0 -1
  179. package/dts/sparkline/sparkline-interactive/useInterruptiblePathAnimation.d.ts +0 -13
  180. package/dts/sparkline/sparkline-interactive/useInterruptiblePathAnimation.d.ts.map +0 -1
  181. package/dts/sparkline/sparkline-interactive/useMinMaxTransform.d.ts +0 -16
  182. package/dts/sparkline/sparkline-interactive/useMinMaxTransform.d.ts.map +0 -1
  183. package/dts/sparkline/sparkline-interactive/useOpacityAnimation.d.ts +0 -6
  184. package/dts/sparkline/sparkline-interactive/useOpacityAnimation.d.ts.map +0 -1
  185. package/dts/sparkline/sparkline-interactive/useSparklineInteractiveConstants.d.ts +0 -22
  186. package/dts/sparkline/sparkline-interactive/useSparklineInteractiveConstants.d.ts.map +0 -1
  187. package/dts/sparkline/sparkline-interactive/useSparklineInteractiveLineStyles.d.ts +0 -34
  188. package/dts/sparkline/sparkline-interactive/useSparklineInteractiveLineStyles.d.ts.map +0 -1
  189. package/dts/sparkline/sparkline-interactive-header/SparklineInteractiveHeader.d.ts +0 -118
  190. package/dts/sparkline/sparkline-interactive-header/SparklineInteractiveHeader.d.ts.map +0 -1
  191. package/dts/sparkline/sparkline-interactive-header/__figma__/SparklineInteractiveHeader.figma.d.ts +0 -2
  192. package/dts/sparkline/sparkline-interactive-header/__figma__/SparklineInteractiveHeader.figma.d.ts.map +0 -1
  193. package/dts/sparkline/sparkline-interactive-header/useSparklineInteractiveHeaderStyles.d.ts +0 -29
  194. package/dts/sparkline/sparkline-interactive-header/useSparklineInteractiveHeaderStyles.d.ts.map +0 -1
  195. package/esm/chart/CartesianChart.js +0 -431
  196. package/esm/chart/ChartContextBridge.js +0 -159
  197. package/esm/chart/ChartProvider.js +0 -10
  198. package/esm/chart/Path.js +0 -255
  199. package/esm/chart/PeriodSelector.js +0 -139
  200. package/esm/chart/__stories__/CartesianChart.stories.js +0 -659
  201. package/esm/chart/__stories__/ChartAccessibility.stories.js +0 -721
  202. package/esm/chart/__stories__/ChartTransitions.stories.js +0 -693
  203. package/esm/chart/__stories__/PeriodSelector.stories.js +0 -420
  204. package/esm/chart/area/Area.js +0 -85
  205. package/esm/chart/area/AreaChart.js +0 -152
  206. package/esm/chart/area/DottedArea.js +0 -92
  207. package/esm/chart/area/GradientArea.js +0 -63
  208. package/esm/chart/area/SolidArea.js +0 -45
  209. package/esm/chart/area/__stories__/AreaChart.stories.js +0 -370
  210. package/esm/chart/area/index.js +0 -7
  211. package/esm/chart/axis/Axis.js +0 -9
  212. package/esm/chart/axis/DefaultAxisTickLabel.js +0 -11
  213. package/esm/chart/axis/XAxis.js +0 -256
  214. package/esm/chart/axis/YAxis.js +0 -255
  215. package/esm/chart/axis/__stories__/Axis.stories.js +0 -552
  216. package/esm/chart/axis/index.js +0 -6
  217. package/esm/chart/bar/Bar.js +0 -71
  218. package/esm/chart/bar/BarChart.js +0 -122
  219. package/esm/chart/bar/BarPlot.js +0 -106
  220. package/esm/chart/bar/BarStack.js +0 -173
  221. package/esm/chart/bar/BarStackGroup.js +0 -89
  222. package/esm/chart/bar/DefaultBar.js +0 -79
  223. package/esm/chart/bar/DefaultBarStack.js +0 -68
  224. package/esm/chart/bar/PercentageBarChart.js +0 -99
  225. package/esm/chart/bar/__stories__/BarChart.stories.js +0 -1417
  226. package/esm/chart/bar/__stories__/PercentageBarChart.stories.js +0 -833
  227. package/esm/chart/bar/index.js +0 -10
  228. package/esm/chart/gradient/Gradient.js +0 -156
  229. package/esm/chart/gradient/index.js +0 -1
  230. package/esm/chart/legend/DefaultLegendEntry.js +0 -42
  231. package/esm/chart/legend/DefaultLegendShape.js +0 -64
  232. package/esm/chart/legend/Legend.js +0 -59
  233. package/esm/chart/legend/__stories__/Legend.stories.js +0 -574
  234. package/esm/chart/legend/index.js +0 -3
  235. package/esm/chart/line/DefaultReferenceLineLabel.js +0 -66
  236. package/esm/chart/line/DottedLine.js +0 -57
  237. package/esm/chart/line/Line.js +0 -180
  238. package/esm/chart/line/LineChart.js +0 -149
  239. package/esm/chart/line/ReferenceLine.js +0 -132
  240. package/esm/chart/line/SolidLine.js +0 -53
  241. package/esm/chart/line/__stories__/LineChart.stories.js +0 -2018
  242. package/esm/chart/line/__stories__/ReferenceLine.stories.js +0 -226
  243. package/esm/chart/line/index.js +0 -8
  244. package/esm/chart/point/DefaultPointLabel.js +0 -39
  245. package/esm/chart/point/Point.js +0 -187
  246. package/esm/chart/point/index.js +0 -2
  247. package/esm/chart/scrubber/DefaultScrubberBeacon.js +0 -182
  248. package/esm/chart/scrubber/DefaultScrubberBeaconLabel.js +0 -43
  249. package/esm/chart/scrubber/DefaultScrubberLabel.js +0 -44
  250. package/esm/chart/scrubber/Scrubber.js +0 -198
  251. package/esm/chart/scrubber/ScrubberAccessibilityView.js +0 -177
  252. package/esm/chart/scrubber/ScrubberBeaconGroup.js +0 -169
  253. package/esm/chart/scrubber/ScrubberBeaconLabelGroup.js +0 -212
  254. package/esm/chart/scrubber/ScrubberProvider.js +0 -140
  255. package/esm/chart/scrubber/__stories__/Scrubber.stories.js +0 -946
  256. package/esm/chart/scrubber/index.js +0 -4
  257. package/esm/chart/text/ChartText.js +0 -305
  258. package/esm/chart/text/ChartTextGroup.js +0 -211
  259. package/esm/chart/text/index.js +0 -4
  260. package/esm/chart/utils/axis.js +0 -664
  261. package/esm/chart/utils/bar.js +0 -906
  262. package/esm/chart/utils/chart.js +0 -329
  263. package/esm/chart/utils/context.js +0 -22
  264. package/esm/chart/utils/gradient.js +0 -319
  265. package/esm/chart/utils/index.js +0 -12
  266. package/esm/chart/utils/path.js +0 -304
  267. package/esm/chart/utils/point.js +0 -282
  268. package/esm/chart/utils/scale.js +0 -288
  269. package/esm/chart/utils/scrubber.js +0 -146
  270. package/esm/chart/utils/transition.js +0 -241
  271. package/esm/sparkline/Counter.js +0 -45
  272. package/esm/sparkline/Sparkline.js +0 -165
  273. package/esm/sparkline/SparklineArea.js +0 -20
  274. package/esm/sparkline/SparklineAreaPattern.js +0 -38
  275. package/esm/sparkline/SparklineGradient.js +0 -77
  276. package/esm/sparkline/__figma__/Sparkline.figma.js +0 -22
  277. package/esm/sparkline/__stories__/Sparkline.stories.js +0 -124
  278. package/esm/sparkline/__stories__/SparklineGradient.stories.js +0 -126
  279. package/esm/sparkline/generateSparklineWithId.js +0 -7
  280. package/esm/sparkline/sparkline-interactive/SparklineAccessibleView.js +0 -75
  281. package/esm/sparkline/sparkline-interactive/SparklineInteractive.js +0 -308
  282. package/esm/sparkline/sparkline-interactive/SparklineInteractiveAnimatedPath.js +0 -116
  283. package/esm/sparkline/sparkline-interactive/SparklineInteractiveHoverDate.js +0 -131
  284. package/esm/sparkline/sparkline-interactive/SparklineInteractiveLineVertical.js +0 -99
  285. package/esm/sparkline/sparkline-interactive/SparklineInteractiveMarkerDates.js +0 -82
  286. package/esm/sparkline/sparkline-interactive/SparklineInteractiveMinMax.js +0 -103
  287. package/esm/sparkline/sparkline-interactive/SparklineInteractivePanGestureHandler.js +0 -104
  288. package/esm/sparkline/sparkline-interactive/SparklineInteractivePaths.js +0 -57
  289. package/esm/sparkline/sparkline-interactive/SparklineInteractivePeriodSelector.js +0 -124
  290. package/esm/sparkline/sparkline-interactive/SparklineInteractiveProvider.js +0 -80
  291. package/esm/sparkline/sparkline-interactive/SparklineInteractiveTimeseriesPaths.js +0 -109
  292. package/esm/sparkline/sparkline-interactive/__figma__/SparklineInteractive.figma.js +0 -85
  293. package/esm/sparkline/sparkline-interactive/__stories__/SparklineInteractive.stories.js +0 -526
  294. package/esm/sparkline/sparkline-interactive/useInterruptiblePathAnimation.js +0 -58
  295. package/esm/sparkline/sparkline-interactive/useInterruptiblePathAnimation.test.disable.js +0 -37
  296. package/esm/sparkline/sparkline-interactive/useMinMaxTransform.js +0 -56
  297. package/esm/sparkline/sparkline-interactive/useOpacityAnimation.js +0 -23
  298. package/esm/sparkline/sparkline-interactive/useSparklineInteractiveConstants.js +0 -47
  299. package/esm/sparkline/sparkline-interactive/useSparklineInteractiveLineStyles.js +0 -34
  300. package/esm/sparkline/sparkline-interactive-header/SparklineInteractiveHeader.js +0 -233
  301. package/esm/sparkline/sparkline-interactive-header/__figma__/SparklineInteractiveHeader.figma.js +0 -104
  302. package/esm/sparkline/sparkline-interactive-header/__stories__/SparklineInteractiveHeader.stories.js +0 -565
  303. package/esm/sparkline/sparkline-interactive-header/useSparklineInteractiveHeaderStyles.js +0 -117
@@ -1,122 +0,0 @@
1
- const _excluded = ["series", "stacked", "showXAxis", "showYAxis", "xAxis", "yAxis", "inset", "children", "barPadding", "BarComponent", "fillOpacity", "stroke", "strokeWidth", "borderRadius", "roundBaseline", "BarStackComponent", "stackGap", "barMinSize", "stackMinSize", "transitions", "transition"],
2
- _excluded2 = ["scaleType", "data", "categoryPadding", "domain", "domainLimit", "range", "baseline", "id"],
3
- _excluded3 = ["scaleType", "data", "categoryPadding", "domain", "domainLimit", "range", "baseline", "id"];
4
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
5
- function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
6
- import { forwardRef, memo, useMemo } from 'react';
7
- import { XAxis, YAxis } from '../axis';
8
- import { CartesianChart } from '../CartesianChart';
9
- import { defaultStackId, withBaselineDomain } from '../utils';
10
- import { BarPlot } from './BarPlot';
11
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
- export const BarChart = /*#__PURE__*/memo(/*#__PURE__*/forwardRef((_ref, ref) => {
13
- let {
14
- series: seriesProp,
15
- stacked,
16
- showXAxis,
17
- showYAxis,
18
- xAxis,
19
- yAxis,
20
- inset,
21
- children,
22
- barPadding,
23
- BarComponent,
24
- fillOpacity,
25
- stroke,
26
- strokeWidth,
27
- borderRadius,
28
- roundBaseline,
29
- BarStackComponent,
30
- stackGap,
31
- barMinSize,
32
- stackMinSize,
33
- transitions,
34
- transition
35
- } = _ref,
36
- chartProps = _objectWithoutPropertiesLoose(_ref, _excluded);
37
- const series = useMemo(() => {
38
- if (!stacked || !seriesProp) return seriesProp;
39
- return seriesProp.map(s => {
40
- var _s$stackId;
41
- return _extends({}, s, {
42
- stackId: (_s$stackId = s.stackId) != null ? _s$stackId : defaultStackId
43
- });
44
- });
45
- }, [seriesProp, stacked]);
46
- const seriesIds = useMemo(() => series == null ? void 0 : series.map(s => s.id), [series]);
47
- const isHorizontalLayout = chartProps.layout === 'horizontal';
48
- const defaultXScaleType = isHorizontalLayout ? 'linear' : 'band';
49
- const defaultYScaleType = isHorizontalLayout ? 'band' : 'linear';
50
-
51
- // Split axis props into config props for Chart and visual props for axis components
52
- const _ref2 = xAxis || {},
53
- {
54
- scaleType: xScaleType,
55
- data: xData,
56
- categoryPadding: xCategoryPadding,
57
- domain: xDomain,
58
- domainLimit: xDomainLimit,
59
- range: xRange,
60
- baseline: xBaseline,
61
- id: xAxisId
62
- } = _ref2,
63
- xAxisVisualProps = _objectWithoutPropertiesLoose(_ref2, _excluded2);
64
- const _ref3 = yAxis || {},
65
- {
66
- scaleType: yScaleType,
67
- data: yData,
68
- categoryPadding: yCategoryPadding,
69
- domain: yDomain,
70
- domainLimit: yDomainLimit,
71
- range: yRange,
72
- baseline: yBaseline,
73
- id: yAxisId
74
- } = _ref3,
75
- yAxisVisualProps = _objectWithoutPropertiesLoose(_ref3, _excluded3);
76
- const valueAxisBaseline = isHorizontalLayout ? xBaseline : yBaseline;
77
- const xAxisConfig = useMemo(() => ({
78
- scaleType: xScaleType != null ? xScaleType : defaultXScaleType,
79
- data: xData,
80
- categoryPadding: xCategoryPadding,
81
- domain: isHorizontalLayout ? withBaselineDomain(xDomain, valueAxisBaseline) : xDomain,
82
- domainLimit: xDomainLimit,
83
- range: xRange,
84
- baseline: xBaseline
85
- }), [xScaleType, defaultXScaleType, xData, xCategoryPadding, isHorizontalLayout, xDomain, xDomainLimit, xRange, xBaseline, valueAxisBaseline]);
86
- const yAxisConfig = useMemo(() => ({
87
- scaleType: yScaleType != null ? yScaleType : defaultYScaleType,
88
- data: yData,
89
- categoryPadding: yCategoryPadding,
90
- domain: !isHorizontalLayout ? withBaselineDomain(yDomain, valueAxisBaseline) : yDomain,
91
- domainLimit: yDomainLimit,
92
- range: yRange,
93
- baseline: yBaseline
94
- }), [yScaleType, defaultYScaleType, yData, yCategoryPadding, isHorizontalLayout, yDomain, yDomainLimit, yRange, yBaseline, valueAxisBaseline]);
95
- return /*#__PURE__*/_jsxs(CartesianChart, _extends({}, chartProps, {
96
- ref: ref,
97
- inset: inset,
98
- series: series,
99
- xAxis: xAxisConfig,
100
- yAxis: yAxisConfig,
101
- children: [showXAxis && /*#__PURE__*/_jsx(XAxis, _extends({
102
- axisId: xAxisId
103
- }, xAxisVisualProps)), showYAxis && /*#__PURE__*/_jsx(YAxis, _extends({
104
- axisId: yAxisId
105
- }, yAxisVisualProps)), /*#__PURE__*/_jsx(BarPlot, {
106
- BarComponent: BarComponent,
107
- BarStackComponent: BarStackComponent,
108
- barMinSize: barMinSize,
109
- barPadding: barPadding,
110
- borderRadius: borderRadius,
111
- fillOpacity: fillOpacity,
112
- roundBaseline: roundBaseline,
113
- seriesIds: seriesIds,
114
- stackGap: stackGap,
115
- stackMinSize: stackMinSize,
116
- stroke: stroke,
117
- strokeWidth: strokeWidth,
118
- transition: transition,
119
- transitions: transitions
120
- }), children]
121
- }));
122
- }));
@@ -1,106 +0,0 @@
1
- import { memo, useEffect, useMemo, useState } from 'react';
2
- import { useSharedValue } from 'react-native-reanimated';
3
- import { Group, Skia, usePathInterpolation } from '@shopify/react-native-skia';
4
- import { useCartesianChartContext } from '../ChartProvider';
5
- import { getStackGroups } from '../utils';
6
- import { buildTransition, instantTransition } from '../utils/transition';
7
- import { BarStackGroup } from './BarStackGroup';
8
- import { jsx as _jsx } from "react/jsx-runtime";
9
- const makeClipPath = area => {
10
- const path = Skia.Path.Make();
11
- path.addRect(area);
12
- return path;
13
- };
14
-
15
- /**
16
- * BarPlot component that handles multiple series with proper stacking coordination.
17
- * Groups series by stack ID + y-axis ID combination and renders BarStackGroup for each group.
18
- * This allows series with different y-axes to be rendered side by side while preventing
19
- * cross-axis stacking (e.g., comparing $1M vs $1B companies on different scales).
20
- */
21
- export const BarPlot = /*#__PURE__*/memo(_ref => {
22
- let {
23
- seriesIds,
24
- barPadding = 0.1,
25
- BarComponent: defaultBarComponent,
26
- fillOpacity: defaultFillOpacity,
27
- stroke: defaultStroke,
28
- strokeWidth: defaultStrokeWidth,
29
- borderRadius: defaultBorderRadius,
30
- roundBaseline,
31
- BarStackComponent,
32
- stackGap,
33
- barMinSize,
34
- stackMinSize,
35
- transitions,
36
- transition
37
- } = _ref;
38
- const {
39
- animate,
40
- series: allSeries,
41
- drawingArea
42
- } = useCartesianChartContext();
43
- const targetSeries = useMemo(() => {
44
- // Then filter by seriesIds if provided
45
- if (seriesIds !== undefined) {
46
- return allSeries.filter(s => seriesIds.includes(s.id));
47
- }
48
- return allSeries;
49
- }, [allSeries, seriesIds]);
50
- const stackGroups = useMemo(() => getStackGroups(targetSeries), [targetSeries]);
51
- const clipUpdateTransition = useMemo(() => (transitions == null ? void 0 : transitions.update) !== undefined ? transitions.update : instantTransition, [transitions == null ? void 0 : transitions.update]);
52
- const emptyPath = useMemo(() => Skia.Path.Make(), []);
53
- const initialPath = useMemo(() => drawingArea ? makeClipPath(drawingArea) : emptyPath,
54
- // eslint-disable-next-line react-hooks/exhaustive-deps
55
- []);
56
- const [clipPaths, setClipPaths] = useState({
57
- from: initialPath,
58
- to: initialPath
59
- });
60
- const clipProgress = useSharedValue(0);
61
- useEffect(() => {
62
- if (!drawingArea) return;
63
- const nextPath = makeClipPath(drawingArea);
64
- setClipPaths(prev => ({
65
- from: prev.to,
66
- to: nextPath
67
- }));
68
- if (drawingArea.width || !drawingArea.height) {
69
- clipProgress.value = 1;
70
- } else {
71
- clipProgress.value = 0;
72
- clipProgress.value = buildTransition(1, animate ? clipUpdateTransition : null);
73
- }
74
- // eslint-disable-next-line react-hooks/exhaustive-deps
75
- }, [drawingArea, animate, clipUpdateTransition]);
76
- const animatedClipPath = usePathInterpolation(clipProgress, [0, 1], [clipPaths.from, clipPaths.to]);
77
- if (!drawingArea) return;
78
-
79
- // Clip path animation for bar is just for chart size changes, not for
80
- // enter transition. One caveat, bar update transitions are staggered
81
- // but clip path is not, so some bars could be clipped in rare cases
82
-
83
- return /*#__PURE__*/_jsx(Group, {
84
- clip: animatedClipPath,
85
- children: stackGroups.map((group, stackIndex) => /*#__PURE__*/_jsx(BarStackGroup, {
86
- BarComponent: defaultBarComponent,
87
- BarStackComponent: BarStackComponent,
88
- barMinSize: barMinSize,
89
- barPadding: barPadding,
90
- borderRadius: defaultBorderRadius,
91
- fillOpacity: defaultFillOpacity,
92
- roundBaseline: roundBaseline,
93
- series: group.series,
94
- stackGap: stackGap,
95
- stackIndex: stackIndex,
96
- stackMinSize: stackMinSize,
97
- stroke: defaultStroke,
98
- strokeWidth: defaultStrokeWidth,
99
- totalStacks: stackGroups.length,
100
- transition: transition,
101
- transitions: transitions,
102
- xAxisId: group.xAxisId,
103
- yAxisId: group.yAxisId
104
- }, group.stackId))
105
- });
106
- });
@@ -1,173 +0,0 @@
1
- import React, { memo, useMemo } from 'react';
2
- import { useTheme } from '@coinbase/cds-mobile/hooks/useTheme';
3
- import { useCartesianChartContext } from '../ChartProvider';
4
- import { EPSILON, getBars, getBaselinePx, getStackOrigin } from '../utils/bar';
5
- import { getGradientStops } from '../utils/gradient';
6
- import { convertToSerializableScale } from '../utils/scale';
7
- import { Bar } from './Bar';
8
- import { DefaultBarStack } from './DefaultBarStack';
9
-
10
- /**
11
- * Extended series type that includes bar-specific properties.
12
- */
13
- import { jsx as _jsx } from "react/jsx-runtime";
14
- /**
15
- * BarStack component that renders a single stack of bars at a specific category index.
16
- * Handles the stacking logic for bars within a single category.
17
- */
18
- export const BarStack = /*#__PURE__*/memo(_ref => {
19
- let {
20
- series,
21
- categoryIndex,
22
- indexPos,
23
- thickness,
24
- indexScale,
25
- valueScale,
26
- rect,
27
- xAxisId,
28
- yAxisId,
29
- BarComponent: defaultBarComponent,
30
- fillOpacity: defaultFillOpacity,
31
- stroke: defaultStroke,
32
- strokeWidth: defaultStrokeWidth,
33
- borderRadius = 4,
34
- BarStackComponent = DefaultBarStack,
35
- stackGap,
36
- barMinSize,
37
- stackMinSize,
38
- roundBaseline,
39
- transitions,
40
- transition
41
- } = _ref;
42
- const theme = useTheme();
43
- const {
44
- layout,
45
- getSeriesData,
46
- getXAxis,
47
- getYAxis
48
- } = useCartesianChartContext();
49
- const xAxis = getXAxis(xAxisId);
50
- const yAxis = getYAxis(yAxisId);
51
- const baseline = useMemo(() => {
52
- var _ref2;
53
- return (_ref2 = layout === 'vertical' ? yAxis : xAxis) == null ? void 0 : _ref2.baseline;
54
- }, [layout, yAxis, xAxis]);
55
- const baselinePx = useMemo(() => getBaselinePx(valueScale, rect, layout, baseline), [rect, valueScale, layout, baseline]);
56
- const seriesGradients = useMemo(() => {
57
- return series.map(s => {
58
- if (!s.gradient) return;
59
- const gradientScale = s.gradient.axis === 'x' ? layout === 'vertical' ? indexScale : valueScale : layout === 'vertical' ? valueScale : indexScale;
60
- const serializableScale = convertToSerializableScale(gradientScale);
61
- if (!serializableScale) return;
62
- const domain = {
63
- min: serializableScale.domain[0],
64
- max: serializableScale.domain[1]
65
- };
66
- const stops = getGradientStops(s.gradient.stops, domain);
67
- return {
68
- seriesId: s.id,
69
- gradient: s.gradient,
70
- scale: serializableScale,
71
- stops
72
- };
73
- });
74
- }, [series, indexScale, valueScale, layout]);
75
- const categoryAxis = layout === 'vertical' ? xAxis : yAxis;
76
- const categoryData = categoryAxis != null && categoryAxis.data && Array.isArray(categoryAxis.data) && typeof categoryAxis.data[0] === 'number' ? categoryAxis.data : undefined;
77
- const categoryValue = categoryData ? categoryData[categoryIndex] : categoryIndex;
78
- const seriesData = useMemo(() => Object.fromEntries(series.map(s => {
79
- var _getSeriesData;
80
- return [s.id, (_getSeriesData = getSeriesData(s.id)) != null ? _getSeriesData : []];
81
- })), [series, getSeriesData]);
82
- const bars = useMemo(() => getBars({
83
- series,
84
- seriesData,
85
- categoryIndex,
86
- categoryValue,
87
- indexPos,
88
- thickness,
89
- valueScale,
90
- seriesGradients,
91
- roundBaseline,
92
- layout,
93
- baseline,
94
- baselinePx,
95
- stackGap,
96
- barMinSize,
97
- stackMinSize,
98
- defaultFill: theme.color.fgPrimary,
99
- borderRadius,
100
- defaultFillOpacity,
101
- defaultStroke,
102
- defaultStrokeWidth,
103
- defaultBarComponent
104
- }), [series, seriesData, categoryIndex, categoryValue, indexPos, thickness, valueScale, seriesGradients, roundBaseline, layout, baseline, baselinePx, stackGap, barMinSize, stackMinSize, theme.color.fgPrimary, borderRadius, defaultFillOpacity, defaultStroke, defaultStrokeWidth, defaultBarComponent]);
105
- const stackRect = useMemo(() => {
106
- if (bars.length === 0) {
107
- return {
108
- x: layout === 'vertical' ? indexPos : baselinePx,
109
- y: layout === 'vertical' ? baselinePx : indexPos,
110
- width: layout === 'vertical' ? thickness : 0,
111
- height: layout === 'vertical' ? 0 : thickness
112
- };
113
- }
114
- const minX = Math.min(...bars.map(b => b.x));
115
- const minY = Math.min(...bars.map(b => b.y));
116
- const maxX = Math.max(...bars.map(b => b.x + b.width));
117
- const maxY = Math.max(...bars.map(b => b.y + b.height));
118
- return {
119
- x: minX,
120
- y: minY,
121
- width: maxX - minX,
122
- height: maxY - minY
123
- };
124
- }, [bars, baselinePx, indexPos, layout, thickness]);
125
- const stackOrigin = useMemo(() => {
126
- var _getStackOrigin;
127
- return (_getStackOrigin = getStackOrigin(bars.map(b => b.origin), bars.map(b => {
128
- var _b$minSize;
129
- return (_b$minSize = b.minSize) != null ? _b$minSize : 0;
130
- }))) != null ? _getStackOrigin : baselinePx;
131
- }, [bars, baselinePx]);
132
- const barElements = bars.map((bar, index) => /*#__PURE__*/_jsx(Bar, {
133
- BarComponent: bar.BarComponent,
134
- borderRadius: bar.borderRadius,
135
- dataX: bar.dataX,
136
- dataY: bar.dataY,
137
- fill: bar.fill,
138
- fillOpacity: bar.fillOpacity,
139
- height: bar.height,
140
- minSize: bar.minSize,
141
- origin: bar.origin,
142
- roundBottom: bar.roundBottom,
143
- roundTop: bar.roundTop,
144
- seriesId: bar.seriesId,
145
- stroke: bar.stroke,
146
- strokeWidth: bar.strokeWidth,
147
- transition: transition,
148
- transitions: transitions,
149
- width: bar.width,
150
- x: bar.x,
151
- y: bar.y
152
- }, bar.seriesId + "-" + categoryIndex + "-" + index));
153
- const edge = layout === 'vertical' ? stackRect.y : stackRect.x;
154
- const size = layout === 'vertical' ? stackRect.height : stackRect.width;
155
- const stackRoundLower = roundBaseline || Math.abs(edge - baselinePx) >= EPSILON;
156
- const stackRoundHigher = roundBaseline || Math.abs(edge + size - baselinePx) >= EPSILON;
157
- const stackRoundTop = layout === 'vertical' ? stackRoundLower : stackRoundHigher;
158
- const stackRoundBottom = layout === 'vertical' ? stackRoundHigher : stackRoundLower;
159
- return /*#__PURE__*/_jsx(BarStackComponent, {
160
- borderRadius: borderRadius,
161
- categoryIndex: categoryIndex,
162
- height: stackRect.height,
163
- origin: stackOrigin,
164
- roundBottom: stackRoundBottom,
165
- roundTop: stackRoundTop,
166
- transition: transition,
167
- transitions: transitions,
168
- width: stackRect.width,
169
- x: stackRect.x,
170
- y: stackRect.y,
171
- children: barElements
172
- });
173
- });
@@ -1,89 +0,0 @@
1
- const _excluded = ["series", "xAxisId", "yAxisId", "stackIndex", "totalStacks", "barPadding"];
2
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
3
- function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
4
- import { memo, useMemo, createElement as _createElement } from 'react';
5
- import { useCartesianChartContext } from '../ChartProvider';
6
- import { defaultAxisId, getBarSizeAdjustment, isCategoricalScale } from '../utils';
7
- import { BarStack } from './BarStack';
8
- /**
9
- * BarStackGroup component that renders a group of stacks across all categories.
10
- * Delegates the actual stacking logic to BarStack for each category.
11
- */
12
- export const BarStackGroup = /*#__PURE__*/memo(_ref => {
13
- let {
14
- series,
15
- xAxisId = defaultAxisId,
16
- yAxisId = defaultAxisId,
17
- stackIndex,
18
- totalStacks,
19
- barPadding = 0.1
20
- } = _ref,
21
- props = _objectWithoutPropertiesLoose(_ref, _excluded);
22
- const {
23
- layout,
24
- getXScale,
25
- getYScale,
26
- drawingArea,
27
- dataLength
28
- } = useCartesianChartContext();
29
- const xScale = getXScale(xAxisId);
30
- const yScale = getYScale(yAxisId);
31
- const stackConfigs = useMemo(() => {
32
- if (!xScale || !yScale || !drawingArea || dataLength === 0) return [];
33
- const indexScale = layout !== 'horizontal' ? xScale : yScale;
34
- if (!isCategoricalScale(indexScale)) {
35
- return [];
36
- }
37
- const categoryWidth = indexScale.bandwidth();
38
-
39
- // Calculate thickness for each stack within a category.
40
- const gapSize = totalStacks > 1 ? categoryWidth * barPadding / (totalStacks - 1) : 0;
41
- const stackThickness = categoryWidth / totalStacks - getBarSizeAdjustment(totalStacks, gapSize);
42
- const configs = [];
43
-
44
- // Calculate position for each category.
45
- for (let categoryIndex = 0; categoryIndex < dataLength; categoryIndex++) {
46
- // Get position for this category along the index axis.
47
- const categoryPos = indexScale(categoryIndex);
48
- if (categoryPos !== undefined) {
49
- // Calculate position for this specific stack within the category.
50
- const stackPos = categoryPos + stackIndex * (stackThickness + gapSize);
51
- configs.push({
52
- categoryIndex,
53
- indexPos: stackPos,
54
- thickness: stackThickness
55
- });
56
- }
57
- }
58
- return configs;
59
- }, [xScale, yScale, drawingArea, dataLength, layout, totalStacks, barPadding, stackIndex]);
60
- const indexScaleComputed = layout !== 'horizontal' ? xScale : yScale;
61
- const valueScaleComputed = layout !== 'horizontal' ? yScale : xScale;
62
- if (indexScaleComputed && !isCategoricalScale(indexScaleComputed)) {
63
- throw new Error("BarStackGroup requires a band scale for " + (layout !== 'horizontal' ? 'x-axis' : 'y-axis') + ". See https://cds.coinbase.com/components/charts/" + (layout !== 'horizontal' ? 'XAxis' : 'YAxis') + "/#scale-type");
64
- }
65
- if (!indexScaleComputed || !valueScaleComputed || !drawingArea || stackConfigs.length === 0) return;
66
-
67
- // In horizontal layout, render stacks in reverse order so top rows (lower categoryIndex)
68
- // appear on top. Otherwise bottom rows would overlap and obscure top rows during animation.
69
- const orderedConfigs = layout === 'horizontal' ? [...stackConfigs].reverse() : stackConfigs;
70
- return orderedConfigs.map(_ref2 => {
71
- let {
72
- categoryIndex,
73
- indexPos,
74
- thickness
75
- } = _ref2;
76
- return /*#__PURE__*/_createElement(BarStack, _extends({}, props, {
77
- key: "stack-" + stackIndex + "-category-" + categoryIndex,
78
- categoryIndex: categoryIndex,
79
- indexPos: indexPos,
80
- indexScale: indexScaleComputed,
81
- rect: drawingArea,
82
- series: series,
83
- thickness: thickness,
84
- valueScale: valueScaleComputed,
85
- xAxisId: xAxisId,
86
- yAxisId: yAxisId
87
- }));
88
- });
89
- });
@@ -1,79 +0,0 @@
1
- function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import { memo, useMemo } from 'react';
3
- import { useTheme } from '@coinbase/cds-mobile/hooks/useTheme';
4
- import { useCartesianChartContext } from '../ChartProvider';
5
- import { Path } from '../Path';
6
- import { defaultBarEnterOpacityTransition, defaultBarEnterTransition, getBarPath, withStaggerDelayTransition } from '../utils';
7
- import { getNormalizedStagger } from '../utils/bar';
8
- import { defaultTransition, getTransition } from '../utils/transition';
9
- import { jsx as _jsx } from "react/jsx-runtime";
10
- /**
11
- * Default bar component that renders a solid bar with animation support.
12
- */
13
- export const DefaultBar = /*#__PURE__*/memo(_ref => {
14
- let {
15
- x,
16
- y,
17
- width,
18
- height,
19
- borderRadius = 4,
20
- roundTop,
21
- roundBottom,
22
- d,
23
- fill,
24
- fillOpacity = 1,
25
- stroke,
26
- strokeWidth,
27
- origin,
28
- minSize = 1,
29
- transitions,
30
- transition
31
- } = _ref;
32
- const {
33
- animate,
34
- drawingArea,
35
- layout
36
- } = useCartesianChartContext();
37
- const theme = useTheme();
38
- const defaultFill = fill || theme.color.fgPrimary;
39
- const normalizedStagger = useMemo(() => getNormalizedStagger(layout, x, y, drawingArea), [layout, x, y, drawingArea]);
40
- const enterTransition = useMemo(() => getTransition(transitions == null ? void 0 : transitions.enter, animate, defaultBarEnterTransition), [transitions == null ? void 0 : transitions.enter, animate]);
41
- const enterTransitionWithStagger = useMemo(() => withStaggerDelayTransition(enterTransition, normalizedStagger), [enterTransition, normalizedStagger]);
42
- const enterOpacityTransition = useMemo(() => {
43
- var _enterOpacityTransiti, _enterOpacityTransiti2;
44
- if ((transitions == null ? void 0 : transitions.enterOpacity) === undefined && enterTransition === null) return null;
45
- const enterOpacityTransition = getTransition(transitions == null ? void 0 : transitions.enterOpacity, animate, defaultBarEnterOpacityTransition);
46
- if (!enterOpacityTransition) return null;
47
- return _extends({}, enterOpacityTransition, {
48
- delay: (_enterOpacityTransiti = enterOpacityTransition.delay) != null ? _enterOpacityTransiti : enterTransition == null ? void 0 : enterTransition.delay,
49
- staggerDelay: (_enterOpacityTransiti2 = enterOpacityTransition.staggerDelay) != null ? _enterOpacityTransiti2 : enterTransition == null ? void 0 : enterTransition.staggerDelay
50
- });
51
- }, [transitions == null ? void 0 : transitions.enterOpacity, animate, enterTransition]);
52
- const enterOpacityTransitionWithStagger = useMemo(() => withStaggerDelayTransition(enterOpacityTransition, normalizedStagger), [enterOpacityTransition, normalizedStagger]);
53
- const updateTransition = useMemo(() => withStaggerDelayTransition(getTransition((transitions == null ? void 0 : transitions.update) !== undefined ? transitions.update : transition, animate, defaultTransition), normalizedStagger), [transitions == null ? void 0 : transitions.update, transition, animate, normalizedStagger]);
54
- const initialPath = useMemo(() => {
55
- if (!animate) return;
56
- const isHorizontalLayout = layout === 'horizontal';
57
- const baseline = origin != null ? origin : isHorizontalLayout ? x : y + height;
58
- const initialX = isHorizontalLayout ? baseline : x;
59
- const initialY = isHorizontalLayout ? y : baseline;
60
- const initialWidth = isHorizontalLayout ? minSize : width;
61
- const initialHeight = isHorizontalLayout ? height : minSize;
62
- return getBarPath(initialX, initialY, initialWidth, initialHeight, borderRadius, !!roundTop, !!roundBottom, layout);
63
- }, [animate, layout, x, y, origin, width, height, borderRadius, roundTop, roundBottom, minSize]);
64
- return /*#__PURE__*/_jsx(Path, {
65
- animate: animate,
66
- clipPath: null,
67
- d: d,
68
- fill: stroke ? 'none' : defaultFill,
69
- fillOpacity: fillOpacity,
70
- initialPath: initialPath,
71
- stroke: stroke,
72
- strokeWidth: strokeWidth,
73
- transitions: {
74
- enter: enterTransitionWithStagger,
75
- enterOpacity: enterOpacityTransitionWithStagger,
76
- update: updateTransition
77
- }
78
- });
79
- });
@@ -1,68 +0,0 @@
1
- import { memo, useMemo } from 'react';
2
- import { Group, Skia } from '@shopify/react-native-skia';
3
- import { useCartesianChartContext } from '../ChartProvider';
4
- import { getBarPath } from '../utils';
5
- import { defaultBarEnterTransition, getNormalizedStagger, getStackInitialClipRect, withStaggerDelayTransition } from '../utils/bar';
6
- import { defaultTransition, getTransition, usePathTransition } from '../utils/transition';
7
- import { jsx as _jsx } from "react/jsx-runtime";
8
- /**
9
- * Default stack component that renders children in a group with animated clip path.
10
- */
11
- export const DefaultBarStack = /*#__PURE__*/memo(_ref => {
12
- let {
13
- children,
14
- width,
15
- height,
16
- x,
17
- y,
18
- borderRadius = 4,
19
- roundTop = true,
20
- roundBottom = true,
21
- origin,
22
- transitions,
23
- transition
24
- } = _ref;
25
- const {
26
- animate,
27
- drawingArea,
28
- layout
29
- } = useCartesianChartContext();
30
- const normalizedStagger = useMemo(() => getNormalizedStagger(layout, x, y, drawingArea), [layout, x, y, drawingArea]);
31
- const enterTransition = useMemo(() => getTransition(transitions == null ? void 0 : transitions.enter, animate, defaultBarEnterTransition), [transitions == null ? void 0 : transitions.enter, animate]);
32
- const enterTransitionWithStagger = useMemo(() => withStaggerDelayTransition(enterTransition, normalizedStagger), [enterTransition, normalizedStagger]);
33
- const updateTransition = useMemo(() => withStaggerDelayTransition(getTransition((transitions == null ? void 0 : transitions.update) !== undefined ? transitions.update : transition, animate, defaultTransition), normalizedStagger), [animate, transitions == null ? void 0 : transitions.update, transition, normalizedStagger]);
34
-
35
- // Generate target clip path (full bar)
36
- const targetPath = useMemo(() => {
37
- return getBarPath(x, y, width, height, borderRadius, roundTop, roundBottom, layout);
38
- }, [x, y, width, height, borderRadius, roundTop, roundBottom, layout]);
39
-
40
- // Initial clip path for entry animation (bar at baseline with minimal height)
41
- const initialPath = useMemo(() => {
42
- if (!animate) return;
43
- const initialClipRect = getStackInitialClipRect({
44
- x,
45
- y,
46
- width,
47
- height
48
- }, layout, origin);
49
- return getBarPath(initialClipRect.x, initialClipRect.y, initialClipRect.width, initialClipRect.height, borderRadius, roundTop, roundBottom, layout);
50
- }, [animate, layout, x, y, height, width, borderRadius, roundTop, roundBottom, origin]);
51
- const animatedClipPath = usePathTransition({
52
- currentPath: targetPath,
53
- initialPath,
54
- transitions: {
55
- enter: enterTransitionWithStagger,
56
- update: updateTransition
57
- }
58
- });
59
- const staticClipPath = useMemo(() => {
60
- var _Skia$Path$MakeFromSV;
61
- return (_Skia$Path$MakeFromSV = Skia.Path.MakeFromSVGString(targetPath)) != null ? _Skia$Path$MakeFromSV : Skia.Path.Make();
62
- }, [targetPath]);
63
- const clipPath = animate ? animatedClipPath : staticClipPath;
64
- return /*#__PURE__*/_jsx(Group, {
65
- clip: clipPath,
66
- children: children
67
- });
68
- });