@octanejs/recharts 0.1.41 → 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 (375) 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/legacy-props.ts +129 -0
  82. package/src/polar/Pie.tsrx +91 -69
  83. package/src/polar/PolarAngleAxis.tsrx +47 -47
  84. package/src/polar/PolarGrid.tsrx +7 -6
  85. package/src/polar/PolarRadiusAxis.tsrx +29 -21
  86. package/src/polar/Radar.tsrx +26 -19
  87. package/src/polar/RadialBar.tsrx +59 -42
  88. package/src/polar/{defaultPolarAngleAxisProps.js → defaultPolarAngleAxisProps.ts} +6 -6
  89. package/src/polar/{defaultPolarRadiusAxisProps.js → defaultPolarRadiusAxisProps.ts} +5 -4
  90. package/src/shape/Cross.tsrx +14 -2
  91. package/src/shape/Curve.tsrx +111 -23
  92. package/src/shape/Dot.tsrx +12 -1
  93. package/src/shape/Polygon.tsrx +28 -6
  94. package/src/shape/Rectangle.tsrx +30 -3
  95. package/src/shape/Sector.tsrx +48 -6
  96. package/src/shape/Symbols.tsrx +24 -6
  97. package/src/shape/Trapezoid.tsrx +33 -3
  98. package/src/state/RechartsStoreProvider.tsrx +11 -2
  99. package/src/state/ReportChartProps.ts +2 -2
  100. package/src/state/ReportMainChartProps.ts +2 -1
  101. package/src/state/SetGraphicalItem.ts +6 -4
  102. package/src/state/SetLegendPayload.ts +7 -4
  103. package/src/state/SetTooltipEntrySettings.ts +5 -2
  104. package/src/state/brushSlice.ts +40 -0
  105. package/src/state/cartesianAxisSlice.ts +291 -0
  106. package/src/state/chartDataSlice.ts +87 -0
  107. package/src/state/errorBarSlice.ts +78 -0
  108. package/src/state/eventSettingsSlice.ts +30 -0
  109. package/src/state/{externalEventsMiddleware.js → externalEventsMiddleware.ts} +55 -34
  110. package/src/state/graphicalItemsSlice.ts +180 -0
  111. package/src/state/{keyboardEventsMiddleware.js → keyboardEventsMiddleware.ts} +72 -57
  112. package/src/state/layoutSlice.ts +50 -0
  113. package/src/state/legendSlice.ts +109 -0
  114. package/src/state/{mouseEventsMiddleware.js → mouseEventsMiddleware.ts} +45 -35
  115. package/src/state/optionsSlice.ts +65 -0
  116. package/src/state/polarAxisSlice.ts +42 -0
  117. package/src/state/polarOptionsSlice.ts +43 -0
  118. package/src/state/reduxDevtoolsJsonStringifyReplacer.ts +13 -0
  119. package/src/state/referenceElementsSlice.ts +100 -0
  120. package/src/state/renderedTicksSlice.ts +60 -0
  121. package/src/state/rootPropsSlice.ts +72 -0
  122. package/src/state/selectors/areaSelectors.ts +1 -2
  123. package/src/state/selectors/{arrayEqualityCheck.js → arrayEqualityCheck.ts} +4 -5
  124. package/src/state/selectors/axisSelectors.ts +2502 -0
  125. package/src/state/selectors/barSelectors.ts +373 -0
  126. package/src/state/selectors/barStackSelectors.ts +99 -0
  127. package/src/state/selectors/brushSelectors.ts +28 -0
  128. package/src/state/selectors/combiners/combineActiveLabel.ts +16 -0
  129. package/src/state/selectors/combiners/{combineActiveTooltipIndex.js → combineActiveTooltipIndex.ts} +45 -23
  130. package/src/state/selectors/combiners/combineAllBarPositions.ts +130 -0
  131. package/src/state/selectors/combiners/combineAxisRangeWithReverse.ts +16 -0
  132. package/src/state/selectors/combiners/combineBarPosition.ts +23 -0
  133. package/src/state/selectors/combiners/combineBarSizeList.ts +79 -0
  134. package/src/state/selectors/combiners/{combineCheckedDomain.js → combineCheckedDomain.ts} +9 -6
  135. package/src/state/selectors/combiners/combineConfiguredScale.ts +100 -0
  136. package/src/state/selectors/combiners/combineCoordinateForDefaultIndex.ts +46 -0
  137. package/src/state/selectors/combiners/{combineDisplayedStackedData.js → combineDisplayedStackedData.ts} +23 -19
  138. package/src/state/selectors/combiners/combineInverseScaleFunction.ts +16 -0
  139. package/src/state/selectors/combiners/{combineRealScaleType.js → combineRealScaleType.ts} +16 -8
  140. package/src/state/selectors/combiners/combineStackedData.ts +27 -0
  141. package/src/state/selectors/combiners/combineTooltipInteractionState.ts +86 -0
  142. package/src/state/selectors/combiners/combineTooltipPayload.ts +201 -0
  143. package/src/state/selectors/combiners/{combineTooltipPayloadConfigurations.js → combineTooltipPayloadConfigurations.ts} +17 -18
  144. package/src/state/selectors/containerSelectors.ts +12 -0
  145. package/src/state/selectors/{dataSelectors.js → dataSelectors.ts} +43 -41
  146. package/src/state/selectors/funnelSelectors.ts +5 -5
  147. package/src/state/selectors/graphicalItemSelectors.ts +22 -0
  148. package/src/state/selectors/legendSelectors.ts +25 -0
  149. package/src/state/selectors/lineSelectors.ts +159 -0
  150. package/src/state/selectors/numberDomainEqualityCheck.ts +15 -0
  151. package/src/state/selectors/pickAxisId.ts +6 -0
  152. package/src/state/selectors/pickAxisType.ts +4 -0
  153. package/src/state/selectors/pieSelectors.ts +14 -13
  154. package/src/state/selectors/polarAxisSelectors.ts +223 -0
  155. package/src/state/selectors/polarSelectors.ts +1 -1
  156. package/src/state/selectors/radarSelectors.ts +1 -1
  157. package/src/state/selectors/radialBarSelectors.ts +17 -16
  158. package/src/state/selectors/rootPropsSelectors.ts +26 -0
  159. package/src/state/selectors/scatterSelectors.ts +11 -10
  160. package/src/state/selectors/{selectActivePropsFromChartPointer.js → selectActivePropsFromChartPointer.ts} +11 -4
  161. package/src/state/selectors/selectAllAxes.ts +20 -0
  162. package/src/state/selectors/selectChartOffset.ts +17 -0
  163. package/src/state/selectors/selectChartOffsetInternal.ts +147 -0
  164. package/src/state/selectors/{selectPlotArea.js → selectPlotArea.ts} +4 -3
  165. package/src/state/selectors/selectTooltipAxisId.ts +6 -0
  166. package/src/state/selectors/{selectTooltipAxisType.js → selectTooltipAxisType.ts} +10 -4
  167. package/src/state/selectors/selectTooltipEventType.ts +39 -0
  168. package/src/state/selectors/selectTooltipPayloadSearcher.ts +6 -0
  169. package/src/state/selectors/selectTooltipSettings.ts +6 -0
  170. package/src/state/selectors/selectTooltipState.ts +5 -0
  171. package/src/state/selectors/selectors.ts +315 -0
  172. package/src/state/selectors/tooltipSelectors.ts +611 -0
  173. package/src/state/selectors/touchSelectors.ts +52 -0
  174. package/src/state/{store.js → store.ts} +46 -36
  175. package/src/state/tooltipSlice.ts +507 -0
  176. package/src/state/{touchEventsMiddleware.js → touchEventsMiddleware.ts} +54 -42
  177. package/src/state/types/AreaSettings.ts +15 -0
  178. package/src/state/types/BarSettings.ts +15 -0
  179. package/src/state/types/LineSettings.ts +10 -0
  180. package/src/state/types/PieSettings.ts +32 -0
  181. package/src/state/types/RadarSettings.ts +6 -0
  182. package/src/state/types/RadialBarSettings.ts +10 -0
  183. package/src/state/types/ScatterSettings.ts +13 -0
  184. package/src/state/types/StackedGraphicalItem.ts +34 -0
  185. package/src/state/zIndexSlice.ts +137 -0
  186. package/src/synchronisation/syncSelectors.ts +7 -0
  187. package/src/synchronisation/types.ts +42 -0
  188. package/src/synchronisation/useChartSynchronisation.tsrx +26 -11
  189. package/src/types.ts +55 -0
  190. package/src/util/ActiveShapeUtils.tsrx +34 -10
  191. package/src/util/BarUtils.tsrx +43 -3
  192. package/src/util/{CartesianUtils.js → CartesianUtils.ts} +22 -39
  193. package/src/util/ChartUtils.ts +759 -0
  194. package/src/util/{Constants.js → Constants.ts} +6 -6
  195. package/src/util/DOMUtils.ts +135 -0
  196. package/src/util/{DataUtils.js → DataUtils.ts} +120 -47
  197. package/src/util/Events.ts +22 -0
  198. package/src/util/FunnelUtils.tsrx +3 -3
  199. package/src/util/Global.ts +13 -0
  200. package/src/util/IfOverflow.ts +16 -0
  201. package/src/util/LRUCache.ts +42 -0
  202. package/src/util/{LogUtils.js → LogUtils.ts} +7 -12
  203. package/src/util/OctaneTypes.ts +51 -0
  204. package/src/util/PolarUtils.ts +132 -0
  205. package/src/util/RadialBarUtils.tsrx +3 -3
  206. package/src/util/ReduceCSSCalc.ts +186 -0
  207. package/src/util/ScatterUtils.tsrx +9 -7
  208. package/src/util/{TickUtils.js → TickUtils.ts} +30 -13
  209. package/src/util/{YAxisUtils.js → YAxisUtils.ts} +27 -17
  210. package/src/util/axisPropsAreEqual.ts +49 -0
  211. package/src/util/createEventProxy.ts +20 -0
  212. package/src/util/{excludeEventProps.js → excludeEventProps.ts} +8 -6
  213. package/src/util/getActiveCoordinate.ts +210 -0
  214. package/src/util/{getAxisTypeBasedOnLayout.js → getAxisTypeBasedOnLayout.ts} +7 -3
  215. package/src/util/getClassNameFromUnknown.ts +7 -0
  216. package/src/util/{getEveryNth.js → getEveryNth.ts} +5 -6
  217. package/src/util/getRadiusAndStrokeWidthFromDot.ts +31 -0
  218. package/src/util/{getRelativeCoordinate.js → getRelativeCoordinate.ts} +26 -9
  219. package/src/util/getSliced.ts +14 -0
  220. package/src/util/{isDomainSpecifiedByUser.js → isDomainSpecifiedByUser.ts} +46 -100
  221. package/src/util/isWellBehavedNumber.ts +8 -0
  222. package/src/util/payload/getUniqPayload.ts +1 -1
  223. package/src/util/{propsAreEqual.js → propsAreEqual.ts} +10 -8
  224. package/src/util/{resolveDefaultProps.js → resolveDefaultProps.ts} +35 -57
  225. package/src/util/round.ts +33 -0
  226. package/src/util/scale/CustomScaleDefinition.ts +82 -0
  227. package/src/util/scale/RechartsScale.ts +131 -0
  228. package/src/util/scale/{createCategoricalInverse.js → createCategoricalInverse.ts} +24 -29
  229. package/src/util/scale/{getNiceTickValues.js → getNiceTickValues.ts} +125 -146
  230. package/src/util/scale/index.ts +2 -0
  231. package/src/util/scale/util/{arithmetic.js → arithmetic.ts} +12 -8
  232. package/src/util/stacks/getStackSeriesIdentifier.ts +21 -0
  233. package/src/util/stacks/stackTypes.ts +58 -0
  234. package/src/util/{svgPropertiesNoEvents.js → svgPropertiesNoEvents.ts} +52 -27
  235. package/src/util/tooltip/translate.ts +2 -1
  236. package/src/util/typedDataKey.ts +49 -0
  237. package/src/util/types.ts +1265 -7
  238. package/src/util/{useUniqueId.js → useUniqueId.ts} +9 -5
  239. package/src/zIndex/{DefaultZIndexes.js → DefaultZIndexes.ts} +13 -4
  240. package/src/zIndex/ZIndexLayer.tsrx +13 -4
  241. package/src/zIndex/ZIndexPortal.tsrx +14 -4
  242. package/src/zIndex/{getZIndexFromUnknown.js → getZIndexFromUnknown.ts} +3 -3
  243. package/src/zIndex/{zIndexSelectors.js → zIndexSelectors.ts} +17 -11
  244. package/src/animation/easing.js +0 -193
  245. package/src/animation/timeoutController.js +0 -49
  246. package/src/animation/util.js +0 -11
  247. package/src/cartesian/Area.tsrx.d.ts +0 -340
  248. package/src/cartesian/Bar.tsrx.d.ts +0 -4
  249. package/src/cartesian/BarStack.tsrx.d.ts +0 -6
  250. package/src/cartesian/CartesianAxis.tsrx.d.ts +0 -3
  251. package/src/cartesian/CartesianGrid.tsrx.d.ts +0 -219
  252. package/src/cartesian/ErrorBar.tsrx.d.ts +0 -131
  253. package/src/cartesian/Funnel.tsrx.d.ts +0 -274
  254. package/src/cartesian/Line.tsrx.d.ts +0 -4
  255. package/src/cartesian/LineDrawShape.tsrx.d.ts +0 -2
  256. package/src/cartesian/ReferenceLine.tsrx.d.ts +0 -178
  257. package/src/cartesian/Scatter.tsrx.d.ts +0 -351
  258. package/src/cartesian/XAxis.tsrx.d.ts +0 -3
  259. package/src/cartesian/YAxis.tsrx.d.ts +0 -3
  260. package/src/cartesian/ZAxis.tsrx.d.ts +0 -102
  261. package/src/cartesian/getCartesianPosition.js +0 -277
  262. package/src/cartesian/getEquidistantTicks.js +0 -133
  263. package/src/cartesian/getTicks.js +0 -280
  264. package/src/chart/AreaChart.tsrx.d.ts +0 -12
  265. package/src/chart/BarChart.tsrx.d.ts +0 -2
  266. package/src/chart/CartesianChart.tsrx.d.ts +0 -10
  267. package/src/chart/ComposedChart.tsrx.d.ts +0 -12
  268. package/src/chart/FunnelChart.tsrx.d.ts +0 -12
  269. package/src/chart/LineChart.tsrx.d.ts +0 -2
  270. package/src/chart/PieChart.tsrx.d.ts +0 -31
  271. package/src/chart/RadarChart.tsrx.d.ts +0 -31
  272. package/src/chart/RadialBarChart.tsrx.d.ts +0 -31
  273. package/src/chart/Sankey.tsrx.d.ts +0 -253
  274. package/src/chart/ScatterChart.tsrx.d.ts +0 -12
  275. package/src/chart/SunburstChart.tsrx.d.ts +0 -146
  276. package/src/component/DefaultLegendContent.tsrx.d.ts +0 -125
  277. package/src/component/DefaultTooltipContent.tsrx.d.ts +0 -87
  278. package/src/component/Label.tsrx.d.ts +0 -12
  279. package/src/component/LabelList.tsrx.d.ts +0 -8
  280. package/src/component/Legend.tsrx.d.ts +0 -88
  281. package/src/component/ResponsiveContainer.tsrx.d.ts +0 -81
  282. package/src/component/Text.tsrx.d.ts +0 -9
  283. package/src/component/Tooltip.tsrx.d.ts +0 -246
  284. package/src/container/Layer.tsrx.d.ts +0 -6
  285. package/src/container/Surface.tsrx.d.ts +0 -12
  286. package/src/context/accessibilityContext.js +0 -10
  287. package/src/context/tooltipContext.js +0 -55
  288. package/src/index.d.ts +0 -281
  289. package/src/polar/Pie.tsrx.d.ts +0 -436
  290. package/src/polar/PolarAngleAxis.tsrx.d.ts +0 -215
  291. package/src/polar/PolarGrid.tsrx.d.ts +0 -117
  292. package/src/polar/PolarRadiusAxis.tsrx.d.ts +0 -209
  293. package/src/polar/Radar.tsrx.d.ts +0 -215
  294. package/src/polar/RadialBar.tsrx.d.ts +0 -340
  295. package/src/shape/Cross.tsrx.d.ts +0 -12
  296. package/src/shape/Curve.tsrx.d.ts +0 -42
  297. package/src/shape/Dot.tsrx.d.ts +0 -9
  298. package/src/shape/Polygon.tsrx.d.ts +0 -13
  299. package/src/shape/Rectangle.tsrx.d.ts +0 -31
  300. package/src/shape/Sector.tsrx.d.ts +0 -29
  301. package/src/shape/Symbols.tsrx.d.ts +0 -15
  302. package/src/shape/Trapezoid.tsrx.d.ts +0 -29
  303. package/src/state/brushSlice.js +0 -36
  304. package/src/state/cartesianAxisSlice.js +0 -256
  305. package/src/state/chartDataSlice.js +0 -67
  306. package/src/state/errorBarSlice.js +0 -53
  307. package/src/state/eventSettingsSlice.js +0 -25
  308. package/src/state/graphicalItemsSlice.js +0 -91
  309. package/src/state/layoutSlice.js +0 -57
  310. package/src/state/legendSlice.js +0 -83
  311. package/src/state/optionsSlice.js +0 -45
  312. package/src/state/polarAxisSlice.js +0 -33
  313. package/src/state/polarOptionsSlice.js +0 -26
  314. package/src/state/reduxDevtoolsJsonStringifyReplacer.js +0 -14
  315. package/src/state/referenceElementsSlice.js +0 -51
  316. package/src/state/renderedTicksSlice.js +0 -41
  317. package/src/state/rootPropsSlice.js +0 -48
  318. package/src/state/selectors/axisSelectors.js +0 -2113
  319. package/src/state/selectors/barSelectors.js +0 -263
  320. package/src/state/selectors/barStackSelectors.js +0 -65
  321. package/src/state/selectors/brushSelectors.js +0 -21
  322. package/src/state/selectors/combiners/combineActiveLabel.js +0 -18
  323. package/src/state/selectors/combiners/combineAllBarPositions.js +0 -169
  324. package/src/state/selectors/combiners/combineAxisRangeWithReverse.js +0 -11
  325. package/src/state/selectors/combiners/combineBarPosition.js +0 -17
  326. package/src/state/selectors/combiners/combineBarSizeList.js +0 -115
  327. package/src/state/selectors/combiners/combineConfiguredScale.js +0 -46
  328. package/src/state/selectors/combiners/combineCoordinateForDefaultIndex.js +0 -48
  329. package/src/state/selectors/combiners/combineInverseScaleFunction.js +0 -12
  330. package/src/state/selectors/combiners/combineStackedData.js +0 -22
  331. package/src/state/selectors/combiners/combineTooltipInteractionState.js +0 -121
  332. package/src/state/selectors/combiners/combineTooltipPayload.js +0 -248
  333. package/src/state/selectors/containerSelectors.js +0 -6
  334. package/src/state/selectors/graphicalItemSelectors.js +0 -25
  335. package/src/state/selectors/legendSelectors.js +0 -18
  336. package/src/state/selectors/lineSelectors.js +0 -106
  337. package/src/state/selectors/numberDomainEqualityCheck.js +0 -11
  338. package/src/state/selectors/pickAxisId.js +0 -3
  339. package/src/state/selectors/pickAxisType.js +0 -3
  340. package/src/state/selectors/polarAxisSelectors.js +0 -237
  341. package/src/state/selectors/rootPropsSelectors.js +0 -13
  342. package/src/state/selectors/selectAllAxes.js +0 -15
  343. package/src/state/selectors/selectChartOffset.js +0 -12
  344. package/src/state/selectors/selectChartOffsetInternal.js +0 -174
  345. package/src/state/selectors/selectTooltipAxisId.js +0 -3
  346. package/src/state/selectors/selectTooltipEventType.js +0 -27
  347. package/src/state/selectors/selectTooltipPayloadSearcher.js +0 -3
  348. package/src/state/selectors/selectTooltipSettings.js +0 -3
  349. package/src/state/selectors/selectTooltipState.js +0 -3
  350. package/src/state/selectors/selectors.js +0 -222
  351. package/src/state/selectors/tooltipSelectors.js +0 -471
  352. package/src/state/selectors/touchSelectors.js +0 -31
  353. package/src/state/tooltipSlice.js +0 -237
  354. package/src/state/types/StackedGraphicalItem.js +0 -18
  355. package/src/state/zIndexSlice.js +0 -167
  356. package/src/synchronisation/syncSelectors.js +0 -5
  357. package/src/util/ChartUtils.js +0 -630
  358. package/src/util/DOMUtils.js +0 -180
  359. package/src/util/Events.js +0 -7
  360. package/src/util/Global.js +0 -13
  361. package/src/util/LRUCache.js +0 -58
  362. package/src/util/PolarUtils.js +0 -190
  363. package/src/util/ReduceCSSCalc.js +0 -260
  364. package/src/util/axisPropsAreEqual.js +0 -63
  365. package/src/util/createEventProxy.js +0 -18
  366. package/src/util/getActiveCoordinate.js +0 -253
  367. package/src/util/getClassNameFromUnknown.js +0 -8
  368. package/src/util/getRadiusAndStrokeWidthFromDot.js +0 -28
  369. package/src/util/getSliced.js +0 -11
  370. package/src/util/isWellBehavedNumber.js +0 -8
  371. package/src/util/round.js +0 -39
  372. package/src/util/scale/RechartsScale.js +0 -68
  373. package/src/util/scale/index.js +0 -3
  374. package/src/util/stacks/getStackSeriesIdentifier.js +0 -10
  375. package/src/zIndex/ZIndexLayer.tsrx.d.ts +0 -2
@@ -1,5 +1,6 @@
1
+ import type { ComponentType, OctaneElement, SVGProps } from '../util/OctaneTypes.ts';
1
2
  import * as React from 'octane';
2
- import { cloneElement, createElement, isValidElement, ReactElement, SVGProps } from 'octane';
3
+ import { cloneElement, createElement, isValidElement } from 'octane';
3
4
  import { clsx } from 'clsx';
4
5
  import {
5
6
  ChartOffsetInternal,
@@ -9,19 +10,19 @@ import {
9
10
  PolarCoordinate,
10
11
  TooltipEventType,
11
12
  } from '../util/types';
12
- import { Curve } from '../shape/Curve';
13
- import { Cross } from '../shape/Cross';
13
+ import { Curve } from '../shape/Curve.tsrx';
14
+ import { Cross } from '../shape/Cross.tsrx';
14
15
  import { getCursorRectangle } from '../util/cursor/getCursorRectangle';
15
- import { Rectangle } from '../shape/Rectangle';
16
+ import { Rectangle } from '../shape/Rectangle.tsrx';
16
17
  import { getRadialCursorPoints } from '../util/cursor/getRadialCursorPoints';
17
- import { Sector } from '../shape/Sector';
18
+ import { Sector } from '../shape/Sector.tsrx';
18
19
  import { getCursorPoints } from '../util/cursor/getCursorPoints';
19
20
  import { useChartLayout, useOffsetInternal } from '../context/chartLayoutContext';
20
21
  import { useTooltipAxisBandSize } from '../context/useTooltipAxis';
21
22
  import { useChartName } from '../state/selectors/selectors';
22
23
  import { TooltipIndex, TooltipPayload } from '../state/tooltipSlice';
23
24
  import { svgPropertiesNoEventsFromUnknown } from '../util/svgPropertiesNoEvents';
24
- import { ZIndexable, ZIndexLayer } from '../zIndex/ZIndexLayer';
25
+ import { ZIndexable, ZIndexLayer } from '../zIndex/ZIndexLayer.tsrx';
25
26
  import { DefaultZIndexes } from '../zIndex/DefaultZIndexes';
26
27
 
27
28
  /**
@@ -29,7 +30,7 @@ import { DefaultZIndexes } from '../zIndex/DefaultZIndexes';
29
30
  * If set an object, the option is the configuration of cursor.
30
31
  * If set a React element, the option is the custom react element of drawing cursor
31
32
  */
32
- export type CursorDefinition = boolean | ReactElement | SVGProps<SVGElement>;
33
+ export type CursorDefinition = boolean | OctaneElement | SVGProps<SVGElement>;
33
34
 
34
35
  export interface CursorProps extends ZIndexable {
35
36
  cursor: CursorDefinition;
@@ -53,7 +54,7 @@ function RenderCursor({
53
54
  cursorProps,
54
55
  }: {
55
56
  cursor: CursorDefinition;
56
- cursorComp: React.ComponentType<any>;
57
+ cursorComp: ComponentType<any>;
57
58
  cursorProps: any;
58
59
  }) {
59
60
  if (isValidElement(cursor)) {
@@ -82,7 +83,7 @@ export function CursorInternal(props: CursorConnectedProps) {
82
83
  if (!cursor || !activeCoordinate || chartName !== 'ScatterChart' && tooltipEventType !== 'axis') {
83
84
  return null;
84
85
  }
85
- let restProps, cursorComp: React.ComponentType<any>, preferredZIndex: number;
86
+ let restProps, cursorComp: ComponentType<any>, preferredZIndex: number;
86
87
 
87
88
  if (chartName === 'ScatterChart') {
88
89
  restProps = activeCoordinate;
@@ -110,7 +111,7 @@ export function CursorInternal(props: CursorConnectedProps) {
110
111
  preferredZIndex = DefaultZIndexes.cursorLine;
111
112
  }
112
113
 
113
- const extraClassName: string | undefined =
114
+ const extraClassName =
114
115
  typeof cursor === 'object' && 'className' in cursor ? cursor.className : undefined;
115
116
 
116
117
  const cursorProps = {
@@ -1,9 +1,14 @@
1
+ import type {
2
+ CSSProperties,
3
+ NativeMouseEvent,
4
+ OctaneElement,
5
+ OctaneNode,
6
+ } from '../util/OctaneTypes.ts';
1
7
  import * as React from 'octane';
2
- import { ReactNode, MouseEvent, ReactElement, CSSProperties } from 'octane';
3
8
 
4
9
  import { clsx } from 'clsx';
5
- import { Surface } from '../container/Surface';
6
- import { Symbols } from '../shape/Symbols';
10
+ import { Surface } from '../container/Surface.tsrx';
11
+ import { Symbols } from '../shape/Symbols.tsrx';
7
12
  import {
8
13
  DataKey,
9
14
  LegendType,
@@ -14,11 +19,11 @@ import {
14
19
  import { RequiresDefaultProps, resolveDefaultProps } from '../util/resolveDefaultProps';
15
20
 
16
21
  const SIZE = 32;
17
- export type ContentType = ReactElement | ((props: Props) => ReactNode);
22
+ export type ContentType = OctaneElement | ((props: Props) => OctaneNode);
18
23
 
19
24
  export type HorizontalAlignmentType = 'center' | 'left' | 'right';
20
25
  export type VerticalAlignmentType = 'top' | 'bottom' | 'middle';
21
- export type Formatter = (value: any, entry: LegendPayload, index: number) => ReactNode;
26
+ export type Formatter = (value: any, entry: LegendPayload, index: number) => OctaneNode;
22
27
 
23
28
  export interface LegendPayload {
24
29
  /**
@@ -35,7 +40,7 @@ export interface LegendPayload {
35
40
  payload?: object;
36
41
  formatter?: Formatter;
37
42
  inactive?: boolean;
38
- legendIcon?: ReactElement<SVGElement>;
43
+ legendIcon?: OctaneElement<SVGElement>;
39
44
  dataKey?: DataKey<any>;
40
45
  }
41
46
 
@@ -95,16 +100,16 @@ interface DefaultLegendContentProps {
95
100
  * The customized event handler of mouseenter on the items in this group
96
101
  * @example https://recharts.github.io/examples/LegendEffectOpacity
97
102
  */
98
- onMouseEnter?: (data: LegendPayload, index: number, event: MouseEvent<HTMLElement>) => void;
103
+ onMouseEnter?: (data: LegendPayload, index: number, event: NativeMouseEvent<HTMLElement>) => void;
99
104
  /**
100
105
  * The customized event handler of mouseleave on the items in this group
101
106
  * @example https://recharts.github.io/examples/LegendEffectOpacity
102
107
  */
103
- onMouseLeave?: (data: LegendPayload, index: number, event: MouseEvent<HTMLElement>) => void;
108
+ onMouseLeave?: (data: LegendPayload, index: number, event: NativeMouseEvent<HTMLElement>) => void;
104
109
  /**
105
110
  * The customized event handler of click on the items in this group
106
111
  */
107
- onClick?: (data: LegendPayload, index: number, event: MouseEvent<HTMLElement>) => void;
112
+ onClick?: (data: LegendPayload, index: number, event: NativeMouseEvent<HTMLElement>) => void;
108
113
  /**
109
114
  * DefaultLegendContent.payload is omitted from Legend props.
110
115
  * A custom payload can be passed here if desired, or it can be passed from the Legend "content" callback.
@@ -119,7 +124,7 @@ interface DefaultLegendContentProps {
119
124
 
120
125
  export type Props =
121
126
  DefaultLegendContentProps & Omit<
122
- PresentationAttributesAdaptChildEvent<any, ReactElement>,
127
+ PresentationAttributesAdaptChildEvent<any, OctaneElement>,
123
128
  keyof DefaultLegendContentProps
124
129
  >;
125
130
 
@@ -1,9 +1,10 @@
1
+ import type { CSSProperties, HTMLAttributes, OctaneNode, SVGProps } from '../util/OctaneTypes.ts';
1
2
  /**
2
3
  * @fileOverview Default Tooltip Content
3
4
  */
4
5
 
5
6
  import * as React from 'octane';
6
- import { CSSProperties, HTMLAttributes, ReactNode, SVGProps, type OctaneNode } from 'octane';
7
+
7
8
  import sortBy from 'es-toolkit/compat/sortBy';
8
9
  import { clsx } from 'clsx';
9
10
  import { isNullish, isNumOrStr } from '../util/DataUtils';
@@ -35,7 +36,7 @@ export interface Payload<
35
36
  formatter?: Formatter<TValue, TName>;
36
37
  name?: TName;
37
38
  value?: TValue;
38
- unit?: ReactNode;
39
+ unit?: OctaneNode;
39
40
  fill?: string;
40
41
  dataKey?: DataKey<any>;
41
42
  nameKey?: DataKey<any>;
@@ -69,8 +70,10 @@ export interface Props<TValue extends ValueType = ValueType, TName extends NameT
69
70
  contentStyle?: CSSProperties;
70
71
  itemStyle?: CSSProperties;
71
72
  labelStyle?: CSSProperties;
72
- labelFormatter?: (label: ReactNode, payload: ReadonlyArray<Payload<TValue, TName>>) => ReactNode;
73
- label?: ReactNode;
73
+ labelFormatter?: (label: OctaneNode, payload: ReadonlyArray<
74
+ Payload<TValue, TName>
75
+ >) => OctaneNode;
76
+ label?: OctaneNode;
74
77
  payload?: ReadonlyArray<Payload<TValue, TName>>;
75
78
  itemSorter?: TooltipItemSorter<TValue, TName>;
76
79
  accessibilityLayer?: boolean;
@@ -95,15 +98,14 @@ export const defaultDefaultTooltipContentProps = {
95
98
  accessibilityLayer: false,
96
99
  } as const satisfies Partial<Props<any, any>>;
97
100
 
98
- function lodashLikeSortBy<T>(
101
+ function lodashLikeSortBy<T extends Payload>(
99
102
  array: ReadonlyArray<T>,
100
103
  itemSorter: TooltipItemSorter | undefined,
101
104
  ): ReadonlyArray<T> {
102
105
  if (itemSorter == null) {
103
106
  return array;
104
107
  }
105
- // @ts-expect-error sortBy types somehow are returning a number type.
106
- return sortBy(array, itemSorter);
108
+ return sortBy<T>(array, itemSorter);
107
109
  }
108
110
 
109
111
  /**
@@ -181,7 +183,7 @@ export const DefaultTooltipContent = (props: Props) => {
181
183
  return null;
182
184
  };
183
185
 
184
- const finalStyle: React.CSSProperties = {
186
+ const finalStyle: CSSProperties = {
185
187
  ...defaultDefaultTooltipContentProps.contentStyle,
186
188
  ...contentStyle,
187
189
  };
@@ -190,7 +192,7 @@ export const DefaultTooltipContent = (props: Props) => {
190
192
  ...labelStyle,
191
193
  };
192
194
  const hasLabel = !isNullish(label);
193
- let finalLabel: ReactNode = hasLabel ? label : '';
195
+ let finalLabel: OctaneNode = hasLabel ? label : '';
194
196
  const wrapperCN = clsx('recharts-default-tooltip', wrapperClassName);
195
197
  const labelCN = clsx('recharts-tooltip-label', labelClassName);
196
198
 
@@ -1,3 +1,32 @@
1
+ import type { Props as DotProps } from '../shape/Dot.tsrx';
2
+ import type { OctaneElement } from '../util/OctaneTypes.ts';
3
+ import type { DataKey, DotItemDotProps, DotType } from '../util/types';
4
+ import type { ZIndexable } from '../zIndex/ZIndexLayer.tsrx';
5
+
6
+ export interface DotPoint {
7
+ readonly x: number | null;
8
+ readonly y: number | null;
9
+ readonly value?: any;
10
+ readonly payload?: any;
11
+ }
12
+ type DotItemProps = {
13
+ option: DotType;
14
+ dotProps: DotItemDotProps;
15
+ className: string;
16
+ };
17
+ type DotElementProps = Extract<DotType, OctaneElement>['props'];
18
+ export type DotsDotProps =
19
+ Omit<DotProps, 'cx' | 'cy' | 'key' | 'index' | 'dataKey' | 'value' | 'payload'>;
20
+ interface DotsProps extends ZIndexable {
21
+ points: ReadonlyArray<DotPoint>;
22
+ dot: DotType;
23
+ className: string;
24
+ dotClassName: string;
25
+ dataKey: DataKey<any> | undefined;
26
+ baseProps: DotsDotProps;
27
+ needClip?: boolean;
28
+ clipPathId?: string;
29
+ }
1
30
  // Port of component/Dots.tsx — the dot layer Line/Area/Radar render per data
2
31
  // point; `dot` accepts boolean | props object | element | render function.
3
32
  import { cloneElement, isValidElement } from 'octane';
@@ -9,9 +38,9 @@ import { svgPropertiesAndEventsFromUnknown } from '../util/svgPropertiesAndEvent
9
38
  import { ZIndexLayer } from '../zIndex/ZIndexLayer.tsrx';
10
39
  import { DefaultZIndexes } from '../zIndex/DefaultZIndexes';
11
40
 
12
- function DotItem(props) {
41
+ function DotItem(props: DotItemProps) {
13
42
  const { option, dotProps, className } = props;
14
- if (isValidElement(option)) {
43
+ if (isValidElement<DotElementProps>(option)) {
15
44
  return cloneElement(option, dotProps);
16
45
  }
17
46
  if (typeof option === 'function') {
@@ -22,7 +51,7 @@ function DotItem(props) {
22
51
  return <Dot {...rest} className={finalClassName} />;
23
52
  }
24
53
 
25
- function shouldRenderDots(points, dot) {
54
+ function shouldRenderDots(points: ReadonlyArray<DotPoint> | undefined, dot: DotType) {
26
55
  if (points == null) {
27
56
  return false;
28
57
  }
@@ -32,7 +61,7 @@ function shouldRenderDots(points, dot) {
32
61
  return points.length === 1;
33
62
  }
34
63
 
35
- export function Dots(dotsProps) {
64
+ export function Dots(dotsProps: DotsProps) {
36
65
  const {
37
66
  points,
38
67
  dot,
@@ -50,7 +79,7 @@ export function Dots(dotsProps) {
50
79
  const clipDot = isClipDot(dot);
51
80
  const customDotProps = svgPropertiesAndEventsFromUnknown(dot);
52
81
  const dots = points.map((entry, i) => {
53
- const dotProps = {
82
+ const dotProps: DotItemDotProps = {
54
83
  r: 3,
55
84
  ...baseProps,
56
85
  ...customDotProps,
@@ -64,7 +93,9 @@ export function Dots(dotsProps) {
64
93
  };
65
94
  return <DotItem key={'dot-' + i} option={dot} dotProps={dotProps} className={dotClassName} />;
66
95
  });
67
- const layerProps = {};
96
+ const layerProps: {
97
+ clipPath?: string;
98
+ } = {};
68
99
  if (needClip && clipPathId != null) {
69
100
  layerProps.clipPath = 'url(#clipPath-' + (clipDot ? '' : 'dots-') + clipPathId + ')';
70
101
  }
@@ -1,3 +1,58 @@
1
+ import type { OctaneElement, OctaneNode, RefObject, SVGProps } from '../util/OctaneTypes.ts';
2
+ import type { RenderableText, TextAnchor, TextVerticalAnchor } from './Text.tsrx';
3
+ import type {
4
+ CartesianViewBoxRequired,
5
+ DataKey,
6
+ PolarViewBoxRequired,
7
+ TrapezoidViewBox,
8
+ ViewBox,
9
+ } from '../util/types';
10
+ import type { ZIndexable } from '../zIndex/ZIndexLayer.tsrx';
11
+ import type { CartesianLabelPosition } from '../cartesian/getCartesianPosition';
12
+
13
+ export type LabelContentType = OctaneElement | ((props: Props) => RenderableText | OctaneElement);
14
+ type PolarLabelPosition = 'insideStart' | 'insideEnd' | 'end';
15
+ export type LabelPosition = CartesianLabelPosition | PolarLabelPosition;
16
+ export type LabelFormatter = (label: RenderableText) => RenderableText;
17
+ interface LabelProps extends ZIndexable {
18
+ viewBox?: ViewBox;
19
+ parentViewBox?: ViewBox;
20
+ formatter?: LabelFormatter;
21
+ value?: RenderableText;
22
+ offset?: number;
23
+ position?: LabelPosition;
24
+ children?: RenderableText;
25
+ className?: SVGProps<SVGTextElement>['className'];
26
+ content?: LabelContentType;
27
+ textBreakAll?: boolean;
28
+ angle?: number;
29
+ index?: number;
30
+ labelRef?: RefObject<SVGTextElement | null> | null;
31
+ zIndex?: number;
32
+ id?: string;
33
+ }
34
+ export type Props = Omit<SVGProps<SVGTextElement>, 'viewBox'> & LabelProps;
35
+ type PropsWithDefaults =
36
+ Props & {
37
+ offset: number;
38
+ };
39
+ export type ImplicitLabelType =
40
+ | boolean
41
+ | string
42
+ | number
43
+ | OctaneElement<SVGElement>
44
+ | ((props: any) => RenderableText | OctaneElement)
45
+ | (Props & {
46
+ dataKey?: DataKey<any>;
47
+ });
48
+ export type LabelPositionAttributes = {
49
+ x: number;
50
+ y: number;
51
+ textAnchor: TextAnchor;
52
+ verticalAnchor: TextVerticalAnchor;
53
+ width?: number;
54
+ height?: number;
55
+ };
1
56
  // Port of component/Label.tsx — chart labels with cartesian + polar
2
57
  // positioning, radial (textPath) rendering, and the label-as-prop parser
3
58
  // (boolean | value | element | function | object). Element-as-prop resolves
@@ -23,9 +78,11 @@ import { ZIndexLayer } from '../zIndex/ZIndexLayer.tsrx';
23
78
  import { DefaultZIndexes } from '../zIndex/DefaultZIndexes';
24
79
  import { getCartesianPosition } from '../cartesian/getCartesianPosition';
25
80
 
26
- const CartesianLabelContext = createContext(null);
81
+ const CartesianLabelContext = createContext<TrapezoidViewBox | null>(null);
27
82
 
28
- export function CartesianLabelContextProvider(props) @{
83
+ export function CartesianLabelContextProvider(props: TrapezoidViewBox & {
84
+ children: OctaneNode;
85
+ }) @{
29
86
  const { x, y, upperWidth, lowerWidth, width, height, children } = props;
30
87
  const viewBox = useMemo(() => ({ x, y, upperWidth, lowerWidth, width, height }), [
31
88
  x,
@@ -45,9 +102,11 @@ function useCartesianLabelContext() {
45
102
  (chartContext ? cartesianViewBoxToTrapezoid(chartContext) : undefined);
46
103
  }
47
104
 
48
- const PolarLabelContext = createContext(null);
105
+ const PolarLabelContext = createContext<PolarViewBoxRequired | null>(null);
49
106
 
50
- export function PolarLabelContextProvider(props) @{
107
+ export function PolarLabelContextProvider(props: PolarViewBoxRequired & {
108
+ children: OctaneNode;
109
+ }) @{
51
110
  const { cx, cy, innerRadius, outerRadius, startAngle, endAngle, clockWise, children } = props;
52
111
  const viewBox = useMemo(
53
112
  () => ({ cx, cy, innerRadius, outerRadius, startAngle, endAngle, clockWise }),
@@ -62,7 +121,7 @@ export function usePolarLabelContext() {
62
121
  return labelChildContext || chartContext;
63
122
  }
64
123
 
65
- const getLabel = (props) => {
124
+ const getLabel = (props: Props) => {
66
125
  const { value, formatter } = props;
67
126
  const label = isNullish(props.children) ? value : props.children;
68
127
  if (typeof formatter === 'function') {
@@ -71,17 +130,23 @@ const getLabel = (props) => {
71
130
  return label;
72
131
  };
73
132
 
74
- export function isLabelContentAFunction(content) {
133
+ export function isLabelContentAFunction(content: unknown) {
75
134
  return content != null && typeof content === 'function';
76
135
  }
77
136
 
78
- const getDeltaAngle = (startAngle, endAngle) => {
137
+ const getDeltaAngle = (startAngle: number, endAngle: number) => {
79
138
  const sign = mathSign(endAngle - startAngle);
80
139
  const deltaAngle = Math.min(Math.abs(endAngle - startAngle), 360);
81
140
  return sign * deltaAngle;
82
141
  };
83
142
 
84
- function renderRadialLabel(labelProps, position, label, attrs, viewBox) {
143
+ function renderRadialLabel(
144
+ labelProps: PropsWithDefaults,
145
+ position: PolarLabelPosition,
146
+ label: OctaneNode,
147
+ attrs: SVGProps<SVGTextElement>,
148
+ viewBox: PolarViewBoxRequired,
149
+ ) {
85
150
  const { offset, className } = labelProps;
86
151
  const { cx, cy, innerRadius, outerRadius, startAngle, endAngle, clockWise } = viewBox;
87
152
  const radius = (innerRadius + outerRadius) / 2;
@@ -129,7 +194,11 @@ function renderRadialLabel(labelProps, position, label, attrs, viewBox) {
129
194
  </text>;
130
195
  }
131
196
 
132
- const getAttrsOfPolarLabel = (viewBox, offset, position) => {
197
+ const getAttrsOfPolarLabel = (
198
+ viewBox: PolarViewBoxRequired,
199
+ offset: number,
200
+ position: LabelPosition | undefined,
201
+ ): LabelPositionAttributes => {
133
202
  const { cx, cy, innerRadius, outerRadius, startAngle, endAngle } = viewBox;
134
203
  const midAngle = (startAngle + endAngle) / 2;
135
204
  if (position === 'outside') {
@@ -155,7 +224,9 @@ const getAttrsOfPolarLabel = (viewBox, offset, position) => {
155
224
  return { x, y, textAnchor: 'middle', verticalAnchor: 'middle' };
156
225
  };
157
226
 
158
- const isPolar = (viewBox) => viewBox != null && 'cx' in viewBox && isNumber(viewBox.cx);
227
+ const isPolar = (
228
+ viewBox: CartesianViewBoxRequired | TrapezoidViewBox | PolarViewBoxRequired | undefined,
229
+ ): viewBox is PolarViewBoxRequired => viewBox != null && 'cx' in viewBox && isNumber(viewBox.cx);
159
230
 
160
231
  export const defaultLabelProps = {
161
232
  angle: 0,
@@ -163,9 +234,9 @@ export const defaultLabelProps = {
163
234
  zIndex: DefaultZIndexes.label,
164
235
  position: 'middle',
165
236
  textBreakAll: false,
166
- };
237
+ } as const satisfies Partial<Props>;
167
238
 
168
- function polarViewBoxToTrapezoid(viewBox) {
239
+ function polarViewBoxToTrapezoid(viewBox: PolarViewBoxRequired | TrapezoidViewBox | undefined) {
169
240
  if (!isPolar(viewBox)) {
170
241
  return viewBox;
171
242
  }
@@ -181,8 +252,8 @@ function polarViewBoxToTrapezoid(viewBox) {
181
252
  };
182
253
  }
183
254
 
184
- export function Label(outerProps) {
185
- const props = resolveDefaultProps(outerProps, defaultLabelProps);
255
+ export function Label(outerProps: Props) {
256
+ const props: PropsWithDefaults = resolveDefaultProps(outerProps, defaultLabelProps);
186
257
  const {
187
258
  viewBox: viewBoxFromProps,
188
259
  parentViewBox,
@@ -200,7 +271,7 @@ export function Label(outerProps) {
200
271
  // position 'center' prefers the cartesian box (recharts#6030 quick fix).
201
272
  const resolvedViewBox =
202
273
  position === 'center' ? cartesianViewBox : polarViewBox ?? cartesianViewBox;
203
- let viewBox, label, positionAttrs;
274
+ let viewBox, label, positionAttrs: LabelPositionAttributes;
204
275
  if (viewBoxFromProps == null) {
205
276
  viewBox = resolvedViewBox;
206
277
  } else if (isPolar(viewBoxFromProps)) {
@@ -270,7 +341,11 @@ export function Label(outerProps) {
270
341
 
271
342
  Label.displayName = 'Label';
272
343
 
273
- const parseLabel = (label, viewBox, labelRef) => {
344
+ const parseLabel = (
345
+ label: ImplicitLabelType | undefined,
346
+ viewBox: ViewBox | undefined,
347
+ labelRef?: RefObject<SVGTextElement | null> | null,
348
+ ) => {
274
349
  if (!label) {
275
350
  return null;
276
351
  }
@@ -281,7 +356,7 @@ const parseLabel = (label, viewBox, labelRef) => {
281
356
  if (isNumOrStr(label)) {
282
357
  return <Label key="label-implicit" value={label} {...commonProps} />;
283
358
  }
284
- if (isValidElement(label)) {
359
+ if (isValidElement<SVGElement>(label)) {
285
360
  if (label.type === Label) {
286
361
  return cloneElement(label, { key: 'label-implicit', ...commonProps });
287
362
  }
@@ -296,13 +371,18 @@ const parseLabel = (label, viewBox, labelRef) => {
296
371
  return null;
297
372
  };
298
373
 
299
- export function CartesianLabelFromLabelProp(props) {
374
+ export function CartesianLabelFromLabelProp(props: {
375
+ label: ImplicitLabelType | undefined;
376
+ labelRef?: RefObject<SVGTextElement | null> | null;
377
+ }) {
300
378
  const { label, labelRef } = props;
301
379
  const viewBox = useCartesianLabelContext();
302
380
  return parseLabel(label, viewBox, labelRef) || null;
303
381
  }
304
382
 
305
- export function PolarLabelFromLabelProp(props) {
383
+ export function PolarLabelFromLabelProp(props: {
384
+ label: ImplicitLabelType | undefined;
385
+ }) {
306
386
  const { label } = props;
307
387
  const viewBox = usePolarLabelContext();
308
388
  return parseLabel(label, viewBox) || null;
@@ -1,3 +1,46 @@
1
+ import type { SVGProps, PropsWithoutRef } from '../util/OctaneTypes.ts';
2
+ import type { LabelContentType, LabelPosition, LabelFormatter } from './Label.tsrx';
3
+ import type {
4
+ CartesianViewBoxRequired,
5
+ DataKey,
6
+ PolarViewBoxRequired,
7
+ TrapezoidViewBox,
8
+ } from '../util/types';
9
+ import type { LabelProps } from '../index';
10
+ import type { ZIndexable } from '../zIndex/ZIndexLayer.tsrx';
11
+ import type { RenderableText } from './Text.tsrx';
12
+
13
+ export interface LabelListEntry<DataPointItem = any> {
14
+ value: unknown;
15
+ payload: DataPointItem;
16
+ fill: string | undefined;
17
+ }
18
+ export interface CartesianLabelListEntry extends LabelListEntry, TrapezoidViewBox {
19
+ viewBox: TrapezoidViewBox;
20
+ parentViewBox?: CartesianViewBoxRequired;
21
+ }
22
+ export interface PolarLabelListEntry extends LabelListEntry {
23
+ viewBox: PolarViewBoxRequired;
24
+ parentViewBox?: PolarViewBoxRequired;
25
+ clockWise?: boolean;
26
+ }
27
+ interface LabelListProps extends ZIndexable {
28
+ id?: string;
29
+ valueAccessor?: (entry: | CartesianLabelListEntry
30
+ | PolarLabelListEntry, index: number) => RenderableText;
31
+ clockWise?: boolean;
32
+ dataKey?: DataKey<any>;
33
+ content?: LabelContentType;
34
+ textBreakAll?: boolean;
35
+ position?: LabelPosition;
36
+ offset?: LabelProps['offset'];
37
+ angle?: number;
38
+ formatter?: LabelFormatter;
39
+ zIndex?: number;
40
+ }
41
+ type SvgTextProps = PropsWithoutRef<SVGProps<SVGTextElement>>;
42
+ export type Props = Omit<SvgTextProps, 'children'> & LabelListProps;
43
+ export type ImplicitLabelListType = boolean | LabelContentType | Props;
1
44
  // Port of component/LabelList.tsx — one Label per data entry, fed by the
2
45
  // cartesian/polar label-list contexts the graphical items provide.
3
46
  import { createContext, useContext, isValidElement } from 'octane';
@@ -10,7 +53,7 @@ import { ZIndexLayer } from '../zIndex/ZIndexLayer.tsrx';
10
53
  import { DefaultZIndexes } from '../zIndex/DefaultZIndexes';
11
54
  import { isRenderableText } from './Text.tsrx';
12
55
 
13
- const defaultAccessor = (entry) => {
56
+ const defaultAccessor = (entry: LabelListEntry) => {
14
57
  const val = Array.isArray(entry.value) ? entry.value[entry.value.length - 1] : entry.value;
15
58
  if (isRenderableText(val)) {
16
59
  return val;
@@ -18,9 +61,13 @@ const defaultAccessor = (entry) => {
18
61
  return undefined;
19
62
  };
20
63
 
21
- const CartesianLabelListContext = createContext(undefined);
64
+ const CartesianLabelListContext = createContext<ReadonlyArray<CartesianLabelListEntry> | undefined>(
65
+ undefined,
66
+ );
22
67
  export const CartesianLabelListContextProvider = CartesianLabelListContext.Provider;
23
- const PolarLabelListContext = createContext(undefined);
68
+ const PolarLabelListContext = createContext<ReadonlyArray<PolarLabelListEntry> | undefined>(
69
+ undefined,
70
+ );
24
71
  export const PolarLabelListContextProvider = PolarLabelListContext.Provider;
25
72
 
26
73
  function useCartesianLabelListContext() {
@@ -30,7 +77,7 @@ function usePolarLabelListContext() {
30
77
  return useContext(PolarLabelListContext);
31
78
  }
32
79
 
33
- export function LabelList(labelListProps) {
80
+ export function LabelList(labelListProps: Props) {
34
81
  const { valueAccessor = defaultAccessor, ...restProps } = labelListProps;
35
82
  const { dataKey, clockWise, id, textBreakAll, zIndex, ...others } = restProps;
36
83
  const cartesianData = useCartesianLabelListContext();
@@ -65,7 +112,9 @@ export function LabelList(labelListProps) {
65
112
 
66
113
  LabelList.displayName = 'LabelList';
67
114
 
68
- export function LabelListFromLabelProp(props) {
115
+ export function LabelListFromLabelProp(props: {
116
+ label?: ImplicitLabelListType;
117
+ }) {
69
118
  const { label } = props;
70
119
  if (!label) {
71
120
  return null;
@@ -1,5 +1,6 @@
1
+ import type { CSSProperties } from '../util/OctaneTypes.ts';
1
2
  import * as React from 'octane';
2
- import { CSSProperties, useLayoutEffect } from 'octane';
3
+ import { useLayoutEffect } from 'octane';
3
4
  import { createPortal } from 'octane';
4
5
  import { useLegendPortal } from '../context/legendPortalContext';
5
6
  import {
@@ -8,11 +9,11 @@ import {
8
9
  LegendPayload,
9
10
  Props as DefaultLegendContentProps,
10
11
  VerticalAlignmentType,
11
- } from './DefaultLegendContent';
12
+ } from './DefaultLegendContent.tsrx';
12
13
 
13
14
  import { LayoutType, Margin, Size } from '../util/types';
14
15
  import { getUniqPayload, UniqueOption } from '../util/payload/getUniqPayload';
15
- import { useLegendPayload } from '../context/legendPayloadContext';
16
+ import { useLegendPayload } from '../context/legendPayloadContext.tsrx';
16
17
  import { ElementOffset, useElementOffset } from '../util/useElementOffset';
17
18
  import { useChartHeight, useChartWidth, useMargin } from '../context/chartLayoutContext';
18
19
  import { LegendSettings, setLegendSettings, setLegendSize } from '../state/legendSlice';
@@ -44,7 +45,7 @@ function LegendContent(props: ContentProps) {
44
45
  return React.cloneElement(props.content, contentProps);
45
46
  }
46
47
  if (typeof props.content === 'function') {
47
- return React.createElement(props.content as any, contentProps);
48
+ return React.createElement(props.content, contentProps);
48
49
  }
49
50
 
50
51
  return <DefaultLegendContent {...contentProps} />;
@@ -297,6 +298,9 @@ function LegendImpl(outsideProps: Props) {
297
298
  return createPortal(legendElement, legendPortal);
298
299
  }
299
300
 
300
- export const Legend = React.memo(LegendImpl, propsAreEqual);
301
+ export const Legend = React.memo(LegendImpl, propsAreEqual) as
302
+ typeof LegendImpl & {
303
+ displayName?: string;
304
+ };
301
305
 
302
306
  Legend.displayName = 'Legend';