@octanejs/recharts 0.1.41 → 0.1.43

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,16 @@
1
+ import type { CellPropsFor } from '../component/Cell';
2
+ import type { RegisteredCell } from '../context/CellsContext.ts';
3
+
4
+ import type {
5
+ ComponentProps,
6
+ MutableRefObject,
7
+ NativeMouseEvent,
8
+ NativeTouchEvent,
9
+ OctaneElement,
10
+ OctaneNode,
11
+ } from '../util/OctaneTypes.ts';
1
12
  import * as React from 'octane';
2
- import { MutableRefObject, ReactElement, ReactNode, useRef } from 'octane';
13
+ import { useRef } from 'octane';
3
14
  import { clsx } from 'clsx';
4
15
 
5
16
  import { Series } from 'victory-vendor/d3-shape';
@@ -8,15 +19,15 @@ import {
8
19
  parseCornerRadius,
9
20
  RadialBarSector,
10
21
  RadialBarSectorProps,
11
- } from '../util/RadialBarUtils';
12
- import { Props as SectorProps } from '../shape/Sector';
13
- import { Layer } from '../container/Layer';
22
+ } from '../util/RadialBarUtils.tsrx';
23
+ import { defaultSectorProps, type Props as SectorProps } from '../shape/Sector.tsrx';
24
+ import { Layer } from '../container/Layer.tsrx';
14
25
  import {
15
26
  ImplicitLabelListType,
16
27
  LabelListFromLabelProp,
17
28
  PolarLabelListContextProvider,
18
29
  PolarLabelListEntry,
19
- } from '../component/LabelList';
30
+ } from '../component/LabelList.tsrx';
20
31
  import { interpolate, mathSign, noop } from '../util/DataUtils';
21
32
  import {
22
33
  BarPositionPosition,
@@ -33,9 +44,9 @@ import {
33
44
  EasingInput,
34
45
  DataConsumer,
35
46
  DataKey,
47
+ GeometrySector,
36
48
  LayoutType,
37
49
  LegendType,
38
- PolarViewBoxRequired,
39
50
  PresentationAttributesAdaptChildEvent,
40
51
  ShapeAnimationProps,
41
52
  TickItem,
@@ -50,7 +61,7 @@ import {
50
61
  } from '../context/tooltipContext';
51
62
  import { TooltipPayloadConfiguration } from '../state/tooltipSlice';
52
63
  import { SetTooltipEntrySettings } from '../state/SetTooltipEntrySettings';
53
- import { Formatter } from '../component/DefaultTooltipContent';
64
+ import { Formatter } from '../component/DefaultTooltipContent.tsrx';
54
65
  import { BaseAxisWithScale } from '../state/selectors/axisSelectors';
55
66
  import { ChartData } from '../state/chartDataSlice';
56
67
  import {
@@ -64,10 +75,10 @@ import {
64
75
  AnimatedItems,
65
76
  AnimationInterpolateFn,
66
77
  useAnimationCallbacks,
67
- } from '../animation/AnimatedItems';
78
+ } from '../animation/AnimatedItems.tsrx';
68
79
  import { AnimationMatchByProp, matchAppend } from '../animation/matchBy';
69
80
  import { AxisId } from '../state/cartesianAxisSlice';
70
- import { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId';
81
+ import { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId.tsrx';
71
82
  import type { RadialBarSettings } from '../state/types/RadialBarSettings';
72
83
  import { SetPolarGraphicalItem } from '../state/SetGraphicalItem';
73
84
  import {
@@ -76,7 +87,7 @@ import {
76
87
  } from '../util/svgPropertiesNoEvents';
77
88
  import { RequiresDefaultProps, resolveDefaultProps } from '../util/resolveDefaultProps';
78
89
  import { WithIdRequired } from '../util/useUniqueId';
79
- import { ZIndexable, ZIndexLayer } from '../zIndex/ZIndexLayer';
90
+ import { ZIndexable, ZIndexLayer } from '../zIndex/ZIndexLayer.tsrx';
80
91
  import { DefaultZIndexes } from '../zIndex/DefaultZIndexes';
81
92
  import { getZIndexFromUnknown } from '../zIndex/getZIndexFromUnknown';
82
93
  import { usePolarChartLayout } from '../context/chartLayoutContext';
@@ -85,7 +96,7 @@ import { CellsContext, useCellRegistry } from '../context/CellsContext';
85
96
  const STABLE_EMPTY_ARRAY: readonly RadialBarDataItem[] = [];
86
97
 
87
98
  export type RadialBarDataItem =
88
- SectorProps & PolarViewBoxRequired & TooltipTriggerInfo & {
99
+ SectorProps & GeometrySector & TooltipTriggerInfo & {
89
100
  value?: any;
90
101
  payload?: any;
91
102
  background?: SectorProps;
@@ -107,7 +118,7 @@ function RadialBarLabelListProvider({
107
118
  }: {
108
119
  showLabels: boolean;
109
120
  sectors: ReadonlyArray<RadialBarDataItem>;
110
- children: ReactNode;
121
+ children: OctaneNode;
111
122
  }) {
112
123
  const labelListEntries: ReadonlyArray<PolarLabelListEntry> = sectors.map(
113
124
  (sector: RadialBarDataItem): PolarLabelListEntry => ({
@@ -175,7 +186,7 @@ function RadialBarSectors({
175
186
  const onMouseLeave = onMouseLeaveFromContext(entry, i);
176
187
  const onClick = onClickFromContext(entry, i);
177
188
 
178
- const radialBarSectorProps: React.ComponentProps<typeof RadialBarSector> = {
189
+ const radialBarSectorProps: ComponentProps<typeof RadialBarSector> = {
179
190
  ...baseProps,
180
191
  cornerRadius: parseCornerRadius(cornerRadius),
181
192
  ...entry,
@@ -371,7 +382,7 @@ interface InternalRadialBarProps<DataPointType = any, DataValueType = any> exten
371
382
  * - `false`: no background;
372
383
  * - `true`: renders default background;
373
384
  * - `object`: the props of background rectangle;
374
- * - `ReactElement`: a custom background element;
385
+ * - `OctaneElement`: a custom background element;
375
386
  * - `function`: a render function of custom background.
376
387
  *
377
388
  * @defaultValue false
@@ -413,7 +424,7 @@ interface InternalRadialBarProps<DataPointType = any, DataValueType = any> exten
413
424
  * - `true`: renders default labels;
414
425
  * - `false`: no labels are rendered;
415
426
  * - `object`: the props of LabelList component;
416
- * - `ReactElement`: a custom SVG label element, such as `<text>` or `<g>`.
427
+ * - `OctaneElement`: a custom SVG label element, such as `<text>` or `<g>`.
417
428
  * HTML elements such as `<div>` are not valid inside the chart SVG and may trigger React DOM warnings.
418
429
  * - `function`: a render function of custom label.
419
430
  *
@@ -441,58 +452,58 @@ interface InternalRadialBarProps<DataPointType = any, DataValueType = any> exten
441
452
  /**
442
453
  * The customized event handler of click in this chart.
443
454
  */
444
- onClick?: (data: RadialBarDataItem, index: number, e: React.MouseEvent<
455
+ onClick?: (data: RadialBarDataItem, index: number, e: NativeMouseEvent<
445
456
  SVGGraphicsElement
446
457
  >) => void;
447
458
  /**
448
459
  * The customized event handler of mousedown in this chart.
449
460
  */
450
- onMouseDown?: (data: RadialBarDataItem, index: number, e: React.MouseEvent<
461
+ onMouseDown?: (data: RadialBarDataItem, index: number, e: NativeMouseEvent<
451
462
  SVGGraphicsElement
452
463
  >) => void;
453
464
  /**
454
465
  * The customized event handler of mouseup in this chart.
455
466
  */
456
- onMouseUp?: (data: RadialBarDataItem, index: number, e: React.MouseEvent<
467
+ onMouseUp?: (data: RadialBarDataItem, index: number, e: NativeMouseEvent<
457
468
  SVGGraphicsElement
458
469
  >) => void;
459
470
  /**
460
471
  * The customized event handler of mousemove in this chart.
461
472
  */
462
- onMouseMove?: (data: RadialBarDataItem, index: number, e: React.MouseEvent<
473
+ onMouseMove?: (data: RadialBarDataItem, index: number, e: NativeMouseEvent<
463
474
  SVGGraphicsElement
464
475
  >) => void;
465
476
  /**
466
477
  * The customized event handler of mouseover in this chart.
467
478
  */
468
- onMouseOver?: (data: RadialBarDataItem, index: number, e: React.MouseEvent<
479
+ onMouseOver?: (data: RadialBarDataItem, index: number, e: NativeMouseEvent<
469
480
  SVGGraphicsElement
470
481
  >) => void;
471
482
  /**
472
483
  * The customized event handler of mouseout in this chart.
473
484
  */
474
- onMouseOut?: (data: RadialBarDataItem, index: number, e: React.MouseEvent<
485
+ onMouseOut?: (data: RadialBarDataItem, index: number, e: NativeMouseEvent<
475
486
  SVGGraphicsElement
476
487
  >) => void;
477
488
  /**
478
489
  * The customized event handler of mouseenter in this chart.
479
490
  */
480
- onMouseEnter?: (data: RadialBarDataItem, index: number, e: React.MouseEvent<
491
+ onMouseEnter?: (data: RadialBarDataItem, index: number, e: NativeMouseEvent<
481
492
  SVGGraphicsElement
482
493
  >) => void;
483
494
  /**
484
495
  * The customized event handler of mouseleave in this chart.
485
496
  */
486
- onMouseLeave?: (data: RadialBarDataItem, index: number, e: React.MouseEvent<
497
+ onMouseLeave?: (data: RadialBarDataItem, index: number, e: NativeMouseEvent<
487
498
  SVGGraphicsElement
488
499
  >) => void;
489
- onTouchStart?: (data: RadialBarDataItem, index: number, e: React.TouchEvent<
500
+ onTouchStart?: (data: RadialBarDataItem, index: number, e: NativeTouchEvent<
490
501
  SVGGraphicsElement
491
502
  >) => void;
492
- onTouchMove?: (data: RadialBarDataItem, index: number, e: React.TouchEvent<
503
+ onTouchMove?: (data: RadialBarDataItem, index: number, e: NativeTouchEvent<
493
504
  SVGGraphicsElement
494
505
  >) => void;
495
- onTouchEnd?: (data: RadialBarDataItem, index: number, e: React.TouchEvent<
506
+ onTouchEnd?: (data: RadialBarDataItem, index: number, e: NativeTouchEvent<
496
507
  SVGGraphicsElement
497
508
  >) => void;
498
509
  /**
@@ -500,7 +511,7 @@ interface InternalRadialBarProps<DataPointType = any, DataValueType = any> exten
500
511
  */
501
512
  radiusAxisId?: AxisId;
502
513
  /**
503
- * If set a ReactElement, the shape of radial bar sectors can be customized.
514
+ * If set a OctaneElement, the shape of radial bar sectors can be customized.
504
515
  * If set a function, the function will be called to render customized shape.
505
516
  * During animations, the function shape also receives `animationElapsedTime`, `isAnimating`, and `isEntrance`.
506
517
  * By default, renders a sector.
@@ -594,10 +605,9 @@ function renderBackground(props: InternalProps, sectors?: ReadonlyArray<RadialBa
594
605
  return null;
595
606
  }
596
607
 
597
- const sectorProps: React.ComponentProps<typeof RadialBarSector> = {
608
+ const sectorProps: ComponentProps<typeof RadialBarSector> = {
598
609
  cornerRadius: parseCornerRadius(cornerRadius),
599
610
  ...rest,
600
- // @ts-expect-error backgroundProps is contributing unknown props
601
611
  fill: '#eee',
602
612
  ...background,
603
613
  ...backgroundProps,
@@ -755,7 +765,7 @@ export function computeRadialBarDataItems({
755
765
  cx: number;
756
766
  cy: number;
757
767
  angleAxisTicks: ReadonlyArray<TickItem> | undefined;
758
- cells: ReadonlyArray<ReactElement> | undefined;
768
+ cells: ReadonlyArray<RegisteredCell> | undefined;
759
769
  startAngle: number;
760
770
  endAngle: number;
761
771
  }): ReadonlyArray<RadialBarDataItem> {
@@ -764,12 +774,18 @@ export function computeRadialBarDataItems({
764
774
  }
765
775
 
766
776
  return (displayedData ?? []).map((entry: unknown, index: number) => {
767
- let value, innerRadius: number | null | undefined, outerRadius: | number
768
- | undefined, startAngle: number | null, endAngle: number, backgroundSector;
777
+ let value;
778
+ let innerRadius: number | null | undefined;
779
+ let outerRadius: number | undefined;
780
+ let startAngle: number | null;
781
+ let endAngle: number | undefined;
782
+ let backgroundSector;
769
783
 
770
784
  if (stackedData) {
771
- // @ts-expect-error truncateByDomain expects only numerical domain, but it can received categorical domain too
772
- value = truncateByDomain(stackedData[dataStartIndex + index], stackedDomain);
785
+ value = truncateByDomain(
786
+ stackedData[dataStartIndex + index],
787
+ stackedDomain as readonly number[],
788
+ );
773
789
  } else {
774
790
  value = getValueByDataKey(entry, dataKey);
775
791
  if (!Array.isArray(value)) {
@@ -833,20 +849,21 @@ export function computeRadialBarDataItems({
833
849
  }
834
850
  }
835
851
 
852
+ // Unresolved scale values use the same zero geometry as the default
853
+ // Sector. Keep the row so custom shapes, Cell overrides, and tooltip
854
+ // indices still refer to the original datum.
836
855
  return {
837
- // @ts-expect-error can't spread unknown
838
- ...entry,
856
+ ...entry as Record<string, unknown>,
839
857
  ...backgroundSector,
840
858
  payload: entry,
841
859
  value: stackedData ? value : value[1],
842
860
  cx,
843
861
  cy,
844
- innerRadius,
845
- outerRadius,
846
- startAngle,
847
- // @ts-expect-error endAngle is used before assigned (?)
848
- endAngle,
849
- ...cells && cells[index] && cells[index].props,
862
+ innerRadius: innerRadius ?? defaultSectorProps.innerRadius,
863
+ outerRadius: outerRadius ?? defaultSectorProps.outerRadius,
864
+ startAngle: startAngle ?? defaultSectorProps.startAngle,
865
+ endAngle: endAngle ?? defaultSectorProps.endAngle,
866
+ ...cells && cells[index] && cells[index].props as CellPropsFor<SVGPathElement>,
850
867
  } satisfies RadialBarDataItem;
851
868
  });
852
869
  }
@@ -1,10 +1,10 @@
1
- // Vendored verbatim from recharts@3.9.2 es6/polar/defaultPolarAngleAxisProps.js (framework-agnostic).
2
- // Do not edit update by re-vendoring when the recharts devDependency moves.
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ import { Props } from './PolarAngleAxis.tsrx';
3
3
  import { DefaultZIndexes } from '../zIndex/DefaultZIndexes';
4
- export var defaultPolarAngleAxisProps = {
4
+
5
+ export const defaultPolarAngleAxisProps = {
5
6
  allowDecimals: false,
6
- allowDuplicatedCategory: true,
7
- // if I set this to false then Tooltip synchronisation stops working in Radar, wtf
7
+ allowDuplicatedCategory: true, // if I set this to false then Tooltip synchronisation stops working in Radar, wtf
8
8
  allowDataOverflow: false,
9
9
  angle: 0,
10
10
  angleAxisId: 0,
@@ -24,4 +24,4 @@ export var defaultPolarAngleAxisProps = {
24
24
  tickSize: 8,
25
25
  type: 'auto',
26
26
  zIndex: DefaultZIndexes.axis,
27
- };
27
+ } as const satisfies Props;
@@ -1,7 +1,8 @@
1
- // Vendored verbatim from recharts@3.9.2 es6/polar/defaultPolarRadiusAxisProps.js (framework-agnostic).
2
- // Do not edit update by re-vendoring when the recharts devDependency moves.
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ import { Props } from './PolarRadiusAxis.tsrx';
3
3
  import { DefaultZIndexes } from '../zIndex/DefaultZIndexes';
4
- export var defaultPolarRadiusAxisProps = {
4
+
5
+ export const defaultPolarRadiusAxisProps = {
5
6
  allowDataOverflow: false,
6
7
  allowDecimals: false,
7
8
  allowDuplicatedCategory: true,
@@ -21,4 +22,4 @@ export var defaultPolarRadiusAxisProps = {
21
22
  tickLine: true,
22
23
  type: 'auto',
23
24
  zIndex: DefaultZIndexes.axis,
24
- };
25
+ } as const satisfies Props;
@@ -1,14 +1,26 @@
1
+ import type { SVGProps } from '../util/OctaneTypes.ts';
2
+
3
+ interface CrossProps {
4
+ x?: number;
5
+ y?: number;
6
+ width?: number;
7
+ height?: number;
8
+ top?: number;
9
+ left?: number;
10
+ className?: SVGProps<SVGPathElement>['className'];
11
+ }
12
+ export type Props = SVGProps<SVGPathElement> & CrossProps;
1
13
  // Port of shape/Cross.tsx — the axis-cursor crosshair (a vertical + horizontal
2
14
  // line pair as one path).
3
15
  import { clsx } from 'clsx';
4
16
  import { isNumber } from '../util/DataUtils';
5
17
  import { svgPropertiesAndEvents } from '../util/svgPropertiesAndEvents.ts';
6
18
 
7
- function getPath(x, y, width, height, top, left) {
19
+ function getPath(x: number, y: number, width: number, height: number, top: number, left: number) {
8
20
  return 'M' + x + ',' + top + 'v' + height + 'M' + left + ',' + y + 'h' + width;
9
21
  }
10
22
 
11
- export function Cross(crossProps) {
23
+ export function Cross(crossProps: Props) {
12
24
  const { x = 0, y = 0, top = 0, left = 0, width = 0, height = 0, className, ...rest } = crossProps;
13
25
  const props = { x, y, top, left, width, height, ...rest };
14
26
  if (
@@ -1,3 +1,83 @@
1
+ import type { Ref, SVGProps } from '../util/OctaneTypes.ts';
2
+ import type {
3
+ Area as D3AreaCurve,
4
+ CurveFactory,
5
+ Line as D3LineCurve,
6
+ } from 'victory-vendor/d3-shape';
7
+ import type {
8
+ Coordinate,
9
+ LayoutType,
10
+ NullableCoordinate,
11
+ PresentationAttributesWithProps,
12
+ RechartsMouseEventHandler,
13
+ } from '../util/types';
14
+
15
+ interface CurveFactories {
16
+ [index: string]: CurveFactory;
17
+ }
18
+ export type CurveType =
19
+ | 'basis'
20
+ | 'basisClosed'
21
+ | 'basisOpen'
22
+ | 'bumpX'
23
+ | 'bumpY'
24
+ | 'bump'
25
+ | 'linear'
26
+ | 'linearClosed'
27
+ | 'natural'
28
+ | 'monotoneX'
29
+ | 'monotoneY'
30
+ | 'monotone'
31
+ | 'step'
32
+ | 'stepBefore'
33
+ | 'stepAfter'
34
+ | CurveFactory;
35
+ type AreaPoint =
36
+ Coordinate & {
37
+ base: Coordinate;
38
+ };
39
+ type NullableAreaPoint =
40
+ NullableCoordinate & {
41
+ base?: NullableCoordinate;
42
+ };
43
+ export type BaseLineType = number | ReadonlyArray<NullableCoordinate>;
44
+ interface CurveProps {
45
+ className?: SVGProps<SVGPathElement>['className'];
46
+ type?: CurveType;
47
+ layout?: LayoutType;
48
+ baseLine?: BaseLineType;
49
+ points?: ReadonlyArray<NullableCoordinate>;
50
+ connectNulls?: boolean;
51
+ path?: string;
52
+ pathRef?: Ref<SVGPathElement>;
53
+ strokeDasharray?: string | number;
54
+ }
55
+ export type CurveMouseEventHandler = RechartsMouseEventHandler<Props, SVGPathElement>;
56
+ type CurveMouseEvents = {
57
+ onClick?: CurveMouseEventHandler;
58
+ onMouseEnter?: CurveMouseEventHandler;
59
+ onMouseLeave?: CurveMouseEventHandler;
60
+ onMouseDown?: CurveMouseEventHandler;
61
+ onMouseUp?: CurveMouseEventHandler;
62
+ onMouseMove?: CurveMouseEventHandler;
63
+ onMouseOver?: CurveMouseEventHandler;
64
+ onMouseOut?: CurveMouseEventHandler;
65
+ };
66
+ export type Props =
67
+ Omit<
68
+ PresentationAttributesWithProps<CurveProps, SVGPathElement>,
69
+ | 'type'
70
+ | 'points'
71
+ | 'onClick'
72
+ | 'onMouseEnter'
73
+ | 'onMouseLeave'
74
+ | 'onMouseDown'
75
+ | 'onMouseUp'
76
+ | 'onMouseMove'
77
+ | 'onMouseOver'
78
+ | 'onMouseOut'
79
+ > & CurveMouseEvents & CurveProps;
80
+ type GetPathProps = Pick<Props, 'type' | 'points' | 'baseLine' | 'layout' | 'connectNulls'>;
1
81
  // Port of shape/Curve.tsx — the line/area path. The `d` string comes straight
2
82
  // from victory-vendor's d3-shape line/area generators (same dependency, same
3
83
  // version as upstream), so output is byte-identical by construction.
@@ -25,7 +105,7 @@ import { isWellBehavedNumber } from '../util/isWellBehavedNumber';
25
105
  import { svgPropertiesNoEvents } from '../util/svgPropertiesNoEvents';
26
106
  import { useChartLayout } from '../context/chartLayoutContext.ts';
27
107
 
28
- const CURVE_FACTORIES = {
108
+ const CURVE_FACTORIES: CurveFactories = {
29
109
  curveBasisClosed,
30
110
  curveBasisOpen,
31
111
  curveBasis,
@@ -41,12 +121,12 @@ const CURVE_FACTORIES = {
41
121
  curveStepBefore,
42
122
  };
43
123
 
44
- const defined = (p) => isWellBehavedNumber(p.x) && isWellBehavedNumber(p.y);
45
- const areaDefined = (d) => d.base != null && defined(d.base) && defined(d);
46
- const getX = (p) => p.x;
47
- const getY = (p) => p.y;
124
+ const defined = (p: NullableCoordinate) => isWellBehavedNumber(p.x) && isWellBehavedNumber(p.y);
125
+ const areaDefined = (d: NullableAreaPoint) => d.base != null && defined(d.base) && defined(d);
126
+ const getX = (p: Coordinate) => p.x;
127
+ const getY = (p: Coordinate) => p.y;
48
128
 
49
- const getCurveFactory = (type, layout) => {
129
+ const getCurveFactory = (type: CurveType, layout: LayoutType | undefined) => {
50
130
  if (typeof type === 'function') {
51
131
  return type;
52
132
  }
@@ -63,7 +143,7 @@ const getCurveFactory = (type, layout) => {
63
143
  export const defaultCurveProps = {
64
144
  connectNulls: false,
65
145
  type: 'linear',
66
- };
146
+ } as const satisfies Partial<Props>;
67
147
 
68
148
  /**
69
149
  * Calculate the path of curve. Returns null if points is an empty array.
@@ -75,52 +155,60 @@ export const getPath = ({
75
155
  baseLine,
76
156
  layout,
77
157
  connectNulls = defaultCurveProps.connectNulls,
78
- }) => {
158
+ }: GetPathProps): string | null => {
79
159
  const curveFactory = getCurveFactory(type, layout);
80
- const formatPoints =
160
+ const formatPoints: ReadonlyArray<NullableCoordinate> =
81
161
  connectNulls ? points.filter(defined) : points;
82
162
 
83
163
  // An area chart's array `baseLine` pairs each point with its baseline
84
164
  // counterpart FIRST, so the `defined` filter drops both sides together.
85
165
  if (Array.isArray(baseLine)) {
86
- const areaPoints = points.map((entry, index) => ({ ...entry, base: baseLine[index] }));
87
- let lineFunction;
166
+ const areaPoints: ReadonlyArray<NullableAreaPoint> = points.map(
167
+ (entry, index) => ({ ...entry, base: baseLine[index] }),
168
+ );
169
+ let lineFunction: D3AreaCurve<AreaPoint>;
88
170
  if (layout === 'vertical') {
89
- lineFunction = shapeArea().y(getY).x1(getX).x0((d) => d.base.x);
171
+ lineFunction = shapeArea<AreaPoint>().y(getY).x1(getX).x0((d) => d.base.x);
90
172
  } else {
91
- lineFunction = shapeArea().x(getX).y1(getY).y0((d) => d.base.y);
173
+ lineFunction = shapeArea<AreaPoint>().x(getX).y1(getY).y0((d) => d.base.y);
92
174
  }
93
- const nullableLineFunction = lineFunction.defined(areaDefined).curve(curveFactory);
94
- const finalPoints =
175
+ // d3 runs the defined predicate before coordinate accessors; its single
176
+ // generic cannot express the nullable inputs accepted after this guard.
177
+ const nullableLineFunction = lineFunction.defined(areaDefined).curve(
178
+ curveFactory,
179
+ ) as D3AreaCurve<NullableAreaPoint>;
180
+ const finalPoints: ReadonlyArray<NullableAreaPoint> =
95
181
  connectNulls ? areaPoints.filter(areaDefined) : areaPoints;
96
182
  return nullableLineFunction(finalPoints);
97
183
  }
98
- let lineFunction;
184
+ let lineFunction: D3LineCurve<Coordinate> | D3AreaCurve<Coordinate>;
99
185
  if (layout === 'vertical' && isNumber(baseLine)) {
100
- lineFunction = shapeArea().y(getY).x1(getX).x0(baseLine);
186
+ lineFunction = shapeArea<Coordinate>().y(getY).x1(getX).x0(baseLine);
101
187
  } else if (isNumber(baseLine)) {
102
- lineFunction = shapeArea().x(getX).y1(getY).y0(baseLine);
188
+ lineFunction = shapeArea<Coordinate>().x(getX).y1(getY).y0(baseLine);
103
189
  } else {
104
- lineFunction = shapeLine().x(getX).y(getY);
190
+ lineFunction = shapeLine<Coordinate>().x(getX).y(getY);
105
191
  }
106
- const nullableLineFunction = lineFunction.defined(defined).curve(curveFactory);
192
+ const nullableLineFunction = lineFunction.defined(defined).curve(curveFactory) as D3LineCurve<
193
+ NullableCoordinate
194
+ >;
107
195
  return nullableLineFunction(formatPoints);
108
196
  };
109
197
 
110
- export function Curve(props) {
198
+ export function Curve(props: Props) {
111
199
  const { className, points, path, pathRef } = props;
112
200
  const layout = useChartLayout();
113
201
  if ((!points || !points.length) && !path) {
114
202
  return null;
115
203
  }
116
- const getPathInput = {
204
+ const getPathInput: GetPathProps = {
117
205
  type: props.type,
118
206
  points: props.points,
119
207
  baseLine: props.baseLine,
120
208
  layout: props.layout || layout,
121
209
  connectNulls: props.connectNulls,
122
210
  };
123
- const realPath =
211
+ const realPath: string | null | undefined =
124
212
  points && points.length ? getPath(getPathInput) : path;
125
213
  return <path
126
214
  {...svgPropertiesNoEvents(props)}
@@ -1,10 +1,21 @@
1
+ import type { SVGProps } from '../util/OctaneTypes.ts';
2
+ import type { PresentationAttributesWithProps } from '../util/types';
3
+
4
+ interface DotProps {
5
+ className?: SVGProps<SVGCircleElement>['className'];
6
+ cx?: number;
7
+ cy?: number;
8
+ r?: number | string;
9
+ clipDot?: boolean;
10
+ }
11
+ export type Props = PresentationAttributesWithProps<DotProps, SVGCircleElement> & DotProps;
1
12
  // Port of shape/Dot.tsx — a circle marker.
2
13
  import { clsx } from 'clsx';
3
14
  import { adaptEventHandlers } from '../util/types.ts';
4
15
  import { svgPropertiesNoEvents } from '../util/svgPropertiesNoEvents';
5
16
  import { isNumber } from '../util/DataUtils';
6
17
 
7
- export function Dot(props) {
18
+ export function Dot(props: Props) {
8
19
  const { cx, cy, r, className } = props;
9
20
  const layerClass = clsx('recharts-dot', className);
10
21
  if (isNumber(cx) && isNumber(cy) && isNumber(r)) {
@@ -1,15 +1,33 @@
1
+ import type { NativeMouseEvent, SVGProps } from '../util/OctaneTypes.ts';
2
+ import type { Coordinate } from '../util/types';
3
+
4
+ interface PolygonProps {
5
+ className?: SVGProps<SVGPathElement>['className'];
6
+ points?: ReadonlyArray<Coordinate>;
7
+ baseLinePoints?: ReadonlyArray<Coordinate>;
8
+ connectNulls?: boolean;
9
+ onClick?: (e: NativeMouseEvent<SVGPathElement>) => void;
10
+ onMouseDown?: (e: NativeMouseEvent<SVGPathElement>) => void;
11
+ onMouseUp?: (e: NativeMouseEvent<SVGPathElement>) => void;
12
+ onMouseMove?: (e: NativeMouseEvent<SVGPathElement>) => void;
13
+ onMouseOver?: (e: NativeMouseEvent<SVGPathElement>) => void;
14
+ onMouseOut?: (e: NativeMouseEvent<SVGPathElement>) => void;
15
+ onMouseEnter?: (e: NativeMouseEvent<SVGPathElement>) => void;
16
+ onMouseLeave?: (e: NativeMouseEvent<SVGPathElement>) => void;
17
+ }
18
+ export type Props = Omit<SVGProps<SVGPathElement>, 'points'> & PolygonProps;
1
19
  // Port of shape/Polygon.tsx — closed/segmented polygon paths (Radar,
2
20
  // PolarGrid). Path strings mirror upstream's roundTemplateLiteral output.
3
21
  import { clsx } from 'clsx';
4
22
  import { svgPropertiesAndEvents } from '../util/svgPropertiesAndEvents.ts';
5
23
  import { round } from '../util/round';
6
24
 
7
- function isValidatePoint(point) {
25
+ function isValidatePoint(point: Coordinate | undefined) {
8
26
  return point != null && point.x === +point.x && point.y === +point.y;
9
27
  }
10
28
 
11
- function getParsedPoints(points = []) {
12
- let segmentPoints = [[]];
29
+ function getParsedPoints(points: ReadonlyArray<Coordinate> = []) {
30
+ let segmentPoints: Coordinate[][] = [[]];
13
31
  points.forEach((entry) => {
14
32
  const lastLink = segmentPoints[segmentPoints.length - 1];
15
33
  if (isValidatePoint(entry)) {
@@ -32,7 +50,7 @@ function getParsedPoints(points = []) {
32
50
  return segmentPoints;
33
51
  }
34
52
 
35
- function getSinglePolygonPath(points, connectNulls) {
53
+ function getSinglePolygonPath(points: ReadonlyArray<Coordinate>, connectNulls?: boolean) {
36
54
  let segmentPoints = getParsedPoints(points);
37
55
  if (connectNulls) {
38
56
  segmentPoints = [segmentPoints.reduce((res, segPoints) => [...res, ...segPoints], [])];
@@ -47,13 +65,17 @@ function getSinglePolygonPath(points, connectNulls) {
47
65
  return segmentPoints.length === 1 ? polygonPath + 'Z' : polygonPath;
48
66
  }
49
67
 
50
- function getRanglePath(points, baseLinePoints, connectNulls) {
68
+ function getRanglePath(
69
+ points: ReadonlyArray<Coordinate>,
70
+ baseLinePoints: ReadonlyArray<Coordinate>,
71
+ connectNulls?: boolean,
72
+ ) {
51
73
  const outerPath = getSinglePolygonPath(points, connectNulls);
52
74
  return (outerPath.slice(-1) === 'Z' ? outerPath.slice(0, -1) : outerPath) + 'L' +
53
75
  getSinglePolygonPath(Array.from(baseLinePoints).reverse(), connectNulls).slice(1);
54
76
  }
55
77
 
56
- export function Polygon(props) {
78
+ export function Polygon(props: Props) {
57
79
  const { points, className, baseLinePoints, connectNulls, ...others } = props;
58
80
  if (!points || !points.length) {
59
81
  return null;