@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,212 +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, useCallback, useMemo, useState } from 'react';
3
- import { useAnimatedReaction, useDerivedValue, useSharedValue } from 'react-native-reanimated';
4
- import { useCartesianChartContext } from '../ChartProvider';
5
- import { applySerializableScale, unwrapAnimatedValue, useScrubberContext } from '../utils';
6
- import { calculateLabelYPositions, getLabelPosition } from '../utils/scrubber';
7
- import { buildTransition, defaultTransition, getTransition } from '../utils/transition';
8
- import { DefaultScrubberBeaconLabel } from './DefaultScrubberBeaconLabel';
9
- import { jsx as _jsx } from "react/jsx-runtime";
10
- const PositionedLabel = /*#__PURE__*/memo(_ref => {
11
- let {
12
- index,
13
- positions,
14
- position,
15
- isIdle,
16
- updateTransition,
17
- label,
18
- color,
19
- seriesId,
20
- onDimensionsChange,
21
- BeaconLabelComponent,
22
- labelHorizontalOffset,
23
- labelFont
24
- } = _ref;
25
- const opacity = useDerivedValue(() => positions.value[index] !== null ? 1 : 0, [positions, index]);
26
- const x = useDerivedValue(() => {
27
- var _positions$value$inde, _positions$value$inde2;
28
- return (_positions$value$inde = (_positions$value$inde2 = positions.value[index]) == null ? void 0 : _positions$value$inde2.x) != null ? _positions$value$inde : 0;
29
- }, [positions, index]);
30
- const targetY = useDerivedValue(() => {
31
- var _positions$value$inde3, _positions$value$inde4;
32
- return (_positions$value$inde3 = (_positions$value$inde4 = positions.value[index]) == null ? void 0 : _positions$value$inde4.y) != null ? _positions$value$inde3 : 0;
33
- }, [positions, index]);
34
- const idleAnimatedY = useSharedValue(null);
35
- useAnimatedReaction(() => ({
36
- y: targetY.value,
37
- idle: unwrapAnimatedValue(isIdle)
38
- }), (current, previous) => {
39
- // Only animate idle-to-idle updates, immediately set the value for other changes.
40
- if (previous != null && previous.idle && current.idle) {
41
- idleAnimatedY.value = buildTransition(current.y, updateTransition);
42
- } else {
43
- idleAnimatedY.value = current.y;
44
- }
45
- }, [updateTransition]);
46
-
47
- // When scrubbing, use the targetY value, when idle, use the idleAnimatedY value.
48
- const y = useDerivedValue(() => unwrapAnimatedValue(isIdle) && idleAnimatedY.value !== null ? idleAnimatedY.value : targetY.value, [isIdle, idleAnimatedY, targetY]);
49
- const dx = useDerivedValue(() => {
50
- return position.value === 'right' ? labelHorizontalOffset : -labelHorizontalOffset;
51
- }, [position, labelHorizontalOffset]);
52
- const horizontalAlignment = useDerivedValue(() => position.value === 'right' ? 'left' : 'right', [position]);
53
- return /*#__PURE__*/_jsx(BeaconLabelComponent, {
54
- color: color,
55
- dx: dx,
56
- font: labelFont,
57
- horizontalAlignment: horizontalAlignment,
58
- label: label,
59
- onDimensionsChange: d => onDimensionsChange(seriesId, d),
60
- opacity: opacity,
61
- seriesId: seriesId,
62
- x: x,
63
- y: y
64
- });
65
- });
66
- export const ScrubberBeaconLabelGroup = /*#__PURE__*/memo(_ref2 => {
67
- let {
68
- labels,
69
- labelMinGap = 4,
70
- labelHorizontalOffset = 16,
71
- labelFont,
72
- labelPreferredSide = 'right',
73
- BeaconLabelComponent = DefaultScrubberBeaconLabel,
74
- transitions
75
- } = _ref2;
76
- const {
77
- getSeries,
78
- getSeriesData,
79
- getXSerializableScale,
80
- getYSerializableScale,
81
- getXAxis,
82
- drawingArea,
83
- dataLength,
84
- animate
85
- } = useCartesianChartContext();
86
- const {
87
- scrubberPosition
88
- } = useScrubberContext();
89
- const isIdle = useDerivedValue(() => {
90
- return scrubberPosition.value === undefined;
91
- }, [scrubberPosition]);
92
- const updateTransition = useMemo(() => getTransition(transitions == null ? void 0 : transitions.update, animate, defaultTransition), [transitions == null ? void 0 : transitions.update, animate]);
93
- const [labelDimensions, setLabelDimensions] = useState({});
94
- const handleDimensionsChange = useCallback((id, dimensions) => {
95
- setLabelDimensions(prev => {
96
- const existing = prev[id];
97
- if (existing && existing.width === dimensions.width && existing.height === dimensions.height) {
98
- return prev;
99
- }
100
- return _extends({}, prev, {
101
- [id]: dimensions
102
- });
103
- });
104
- }, []);
105
- const seriesInfo = useMemo(() => {
106
- return labels.map(label => {
107
- const series = getSeries(label.seriesId);
108
- if (!series) return null;
109
- const sourceData = getSeriesData(label.seriesId);
110
- const yScale = getYSerializableScale(series.yAxisId);
111
- return {
112
- seriesId: label.seriesId,
113
- sourceData,
114
- yScale
115
- };
116
- }).filter(info => info !== null);
117
- }, [labels, getSeries, getSeriesData, getYSerializableScale]);
118
- const xScale = getXSerializableScale();
119
- const xAxis = getXAxis();
120
- const dataIndex = useDerivedValue(() => {
121
- var _scrubberPosition$val;
122
- return (_scrubberPosition$val = scrubberPosition.value) != null ? _scrubberPosition$val : Math.max(0, dataLength - 1);
123
- }, [scrubberPosition, dataLength]);
124
- const dataX = useDerivedValue(() => {
125
- if (xAxis != null && xAxis.data && Array.isArray(xAxis.data) && xAxis.data[dataIndex.value] !== undefined) {
126
- const dataValue = xAxis.data[dataIndex.value];
127
- return typeof dataValue === 'string' ? dataIndex.value : dataValue;
128
- }
129
- return dataIndex.value;
130
- }, [xAxis, dataIndex]);
131
- const allLabelPositions = useDerivedValue(() => {
132
- const sharedPixelX = dataX.value !== undefined && xScale ? applySerializableScale(dataX.value, xScale) : 0;
133
- const desiredPositions = seriesInfo.map(info => {
134
- let dataY;
135
- if (xScale && info.yScale) {
136
- if (info.sourceData && dataIndex.value !== undefined && dataIndex.value >= 0 && dataIndex.value < info.sourceData.length) {
137
- const dataValue = info.sourceData[dataIndex.value];
138
- if (Array.isArray(dataValue)) {
139
- const validValues = dataValue.filter(val => val !== null);
140
- if (validValues.length >= 1) {
141
- dataY = validValues[validValues.length - 1];
142
- }
143
- }
144
- }
145
- }
146
- if (dataY !== undefined && info.yScale) {
147
- return {
148
- seriesId: info.seriesId,
149
- x: sharedPixelX,
150
- desiredY: applySerializableScale(dataY, info.yScale)
151
- };
152
- }
153
-
154
- // Return null for invalid data
155
- return null;
156
- });
157
- const maxLabelHeight = Math.max(...Object.values(labelDimensions).map(dim => dim.height));
158
- const maxLabelWidth = Math.max(...Object.values(labelDimensions).map(dim => dim.width));
159
- const validPositions = desiredPositions.filter(pos => pos !== null);
160
-
161
- // Convert to LabelDimension format expected by utility
162
- const dimensions = validPositions.map(pos => {
163
- var _trackedDimensions$wi, _trackedDimensions$he;
164
- const trackedDimensions = labelDimensions[pos.seriesId];
165
- return {
166
- seriesId: pos.seriesId,
167
- width: (_trackedDimensions$wi = trackedDimensions == null ? void 0 : trackedDimensions.width) != null ? _trackedDimensions$wi : maxLabelWidth,
168
- height: (_trackedDimensions$he = trackedDimensions == null ? void 0 : trackedDimensions.height) != null ? _trackedDimensions$he : maxLabelHeight,
169
- preferredX: pos.x,
170
- preferredY: pos.desiredY
171
- };
172
- });
173
-
174
- // Calculate Y positions with collision resolution for valid positions only
175
- const yPositions = calculateLabelYPositions(dimensions, drawingArea, maxLabelHeight, labelMinGap);
176
-
177
- // Return all positions (including null ones)
178
- return desiredPositions.map(pos => {
179
- var _yPositions$get;
180
- if (!pos) return null;
181
- return {
182
- seriesId: pos.seriesId,
183
- x: pos.x,
184
- y: (_yPositions$get = yPositions.get(pos.seriesId)) != null ? _yPositions$get : pos.desiredY
185
- };
186
- });
187
- }, [seriesInfo, dataIndex, dataX, xScale, labelDimensions, labelMinGap]);
188
- const currentPosition = useDerivedValue(() => {
189
- const pixelX = dataX.value !== undefined && xScale ? applySerializableScale(dataX.value, xScale) : 0;
190
- const maxWidth = Math.max(...Object.values(labelDimensions).map(dim => dim.width));
191
- const position = getLabelPosition(pixelX, maxWidth, drawingArea, labelHorizontalOffset, labelPreferredSide);
192
- return position;
193
- }, [dataX, xScale, labelDimensions, drawingArea, labelHorizontalOffset, labelPreferredSide]);
194
- return seriesInfo.map((info, index) => {
195
- const labelInfo = labels.find(label => label.seriesId === info.seriesId);
196
- if (!labelInfo) return;
197
- return /*#__PURE__*/_jsx(PositionedLabel, {
198
- BeaconLabelComponent: BeaconLabelComponent,
199
- color: labelInfo.color,
200
- index: index,
201
- isIdle: isIdle,
202
- label: labelInfo.label,
203
- labelFont: labelFont,
204
- labelHorizontalOffset: labelHorizontalOffset,
205
- onDimensionsChange: handleDimensionsChange,
206
- position: currentPosition,
207
- positions: allLabelPositions,
208
- seriesId: info.seriesId,
209
- updateTransition: updateTransition
210
- }, info.seriesId);
211
- });
212
- });
@@ -1,140 +0,0 @@
1
- import React, { useCallback, useMemo } from 'react';
2
- import { Platform } from 'react-native';
3
- import { Gesture, GestureDetector } from 'react-native-gesture-handler';
4
- import { runOnJS, useAnimatedReaction, useSharedValue } from 'react-native-reanimated';
5
- import { Haptics } from '@coinbase/cds-mobile/utils/haptics';
6
- import { useCartesianChartContext } from '../ChartProvider';
7
- import { invertSerializableScale, ScrubberContext } from '../utils';
8
- import { getPointOnSerializableScale } from '../utils/point';
9
- import { jsx as _jsx } from "react/jsx-runtime";
10
- /**
11
- * A component which encapsulates the ScrubberContext.
12
- * It depends on a ChartContext in order to provide accurate touch tracking.
13
- */
14
- export const ScrubberProvider = _ref => {
15
- let {
16
- children,
17
- enableScrubbing,
18
- onScrubberPositionChange,
19
- allowOverflowGestures
20
- } = _ref;
21
- const chartContext = useCartesianChartContext();
22
- if (!chartContext) {
23
- throw new Error('ScrubberProvider must be used within a ChartContext');
24
- }
25
- const {
26
- layout,
27
- getXSerializableScale,
28
- getYSerializableScale,
29
- getXAxis,
30
- getYAxis
31
- } = chartContext;
32
- const scrubberPosition = useSharedValue(undefined);
33
- const categoryAxisIsX = useMemo(() => layout !== 'horizontal', [layout]);
34
- const categoryAxis = useMemo(() => categoryAxisIsX ? getXAxis() : getYAxis(), [categoryAxisIsX, getXAxis, getYAxis]);
35
- const categoryScale = useMemo(() => categoryAxisIsX ? getXSerializableScale() : getYSerializableScale(), [categoryAxisIsX, getXSerializableScale, getYSerializableScale]);
36
- const getDataIndexFromPosition = useCallback(touchPosition => {
37
- 'worklet';
38
-
39
- if (!categoryScale || !categoryAxis) return 0;
40
- if (categoryScale.type === 'band') {
41
- const [domainMin, domainMax] = categoryScale.domain;
42
- const categoryCount = domainMax - domainMin + 1;
43
- let closestIndex = 0;
44
- let closestDistance = Infinity;
45
- for (let i = 0; i < categoryCount; i++) {
46
- const categoryPos = getPointOnSerializableScale(i, categoryScale);
47
- if (categoryPos !== undefined) {
48
- const distance = Math.abs(touchPosition - categoryPos);
49
- if (distance < closestDistance) {
50
- closestDistance = distance;
51
- closestIndex = i;
52
- }
53
- }
54
- }
55
- return closestIndex;
56
- } else {
57
- // For numeric scales with axis data, find the nearest data point.
58
- const axisData = categoryAxis.data;
59
- if (axisData && Array.isArray(axisData) && typeof axisData[0] === 'number') {
60
- const numericData = axisData;
61
- let closestIndex = 0;
62
- let closestDistance = Infinity;
63
- for (let i = 0; i < numericData.length; i++) {
64
- const dataValue = numericData[i];
65
- const categoryPos = getPointOnSerializableScale(dataValue, categoryScale);
66
- if (categoryPos !== undefined) {
67
- const distance = Math.abs(touchPosition - categoryPos);
68
- if (distance < closestDistance) {
69
- closestDistance = distance;
70
- closestIndex = i;
71
- }
72
- }
73
- }
74
- return closestIndex;
75
- } else {
76
- var _domain$min, _domain$max;
77
- const dataValue = invertSerializableScale(touchPosition, categoryScale);
78
- const dataIndex = Math.round(dataValue);
79
- const domain = categoryAxis.domain;
80
- return Math.max((_domain$min = domain.min) != null ? _domain$min : 0, Math.min(dataIndex, (_domain$max = domain.max) != null ? _domain$max : 0));
81
- }
82
- }
83
- }, [categoryAxis, categoryScale]);
84
- const handleStartEndHaptics = useCallback(() => {
85
- void Haptics.lightImpact();
86
- }, []);
87
- useAnimatedReaction(() => scrubberPosition.value, (currentValue, previousValue) => {
88
- // Confirm changes here and inside of our gesture handler before calling JS thread
89
- // To prevent any rerenders
90
- if (onScrubberPositionChange !== undefined && currentValue !== previousValue) {
91
- runOnJS(onScrubberPositionChange)(currentValue);
92
- }
93
- }, [onScrubberPositionChange]);
94
-
95
- // Create the long press pan gesture
96
- const longPressGesture = useMemo(() => Gesture.Pan().activateAfterLongPress(110).shouldCancelWhenOutside(!allowOverflowGestures).onStart(function onStart(event) {
97
- runOnJS(handleStartEndHaptics)();
98
-
99
- // Android does not trigger onUpdate when the gesture starts. This achieves consistent behavior across both iOS and Android
100
- if (Platform.OS === 'android') {
101
- const pointerPosition = categoryAxisIsX ? event.x : event.y;
102
- const newScrubberPosition = getDataIndexFromPosition(pointerPosition);
103
- if (newScrubberPosition !== scrubberPosition.value) {
104
- scrubberPosition.value = newScrubberPosition;
105
- }
106
- }
107
- }).onUpdate(function onUpdate(event) {
108
- const pointerPosition = categoryAxisIsX ? event.x : event.y;
109
- const newScrubberPosition = getDataIndexFromPosition(pointerPosition);
110
- if (newScrubberPosition !== scrubberPosition.value) {
111
- scrubberPosition.value = newScrubberPosition;
112
- }
113
- }).onEnd(function onEnd() {
114
- if (enableScrubbing) {
115
- runOnJS(handleStartEndHaptics)();
116
- scrubberPosition.value = undefined;
117
- }
118
- }).onTouchesCancelled(function onTouchesCancelled() {
119
- if (enableScrubbing) {
120
- scrubberPosition.value = undefined;
121
- }
122
- }), [allowOverflowGestures, handleStartEndHaptics, getDataIndexFromPosition, categoryAxisIsX, scrubberPosition, enableScrubbing]);
123
- const contextValue = useMemo(() => ({
124
- enableScrubbing: !!enableScrubbing,
125
- scrubberPosition
126
- }), [enableScrubbing, scrubberPosition]);
127
- const content = /*#__PURE__*/_jsx(ScrubberContext.Provider, {
128
- value: contextValue,
129
- children: children
130
- });
131
-
132
- // Wrap with gesture handler only if scrubbing is enabled
133
- if (enableScrubbing) {
134
- return /*#__PURE__*/_jsx(GestureDetector, {
135
- gesture: longPressGesture,
136
- children: content
137
- });
138
- }
139
- return content;
140
- };