@octanejs/recharts 0.1.40 → 0.1.42

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 (376) hide show
  1. package/{LICENSE → LICENSE.recharts} +3 -2
  2. package/README.md +12 -0
  3. package/package.json +10 -9
  4. package/src/animation/AnimatedItems.tsrx +36 -3
  5. package/src/animation/AnimationController.ts +17 -65
  6. package/src/animation/{AnimationControllerImpl.js → AnimationControllerImpl.ts} +19 -12
  7. package/src/animation/{AnimationHandle.js → AnimationHandle.ts} +82 -65
  8. package/src/animation/CSSTransitionAnimate.tsrx +3 -2
  9. package/src/animation/JavascriptAnimate.tsrx +18 -2
  10. package/src/animation/easing.ts +235 -0
  11. package/src/animation/{matchBy.js → matchBy.ts} +76 -120
  12. package/src/animation/timeoutController.ts +71 -0
  13. package/src/animation/useAnimationController.ts +4 -1
  14. package/src/animation/useAnimationStartSnapshot.ts +3 -3
  15. package/src/animation/util.ts +12 -0
  16. package/src/cartesian/Area.tsrx +33 -31
  17. package/src/cartesian/AreaRevealShape.tsrx +4 -3
  18. package/src/cartesian/Bar.ts +1 -0
  19. package/src/cartesian/Bar.tsrx +293 -39
  20. package/src/cartesian/BarStack.tsrx +31 -9
  21. package/src/cartesian/CartesianAxis.tsrx +154 -22
  22. package/src/cartesian/CartesianGrid.tsrx +5 -6
  23. package/src/cartesian/ErrorBar.tsrx +9 -8
  24. package/src/cartesian/Funnel.tsrx +40 -37
  25. package/src/cartesian/GraphicalItemClipPath.tsrx +11 -4
  26. package/src/cartesian/Line.ts +1 -0
  27. package/src/cartesian/Line.tsrx +206 -28
  28. package/src/cartesian/LineDrawShape.tsrx +23 -10
  29. package/src/cartesian/ReferenceLine.tsrx +8 -8
  30. package/src/cartesian/Scatter.tsrx +61 -66
  31. package/src/cartesian/XAxis.tsrx +78 -9
  32. package/src/cartesian/YAxis.tsrx +85 -12
  33. package/src/cartesian/getCartesianPosition.ts +265 -0
  34. package/src/cartesian/getEquidistantTicks.ts +144 -0
  35. package/src/cartesian/getTicks.ts +221 -0
  36. package/src/chart/AreaChart.tsrx +5 -1
  37. package/src/chart/BarChart.tsrx +8 -2
  38. package/src/chart/CartesianChart.tsrx +17 -4
  39. package/src/chart/CategoricalChart.tsrx +4 -1
  40. package/src/chart/ComposedChart.tsrx +5 -1
  41. package/src/chart/FunnelChart.tsrx +5 -1
  42. package/src/chart/LineChart.tsrx +8 -2
  43. package/src/chart/PieChart.tsrx +6 -2
  44. package/src/chart/PolarChart.tsrx +5 -4
  45. package/src/chart/RadarChart.tsrx +6 -2
  46. package/src/chart/RadialBarChart.tsrx +6 -2
  47. package/src/chart/RechartsWrapper.tsrx +57 -21
  48. package/src/chart/Sankey.tsrx +89 -91
  49. package/src/chart/ScatterChart.tsrx +5 -1
  50. package/src/chart/SunburstChart.tsrx +21 -14
  51. package/src/chart/types.ts +0 -1
  52. package/src/component/ActivePoints.tsrx +30 -5
  53. package/src/component/Cell.ts +19 -1
  54. package/src/component/Cursor.tsrx +11 -10
  55. package/src/component/DefaultLegendContent.tsrx +15 -10
  56. package/src/component/DefaultTooltipContent.tsrx +11 -9
  57. package/src/component/Dots.tsrx +37 -6
  58. package/src/component/Label.tsrx +99 -19
  59. package/src/component/LabelList.tsrx +54 -5
  60. package/src/component/Legend.tsrx +9 -5
  61. package/src/component/ResponsiveContainer.tsrx +13 -10
  62. package/src/component/Text.tsrx +95 -32
  63. package/src/component/Tooltip.tsrx +11 -10
  64. package/src/component/TooltipBoundingBox.tsrx +4 -5
  65. package/src/component/{responsiveContainerUtils.js → responsiveContainerUtils.ts} +59 -36
  66. package/src/container/ClipPathProvider.tsrx +6 -2
  67. package/src/container/Layer.tsrx +8 -1
  68. package/src/container/RootSurface.tsrx +15 -4
  69. package/src/container/Surface.tsrx +15 -1
  70. package/src/context/CellsContext.ts +6 -5
  71. package/src/context/ErrorBarContext.tsrx +23 -4
  72. package/src/context/RegisterGraphicalItemId.tsrx +10 -2
  73. package/src/context/accessibilityContext.ts +5 -0
  74. package/src/context/brushUpdateContext.ts +11 -0
  75. package/src/context/chartDataContext.ts +5 -4
  76. package/src/context/chartLayoutContext.ts +22 -8
  77. package/src/context/legendPayloadContext.tsrx +1 -1
  78. package/src/context/tooltipContext.ts +83 -0
  79. package/src/{hooks.js → hooks.ts} +88 -66
  80. package/src/index.ts +37 -37
  81. package/src/internal.ts +4 -20
  82. package/src/legacy-props.ts +129 -0
  83. package/src/polar/Pie.tsrx +91 -69
  84. package/src/polar/PolarAngleAxis.tsrx +47 -47
  85. package/src/polar/PolarGrid.tsrx +7 -6
  86. package/src/polar/PolarRadiusAxis.tsrx +29 -21
  87. package/src/polar/Radar.tsrx +26 -19
  88. package/src/polar/RadialBar.tsrx +59 -42
  89. package/src/polar/{defaultPolarAngleAxisProps.js → defaultPolarAngleAxisProps.ts} +6 -6
  90. package/src/polar/{defaultPolarRadiusAxisProps.js → defaultPolarRadiusAxisProps.ts} +5 -4
  91. package/src/shape/Cross.tsrx +14 -2
  92. package/src/shape/Curve.tsrx +111 -23
  93. package/src/shape/Dot.tsrx +12 -1
  94. package/src/shape/Polygon.tsrx +28 -6
  95. package/src/shape/Rectangle.tsrx +30 -3
  96. package/src/shape/Sector.tsrx +48 -6
  97. package/src/shape/Symbols.tsrx +24 -6
  98. package/src/shape/Trapezoid.tsrx +33 -3
  99. package/src/state/RechartsStoreProvider.tsrx +11 -2
  100. package/src/state/ReportChartProps.ts +2 -2
  101. package/src/state/ReportMainChartProps.ts +2 -1
  102. package/src/state/SetGraphicalItem.ts +6 -4
  103. package/src/state/SetLegendPayload.ts +7 -4
  104. package/src/state/SetTooltipEntrySettings.ts +5 -2
  105. package/src/state/brushSlice.ts +40 -0
  106. package/src/state/cartesianAxisSlice.ts +291 -0
  107. package/src/state/chartDataSlice.ts +87 -0
  108. package/src/state/errorBarSlice.ts +78 -0
  109. package/src/state/eventSettingsSlice.ts +30 -0
  110. package/src/state/{externalEventsMiddleware.js → externalEventsMiddleware.ts} +55 -34
  111. package/src/state/graphicalItemsSlice.ts +180 -0
  112. package/src/state/{keyboardEventsMiddleware.js → keyboardEventsMiddleware.ts} +72 -57
  113. package/src/state/layoutSlice.ts +50 -0
  114. package/src/state/legendSlice.ts +109 -0
  115. package/src/state/{mouseEventsMiddleware.js → mouseEventsMiddleware.ts} +45 -35
  116. package/src/state/optionsSlice.ts +65 -0
  117. package/src/state/polarAxisSlice.ts +42 -0
  118. package/src/state/polarOptionsSlice.ts +43 -0
  119. package/src/state/reduxDevtoolsJsonStringifyReplacer.ts +13 -0
  120. package/src/state/referenceElementsSlice.ts +100 -0
  121. package/src/state/renderedTicksSlice.ts +60 -0
  122. package/src/state/rootPropsSlice.ts +72 -0
  123. package/src/state/selectors/areaSelectors.ts +1 -2
  124. package/src/state/selectors/{arrayEqualityCheck.js → arrayEqualityCheck.ts} +4 -5
  125. package/src/state/selectors/axisSelectors.ts +2502 -0
  126. package/src/state/selectors/barSelectors.ts +373 -0
  127. package/src/state/selectors/barStackSelectors.ts +99 -0
  128. package/src/state/selectors/brushSelectors.ts +28 -0
  129. package/src/state/selectors/combiners/combineActiveLabel.ts +16 -0
  130. package/src/state/selectors/combiners/{combineActiveTooltipIndex.js → combineActiveTooltipIndex.ts} +45 -23
  131. package/src/state/selectors/combiners/combineAllBarPositions.ts +130 -0
  132. package/src/state/selectors/combiners/combineAxisRangeWithReverse.ts +16 -0
  133. package/src/state/selectors/combiners/combineBarPosition.ts +23 -0
  134. package/src/state/selectors/combiners/combineBarSizeList.ts +79 -0
  135. package/src/state/selectors/combiners/{combineCheckedDomain.js → combineCheckedDomain.ts} +9 -6
  136. package/src/state/selectors/combiners/combineConfiguredScale.ts +100 -0
  137. package/src/state/selectors/combiners/combineCoordinateForDefaultIndex.ts +46 -0
  138. package/src/state/selectors/combiners/{combineDisplayedStackedData.js → combineDisplayedStackedData.ts} +23 -19
  139. package/src/state/selectors/combiners/combineInverseScaleFunction.ts +16 -0
  140. package/src/state/selectors/combiners/{combineRealScaleType.js → combineRealScaleType.ts} +16 -8
  141. package/src/state/selectors/combiners/combineStackedData.ts +27 -0
  142. package/src/state/selectors/combiners/combineTooltipInteractionState.ts +86 -0
  143. package/src/state/selectors/combiners/combineTooltipPayload.ts +201 -0
  144. package/src/state/selectors/combiners/{combineTooltipPayloadConfigurations.js → combineTooltipPayloadConfigurations.ts} +17 -18
  145. package/src/state/selectors/containerSelectors.ts +12 -0
  146. package/src/state/selectors/{dataSelectors.js → dataSelectors.ts} +43 -41
  147. package/src/state/selectors/funnelSelectors.ts +5 -5
  148. package/src/state/selectors/graphicalItemSelectors.ts +22 -0
  149. package/src/state/selectors/legendSelectors.ts +25 -0
  150. package/src/state/selectors/lineSelectors.ts +159 -0
  151. package/src/state/selectors/numberDomainEqualityCheck.ts +15 -0
  152. package/src/state/selectors/pickAxisId.ts +6 -0
  153. package/src/state/selectors/pickAxisType.ts +4 -0
  154. package/src/state/selectors/pieSelectors.ts +14 -13
  155. package/src/state/selectors/polarAxisSelectors.ts +223 -0
  156. package/src/state/selectors/polarSelectors.ts +1 -1
  157. package/src/state/selectors/radarSelectors.ts +1 -1
  158. package/src/state/selectors/radialBarSelectors.ts +17 -16
  159. package/src/state/selectors/rootPropsSelectors.ts +26 -0
  160. package/src/state/selectors/scatterSelectors.ts +11 -10
  161. package/src/state/selectors/{selectActivePropsFromChartPointer.js → selectActivePropsFromChartPointer.ts} +11 -4
  162. package/src/state/selectors/selectAllAxes.ts +20 -0
  163. package/src/state/selectors/selectChartOffset.ts +17 -0
  164. package/src/state/selectors/selectChartOffsetInternal.ts +147 -0
  165. package/src/state/selectors/{selectPlotArea.js → selectPlotArea.ts} +4 -3
  166. package/src/state/selectors/selectTooltipAxisId.ts +6 -0
  167. package/src/state/selectors/{selectTooltipAxisType.js → selectTooltipAxisType.ts} +10 -4
  168. package/src/state/selectors/selectTooltipEventType.ts +39 -0
  169. package/src/state/selectors/selectTooltipPayloadSearcher.ts +6 -0
  170. package/src/state/selectors/selectTooltipSettings.ts +6 -0
  171. package/src/state/selectors/selectTooltipState.ts +5 -0
  172. package/src/state/selectors/selectors.ts +315 -0
  173. package/src/state/selectors/tooltipSelectors.ts +611 -0
  174. package/src/state/selectors/touchSelectors.ts +52 -0
  175. package/src/state/{store.js → store.ts} +46 -36
  176. package/src/state/tooltipSlice.ts +507 -0
  177. package/src/state/{touchEventsMiddleware.js → touchEventsMiddleware.ts} +54 -42
  178. package/src/state/types/AreaSettings.ts +15 -0
  179. package/src/state/types/BarSettings.ts +15 -0
  180. package/src/state/types/LineSettings.ts +10 -0
  181. package/src/state/types/PieSettings.ts +32 -0
  182. package/src/state/types/RadarSettings.ts +6 -0
  183. package/src/state/types/RadialBarSettings.ts +10 -0
  184. package/src/state/types/ScatterSettings.ts +13 -0
  185. package/src/state/types/StackedGraphicalItem.ts +34 -0
  186. package/src/state/zIndexSlice.ts +137 -0
  187. package/src/synchronisation/syncSelectors.ts +7 -0
  188. package/src/synchronisation/types.ts +42 -0
  189. package/src/synchronisation/useChartSynchronisation.tsrx +26 -11
  190. package/src/types.ts +55 -0
  191. package/src/util/ActiveShapeUtils.tsrx +34 -10
  192. package/src/util/BarUtils.tsrx +43 -3
  193. package/src/util/{CartesianUtils.js → CartesianUtils.ts} +22 -39
  194. package/src/util/ChartUtils.ts +759 -0
  195. package/src/util/{Constants.js → Constants.ts} +6 -6
  196. package/src/util/DOMUtils.ts +135 -0
  197. package/src/util/{DataUtils.js → DataUtils.ts} +120 -47
  198. package/src/util/Events.ts +22 -0
  199. package/src/util/FunnelUtils.tsrx +3 -3
  200. package/src/util/Global.ts +13 -0
  201. package/src/util/IfOverflow.ts +16 -0
  202. package/src/util/LRUCache.ts +42 -0
  203. package/src/util/{LogUtils.js → LogUtils.ts} +7 -12
  204. package/src/util/OctaneTypes.ts +51 -0
  205. package/src/util/PolarUtils.ts +132 -0
  206. package/src/util/RadialBarUtils.tsrx +3 -3
  207. package/src/util/ReduceCSSCalc.ts +186 -0
  208. package/src/util/ScatterUtils.tsrx +9 -7
  209. package/src/util/{TickUtils.js → TickUtils.ts} +30 -13
  210. package/src/util/{YAxisUtils.js → YAxisUtils.ts} +27 -17
  211. package/src/util/axisPropsAreEqual.ts +49 -0
  212. package/src/util/createEventProxy.ts +20 -0
  213. package/src/util/{excludeEventProps.js → excludeEventProps.ts} +8 -6
  214. package/src/util/getActiveCoordinate.ts +210 -0
  215. package/src/util/{getAxisTypeBasedOnLayout.js → getAxisTypeBasedOnLayout.ts} +7 -3
  216. package/src/util/getClassNameFromUnknown.ts +7 -0
  217. package/src/util/{getEveryNth.js → getEveryNth.ts} +5 -6
  218. package/src/util/getRadiusAndStrokeWidthFromDot.ts +31 -0
  219. package/src/util/{getRelativeCoordinate.js → getRelativeCoordinate.ts} +26 -9
  220. package/src/util/getSliced.ts +14 -0
  221. package/src/util/{isDomainSpecifiedByUser.js → isDomainSpecifiedByUser.ts} +46 -100
  222. package/src/util/isWellBehavedNumber.ts +8 -0
  223. package/src/util/payload/getUniqPayload.ts +1 -1
  224. package/src/util/{propsAreEqual.js → propsAreEqual.ts} +10 -8
  225. package/src/util/{resolveDefaultProps.js → resolveDefaultProps.ts} +35 -57
  226. package/src/util/round.ts +33 -0
  227. package/src/util/scale/CustomScaleDefinition.ts +82 -0
  228. package/src/util/scale/RechartsScale.ts +131 -0
  229. package/src/util/scale/{createCategoricalInverse.js → createCategoricalInverse.ts} +24 -29
  230. package/src/util/scale/{getNiceTickValues.js → getNiceTickValues.ts} +125 -146
  231. package/src/util/scale/index.ts +2 -0
  232. package/src/util/scale/util/{arithmetic.js → arithmetic.ts} +12 -8
  233. package/src/util/stacks/getStackSeriesIdentifier.ts +21 -0
  234. package/src/util/stacks/stackTypes.ts +58 -0
  235. package/src/util/{svgPropertiesNoEvents.js → svgPropertiesNoEvents.ts} +52 -27
  236. package/src/util/tooltip/translate.ts +2 -1
  237. package/src/util/typedDataKey.ts +49 -0
  238. package/src/util/types.ts +1265 -7
  239. package/src/util/{useUniqueId.js → useUniqueId.ts} +9 -5
  240. package/src/zIndex/{DefaultZIndexes.js → DefaultZIndexes.ts} +13 -4
  241. package/src/zIndex/ZIndexLayer.tsrx +13 -4
  242. package/src/zIndex/ZIndexPortal.tsrx +14 -4
  243. package/src/zIndex/{getZIndexFromUnknown.js → getZIndexFromUnknown.ts} +3 -3
  244. package/src/zIndex/{zIndexSelectors.js → zIndexSelectors.ts} +17 -11
  245. package/src/animation/easing.js +0 -193
  246. package/src/animation/timeoutController.js +0 -49
  247. package/src/animation/util.js +0 -11
  248. package/src/cartesian/Area.tsrx.d.ts +0 -340
  249. package/src/cartesian/Bar.tsrx.d.ts +0 -4
  250. package/src/cartesian/BarStack.tsrx.d.ts +0 -6
  251. package/src/cartesian/CartesianAxis.tsrx.d.ts +0 -3
  252. package/src/cartesian/CartesianGrid.tsrx.d.ts +0 -219
  253. package/src/cartesian/ErrorBar.tsrx.d.ts +0 -131
  254. package/src/cartesian/Funnel.tsrx.d.ts +0 -274
  255. package/src/cartesian/Line.tsrx.d.ts +0 -4
  256. package/src/cartesian/LineDrawShape.tsrx.d.ts +0 -2
  257. package/src/cartesian/ReferenceLine.tsrx.d.ts +0 -178
  258. package/src/cartesian/Scatter.tsrx.d.ts +0 -351
  259. package/src/cartesian/XAxis.tsrx.d.ts +0 -3
  260. package/src/cartesian/YAxis.tsrx.d.ts +0 -3
  261. package/src/cartesian/ZAxis.tsrx.d.ts +0 -102
  262. package/src/cartesian/getCartesianPosition.js +0 -277
  263. package/src/cartesian/getEquidistantTicks.js +0 -133
  264. package/src/cartesian/getTicks.js +0 -280
  265. package/src/chart/AreaChart.tsrx.d.ts +0 -12
  266. package/src/chart/BarChart.tsrx.d.ts +0 -2
  267. package/src/chart/CartesianChart.tsrx.d.ts +0 -10
  268. package/src/chart/ComposedChart.tsrx.d.ts +0 -12
  269. package/src/chart/FunnelChart.tsrx.d.ts +0 -12
  270. package/src/chart/LineChart.tsrx.d.ts +0 -2
  271. package/src/chart/PieChart.tsrx.d.ts +0 -31
  272. package/src/chart/RadarChart.tsrx.d.ts +0 -31
  273. package/src/chart/RadialBarChart.tsrx.d.ts +0 -31
  274. package/src/chart/Sankey.tsrx.d.ts +0 -253
  275. package/src/chart/ScatterChart.tsrx.d.ts +0 -12
  276. package/src/chart/SunburstChart.tsrx.d.ts +0 -146
  277. package/src/component/DefaultLegendContent.tsrx.d.ts +0 -125
  278. package/src/component/DefaultTooltipContent.tsrx.d.ts +0 -87
  279. package/src/component/Label.tsrx.d.ts +0 -12
  280. package/src/component/LabelList.tsrx.d.ts +0 -8
  281. package/src/component/Legend.tsrx.d.ts +0 -88
  282. package/src/component/ResponsiveContainer.tsrx.d.ts +0 -81
  283. package/src/component/Text.tsrx.d.ts +0 -9
  284. package/src/component/Tooltip.tsrx.d.ts +0 -246
  285. package/src/container/Layer.tsrx.d.ts +0 -6
  286. package/src/container/Surface.tsrx.d.ts +0 -12
  287. package/src/context/accessibilityContext.js +0 -10
  288. package/src/context/tooltipContext.js +0 -55
  289. package/src/index.d.ts +0 -281
  290. package/src/polar/Pie.tsrx.d.ts +0 -436
  291. package/src/polar/PolarAngleAxis.tsrx.d.ts +0 -215
  292. package/src/polar/PolarGrid.tsrx.d.ts +0 -117
  293. package/src/polar/PolarRadiusAxis.tsrx.d.ts +0 -209
  294. package/src/polar/Radar.tsrx.d.ts +0 -215
  295. package/src/polar/RadialBar.tsrx.d.ts +0 -340
  296. package/src/shape/Cross.tsrx.d.ts +0 -12
  297. package/src/shape/Curve.tsrx.d.ts +0 -42
  298. package/src/shape/Dot.tsrx.d.ts +0 -9
  299. package/src/shape/Polygon.tsrx.d.ts +0 -13
  300. package/src/shape/Rectangle.tsrx.d.ts +0 -31
  301. package/src/shape/Sector.tsrx.d.ts +0 -29
  302. package/src/shape/Symbols.tsrx.d.ts +0 -15
  303. package/src/shape/Trapezoid.tsrx.d.ts +0 -29
  304. package/src/state/brushSlice.js +0 -36
  305. package/src/state/cartesianAxisSlice.js +0 -256
  306. package/src/state/chartDataSlice.js +0 -67
  307. package/src/state/errorBarSlice.js +0 -53
  308. package/src/state/eventSettingsSlice.js +0 -25
  309. package/src/state/graphicalItemsSlice.js +0 -91
  310. package/src/state/layoutSlice.js +0 -57
  311. package/src/state/legendSlice.js +0 -83
  312. package/src/state/optionsSlice.js +0 -45
  313. package/src/state/polarAxisSlice.js +0 -33
  314. package/src/state/polarOptionsSlice.js +0 -26
  315. package/src/state/reduxDevtoolsJsonStringifyReplacer.js +0 -14
  316. package/src/state/referenceElementsSlice.js +0 -51
  317. package/src/state/renderedTicksSlice.js +0 -41
  318. package/src/state/rootPropsSlice.js +0 -48
  319. package/src/state/selectors/axisSelectors.js +0 -2113
  320. package/src/state/selectors/barSelectors.js +0 -263
  321. package/src/state/selectors/barStackSelectors.js +0 -65
  322. package/src/state/selectors/brushSelectors.js +0 -21
  323. package/src/state/selectors/combiners/combineActiveLabel.js +0 -18
  324. package/src/state/selectors/combiners/combineAllBarPositions.js +0 -169
  325. package/src/state/selectors/combiners/combineAxisRangeWithReverse.js +0 -11
  326. package/src/state/selectors/combiners/combineBarPosition.js +0 -17
  327. package/src/state/selectors/combiners/combineBarSizeList.js +0 -115
  328. package/src/state/selectors/combiners/combineConfiguredScale.js +0 -46
  329. package/src/state/selectors/combiners/combineCoordinateForDefaultIndex.js +0 -48
  330. package/src/state/selectors/combiners/combineInverseScaleFunction.js +0 -12
  331. package/src/state/selectors/combiners/combineStackedData.js +0 -22
  332. package/src/state/selectors/combiners/combineTooltipInteractionState.js +0 -121
  333. package/src/state/selectors/combiners/combineTooltipPayload.js +0 -248
  334. package/src/state/selectors/containerSelectors.js +0 -6
  335. package/src/state/selectors/graphicalItemSelectors.js +0 -25
  336. package/src/state/selectors/legendSelectors.js +0 -18
  337. package/src/state/selectors/lineSelectors.js +0 -106
  338. package/src/state/selectors/numberDomainEqualityCheck.js +0 -11
  339. package/src/state/selectors/pickAxisId.js +0 -3
  340. package/src/state/selectors/pickAxisType.js +0 -3
  341. package/src/state/selectors/polarAxisSelectors.js +0 -237
  342. package/src/state/selectors/rootPropsSelectors.js +0 -13
  343. package/src/state/selectors/selectAllAxes.js +0 -15
  344. package/src/state/selectors/selectChartOffset.js +0 -12
  345. package/src/state/selectors/selectChartOffsetInternal.js +0 -174
  346. package/src/state/selectors/selectTooltipAxisId.js +0 -3
  347. package/src/state/selectors/selectTooltipEventType.js +0 -27
  348. package/src/state/selectors/selectTooltipPayloadSearcher.js +0 -3
  349. package/src/state/selectors/selectTooltipSettings.js +0 -3
  350. package/src/state/selectors/selectTooltipState.js +0 -3
  351. package/src/state/selectors/selectors.js +0 -222
  352. package/src/state/selectors/tooltipSelectors.js +0 -471
  353. package/src/state/selectors/touchSelectors.js +0 -31
  354. package/src/state/tooltipSlice.js +0 -237
  355. package/src/state/types/StackedGraphicalItem.js +0 -18
  356. package/src/state/zIndexSlice.js +0 -167
  357. package/src/synchronisation/syncSelectors.js +0 -5
  358. package/src/util/ChartUtils.js +0 -630
  359. package/src/util/DOMUtils.js +0 -180
  360. package/src/util/Events.js +0 -7
  361. package/src/util/Global.js +0 -13
  362. package/src/util/LRUCache.js +0 -58
  363. package/src/util/PolarUtils.js +0 -190
  364. package/src/util/ReduceCSSCalc.js +0 -260
  365. package/src/util/axisPropsAreEqual.js +0 -63
  366. package/src/util/createEventProxy.js +0 -18
  367. package/src/util/getActiveCoordinate.js +0 -253
  368. package/src/util/getClassNameFromUnknown.js +0 -8
  369. package/src/util/getRadiusAndStrokeWidthFromDot.js +0 -28
  370. package/src/util/getSliced.js +0 -11
  371. package/src/util/isWellBehavedNumber.js +0 -8
  372. package/src/util/round.js +0 -39
  373. package/src/util/scale/RechartsScale.js +0 -68
  374. package/src/util/scale/index.js +0 -3
  375. package/src/util/stacks/getStackSeriesIdentifier.js +0 -10
  376. package/src/zIndex/ZIndexLayer.tsrx.d.ts +0 -2
@@ -1,19 +1,18 @@
1
- import * as React from 'octane';
2
- import {
3
- MouseEvent,
4
- ReactElement,
5
- ReactNode,
1
+ import type {
2
+ CSSProperties,
3
+ NativeMouseEvent,
4
+ OctaneElement,
5
+ OctaneNode,
6
6
  SVGProps,
7
- useCallback,
8
- useMemo,
9
- useState,
10
- } from 'octane';
7
+ } from '../util/OctaneTypes.ts';
8
+ import * as React from 'octane';
9
+ import { useCallback, useMemo, useState } from 'octane';
11
10
  import maxBy from 'es-toolkit/compat/maxBy';
12
11
  import sumBy from 'es-toolkit/compat/sumBy';
13
12
  import get from 'es-toolkit/compat/get';
14
- import { Surface } from '../container/Surface';
15
- import { Layer } from '../container/Layer';
16
- import { Props as RectangleProps, Rectangle } from '../shape/Rectangle';
13
+ import { Surface } from '../container/Surface.tsrx';
14
+ import { Layer } from '../container/Layer.tsrx';
15
+ import { Props as RectangleProps, Rectangle } from '../shape/Rectangle.tsrx';
17
16
  import { getValueByDataKey } from '../util/ChartUtils';
18
17
  import {
19
18
  Coordinate,
@@ -31,8 +30,8 @@ import {
31
30
  useChartWidth,
32
31
  } from '../context/chartLayoutContext';
33
32
  import { TooltipPortalContext } from '../context/tooltipPortalContext';
34
- import { RechartsWrapper } from './RechartsWrapper';
35
- import { RechartsStoreProvider } from '../state/RechartsStoreProvider';
33
+ import { RechartsWrapper } from './RechartsWrapper.tsrx';
34
+ import { RechartsStoreProvider } from '../state/RechartsStoreProvider.tsrx';
36
35
  import { useAppDispatch } from '../state/hooks';
37
36
  import {
38
37
  mouseLeaveItem,
@@ -54,7 +53,7 @@ import { RequiresDefaultProps, resolveDefaultProps } from '../util/resolveDefaul
54
53
  import { isPositiveNumber } from '../util/isWellBehavedNumber';
55
54
  import { isNotNil, noop } from '../util/DataUtils';
56
55
  import { WithIdRequired } from '../util/useUniqueId';
57
- import { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId';
56
+ import { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId.tsrx';
58
57
  import { GraphicalItemId } from '../state/graphicalItemsSlice';
59
58
  import { initialEventSettingsState } from '../state/eventSettingsSlice';
60
59
 
@@ -412,7 +411,10 @@ const relaxRightToLeft = (
412
411
  }
413
412
  };
414
413
 
415
- const updateYOfLinks = (tree: SankeyNode[], links: LinkDataItemDy[]): void => {
414
+ const updateYOfLinks: (tree: SankeyNode[], links: LinkDataItemDy[]) => asserts links is SankeyLink[] = (
415
+ tree,
416
+ links,
417
+ ) => {
416
418
  for (let i = 0, len = tree.length; i < len; i++) {
417
419
  const node = tree[i];
418
420
  if (node == null) {
@@ -662,7 +664,6 @@ export const computeData = ({
662
664
  resolveNodeLinkCollisions(tree, depthTree, linksWithDy, height, nodePadding);
663
665
  updateYOfLinks(tree, linksWithDy);
664
666
 
665
- // @ts-expect-error updateYOfLinks modifies the links array to add sy and ty in place
666
667
  const newLinks: ReadonlyArray<SankeyLink> = linksWithDy;
667
668
 
668
669
  return { nodes: tree, links: newLinks };
@@ -681,12 +682,24 @@ const getLinkCoordinateOfTooltip = (item: LinkProps): Coordinate | undefined =>
681
682
  : undefined;
682
683
  };
683
684
 
684
- type SankeyTooltipPayload = { payload: SankeyNode | SankeyLink; name: unknown; value: unknown };
685
+ // Layout augments the user's data records, retaining arbitrary fields selected
686
+ // by nameKey. Computed link payloads contain node objects, not source indices.
687
+ type SankeyTooltipNode = SankeyNode & Record<string | number, unknown>;
688
+ type SankeyTooltipLink =
689
+ Omit<LinkProps['payload'], 'source' | 'target'> & {
690
+ source: SankeyTooltipNode;
691
+ target: SankeyTooltipNode;
692
+ } & Record<string | number, unknown>;
693
+ type SankeyTooltipPayload = {
694
+ payload: SankeyTooltipNode | SankeyTooltipLink;
695
+ name: unknown;
696
+ value: unknown;
697
+ };
685
698
 
686
699
  const getPayloadOfTooltip = (
687
- item: { payload: SankeyNode | SankeyLink },
700
+ item: { payload: SankeyTooltipPayload['payload'] },
688
701
  type: SankeyElementType,
689
- nameKey: DataKey<SankeyLink | SankeyNode, string> | undefined,
702
+ nameKey: Parameters<TooltipPayloadSearcher>[3],
690
703
  ): SankeyTooltipPayload | undefined => {
691
704
  const { payload } = item;
692
705
  if (type === 'node') {
@@ -697,10 +710,8 @@ const getPayloadOfTooltip = (
697
710
  };
698
711
  }
699
712
  if ('source' in payload && payload.source && payload.target) {
700
- // @ts-expect-error we're sending number indexes as source and target, but getValueByDataKey expects objects
701
- const sourceName = getValueByDataKey(payload.source, nameKey, '');
702
- // @ts-expect-error we're sending number indexes as source and target, but getValueByDataKey expects objects
703
- const targetName = getValueByDataKey(payload.target, nameKey, '');
713
+ const sourceName = getValueByDataKey(payload.source as SankeyTooltipNode, nameKey, '');
714
+ const targetName = getValueByDataKey(payload.target as SankeyTooltipNode, nameKey, '');
704
715
 
705
716
  return {
706
717
  payload,
@@ -716,7 +727,7 @@ export const sankeyPayloadSearcher: TooltipPayloadSearcher = (
716
727
  _: unknown,
717
728
  activeIndex: TooltipIndex,
718
729
  computedData?: unknown,
719
- nameKey,
730
+ nameKey?: Parameters<TooltipPayloadSearcher>[3],
720
731
  ): SankeyTooltipPayload | undefined => {
721
732
  if (activeIndex == null || typeof activeIndex !== 'string') {
722
733
  return undefined;
@@ -728,7 +739,6 @@ export const sankeyPayloadSearcher: TooltipPayloadSearcher = (
728
739
  const [targetType, index] = splitIndex;
729
740
  const item = get(computedData, `${targetType}s[${index}]`);
730
741
  if (item) {
731
- // @ts-expect-error nameKey type does not match SankeyElementType
732
742
  const payload = getPayloadOfTooltip(item, targetType as SankeyElementType, nameKey);
733
743
  return payload;
734
744
  }
@@ -782,7 +792,7 @@ interface LinkDataItem {
782
792
  value: number;
783
793
  }
784
794
 
785
- export interface NodeProps extends Omit<SVGProps<SVGRectElement>, 'height' | 'width'> {
795
+ export interface NodeProps extends Omit<RectangleProps, 'height' | 'width'> {
786
796
  height: number;
787
797
  width: number;
788
798
  payload: SankeyNode;
@@ -813,12 +823,18 @@ export interface SankeyData {
813
823
 
814
824
  // TODO: improve types - NodeOptions uses SankeyNode, LinkOptions uses LinkProps. Standardize.
815
825
  export type SankeyNodeOptions =
816
- ReactElement<SVGProps<SVGRectElement>> | ((props: NodeProps) => ReactNode) | RectangleProps;
826
+ OctaneElement<RectangleProps> | ((props: NodeProps) => OctaneNode) | RectangleProps;
827
+
828
+ type SankeyLinkSvgProps =
829
+ Omit<SVGProps<SVGPathElement>, 'targetX' | 'targetY'> & {
830
+ targetX?: number;
831
+ targetY?: number;
832
+ };
817
833
 
818
834
  type SankeyLinkOptions =
819
- | ReactElement<SVGProps<SVGPathElement>>
820
- | ((props: LinkProps) => ReactElement<SVGProps<SVGPathElement>>)
821
- | SVGProps<SVGPathElement>;
835
+ | OctaneElement<SankeyLinkSvgProps>
836
+ | ((props: LinkProps) => OctaneElement<SVGProps<SVGPathElement>>)
837
+ | SankeyLinkSvgProps;
822
838
 
823
839
  interface SankeyProps extends EventThrottlingProps {
824
840
  /**
@@ -914,9 +930,9 @@ interface SankeyProps extends EventThrottlingProps {
914
930
  * @example <Sankey link={{ fill: #77c878 }} />
915
931
  */
916
932
  link?: SankeyLinkOptions;
917
- style?: React.CSSProperties;
933
+ style?: CSSProperties;
918
934
  className?: string;
919
- children?: ReactNode;
935
+ children?: OctaneNode;
920
936
  /**
921
937
  * Empty space around the container.
922
938
  *
@@ -926,19 +942,19 @@ interface SankeyProps extends EventThrottlingProps {
926
942
  /**
927
943
  * The customized event handler of click on the area in this group
928
944
  */
929
- onClick?: (item: NodeProps | LinkProps, type: SankeyElementType, e: MouseEvent<
945
+ onClick?: (item: NodeProps | LinkProps, type: SankeyElementType, e: NativeMouseEvent<
930
946
  SVGGraphicsElement
931
947
  >) => void;
932
948
  /**
933
949
  * The customized event handler of mouseenter on the area in this group
934
950
  */
935
- onMouseEnter?: (item: NodeProps | LinkProps, type: SankeyElementType, e: MouseEvent<
951
+ onMouseEnter?: (item: NodeProps | LinkProps, type: SankeyElementType, e: NativeMouseEvent<
936
952
  SVGGraphicsElement
937
953
  >) => void;
938
954
  /**
939
955
  * The customized event handler of mouseleave on the area in this group
940
956
  */
941
- onMouseLeave?: (item: NodeProps | LinkProps, type: SankeyElementType, e: MouseEvent<
957
+ onMouseLeave?: (item: NodeProps | LinkProps, type: SankeyElementType, e: NativeMouseEvent<
942
958
  SVGGraphicsElement
943
959
  >) => void;
944
960
  /**
@@ -1028,10 +1044,8 @@ const buildLinkProps = ({
1028
1044
 
1029
1045
  const linkProps: LinkProps = {
1030
1046
  sourceX,
1031
- // @ts-expect-error the linkContent from below is contributing unknown props
1032
1047
  targetX,
1033
1048
  sourceY,
1034
- // @ts-expect-error the linkContent from below is contributing unknown props
1035
1049
  targetY,
1036
1050
  sourceControlX,
1037
1051
  targetControlX,
@@ -1060,9 +1074,9 @@ function SankeyLinkElement({
1060
1074
  props: LinkProps;
1061
1075
  i: number;
1062
1076
  linkContent: SankeyLinkOptions | undefined;
1063
- onMouseEnter: (linkProps: LinkProps, e: MouseEvent<SVGGraphicsElement>) => void;
1064
- onMouseLeave: (linkProps: LinkProps, e: MouseEvent<SVGGraphicsElement>) => void;
1065
- onClick: (linkProps: LinkProps, e: MouseEvent<SVGGraphicsElement>) => void;
1077
+ onMouseEnter: (linkProps: LinkProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
1078
+ onMouseLeave: (linkProps: LinkProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
1079
+ onClick: (linkProps: LinkProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
1066
1080
  dataKey: DataKey<any>;
1067
1081
  }) {
1068
1082
  const activeCoordinate = getLinkCoordinateOfTooltip(props);
@@ -1071,7 +1085,7 @@ function SankeyLinkElement({
1071
1085
  const dispatch = useAppDispatch();
1072
1086
 
1073
1087
  const events = {
1074
- onMouseEnter: (e: MouseEvent<SVGGraphicsElement>) => {
1088
+ onMouseEnter: (e: NativeMouseEvent<SVGGraphicsElement>) => {
1075
1089
  dispatch(
1076
1090
  setActiveMouseOverItemIndex({
1077
1091
  activeIndex,
@@ -1082,11 +1096,11 @@ function SankeyLinkElement({
1082
1096
  );
1083
1097
  onMouseEnter(props, e);
1084
1098
  },
1085
- onMouseLeave: (e: MouseEvent<SVGGraphicsElement>) => {
1099
+ onMouseLeave: (e: NativeMouseEvent<SVGGraphicsElement>) => {
1086
1100
  dispatch(mouseLeaveItem());
1087
1101
  onMouseLeave(props, e);
1088
1102
  },
1089
- onClick: (e: MouseEvent<SVGGraphicsElement>) => {
1103
+ onClick: (e: NativeMouseEvent<SVGGraphicsElement>) => {
1090
1104
  dispatch(
1091
1105
  setActiveClickItemIndex({
1092
1106
  activeIndex,
@@ -1116,9 +1130,9 @@ function AllSankeyLinkElements({
1116
1130
  modifiedLinks: ReadonlyArray<LinkProps>;
1117
1131
  links: ReadonlyArray<SankeyLink>;
1118
1132
  linkContent: SankeyLinkOptions | undefined;
1119
- onMouseEnter: (linkProps: LinkProps, e: MouseEvent<SVGGraphicsElement>) => void;
1120
- onMouseLeave: (linkProps: LinkProps, e: MouseEvent<SVGGraphicsElement>) => void;
1121
- onClick: (linkProps: LinkProps, e: MouseEvent<SVGGraphicsElement>) => void;
1133
+ onMouseEnter: (linkProps: LinkProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
1134
+ onMouseLeave: (linkProps: LinkProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
1135
+ onClick: (linkProps: LinkProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
1122
1136
  dataKey: DataKey<any>;
1123
1137
  }) {
1124
1138
  return <Layer className="recharts-sankey-links" key="recharts-sankey-links">{links.map((
@@ -1151,15 +1165,12 @@ function renderNodeItem(option: SankeyNodeOptions | undefined, props: NodeProps)
1151
1165
  return option(props);
1152
1166
  }
1153
1167
 
1154
- return (
1155
- // @ts-expect-error recharts radius is not compatible with SVG radius
1156
- <Rectangle
1157
- className="recharts-sankey-node"
1158
- fill="#0088fe"
1159
- fillOpacity="0.8"
1160
- {...svgPropertiesNoEvents(props)}
1161
- />
1162
- );
1168
+ return <Rectangle
1169
+ className="recharts-sankey-node"
1170
+ fill="#0088fe"
1171
+ fillOpacity="0.8"
1172
+ {...svgPropertiesNoEvents(props)}
1173
+ />;
1163
1174
  }
1164
1175
 
1165
1176
  const buildNodeProps = ({
@@ -1176,7 +1187,6 @@ const buildNodeProps = ({
1176
1187
  i: number;
1177
1188
  }) => {
1178
1189
  const { x, y, dx, dy } = node;
1179
- // @ts-expect-error nodeContent is passing in unknown props
1180
1190
  const nodeProps: NodeProps = {
1181
1191
  ...svgPropertiesNoEventsFromUnknown(nodeContent),
1182
1192
  x: x + left,
@@ -1203,9 +1213,9 @@ function NodeElement({
1203
1213
  props: NodeProps;
1204
1214
  nodeContent: SankeyNodeOptions | undefined;
1205
1215
  i: number;
1206
- onMouseEnter: (nodeProps: NodeProps, e: MouseEvent<SVGGraphicsElement>) => void;
1207
- onMouseLeave: (nodeProps: NodeProps, e: MouseEvent<SVGGraphicsElement>) => void;
1208
- onClick: (nodeProps: NodeProps, e: MouseEvent<SVGGraphicsElement>) => void;
1216
+ onMouseEnter: (nodeProps: NodeProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
1217
+ onMouseLeave: (nodeProps: NodeProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
1218
+ onClick: (nodeProps: NodeProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
1209
1219
  dataKey: DataKey<any>;
1210
1220
  }) {
1211
1221
  const dispatch = useAppDispatch();
@@ -1214,7 +1224,7 @@ function NodeElement({
1214
1224
  const activeIndex = `node-${i}`;
1215
1225
 
1216
1226
  const events = {
1217
- onMouseEnter: (e: MouseEvent<SVGGraphicsElement>) => {
1227
+ onMouseEnter: (e: NativeMouseEvent<SVGGraphicsElement>) => {
1218
1228
  dispatch(
1219
1229
  setActiveMouseOverItemIndex({
1220
1230
  activeIndex,
@@ -1225,11 +1235,11 @@ function NodeElement({
1225
1235
  );
1226
1236
  onMouseEnter(props, e);
1227
1237
  },
1228
- onMouseLeave: (e: MouseEvent<SVGGraphicsElement>) => {
1238
+ onMouseLeave: (e: NativeMouseEvent<SVGGraphicsElement>) => {
1229
1239
  dispatch(mouseLeaveItem());
1230
1240
  onMouseLeave(props, e);
1231
1241
  },
1232
- onClick: (e: MouseEvent<SVGGraphicsElement>) => {
1242
+ onClick: (e: NativeMouseEvent<SVGGraphicsElement>) => {
1233
1243
  dispatch(
1234
1244
  setActiveClickItemIndex({
1235
1245
  activeIndex,
@@ -1257,9 +1267,9 @@ function AllNodeElements({
1257
1267
  graphicalItemId: GraphicalItemId;
1258
1268
  modifiedNodes: ReadonlyArray<NodeProps>;
1259
1269
  nodeContent: SankeyNodeOptions | undefined;
1260
- onMouseEnter: (nodeProps: NodeProps, e: MouseEvent<SVGGraphicsElement>) => void;
1261
- onMouseLeave: (nodeProps: NodeProps, e: MouseEvent<SVGGraphicsElement>) => void;
1262
- onClick: (nodeProps: NodeProps, e: MouseEvent<SVGGraphicsElement>) => void;
1270
+ onMouseEnter: (nodeProps: NodeProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
1271
+ onMouseLeave: (nodeProps: NodeProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
1272
+ onClick: (nodeProps: NodeProps, e: NativeMouseEvent<SVGGraphicsElement>) => void;
1263
1273
  dataKey: DataKey<any>;
1264
1274
  }) {
1265
1275
  return <Layer className="recharts-sankey-nodes" key="recharts-sankey-nodes">{modifiedNodes.map((
@@ -1390,7 +1400,7 @@ function SankeyImpl(props: InternalSankeyProps) {
1390
1400
  const handleMouseEnter = useCallback((
1391
1401
  item: NodeProps | LinkProps,
1392
1402
  type: SankeyElementType,
1393
- e: MouseEvent<SVGGraphicsElement>,
1403
+ e: NativeMouseEvent<SVGGraphicsElement>,
1394
1404
  ) => {
1395
1405
  if (onMouseEnter) {
1396
1406
  onMouseEnter(item, type, e);
@@ -1400,7 +1410,7 @@ function SankeyImpl(props: InternalSankeyProps) {
1400
1410
  const handleMouseLeave = useCallback((
1401
1411
  item: NodeProps | LinkProps,
1402
1412
  type: SankeyElementType,
1403
- e: MouseEvent<SVGGraphicsElement>,
1413
+ e: NativeMouseEvent<SVGGraphicsElement>,
1404
1414
  ) => {
1405
1415
  if (onMouseLeave) {
1406
1416
  onMouseLeave(item, type, e);
@@ -1410,7 +1420,7 @@ function SankeyImpl(props: InternalSankeyProps) {
1410
1420
  const handleClick = useCallback((
1411
1421
  item: NodeProps | LinkProps,
1412
1422
  type: SankeyElementType,
1413
- e: MouseEvent<SVGGraphicsElement>,
1423
+ e: NativeMouseEvent<SVGGraphicsElement>,
1414
1424
  ) => {
1415
1425
  if (onClick) {
1416
1426
  onClick(item, type, e);
@@ -1433,17 +1443,11 @@ function SankeyImpl(props: InternalSankeyProps) {
1433
1443
  modifiedLinks={modifiedLinks}
1434
1444
  linkContent={link}
1435
1445
  dataKey={dataKey}
1436
- onMouseEnter={(linkProps: LinkProps, e: MouseEvent<SVGGraphicsElement>) => handleMouseEnter(
1437
- linkProps,
1438
- 'link',
1439
- e,
1440
- )}
1441
- onMouseLeave={(linkProps: LinkProps, e: MouseEvent<SVGGraphicsElement>) => handleMouseLeave(
1442
- linkProps,
1443
- 'link',
1444
- e,
1445
- )}
1446
- onClick={(linkProps: LinkProps, e: MouseEvent<SVGGraphicsElement>) => handleClick(
1446
+ onMouseEnter={(linkProps: LinkProps, e: NativeMouseEvent<SVGGraphicsElement>) =>
1447
+ handleMouseEnter(linkProps, 'link', e)}
1448
+ onMouseLeave={(linkProps: LinkProps, e: NativeMouseEvent<SVGGraphicsElement>) =>
1449
+ handleMouseLeave(linkProps, 'link', e)}
1450
+ onClick={(linkProps: LinkProps, e: NativeMouseEvent<SVGGraphicsElement>) => handleClick(
1447
1451
  linkProps,
1448
1452
  'link',
1449
1453
  e,
@@ -1454,17 +1458,11 @@ function SankeyImpl(props: InternalSankeyProps) {
1454
1458
  modifiedNodes={modifiedNodes}
1455
1459
  nodeContent={node}
1456
1460
  dataKey={dataKey}
1457
- onMouseEnter={(nodeProps: NodeProps, e: MouseEvent<SVGGraphicsElement>) => handleMouseEnter(
1458
- nodeProps,
1459
- 'node',
1460
- e,
1461
- )}
1462
- onMouseLeave={(nodeProps: NodeProps, e: MouseEvent<SVGGraphicsElement>) => handleMouseLeave(
1463
- nodeProps,
1464
- 'node',
1465
- e,
1466
- )}
1467
- onClick={(nodeProps: NodeProps, e: MouseEvent<SVGGraphicsElement>) => handleClick(
1461
+ onMouseEnter={(nodeProps: NodeProps, e: NativeMouseEvent<SVGGraphicsElement>) =>
1462
+ handleMouseEnter(nodeProps, 'node', e)}
1463
+ onMouseLeave={(nodeProps: NodeProps, e: NativeMouseEvent<SVGGraphicsElement>) =>
1464
+ handleMouseLeave(nodeProps, 'node', e)}
1465
+ onClick={(nodeProps: NodeProps, e: NativeMouseEvent<SVGGraphicsElement>) => handleClick(
1468
1466
  nodeProps,
1469
1467
  'node',
1470
1468
  e,
@@ -1,3 +1,5 @@
1
+ import type { Ref } from '../util/OctaneTypes.ts';
2
+
1
3
  import { arrayTooltipSearcher } from '../state/optionsSlice';
2
4
  import { CartesianChart } from './CartesianChart.tsrx';
3
5
  import { CartesianChartProps, TooltipEventType } from '../util/types';
@@ -9,7 +11,9 @@ const allowedTooltipTypes: ReadonlyArray<TooltipEventType> = ['item'];
9
11
  * @provides CartesianViewBoxContext
10
12
  * @provides CartesianChartContext
11
13
  */
12
- export function ScatterChart(props: CartesianChartProps<unknown>) {
14
+ export function ScatterChart<DataPointType = unknown>(props: CartesianChartProps<DataPointType> & {
15
+ ref?: Ref<SVGSVGElement>;
16
+ }) {
13
17
  const { ref, ...rest } = props;
14
18
  return <CartesianChart
15
19
  chartName="ScatterChart"
@@ -1,12 +1,13 @@
1
+ import type { CSSProperties, NativeMouseEvent, OctaneNode } from '../util/OctaneTypes.ts';
1
2
  import * as React from 'octane';
2
- import { CSSProperties, useState, type OctaneNode } from 'octane';
3
+ import { useState } from 'octane';
3
4
  import { scaleLinear } from 'victory-vendor/d3-scale';
4
5
  import { clsx } from 'clsx';
5
6
  import get from 'es-toolkit/compat/get';
6
- import { Surface } from '../container/Surface';
7
- import { Layer } from '../container/Layer';
8
- import { Sector } from '../shape/Sector';
9
- import { Text, Props as TextProps } from '../component/Text';
7
+ import { Surface } from '../container/Surface.tsrx';
8
+ import { Layer } from '../container/Layer.tsrx';
9
+ import { Sector } from '../shape/Sector.tsrx';
10
+ import { Text, Props as TextProps } from '../component/Text.tsrx';
10
11
  import { polarToCartesian } from '../util/PolarUtils';
11
12
  import {
12
13
  ReportChartMargin,
@@ -15,7 +16,7 @@ import {
15
16
  useChartWidth,
16
17
  } from '../context/chartLayoutContext';
17
18
  import { TooltipPortalContext } from '../context/tooltipPortalContext';
18
- import { RechartsWrapper } from './RechartsWrapper';
19
+ import { RechartsWrapper } from './RechartsWrapper.tsrx';
19
20
  import {
20
21
  mouseLeaveItem,
21
22
  setActiveClickItemIndex,
@@ -25,12 +26,12 @@ import {
25
26
  TooltipPayloadSearcher,
26
27
  } from '../state/tooltipSlice';
27
28
  import { SetTooltipEntrySettings } from '../state/SetTooltipEntrySettings';
28
- import { RechartsStoreProvider } from '../state/RechartsStoreProvider';
29
+ import { RechartsStoreProvider } from '../state/RechartsStoreProvider.tsrx';
29
30
  import { ReportEventSettings } from '../state/ReportEventSettings';
30
31
  import { ChartCoordinate, DataKey, EventThrottlingProps, Margin, Percent } from '../util/types';
31
32
  import { useAppDispatch } from '../state/hooks';
32
33
  import { RechartsRootState } from '../state/store';
33
- import { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId';
34
+ import { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId.tsrx';
34
35
  import { WithIdRequired } from '../util/useUniqueId';
35
36
  import { RequiresDefaultProps, resolveDefaultProps } from '../util/resolveDefaultProps';
36
37
  import { initialEventSettingsState } from '../state/eventSettingsSlice';
@@ -146,8 +147,8 @@ export interface SunburstChartProps extends EventThrottlingProps {
146
147
  * An object with svg text options to control the appearance of the chart labels.
147
148
  */
148
149
  textOptions?: TextProps;
149
- onMouseEnter?: (node: SunburstData, e: React.MouseEvent) => void;
150
- onMouseLeave?: (node: SunburstData, e: React.MouseEvent) => void;
150
+ onMouseEnter?: (node: SunburstData, e: NativeMouseEvent) => void;
151
+ onMouseLeave?: (node: SunburstData, e: NativeMouseEvent) => void;
151
152
  onClick?: (node: SunburstData) => void;
152
153
  style?: CSSProperties;
153
154
  id?: string;
@@ -312,7 +313,7 @@ const SunburstChartImpl = ({
312
313
  const positions: SunburstPositionMap = new Map<string, ChartCoordinate>([]);
313
314
 
314
315
  // event handlers
315
- function handleMouseEnter(node: SunburstNode, e: React.MouseEvent) {
316
+ function handleMouseEnter(node: SunburstNode, e: NativeMouseEvent) {
316
317
  if (onMouseEnter) onMouseEnter(node, e);
317
318
 
318
319
  dispatch(
@@ -325,7 +326,7 @@ const SunburstChartImpl = ({
325
326
  );
326
327
  }
327
328
 
328
- function handleMouseLeave(node: SunburstNode, e: React.MouseEvent) {
329
+ function handleMouseLeave(node: SunburstNode, e: NativeMouseEvent) {
329
330
  if (onMouseLeave) onMouseLeave(node, e);
330
331
 
331
332
  dispatch(mouseLeaveItem());
@@ -376,8 +377,14 @@ const SunburstChartImpl = ({
376
377
  <g key={`sunburst-sector-${d.name}-${i}`}>
377
378
  <Sector
378
379
  onClick={() => handleClick(nodeWithIndex)}
379
- onMouseEnter={(e) => handleMouseEnter(nodeWithIndex, e)}
380
- onMouseLeave={(e) => handleMouseLeave(nodeWithIndex, e)}
380
+ onMouseEnter={(e: NativeMouseEvent<SVGPathElement>) => handleMouseEnter(
381
+ nodeWithIndex,
382
+ e,
383
+ )}
384
+ onMouseLeave={(e: NativeMouseEvent<SVGPathElement>) => handleMouseLeave(
385
+ nodeWithIndex,
386
+ e,
387
+ )}
381
388
  fill={fillColor}
382
389
  stroke={stroke}
383
390
  strokeWidth={padding}
@@ -1,4 +1,3 @@
1
- // @ts-nocheck -- compatibility-only upstream type surface is not part of the initial runtime port.
2
1
  import type { MouseHandlerDataParam } from '../synchronisation/types';
3
2
 
4
3
  export type TooltipTrigger = 'hover' | 'click';
@@ -1,3 +1,19 @@
1
+ import type { ActiveDotProps, ActiveDotType, DataKey } from '../util/types';
2
+ import type { ZIndexable } from '../zIndex/ZIndexLayer.tsrx';
3
+
4
+ export interface PointType {
5
+ readonly x: number | null;
6
+ readonly y: number | null;
7
+ readonly value?: any;
8
+ readonly payload?: any;
9
+ }
10
+ interface ActivePointsProps extends ZIndexable {
11
+ points: ReadonlyArray<PointType>;
12
+ mainColor: string | undefined;
13
+ itemDataKey: DataKey<any> | undefined;
14
+ activeDot: ActiveDotType;
15
+ clipPath?: string;
16
+ }
1
17
  // Port of component/ActivePoints.tsx — the highlighted dot on the active
2
18
  // tooltip data point (Line/Area/Scatter).
3
19
  import { cloneElement, isValidElement } from 'octane';
@@ -12,12 +28,19 @@ import { svgPropertiesNoEventsFromUnknown } from '../util/svgPropertiesNoEvents'
12
28
  import { ZIndexLayer } from '../zIndex/ZIndexLayer.tsrx';
13
29
  import { DefaultZIndexes } from '../zIndex/DefaultZIndexes';
14
30
 
15
- function ActivePoint(activePointProps) {
31
+ function ActivePoint(activePointProps: {
32
+ point: PointType;
33
+ activeDot: ActiveDotType;
34
+ childIndex: number;
35
+ dataKey: DataKey<any> | undefined;
36
+ mainColor: string | undefined;
37
+ clipPath?: string;
38
+ }) {
16
39
  const { point, childIndex, mainColor, activeDot, dataKey, clipPath } = activePointProps;
17
40
  if (activeDot === false || point.x == null || point.y == null) {
18
41
  return null;
19
42
  }
20
- const dotPropsTyped = {
43
+ const dotPropsTyped: ActiveDotProps = {
21
44
  index: childIndex,
22
45
  dataKey,
23
46
  cx: point.x,
@@ -29,7 +52,7 @@ function ActivePoint(activePointProps) {
29
52
  payload: point.payload,
30
53
  value: point.value,
31
54
  };
32
- const dotProps = {
55
+ const dotProps: ActiveDotProps = {
33
56
  ...dotPropsTyped,
34
57
  ...svgPropertiesNoEventsFromUnknown(activeDot),
35
58
  ...adaptEventHandlers(activeDot),
@@ -45,7 +68,7 @@ function ActivePoint(activePointProps) {
45
68
  return <Layer className="recharts-active-dot" clipPath={clipPath}>{dot}</Layer>;
46
69
  }
47
70
 
48
- export function ActivePoints(props) {
71
+ export function ActivePoints(props: ActivePointsProps) {
49
72
  const {
50
73
  points,
51
74
  mainColor,
@@ -59,7 +82,9 @@ export function ActivePoints(props) {
59
82
  if (points == null || activeDataPoints == null) {
60
83
  return null;
61
84
  }
62
- const activePoint = points.find((p) => activeDataPoints.includes(p.payload));
85
+ const activePoint: PointType | undefined = points.find(
86
+ (p) => activeDataPoints.includes(p.payload),
87
+ );
63
88
  if (isNullish(activePoint)) {
64
89
  return null;
65
90
  }
@@ -14,8 +14,26 @@
14
14
  */
15
15
  import { useLayoutEffect, useRef } from 'octane';
16
16
  import { useCellsRegistry } from '../context/CellsContext';
17
+ import type { SVGProps, SVGPropsForHost } from '../util/OctaneTypes';
17
18
 
18
- export function Cell(props: Record<string, unknown>): null {
19
+ type CellGeometry = {
20
+ x?: number;
21
+ y?: number;
22
+ cx?: number;
23
+ cy?: number;
24
+ width?: number;
25
+ height?: number;
26
+ radius?: number;
27
+ };
28
+
29
+ // Cell geometry feeds calculated chart paths, whose coordinates are numeric.
30
+ export type Props = Omit<SVGProps<SVGElement>, keyof CellGeometry> & CellGeometry;
31
+
32
+ // A shape writes its narrower host into the Cell's broader SVG ref sink.
33
+ // This write-only view is used at the renderer boundary; refs are never dropped.
34
+ export type CellPropsFor<T extends SVGElement> = SVGPropsForHost<Props, T>;
35
+
36
+ export function Cell(props: Props): null {
19
37
  const registry = useCellsRegistry();
20
38
  const token = useRef({});
21
39
  useLayoutEffect(() => {