@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,14 +1,24 @@
1
+ import type { RegisteredCell } from '../context/CellsContext.ts';
2
+
3
+ import type {
4
+ MutableRefObject,
5
+ NativeMouseEvent,
6
+ NativeTouchEvent,
7
+ OctaneElement,
8
+ OctaneNode,
9
+ SVGProps,
10
+ } from '../util/OctaneTypes.ts';
1
11
  import * as React from 'octane';
2
- import { MutableRefObject, ReactElement, ReactNode, SVGProps, useMemo, useRef } from 'octane';
12
+ import { useMemo, useRef } from 'octane';
3
13
  import get from 'es-toolkit/compat/get';
4
14
 
5
15
  import { clsx } from 'clsx';
6
16
  import { selectPieLegend, selectPieSectors } from '../state/selectors/pieSelectors';
7
17
  import { useAppSelector } from '../state/hooks';
8
- import { Layer } from '../container/Layer';
9
- import { Curve, Props as CurveProps } from '../shape/Curve';
10
- import { Sector } from '../shape/Sector';
11
- import { Text } from '../component/Text';
18
+ import { Layer } from '../container/Layer.tsrx';
19
+ import { Curve, Props as CurveProps } from '../shape/Curve.tsrx';
20
+ import { Sector } from '../shape/Sector.tsrx';
21
+ import { Text, type RenderableText, type TextAnchor } from '../component/Text.tsrx';
12
22
  import { getMaxRadius, polarToCartesian } from '../util/PolarUtils';
13
23
  import { getPercentValue, interpolate, isNumber, mathSign } from '../util/DataUtils';
14
24
  import { getTooltipNameProp, getValueByDataKey } from '../util/ChartUtils';
@@ -29,7 +39,7 @@ import {
29
39
  ShapeAnimationProps,
30
40
  TooltipType,
31
41
  } from '../util/types';
32
- import { Shape } from '../util/ActiveShapeUtils';
42
+ import { Shape } from '../util/ActiveShapeUtils.tsrx';
33
43
  import {
34
44
  TooltipTriggerInfo,
35
45
  useMouseClickItemDispatch,
@@ -38,7 +48,7 @@ import {
38
48
  } from '../context/tooltipContext';
39
49
  import { TooltipPayload, TooltipPayloadConfiguration } from '../state/tooltipSlice';
40
50
  import { SetTooltipEntrySettings } from '../state/SetTooltipEntrySettings';
41
- import { Formatter } from '../component/DefaultTooltipContent';
51
+ import { Formatter } from '../component/DefaultTooltipContent.tsrx';
42
52
  import {
43
53
  selectActiveTooltipDataKey,
44
54
  selectActiveTooltipGraphicalItemId,
@@ -53,10 +63,10 @@ import {
53
63
  AnimatedItems,
54
64
  AnimationInterpolateFn,
55
65
  useAnimationCallbacks,
56
- } from '../animation/AnimatedItems';
66
+ } from '../animation/AnimatedItems.tsrx';
57
67
  import { AnimationMatchByProp, matchAppend } from '../animation/matchBy';
58
68
  import { RequiresDefaultProps, resolveDefaultProps } from '../util/resolveDefaultProps';
59
- import { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId';
69
+ import { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId.tsrx';
60
70
  import { SetPolarGraphicalItem } from '../state/SetGraphicalItem';
61
71
  import type { PiePresentationProps, PieSettings } from '../state/types/PieSettings';
62
72
  import {
@@ -69,9 +79,9 @@ import {
69
79
  PolarLabelListContextProvider,
70
80
  PolarLabelListEntry,
71
81
  Props as LabelListProps,
72
- } from '../component/LabelList';
82
+ } from '../component/LabelList.tsrx';
73
83
  import { GraphicalItemId } from '../state/graphicalItemsSlice';
74
- import { ZIndexable, ZIndexLayer } from '../zIndex/ZIndexLayer';
84
+ import { ZIndexable, ZIndexLayer } from '../zIndex/ZIndexLayer.tsrx';
75
85
  import { DefaultZIndexes } from '../zIndex/DefaultZIndexes';
76
86
  import { ChartData } from '../state/chartDataSlice';
77
87
  import { getClassNameFromUnknown } from '../util/getClassNameFromUnknown';
@@ -118,24 +128,27 @@ interface PieDef {
118
128
  }
119
129
 
120
130
  type PieLabelLine =
121
- | ReactElement<SVGElement>
122
- | ((props: any) => ReactElement<SVGElement>)
131
+ | OctaneElement<CurveProps>
132
+ | ((props: CurveProps & { index: number }) => OctaneNode)
123
133
  | SVGProps<SVGPathElement>
124
134
  | boolean;
125
135
 
126
136
  interface PieLabelExtraProps {
127
137
  stroke: string;
128
138
  index: number;
129
- textAnchor: string;
139
+ textAnchor: TextAnchor;
130
140
  }
131
141
 
132
142
  export type PieLabelRenderProps =
133
143
  Omit<SVGPropsNoEvents<PieSvgAttributes>, 'offset'> & Omit<
134
144
  PieSectorDataItem,
135
- 'offset'
136
- > & PieLabelExtraProps & Coordinate;
145
+ 'offset' | 'ref'
146
+ > & Pick<SVGProps<SVGTextElement>, 'ref'> & PieLabelExtraProps & Coordinate;
137
147
 
138
- export type LabelListPropsWithPosition = LabelListProps & { position: LabelListProps['position'] };
148
+ export type LabelListPropsWithPosition =
149
+ Omit<LabelListProps, keyof PieCoordinate> & Partial<PieCoordinate> & {
150
+ position: LabelListProps['position'];
151
+ };
139
152
 
140
153
  /**
141
154
  * The `label` prop in Pie accepts a variety of alternatives.
@@ -161,12 +174,12 @@ export type PieLabel =
161
174
  * If label prop is a function, or a React component, it will be called once for each label.
162
175
  * The result of each call will be rendered.
163
176
  */
164
- ((props: PieLabelRenderProps) => ReactNode | ReactElement<SVGElement>)
177
+ ((props: PieLabelRenderProps) => RenderableText | OctaneElement<PieLabelRenderProps>)
165
178
  | /*
166
- * If label prop is a ReactElement, it will get cloned and receive brand-new surprise props.
179
+ * If label prop is a OctaneElement, it will get cloned and receive brand-new surprise props.
167
180
  * I do not recommend this variant
168
181
  */
169
- ReactElement<SVGElement>;
182
+ OctaneElement<PieLabelRenderProps>;
170
183
 
171
184
  export type PieSectorData =
172
185
  GeometrySector & TooltipTriggerInfo & {
@@ -208,58 +221,58 @@ interface PieEvents {
208
221
  /**
209
222
  * The customized event handler of click on the sectors in this group.
210
223
  */
211
- onClick?: (data: PieSectorDataItem, index: number, e: React.MouseEvent<
224
+ onClick?: (data: PieSectorDataItem, index: number, e: NativeMouseEvent<
212
225
  SVGGraphicsElement
213
226
  >) => void;
214
227
  /**
215
228
  * The customized event handler of mousedown on the sectors in this group.
216
229
  */
217
- onMouseDown?: (data: PieSectorDataItem, index: number, e: React.MouseEvent<
230
+ onMouseDown?: (data: PieSectorDataItem, index: number, e: NativeMouseEvent<
218
231
  SVGGraphicsElement
219
232
  >) => void;
220
233
  /**
221
234
  * The customized event handler of mouseup on the sectors in this group.
222
235
  */
223
- onMouseUp?: (data: PieSectorDataItem, index: number, e: React.MouseEvent<
236
+ onMouseUp?: (data: PieSectorDataItem, index: number, e: NativeMouseEvent<
224
237
  SVGGraphicsElement
225
238
  >) => void;
226
239
  /**
227
240
  * The customized event handler of mousemove on the sectors in this group.
228
241
  */
229
- onMouseMove?: (data: PieSectorDataItem, index: number, e: React.MouseEvent<
242
+ onMouseMove?: (data: PieSectorDataItem, index: number, e: NativeMouseEvent<
230
243
  SVGGraphicsElement
231
244
  >) => void;
232
245
  /**
233
246
  * The customized event handler of mouseover on the sectors in this group.
234
247
  */
235
- onMouseOver?: (data: PieSectorDataItem, index: number, e: React.MouseEvent<
248
+ onMouseOver?: (data: PieSectorDataItem, index: number, e: NativeMouseEvent<
236
249
  SVGGraphicsElement
237
250
  >) => void;
238
251
  /**
239
252
  * The customized event handler of mouseout on the sectors in this group.
240
253
  */
241
- onMouseOut?: (data: PieSectorDataItem, index: number, e: React.MouseEvent<
254
+ onMouseOut?: (data: PieSectorDataItem, index: number, e: NativeMouseEvent<
242
255
  SVGGraphicsElement
243
256
  >) => void;
244
257
  /**
245
258
  * The customized event handler of mouseenter on the sectors in this group.
246
259
  */
247
- onMouseEnter?: (data: PieSectorDataItem, index: number, e: React.MouseEvent<
260
+ onMouseEnter?: (data: PieSectorDataItem, index: number, e: NativeMouseEvent<
248
261
  SVGGraphicsElement
249
262
  >) => void;
250
263
  /**
251
264
  * The customized event handler of mouseleave on the sectors in this group.
252
265
  */
253
- onMouseLeave?: (data: PieSectorDataItem, index: number, e: React.MouseEvent<
266
+ onMouseLeave?: (data: PieSectorDataItem, index: number, e: NativeMouseEvent<
254
267
  SVGGraphicsElement
255
268
  >) => void;
256
- onTouchStart?: (data: PieSectorDataItem, index: number, e: React.TouchEvent<
269
+ onTouchStart?: (data: PieSectorDataItem, index: number, e: NativeTouchEvent<
257
270
  SVGGraphicsElement
258
271
  >) => void;
259
- onTouchMove?: (data: PieSectorDataItem, index: number, e: React.TouchEvent<
272
+ onTouchMove?: (data: PieSectorDataItem, index: number, e: NativeTouchEvent<
260
273
  SVGGraphicsElement
261
274
  >) => void;
262
- onTouchEnd?: (data: PieSectorDataItem, index: number, e: React.TouchEvent<
275
+ onTouchEnd?: (data: PieSectorDataItem, index: number, e: NativeTouchEvent<
263
276
  SVGGraphicsElement
264
277
  >) => void;
265
278
  }
@@ -283,7 +296,7 @@ interface PieProps<DataPointType = any, DataValueType = any> extends DataProvide
283
296
  * @example <Pie activeShape={<CustomActiveShape />} />
284
297
  * @example https://recharts.github.io/examples/CustomActiveShapePieChart
285
298
  */
286
- activeShape?: ActiveShape<PieSectorDataItem>;
299
+ activeShape?: ActiveShape<PieSectorDataItem, SVGPathElement>;
287
300
  /**
288
301
  * Specifies when the animation should begin, the unit of this option is ms.
289
302
  * @defaultValue 400
@@ -348,7 +361,7 @@ interface PieProps<DataPointType = any, DataValueType = any> extends DataProvide
348
361
  * The shape of inactive sector.
349
362
  * @deprecated Use the `shape` prop to modify each sector.
350
363
  */
351
- inactiveShape?: ActiveShape<PieSectorDataItem>;
364
+ inactiveShape?: ActiveShape<PieSectorDataItem, SVGPathElement>;
352
365
  /**
353
366
  * If set false, animation will be disabled.
354
367
  * If set "auto", the animation will be disabled in SSR and will respect the user's prefers-reduced-motion system preference for accessibility.
@@ -361,7 +374,7 @@ interface PieProps<DataPointType = any, DataValueType = any> extends DataProvide
361
374
  * - `false`: no labels are rendered;
362
375
  * - `object` that has `position` prop: the props of LabelList component;
363
376
  * - `object` that does not have `position` prop: the props of a custom Pie label (similar to Label with position "outside"); this variant supports `labelLine`
364
- * - `ReactElement`: a custom SVG label element, such as `<text>` or `<g>`.
377
+ * - `OctaneElement`: a custom SVG label element, such as `<text>` or `<g>`.
365
378
  * HTML elements such as `<div>` are not valid inside the chart SVG and may trigger React DOM warnings.
366
379
  * - `function`: a render function of custom label.
367
380
  *
@@ -375,7 +388,7 @@ interface PieProps<DataPointType = any, DataValueType = any> extends DataProvide
375
388
  /**
376
389
  * If false set, label lines will not be drawn. If true set, label lines will be drawn which have the props calculated internally.
377
390
  * If object set, label lines will be drawn which have the props merged by the internal calculated props and the option.
378
- * If ReactElement set, the option can be the custom label line element.
391
+ * If OctaneElement set, the option can be the custom label line element.
379
392
  * If set a function, the function will be called to render customized label line.
380
393
  * @defaultValue true
381
394
  * @example <Pie labelLine={<CustomizedLabelLine />} />
@@ -456,9 +469,10 @@ export type PieCoordinate = {
456
469
  };
457
470
 
458
471
  const defaultPieSectorShape = Sector;
472
+ const PieSectorShape = Shape<PieSectorShapeProps, SVGPathElement>;
459
473
 
460
474
  function SetPiePayloadLegend(props: {
461
- cells: ReadonlyArray<ReactElement> | undefined;
475
+ cells: ReadonlyArray<RegisteredCell> | undefined;
462
476
  id: GraphicalItemId;
463
477
  }) {
464
478
  const legendPayload = useAppSelector((state) => selectPieLegend(state, props.id, props.cells));
@@ -474,18 +488,18 @@ type PieSectorsProps =
474
488
  /**
475
489
  * @deprecated
476
490
  */
477
- activeShape: ActiveShape<Readonly<PieSectorDataItem>> | undefined;
491
+ activeShape: ActiveShape<Readonly<PieSectorDataItem>, SVGPathElement> | undefined;
478
492
  /**
479
493
  * @deprecated
480
494
  */
481
- inactiveShape: ActiveShape<Readonly<PieSectorDataItem>> | undefined;
495
+ inactiveShape: ActiveShape<Readonly<PieSectorDataItem>, SVGPathElement> | undefined;
482
496
  shape: PieShape;
483
497
  allOtherPieProps: WithoutId<InternalProps>;
484
498
  id: GraphicalItemId;
485
499
  };
486
500
 
487
501
  function getActiveShapeFill(
488
- activeShape: ActiveShape<Readonly<PieSectorDataItem>> | undefined,
502
+ activeShape: ActiveShape<Readonly<PieSectorDataItem>, SVGPathElement> | undefined,
489
503
  ): string | undefined {
490
504
  // activeShape can be boolean/function/element/object; only element/object can carry a static fill value.
491
505
  if (
@@ -494,7 +508,11 @@ function getActiveShapeFill(
494
508
  return undefined;
495
509
  }
496
510
 
497
- if (React.isValidElement(activeShape)) {
511
+ if (
512
+ React.isValidElement<Partial<Readonly<PieSectorDataItem>> & SVGProps<SVGPathElement>>(
513
+ activeShape,
514
+ )
515
+ ) {
498
516
  // React element form: <Sector fill="..."/> or custom element with fill prop.
499
517
  const fill = activeShape.props?.fill;
500
518
  return typeof fill === 'string' ? fill : undefined;
@@ -617,9 +635,8 @@ const parseDeltaAngle = (startAngle: number, endAngle: number) => {
617
635
  return sign * deltaAngle;
618
636
  };
619
637
 
620
- const renderLabelLineItem = (option: PieLabelLine, props: CurveProps) => {
621
- if (React.isValidElement(option)) {
622
- // @ts-expect-error we can't know if the type of props matches the element
638
+ const renderLabelLineItem = (option: PieLabelLine, props: CurveProps & { index: number }) => {
639
+ if (React.isValidElement<CurveProps>(option)) {
623
640
  return React.cloneElement(option, props);
624
641
  }
625
642
  if (typeof option === 'function') {
@@ -635,24 +652,20 @@ const renderLabelLineItem = (option: PieLabelLine, props: CurveProps) => {
635
652
  return <Curve {...otherProps} type="linear" className={className} />;
636
653
  };
637
654
 
638
- const renderLabelItem = (option: PieLabel, props: PieLabelRenderProps, value: unknown) => {
639
- if (React.isValidElement(option)) {
640
- // @ts-expect-error element cloning is not typed
655
+ const renderLabelItem = (option: PieLabel, props: PieLabelRenderProps, value: RenderableText) => {
656
+ if (React.isValidElement<PieLabelRenderProps>(option)) {
641
657
  return React.cloneElement(option, props);
642
658
  }
643
- let label = value;
659
+ let label: RenderableText | OctaneElement<PieLabelRenderProps> = value;
644
660
  if (typeof option === 'function') {
645
661
  label = option(props);
646
- if (React.isValidElement(label)) {
662
+ if (React.isValidElement<PieLabelRenderProps>(label)) {
647
663
  return label;
648
664
  }
649
665
  }
650
666
 
651
667
  const className = clsx('recharts-pie-label-text', getClassNameFromUnknown(option));
652
- return <Text {...props} alignmentBaseline="middle" className={className}>
653
- {/* @ts-expect-error we pass unknown but Text expects string | number */}
654
- {label}
655
- </Text>;
668
+ return <Text {...props} alignmentBaseline="middle" className={className}>{label}</Text>;
656
669
  };
657
670
 
658
671
  function PieLabels({
@@ -678,6 +691,9 @@ function PieLabels({
678
691
  20;
679
692
 
680
693
  const labels = sectors.map((entry, i) => {
694
+ // The Cell ref belongs to its sector, not to the label or connector.
695
+ // Label and labelLine options may supply their own native refs below.
696
+ const { ref: sectorRef, ...labelEntry } = entry;
681
697
  const midAngle = (entry.startAngle + entry.endAngle) / 2;
682
698
  const endPoint = polarToCartesian(
683
699
  entry.cx,
@@ -687,20 +703,17 @@ function PieLabels({
687
703
  );
688
704
  const labelProps: PieLabelRenderProps = {
689
705
  ...pieProps,
690
- ...entry,
691
- // @ts-expect-error customLabelProps is contributing unknown props
706
+ ...labelEntry,
692
707
  stroke: 'none',
693
708
  ...customLabelProps,
694
709
  index: i,
695
710
  textAnchor: getTextAnchor(endPoint.x, entry.cx),
696
711
  ...endPoint,
697
712
  };
698
- const lineProps: CurveProps = {
713
+ const lineProps: CurveProps & { index: number } = {
699
714
  ...pieProps,
700
- ...entry,
701
- // @ts-expect-error customLabelLineProps is contributing unknown props
715
+ ...labelEntry,
702
716
  fill: 'none',
703
- // @ts-expect-error customLabelLineProps is contributing unknown props
704
717
  stroke: entry.fill,
705
718
  ...customLabelLineProps,
706
719
  index: i,
@@ -714,8 +727,11 @@ function PieLabels({
714
727
  >
715
728
  <Layer>
716
729
  {labelLine && renderLabelLineItem(labelLine, lineProps)}
717
- {/* @ts-expect-error we send the full PieSectorDataItem */}
718
- {renderLabelItem(label, labelProps, getValueByDataKey(entry, dataKey))}
730
+ {renderLabelItem(
731
+ label,
732
+ labelProps,
733
+ getValueByDataKey<unknown, RenderableText>(entry, dataKey),
734
+ )}
719
735
  </Layer>
720
736
  </ZIndexLayer>;
721
737
  });
@@ -815,7 +831,7 @@ function PieSectors(props: PieSectorsProps) {
815
831
  onMouseLeave={onMouseLeaveFromContext(entry, i)}
816
832
  onClick={onClickFromContext(entry, i)}
817
833
  >
818
- <Shape
834
+ <PieSectorShape
819
835
  option={sectorOptions ?? shape}
820
836
  DefaultShape={defaultPieSectorShape}
821
837
  shapeProps={sectorProps}
@@ -833,7 +849,7 @@ export function computePieSectors({
833
849
  }: {
834
850
  pieSettings: PieSettings;
835
851
  displayedData: ChartData;
836
- cells: ReadonlyArray<ReactElement> | undefined;
852
+ cells: ReadonlyArray<RegisteredCell> | undefined;
837
853
  offset: ChartOffsetInternal;
838
854
  }): ReadonlyArray<PieSectorDataItem> | undefined {
839
855
  const { cornerRadius, startAngle, endAngle, dataKey, nameKey, tooltipType } = pieSettings;
@@ -877,8 +893,10 @@ export function computePieSectors({
877
893
  const percent = (isNumber(val) ? val : 0) / sum;
878
894
  let tempStartAngle;
879
895
 
880
- // @ts-expect-error can't spread unknown
881
- const entryWithCellInfo: RealPieData = { ...entry, ...cells && cells[i] && cells[i].props };
896
+ const entryWithCellInfo: RealPieData = {
897
+ ...entry as Record<string, unknown>,
898
+ ...cells && cells[i] && cells[i].props,
899
+ };
882
900
  const sectorColor =
883
901
  entryWithCellInfo != null && 'fill' in entryWithCellInfo &&
884
902
  typeof entryWithCellInfo.fill === 'string'
@@ -947,7 +965,7 @@ function PieLabelListProvider({
947
965
  }: {
948
966
  showLabels: boolean;
949
967
  sectors: ReadonlyArray<PieSectorDataItem>;
950
- children: ReactNode;
968
+ children: OctaneNode;
951
969
  }) {
952
970
  const labelListEntries: ReadonlyArray<PolarLabelListEntry> = useMemo(() => {
953
971
  if (!showLabels || !sectors) {
@@ -1183,8 +1201,13 @@ type PropsWithResolvedDefaults = RequiresDefaultProps<Props, typeof defaultPiePr
1183
1201
  * @provides LabelListContext
1184
1202
  * @provides CellReader
1185
1203
  */
1186
- function PieFn(outsideProps: Props) {
1187
- const props: PropsWithResolvedDefaults = resolveDefaultProps(outsideProps, defaultPieProps);
1204
+ function PieFn<DataPointType = any, DataValueType = any>(
1205
+ outsideProps: Props<DataPointType, DataValueType>,
1206
+ ) {
1207
+ const props: PropsWithResolvedDefaults = resolveDefaultProps<Props, typeof defaultPieProps>(
1208
+ outsideProps,
1209
+ defaultPieProps,
1210
+ );
1188
1211
  const { id: externalId, ...propsWithoutId } = props;
1189
1212
  const presentationProps: PiePresentationProps | null = svgPropertiesNoEvents(propsWithoutId);
1190
1213
 
@@ -1219,6 +1242,5 @@ function PieFn(outsideProps: Props) {
1219
1242
  </>}
1220
1243
  </RegisterGraphicalItemId>;
1221
1244
  }
1222
- export const Pie = PieFn as (outsideProps: Props<DataPointType, DataValueType>) => ReactElement;
1223
- // @ts-expect-error we need to set the displayName for debugging purposes
1245
+ export const Pie = PieFn as typeof PieFn & { displayName?: string };
1224
1246
  Pie.displayName = 'Pie';
@@ -1,22 +1,24 @@
1
- import * as React from 'octane';
2
- import {
1
+ import type {
3
2
  FunctionComponent,
4
- ReactNode,
3
+ NativeMouseEvent,
4
+ NativeTouchEvent,
5
+ OctaneNode,
5
6
  SVGProps,
6
- useEffect,
7
- useMemo,
8
- type OctaneNode,
9
- } from 'octane';
7
+ SVGPropsForHost,
8
+ } from '../util/OctaneTypes.ts';
9
+ import * as React from 'octane';
10
+ import { useEffect, useMemo } from 'octane';
10
11
  import { clsx } from 'clsx';
11
- import { Layer } from '../container/Layer';
12
- import { Dot } from '../shape/Dot';
13
- import { Polygon } from '../shape/Polygon';
14
- import { Text, TextAnchor, TextVerticalAnchor } from '../component/Text';
12
+ import { Layer } from '../container/Layer.tsrx';
13
+ import { Dot } from '../shape/Dot.tsrx';
14
+ import { Polygon } from '../shape/Polygon.tsrx';
15
+ import { Text, TextAnchor, TextVerticalAnchor } from '../component/Text.tsrx';
15
16
  import {
16
17
  adaptEventsOfChild,
17
18
  AxisDomain,
19
+ AxisTick,
18
20
  AxisDomainTypeInput,
19
- BaseTickContentProps,
21
+ PolarTickContentProps,
20
22
  EvaluatedAxisDomainType,
21
23
  PresentationAttributesAdaptChildEvent,
22
24
  RenderableAxisProps,
@@ -40,7 +42,7 @@ import {
40
42
  svgPropertiesNoEventsFromUnknown,
41
43
  } from '../util/svgPropertiesNoEvents';
42
44
  import { RequiresDefaultProps, resolveDefaultProps } from '../util/resolveDefaultProps';
43
- import { ZIndexable, ZIndexLayer } from '../zIndex/ZIndexLayer';
45
+ import { ZIndexable, ZIndexLayer } from '../zIndex/ZIndexLayer.tsrx';
44
46
  import { RechartsScale } from '../util/scale/RechartsScale';
45
47
  import type { CustomScaleDefinition } from '../util/scale/CustomScaleDefinition';
46
48
  import { usePolarChartLayout } from '../context/chartLayoutContext';
@@ -68,7 +70,7 @@ export interface PolarAngleAxisProps<DataPointType = any, DataValueType = any> e
68
70
  * @example <PolarAngleAxis axisLine={false} />
69
71
  * @example <PolarAngleAxis stroke='red' strokeWidth={2} strokeDasharray={4} />
70
72
  */
71
- axisLine?: boolean | SVGProps<SVGLineElement>;
73
+ axisLine?: boolean | SVGProps<SVGCircleElement | SVGPathElement>;
72
74
  /**
73
75
  * @defaultValue false
74
76
  */
@@ -166,12 +168,12 @@ export interface PolarAngleAxisProps<DataPointType = any, DataValueType = any> e
166
168
  * - `false`: Do not render any tick labels.
167
169
  * - `true`: Render tick labels with default settings.
168
170
  * - `object`: An object of props to be merged into the internally calculated tick props.
169
- * - `ReactElement`: A custom React element to be used as the tick label.
171
+ * - `OctaneElement`: A custom React element to be used as the tick label.
170
172
  * - `function`: A function that returns a React element for custom rendering of tick labels.
171
173
  *
172
174
  * @defaultValue true
173
175
  */
174
- tick?: TickProp<BaseTickContentProps>;
176
+ tick?: TickProp<PolarTickContentProps>;
175
177
  /**
176
178
  * The count of axis ticks. Not used if 'type' is 'category'.
177
179
  */
@@ -194,9 +196,9 @@ export interface PolarAngleAxisProps<DataPointType = any, DataValueType = any> e
194
196
  */
195
197
  tickSize?: number;
196
198
  /**
197
- * The array of every tick's value and angle.
199
+ * The array of tick values to map through the axis scale.
198
200
  */
199
- ticks?: ReadonlyArray<TickItem>;
201
+ ticks?: ReadonlyArray<AxisTick>;
200
202
  /**
201
203
  * The type of axis.
202
204
  *
@@ -228,45 +230,45 @@ type PolarAngleAxisEvents = {
228
230
  /**
229
231
  * The customized event handler of click on the ticks of this axis
230
232
  */
231
- onClick?: (data: TickItem, index: number, e: React.MouseEvent<SVGTextElement>) => void;
233
+ onClick?: (data: TickItem, index: number, e: NativeMouseEvent<SVGGElement>) => void;
232
234
  /**
233
235
  * The customized event handler of mousedown on the ticks of this axis
234
236
  */
235
- onMouseDown?: (data: TickItem, index: number, e: React.MouseEvent<SVGTextElement>) => void;
237
+ onMouseDown?: (data: TickItem, index: number, e: NativeMouseEvent<SVGGElement>) => void;
236
238
  /**
237
239
  * The customized event handler of mouseup on the ticks of this axis
238
240
  */
239
- onMouseUp?: (data: TickItem, index: number, e: React.MouseEvent<SVGTextElement>) => void;
241
+ onMouseUp?: (data: TickItem, index: number, e: NativeMouseEvent<SVGGElement>) => void;
240
242
  /**
241
243
  * The customized event handler of mousemove on the ticks of this axis
242
244
  */
243
- onMouseMove?: (data: TickItem, index: number, e: React.MouseEvent<SVGTextElement>) => void;
245
+ onMouseMove?: (data: TickItem, index: number, e: NativeMouseEvent<SVGGElement>) => void;
244
246
  /**
245
247
  * The customized event handler of mouseover on the ticks of this axis
246
248
  */
247
- onMouseOver?: (data: TickItem, index: number, e: React.MouseEvent<SVGTextElement>) => void;
249
+ onMouseOver?: (data: TickItem, index: number, e: NativeMouseEvent<SVGGElement>) => void;
248
250
  /**
249
251
  * The customized event handler of mouseout on the ticks of this axis
250
252
  */
251
- onMouseOut?: (data: TickItem, index: number, e: React.MouseEvent<SVGTextElement>) => void;
253
+ onMouseOut?: (data: TickItem, index: number, e: NativeMouseEvent<SVGGElement>) => void;
252
254
  /**
253
255
  * The customized event handler of mouseenter on the ticks of this axis
254
256
  */
255
- onMouseEnter?: (data: TickItem, index: number, e: React.MouseEvent<SVGTextElement>) => void;
257
+ onMouseEnter?: (data: TickItem, index: number, e: NativeMouseEvent<SVGGElement>) => void;
256
258
  /**
257
259
  * The customized event handler of mouseleave on the ticks of this axis
258
260
  */
259
- onMouseLeave?: (data: TickItem, index: number, e: React.MouseEvent<SVGTextElement>) => void;
260
- onTouchStart?: (data: TickItem, index: number, e: React.TouchEvent<SVGTextElement>) => void;
261
- onTouchMove?: (data: TickItem, index: number, e: React.TouchEvent<SVGTextElement>) => void;
262
- onTouchEnd?: (data: TickItem, index: number, e: React.TouchEvent<SVGTextElement>) => void;
261
+ onMouseLeave?: (data: TickItem, index: number, e: NativeMouseEvent<SVGGElement>) => void;
262
+ onTouchStart?: (data: TickItem, index: number, e: NativeTouchEvent<SVGGElement>) => void;
263
+ onTouchMove?: (data: TickItem, index: number, e: NativeTouchEvent<SVGGElement>) => void;
264
+ onTouchEnd?: (data: TickItem, index: number, e: NativeTouchEvent<SVGGElement>) => void;
263
265
  };
264
266
 
265
267
  type AxisSvgProps =
266
268
  Omit<
267
- PresentationAttributesAdaptChildEvent<TickItem, SVGTextElement>,
268
- 'scale' | 'type' | 'dangerouslySetInnerHTML'
269
- >;
269
+ PresentationAttributesAdaptChildEvent<TickItem, SVGGElement>,
270
+ 'scale' | 'type' | 'dangerouslySetInnerHTML' | 'ref'
271
+ > & { ref?: never };
270
272
 
271
273
  export type Props<DataPointType = any, DataValueType = any> =
272
274
  AxisSvgProps & PolarAngleAxisProps<DataPointType, DataValueType>;
@@ -275,7 +277,7 @@ type PropsWithDefaults<DataPointType = any, DataValueType = any> =
275
277
  RequiresDefaultProps<Props<DataPointType, DataValueType>, typeof defaultPolarAngleAxisProps>;
276
278
 
277
279
  type InternalPolarAngleAxisProps =
278
- Omit<PropsWithDefaults, 'scale'> & {
280
+ Omit<PropsWithDefaults, 'scale' | 'ticks'> & {
279
281
  cx: number;
280
282
  cy: number;
281
283
  radius: number;
@@ -287,11 +289,11 @@ const AXIS_TYPE = 'angleAxis';
287
289
 
288
290
  type AngleAxisSettingsReporter =
289
291
  Omit<AngleAxisSettings, 'type'> & {
290
- children: ReactNode;
292
+ children: OctaneNode;
291
293
  type: AxisDomainTypeInput;
292
294
  };
293
295
 
294
- function SetAngleAxisSettings(props: AngleAxisSettingsReporter): ReactNode {
296
+ function SetAngleAxisSettings(props: AngleAxisSettingsReporter): OctaneNode {
295
297
  const dispatch = useAppDispatch();
296
298
  const layout = usePolarChartLayout();
297
299
  const settings: AngleAxisSettings | undefined = useMemo(() => {
@@ -401,10 +403,9 @@ const AxisLine = (props: InternalPolarAngleAxisProps) => {
401
403
  };
402
404
 
403
405
  if (axisLineType === 'circle') {
404
- // @ts-expect-error wrong SVG element type
405
406
  return <Dot
406
407
  className="recharts-polar-angle-axis-line"
407
- {...axisLineProps}
408
+ {...axisLineProps as SVGPropsForHost<typeof axisLineProps, SVGCircleElement>}
408
409
  cx={cx}
409
410
  cy={cy}
410
411
  r={radius}
@@ -412,17 +413,20 @@ const AxisLine = (props: InternalPolarAngleAxisProps) => {
412
413
  }
413
414
  const points = ticks.map((entry) => polarToCartesian(cx, cy, radius, entry.coordinate));
414
415
 
415
- // @ts-expect-error wrong SVG element type
416
- return <Polygon className="recharts-polar-angle-axis-line" {...axisLineProps} points={points} />;
416
+ return <Polygon
417
+ className="recharts-polar-angle-axis-line"
418
+ {...axisLineProps as SVGPropsForHost<typeof axisLineProps, SVGPathElement>}
419
+ points={points}
420
+ />;
417
421
  };
418
422
 
419
423
  type TickItemProps = {
420
- tick: TickProp<BaseTickContentProps>;
421
- tickProps: BaseTickContentProps;
424
+ tick: TickProp<PolarTickContentProps>;
425
+ tickProps: PolarTickContentProps;
422
426
  value: string | number;
423
427
  };
424
428
 
425
- const TickItemText = ({ tick, tickProps, value }: TickItemProps): ReactNode => {
429
+ const TickItemText = ({ tick, tickProps, value }: TickItemProps): OctaneNode => {
426
430
  if (!tick) {
427
431
  return null;
428
432
  }
@@ -449,14 +453,11 @@ const Ticks = (props: InternalPolarAngleAxisProps) => {
449
453
  const lineCoord = getTickLineCoord(entry, props);
450
454
  const textAnchor: TextAnchor = getTickTextAnchor(entry, props.orientation);
451
455
  const verticalAnchor: TextVerticalAnchor = getTickTextVerticalAnchor(entry);
452
- const tickProps: BaseTickContentProps = {
456
+ const tickProps: PolarTickContentProps = {
453
457
  ...axisProps,
454
- // @ts-expect-error customTickProps is contributing unknown props
455
458
  textAnchor,
456
459
  verticalAnchor,
457
- // @ts-expect-error customTickProps is contributing unknown props
458
460
  stroke: 'none',
459
- // @ts-expect-error customTickProps is contributing unknown props
460
461
  fill: stroke,
461
462
  ...customTickProps,
462
463
  index: i,
@@ -542,7 +543,6 @@ export function PolarAngleAxis<DataPointType = any, DataValueType = any>(
542
543
  allowDecimals={props.allowDecimals}
543
544
  tickCount={props.tickCount}
544
545
  niceTicks={props.niceTicks ?? 'auto'}
545
- // @ts-expect-error the type does not match. Is RadiusAxis really expecting what it says?
546
546
  ticks={props.ticks}
547
547
  tick={props.tick}
548
548
  domain={props.domain}