@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,4 +1,5 @@
1
- import type { OctaneNode } from 'octane';
1
+ import type { CSSProperties, HTMLAttributes, OctaneNode, Ref } from '../util/OctaneTypes.ts';
2
+
2
3
  import {
3
4
  createContext,
4
5
  useCallback,
@@ -25,7 +26,10 @@ export interface ResponsiveContainerDimensions {
25
26
  height: number;
26
27
  }
27
28
 
28
- export interface Props {
29
+ export interface Props extends Omit<
30
+ HTMLAttributes<HTMLDivElement>,
31
+ 'id' | 'className' | 'style' | 'onResize'
32
+ > {
29
33
  aspect?: number;
30
34
  width?: `${number}%` | number;
31
35
  height?: `${number}%` | number;
@@ -37,10 +41,9 @@ export interface Props {
37
41
  debounce?: number;
38
42
  id?: string | number;
39
43
  className?: string | number;
40
- style?: React.CSSProperties;
44
+ style?: CSSProperties;
41
45
  onResize?: (width: number, height: number) => void;
42
- ref?: React.Ref<HTMLDivElement>;
43
- [key: string]: any;
46
+ ref?: Ref<HTMLDivElement>;
44
47
  }
45
48
 
46
49
  const initialDimension = defaultResponsiveContainerProps.initialDimension;
@@ -87,9 +90,9 @@ function SizeDetectorContainer(props: Props) @{
87
90
  ...others
88
91
  } = props;
89
92
  const containerRef = useRef<HTMLDivElement | null>(null);
90
- const onResizeRef = useRef(onResize);
93
+ const onResizeRef = useRef<Props['onResize']>(onResize);
91
94
  onResizeRef.current = onResize;
92
- useImperativeHandle(ref, () => containerRef.current, []);
95
+ useImperativeHandle<HTMLDivElement | null>(ref, () => containerRef.current, []);
93
96
  const [sizes, setSizes] = useState({
94
97
  containerWidth: initial.width,
95
98
  containerHeight: initial.height,
@@ -114,7 +117,7 @@ function SizeDetectorContainer(props: Props) @{
114
117
  setContainerSize(entry.contentRect.width, entry.contentRect.height);
115
118
  onResizeRef.current?.(entry.contentRect.width, entry.contentRect.height);
116
119
  };
117
- const callback =
120
+ const callback: typeof handleResize & { cancel?: () => void } =
118
121
  debounce > 0
119
122
  ? throttle(handleResize, debounce, { trailing: true, leading: false })
120
123
  : handleResize;
@@ -123,7 +126,7 @@ function SizeDetectorContainer(props: Props) @{
123
126
  setContainerSize(rect.width, rect.height);
124
127
  observer.observe(containerRef.current);
125
128
  return () => {
126
- if ('cancel' in callback) callback.cancel();
129
+ callback.cancel?.();
127
130
  observer.disconnect();
128
131
  };
129
132
  }, [setContainerSize, debounce]);
@@ -133,7 +136,7 @@ function SizeDetectorContainer(props: Props) @{
133
136
  aspect,
134
137
  maxHeight,
135
138
  });
136
- const outerProps: any = Object.assign({}, others, {
139
+ const outerProps = Object.assign({}, others, {
137
140
  id: id ? `${id}` : undefined,
138
141
  className: clsx('recharts-responsive-container', className),
139
142
  style: { ...style, width, height, minWidth, minHeight, maxHeight },
@@ -1,3 +1,41 @@
1
+ import type { CSSProperties, OctaneNode, SVGProps } from '../util/OctaneTypes.ts';
2
+
3
+ interface Words {
4
+ words: Array<string>;
5
+ width: number | undefined;
6
+ }
7
+ interface WordsWithWidth {
8
+ words: Array<string>;
9
+ width: number;
10
+ }
11
+ interface WordWithComputedWidth {
12
+ word: string;
13
+ width: number;
14
+ }
15
+ interface CalculatedWordWidths {
16
+ wordsWithComputedWidth: Array<WordWithComputedWidth>;
17
+ spaceWidth: number;
18
+ }
19
+ type CalculateWordWidthsParam = Pick<Props, 'children' | 'breakAll' | 'style'>;
20
+ export type TextAnchor = 'start' | 'middle' | 'end' | 'inherit';
21
+ export type TextVerticalAnchor = 'start' | 'middle' | 'end';
22
+ export type RenderableText = string | number | boolean | null | undefined;
23
+ interface TextProps {
24
+ scaleToFit?: boolean;
25
+ angle?: number;
26
+ textAnchor?: TextAnchor;
27
+ verticalAnchor?: TextVerticalAnchor;
28
+ style?: CSSProperties;
29
+ lineHeight?: number | string;
30
+ breakAll?: boolean;
31
+ children?: RenderableText;
32
+ maxLines?: number;
33
+ width?: number | string;
34
+ }
35
+ export type Props = Omit<SVGProps<SVGTextElement>, 'textAnchor' | 'verticalAnchor'> & TextProps;
36
+ type CalculateWordsByLinesProps = Pick<Props, 'maxLines' | 'children' | 'style' | 'breakAll'>;
37
+ type GetWordsByLinesProps =
38
+ Pick<Props, 'width' | 'scaleToFit' | 'children' | 'style' | 'breakAll' | 'maxLines'>;
1
39
  // Port of component/Text.tsx — the SVG text renderer with word wrapping,
2
40
  // maxLines binary-search truncation, scaleToFit, and rotation. Measurement
3
41
  // runs through the vendored getStringSize (0×0 under SSR, so SSR renders the
@@ -14,9 +52,13 @@ import { isWellBehavedNumber } from '../util/isWellBehavedNumber';
14
52
 
15
53
  const BREAKING_SPACES = /[ \f\n\r\t\v\u2028\u2029]+/;
16
54
 
17
- const calculateWordWidths = ({ children, breakAll, style }) => {
55
+ const calculateWordWidths = ({
56
+ children,
57
+ breakAll,
58
+ style,
59
+ }: CalculateWordWidthsParam): CalculatedWordWidths | null => {
18
60
  try {
19
- let words = [];
61
+ let words: string[] = [];
20
62
  if (!isNullish(children)) {
21
63
  if (breakAll) {
22
64
  words = children.toString().split('');
@@ -37,19 +79,21 @@ const calculateWordWidths = ({ children, breakAll, style }) => {
37
79
  }
38
80
  };
39
81
 
40
- export function isValidTextAnchor(value) {
82
+ export function isValidTextAnchor(value: string | undefined): value is TextAnchor {
41
83
  return value === 'start' || value === 'middle' || value === 'end' || value === 'inherit';
42
84
  }
43
85
 
44
- export function isRenderableText(val) {
86
+ export function isRenderableText(val: unknown): val is RenderableText {
45
87
  return isNullish(val) || typeof val === 'string' || typeof val === 'number' ||
46
88
  typeof val === 'boolean';
47
89
  }
48
90
 
49
- const calculate = (words, lineWidth, spaceWidth, scaleToFit) => words.reduce((
50
- result,
51
- { word, width },
52
- ) => {
91
+ const calculate = (
92
+ words: ReadonlyArray<WordWithComputedWidth>,
93
+ lineWidth: number | string | undefined,
94
+ spaceWidth: number,
95
+ scaleToFit: boolean,
96
+ ): WordsWithWidth[] => words.reduce<WordsWithWidth[]>((result, { word, width }) => {
53
97
  const currentLine = result[result.length - 1];
54
98
  if (
55
99
  currentLine && width != null &&
@@ -66,41 +110,53 @@ const calculate = (words, lineWidth, spaceWidth, scaleToFit) => words.reduce((
66
110
  return result;
67
111
  }, []);
68
112
 
69
- const findLongestLine = (words) => words.reduce((a, b) => (a.width > b.width ? a : b));
113
+ const findLongestLine = (words: ReadonlyArray<WordsWithWidth>) => words.reduce(
114
+ (a, b) => (a.width > b.width ? a : b),
115
+ );
70
116
 
71
117
  const suffix = '…';
72
118
 
73
119
  const checkOverflow = (
74
- text,
75
- index,
76
- breakAll,
77
- style,
78
- maxLines,
79
- lineWidth,
80
- spaceWidth,
81
- scaleToFit,
82
- ) => {
120
+ text: string,
121
+ index: number,
122
+ breakAll: TextProps['breakAll'],
123
+ style: TextProps['style'],
124
+ maxLines: number,
125
+ lineWidth: number | string | undefined,
126
+ spaceWidth: number,
127
+ scaleToFit: boolean,
128
+ ): [boolean, ReadonlyArray<WordsWithWidth>] => {
83
129
  const tempText = text.slice(0, index);
84
130
  const words = calculateWordWidths({ breakAll, style, children: tempText + suffix });
85
131
  if (!words) {
86
132
  return [false, []];
87
133
  }
88
- const result = calculate(words.wordsWithComputedWidth, lineWidth, spaceWidth, scaleToFit);
134
+ const result: ReadonlyArray<WordsWithWidth> = calculate(
135
+ words.wordsWithComputedWidth,
136
+ lineWidth,
137
+ spaceWidth,
138
+ scaleToFit,
139
+ );
89
140
  const doesOverflow =
90
141
  result.length > maxLines || findLongestLine(result).width > Number(lineWidth);
91
142
  return [doesOverflow, result];
92
143
  };
93
144
 
94
145
  const calculateWordsByLines = (
95
- { maxLines, children, style, breakAll },
96
- initialWordsWithComputedWith,
97
- spaceWidth,
98
- lineWidth,
99
- scaleToFit,
146
+ { maxLines, children, style, breakAll }: CalculateWordsByLinesProps,
147
+ initialWordsWithComputedWith: ReadonlyArray<WordWithComputedWidth>,
148
+ spaceWidth: number,
149
+ lineWidth: number | string | undefined,
150
+ scaleToFit: boolean,
100
151
  ) => {
101
152
  const shouldLimitLines = isNumber(maxLines);
102
153
  const text = String(children);
103
- const originalResult = calculate(initialWordsWithComputedWith, lineWidth, spaceWidth, scaleToFit);
154
+ const originalResult: ReadonlyArray<WordsWithWidth> = calculate(
155
+ initialWordsWithComputedWith,
156
+ lineWidth,
157
+ spaceWidth,
158
+ scaleToFit,
159
+ );
104
160
  if (!shouldLimitLines || scaleToFit) {
105
161
  return originalResult;
106
162
  }
@@ -112,7 +168,7 @@ const calculateWordsByLines = (
112
168
  let start = 0;
113
169
  let end = text.length - 1;
114
170
  let iterations = 0;
115
- let trimmedResult;
171
+ let trimmedResult: ReadonlyArray<WordsWithWidth> | undefined;
116
172
  while (start <= end && iterations <= text.length - 1) {
117
173
  const middle = Math.floor((start + end) / 2);
118
174
  const prev = middle - 1;
@@ -153,7 +209,7 @@ const calculateWordsByLines = (
153
209
  return trimmedResult || originalResult;
154
210
  };
155
211
 
156
- const getWordsWithoutCalculate = (children) => {
212
+ const getWordsWithoutCalculate = (children: OctaneNode) => {
157
213
  const words =
158
214
  !isNullish(children) ? children.toString().split(BREAKING_SPACES) : [];
159
215
  return [
@@ -161,7 +217,14 @@ const getWordsWithoutCalculate = (children) => {
161
217
  ];
162
218
  };
163
219
 
164
- export const getWordsByLines = ({ width, scaleToFit, children, style, breakAll, maxLines }) => {
220
+ export const getWordsByLines = ({
221
+ width,
222
+ scaleToFit,
223
+ children,
224
+ style,
225
+ breakAll,
226
+ maxLines,
227
+ }: GetWordsByLinesProps) => {
165
228
  // Only perform calculations if using features that require them (multiline, scaleToFit)
166
229
  if ((width || scaleToFit) && !Global.isSsr) {
167
230
  const wordWidths = calculateWordWidths({ breakAll, children, style });
@@ -195,9 +258,9 @@ export const textDefaultProps = {
195
258
  verticalAnchor: 'end',
196
259
  x: 0,
197
260
  y: 0,
198
- };
261
+ } as const satisfies Partial<Props>;
199
262
 
200
- export function Text(outsideProps) @{
263
+ export function Text(outsideProps: Props) @{
201
264
  const {
202
265
  x: propsX,
203
266
  y: propsY,
@@ -210,7 +273,7 @@ export function Text(outsideProps) @{
210
273
  ref,
211
274
  ...props
212
275
  } = resolveDefaultProps(outsideProps, textDefaultProps);
213
- const wordsByLines = useMemo(() => {
276
+ const wordsByLines: ReadonlyArray<Words> = useMemo(() => {
214
277
  return getWordsByLines({
215
278
  breakAll: props.breakAll,
216
279
  children: props.children,
@@ -229,7 +292,7 @@ export function Text(outsideProps) @{
229
292
  if (!isWellBehavedNumber(x) || !isWellBehavedNumber(y)) {
230
293
  return null;
231
294
  }
232
- let startDy;
295
+ let startDy: string;
233
296
  switch (verticalAnchor) {
234
297
  case 'start':
235
298
  startDy = reduceCSSCalc('calc(' + capHeight + ')');
@@ -1,5 +1,6 @@
1
+ import type { CSSProperties, OctaneElement, OctaneNode } from '../util/OctaneTypes.ts';
1
2
  import * as React from 'octane';
2
- import { CSSProperties, ReactElement, ReactNode, useEffect } from 'octane';
3
+ import { useEffect } from 'octane';
3
4
  import { createPortal } from 'octane';
4
5
  import {
5
6
  DefaultTooltipContent,
@@ -8,15 +9,15 @@ import {
8
9
  Props as DefaultTooltipContentProps,
9
10
  TooltipItemSorter,
10
11
  ValueType,
11
- } from './DefaultTooltipContent';
12
- import { TooltipBoundingBox } from './TooltipBoundingBox';
12
+ } from './DefaultTooltipContent.tsrx';
13
+ import { TooltipBoundingBox } from './TooltipBoundingBox.tsrx';
13
14
 
14
15
  import { getUniqPayload, UniqueOption } from '../util/payload/getUniqPayload';
15
16
  import { AllowInDimension, AnimationDuration, EasingInput, Coordinate } from '../util/types';
16
17
  import { useViewBox } from '../context/chartLayoutContext';
17
18
  import { useAccessibilityLayer } from '../context/accessibilityContext';
18
19
  import { useElementOffset } from '../util/useElementOffset';
19
- import { Cursor, CursorDefinition } from './Cursor';
20
+ import { Cursor, CursorDefinition } from './Cursor.tsrx';
20
21
  import {
21
22
  selectActiveCoordinate,
22
23
  selectActiveLabel,
@@ -33,12 +34,12 @@ import {
33
34
  TooltipPayloadEntry,
34
35
  } from '../state/tooltipSlice';
35
36
  import { AxisId } from '../state/cartesianAxisSlice';
36
- import { useTooltipChartSynchronisation } from '../synchronisation/useChartSynchronisation';
37
+ import { useTooltipChartSynchronisation } from '../synchronisation/useChartSynchronisation.tsrx';
37
38
  import { useTooltipEventType } from '../state/selectors/selectTooltipEventType';
38
39
  import { resolveDefaultProps } from '../util/resolveDefaultProps';
39
40
 
40
41
  export type ContentType<TValue extends ValueType = ValueType, TName extends NameType = NameType> =
41
- ReactElement | ((props: TooltipContentProps<TValue, TName>) => ReactNode);
42
+ OctaneElement | ((props: TooltipContentProps<TValue, TName>) => OctaneNode);
42
43
 
43
44
  function defaultUniqBy(entry: Payload<ValueType, NameType>) {
44
45
  return entry.dataKey;
@@ -60,7 +61,7 @@ export type TooltipContentProps<
60
61
  function renderContent<TValue extends ValueType, TName extends NameType>(
61
62
  content: ContentType<TValue, TName> | undefined,
62
63
  props: TooltipContentProps,
63
- ): ReactNode {
64
+ ): OctaneNode {
64
65
  if (React.isValidElement(content)) {
65
66
  return React.cloneElement(content, props);
66
67
  }
@@ -143,8 +144,8 @@ export type TooltipProps<TValue extends ValueType = ValueType, TName extends Nam
143
144
  * Function to customize the value in the tooltip.
144
145
  * If you return an array, the first entry will be the formatted "value", and the second entry will be the formatted "name"
145
146
  */
146
- formatter?: (value: TValue, name: TName, item: TooltipPayloadEntry, index: number, payload: TooltipPayload) => | ReactNode
147
- | [ReactNode, ReactNode];
147
+ formatter?: (value: TValue, name: TName, item: TooltipPayloadEntry, index: number, payload: TooltipPayload) => | OctaneNode
148
+ | [OctaneNode, OctaneNode];
148
149
  /**
149
150
  * If true, the tooltip will display information about hidden series.
150
151
  * Defaults to false.
@@ -173,7 +174,7 @@ export type TooltipProps<TValue extends ValueType = ValueType, TName extends Nam
173
174
  /**
174
175
  * The formatter function of label in tooltip.
175
176
  */
176
- labelFormatter?: (label: any, payload: TooltipPayload) => ReactNode;
177
+ labelFormatter?: (label: any, payload: TooltipPayload) => OctaneNode;
177
178
  /**
178
179
  * The style of default tooltip label which is a p element.
179
180
  * @defaultValue {}
@@ -1,5 +1,5 @@
1
+ import type { CSSProperties, OctaneNode } from '../util/OctaneTypes.ts';
1
2
  import * as React from 'octane';
2
- import type { OctaneNode } from 'octane';
3
3
 
4
4
  import {
5
5
  AllowInDimension,
@@ -27,7 +27,7 @@ export type TooltipBoundingBoxProps = {
27
27
  reverseDirection: AllowInDimension;
28
28
  useTranslate3d: boolean;
29
29
  viewBox: CartesianViewBox;
30
- wrapperStyle: React.CSSProperties;
30
+ wrapperStyle: CSSProperties;
31
31
  lastBoundingBox: ElementOffset;
32
32
  innerRef: SetElementOffset;
33
33
  hasPortalFromProps: boolean;
@@ -100,7 +100,7 @@ function TooltipBoundingBoxImpl(props: TooltipBoundingBoxProps) {
100
100
  useTranslate3d: props.useTranslate3d,
101
101
  viewBox: props.viewBox,
102
102
  });
103
- const positionStyle: React.CSSProperties =
103
+ const positionStyle: CSSProperties =
104
104
  props.hasPortalFromProps
105
105
  ? {}
106
106
  : {
@@ -117,13 +117,12 @@ function TooltipBoundingBoxImpl(props: TooltipBoundingBoxProps) {
117
117
  top: 0,
118
118
  left: 0,
119
119
  };
120
- const outerStyle: React.CSSProperties = {
120
+ const outerStyle: CSSProperties = {
121
121
  ...positionStyle,
122
122
  visibility: !state.dismissed && props.active && props.hasPayload ? 'visible' : 'hidden',
123
123
  ...props.wrapperStyle,
124
124
  };
125
125
  return <div
126
- // @ts-expect-error typescript library does not recognize xmlns attribute, but it's required for an HTML chunk inside SVG.
127
126
  xmlns="http://www.w3.org/1999/xhtml"
128
127
  tabIndex={-1}
129
128
  className={cssClasses}
@@ -1,7 +1,12 @@
1
- // Vendored verbatim from recharts@3.9.2 es6/component/responsiveContainerUtils.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 type { CSSProperties } from '../util/OctaneTypes';
3
+
3
4
  import { isPercent } from '../util/DataUtils';
4
- export var defaultResponsiveContainerProps = {
5
+
6
+ import type { Percent } from '../util/types';
7
+ import type { Props } from './ResponsiveContainer.tsrx';
8
+
9
+ export const defaultResponsiveContainerProps = {
5
10
  width: '100%',
6
11
  height: '100%',
7
12
  debounce: 0,
@@ -10,21 +15,32 @@ export var defaultResponsiveContainerProps = {
10
15
  width: -1,
11
16
  height: -1,
12
17
  },
13
- };
14
- export var calculateChartDimensions = (containerWidth, containerHeight, props) => {
15
- var _props$width = props.width,
16
- width = _props$width === void 0 ? defaultResponsiveContainerProps.width : _props$width,
17
- _props$height = props.height,
18
- height = _props$height === void 0 ? defaultResponsiveContainerProps.height : _props$height,
19
- aspect = props.aspect,
20
- maxHeight = props.maxHeight;
18
+ } as const satisfies Partial<Props>;
19
+
20
+ export const calculateChartDimensions = (
21
+ containerWidth: number | undefined,
22
+ containerHeight: number | undefined,
23
+ props: {
24
+ width: Percent | number | undefined;
25
+ height: Percent | number | undefined;
26
+ aspect: number | undefined;
27
+ maxHeight: number | undefined;
28
+ },
29
+ ) => {
30
+ const {
31
+ width = defaultResponsiveContainerProps.width,
32
+ height = defaultResponsiveContainerProps.height,
33
+ aspect,
34
+ maxHeight,
35
+ } = props;
21
36
 
22
37
  /*
23
38
  * The containerWidth and containerHeight are already percentage based because it's set as that percentage in CSS.
24
39
  * Means we don't have to calculate percentages here.
25
40
  */
26
- var calculatedWidth = isPercent(width) ? containerWidth : Number(width);
27
- var calculatedHeight = isPercent(height) ? containerHeight : Number(height);
41
+ let calculatedWidth: number | undefined = isPercent(width) ? containerWidth : Number(width);
42
+ let calculatedHeight: number | undefined = isPercent(height) ? containerHeight : Number(height);
43
+
28
44
  if (aspect && aspect > 0) {
29
45
  // Preserve the desired aspect ratio
30
46
  if (calculatedWidth) {
@@ -40,25 +56,24 @@ export var calculateChartDimensions = (containerWidth, containerHeight, props) =
40
56
  calculatedHeight = maxHeight;
41
57
  }
42
58
  }
43
- return {
44
- calculatedWidth,
45
- calculatedHeight,
46
- };
59
+
60
+ return { calculatedWidth, calculatedHeight };
47
61
  };
48
- var bothOverflow = {
62
+
63
+ const bothOverflow: CSSProperties = {
49
64
  width: 0,
50
65
  height: 0,
51
66
  overflow: 'visible',
52
67
  };
53
- var overflowX = {
68
+ const overflowX: CSSProperties = {
54
69
  width: 0,
55
70
  overflowX: 'visible',
56
71
  };
57
- var overflowY = {
72
+ const overflowY: CSSProperties = {
58
73
  height: 0,
59
74
  overflowY: 'visible',
60
75
  };
61
- var noStyle = {};
76
+ const noStyle: CSSProperties = {};
62
77
 
63
78
  /**
64
79
  * This zero-size, overflow-visible is required to allow the chart to shrink.
@@ -74,11 +89,14 @@ var noStyle = {};
74
89
  * because in that case the chart can't shrink in that dimension anyway.
75
90
  * This fixes defining the dimensions using aspect ratio: https://github.com/recharts/recharts/issues/6245
76
91
  */
77
- export var getInnerDivStyle = (props) => {
78
- var width = props.width,
79
- height = props.height;
80
- var isWidthPercent = isPercent(width);
81
- var isHeightPercent = isPercent(height);
92
+ export const getInnerDivStyle = (props: {
93
+ width?: Percent | number;
94
+ height?: Percent | number;
95
+ }): CSSProperties => {
96
+ const { width, height } = props;
97
+ const isWidthPercent = isPercent(width);
98
+ const isHeightPercent = isPercent(height);
99
+
82
100
  if (isWidthPercent && isHeightPercent) {
83
101
  return bothOverflow;
84
102
  }
@@ -90,12 +108,19 @@ export var getInnerDivStyle = (props) => {
90
108
  }
91
109
  return noStyle;
92
110
  };
93
- export function getDefaultWidthAndHeight(_ref) {
94
- var width = _ref.width,
95
- height = _ref.height,
96
- aspect = _ref.aspect;
97
- var calculatedWidth = width;
98
- var calculatedHeight = height;
111
+
112
+ export function getDefaultWidthAndHeight({
113
+ width,
114
+ height,
115
+ aspect,
116
+ }: {
117
+ width?: Percent | number;
118
+ height?: Percent | number;
119
+ aspect?: number;
120
+ }): { width: Percent | number | undefined; height: Percent | number | undefined } {
121
+ let calculatedWidth = width;
122
+ let calculatedHeight = height;
123
+
99
124
  if (calculatedWidth === undefined && calculatedHeight === undefined) {
100
125
  calculatedWidth = defaultResponsiveContainerProps.width;
101
126
  calculatedHeight = defaultResponsiveContainerProps.height;
@@ -104,8 +129,6 @@ export function getDefaultWidthAndHeight(_ref) {
104
129
  } else if (calculatedHeight === undefined) {
105
130
  calculatedHeight = aspect && aspect > 0 ? undefined : defaultResponsiveContainerProps.height;
106
131
  }
107
- return {
108
- width: calculatedWidth,
109
- height: calculatedHeight,
110
- };
132
+
133
+ return { width: calculatedWidth, height: calculatedHeight };
111
134
  }
@@ -1,12 +1,16 @@
1
+ import type { OctaneNode } from '../util/OctaneTypes.ts';
2
+
1
3
  // Port of container/ClipPathProvider.tsx — mints the chart's clip path id,
2
4
  // renders the <defs><clipPath> sized to the plot area, and provides the id.
3
5
  import { createContext, useContext, useState } from 'octane';
4
6
  import { uniqueId } from '../util/DataUtils';
5
7
  import { usePlotArea } from '../hooks';
6
8
 
7
- const ClipPathIdContext = createContext(undefined);
9
+ const ClipPathIdContext = createContext<string | undefined>(undefined);
8
10
 
9
- export function ClipPathProvider(props) @{
11
+ export function ClipPathProvider(props: {
12
+ children: OctaneNode;
13
+ }) @{
10
14
  const { children } = props;
11
15
  const [clipPathId] = useState(uniqueId('recharts') + '-clip');
12
16
  const plotArea = usePlotArea();
@@ -1,8 +1,15 @@
1
+ import type { OctaneNode, SVGProps } from '../util/OctaneTypes.ts';
2
+
3
+ interface LayerProps {
4
+ className?: SVGProps<SVGGElement>['className'];
5
+ children?: OctaneNode;
6
+ }
7
+ export type Props = SVGProps<SVGGElement> & LayerProps;
1
8
  // Port of container/Layer.tsx — an SVG <g> group. Ref is a plain prop.
2
9
  import { clsx } from 'clsx';
3
10
  import { svgPropertiesAndEvents } from '../util/svgPropertiesAndEvents.ts';
4
11
 
5
- export function Layer(props) {
12
+ export function Layer(props: Props) {
6
13
  const { children, className, ref, ...others } = props;
7
14
  const layerClass = clsx('recharts-layer', className);
8
15
  return <g className={layerClass} {...svgPropertiesAndEvents(others)} ref={ref}>{children}</g>;
@@ -1,3 +1,12 @@
1
+ import type { OctaneNode, Ref } from '../util/OctaneTypes.ts';
2
+
3
+ type RootSurfaceProps = {
4
+ children: OctaneNode;
5
+ title: string | undefined;
6
+ desc: string | undefined;
7
+ otherAttributes: Record<string, unknown> | null;
8
+ ref?: Ref<SVGSVGElement>;
9
+ };
1
10
  // Port of container/RootSurface.tsx — the chart's outer <svg> (via Surface),
2
11
  // sized from the store, with the zIndex portal <g>s wrapped around children.
3
12
  // A panorama (Brush preview) renders a nested, brush-sized Surface instead.
@@ -18,7 +27,7 @@ const FULL_WIDTH_AND_HEIGHT = {
18
27
  display: 'block',
19
28
  };
20
29
 
21
- function MainChartSurface(props) {
30
+ function MainChartSurface(props: RootSurfaceProps) {
22
31
  const width = useChartWidth();
23
32
  const height = useChartHeight();
24
33
  const hasAccessibilityLayer = useAccessibilityLayer();
@@ -26,7 +35,7 @@ function MainChartSurface(props) {
26
35
  return null;
27
36
  }
28
37
  const { children, otherAttributes, title, desc, ref } = props;
29
- let tabIndex, role;
38
+ let tabIndex: number | undefined, role: string | undefined;
30
39
  if (otherAttributes != null) {
31
40
  if (typeof otherAttributes.tabIndex === 'number') {
32
41
  tabIndex = otherAttributes.tabIndex;
@@ -52,7 +61,9 @@ function MainChartSurface(props) {
52
61
  >{children}</Surface>;
53
62
  }
54
63
 
55
- function BrushPanoramaSurface(props) {
64
+ function BrushPanoramaSurface(props: {
65
+ children: OctaneNode;
66
+ }) {
56
67
  const { children } = props;
57
68
  const brushDimensions = useAppSelector(selectBrushDimensions);
58
69
  if (!brushDimensions) {
@@ -62,7 +73,7 @@ function BrushPanoramaSurface(props) {
62
73
  return <Surface width={width} height={height} x={x} y={y}>{children}</Surface>;
63
74
  }
64
75
 
65
- export function RootSurface(props) {
76
+ export function RootSurface(props: RootSurfaceProps) {
66
77
  const { children, ref, ...rest } = props;
67
78
  const isPanorama = useIsPanorama();
68
79
  if (isPanorama) {
@@ -1,9 +1,23 @@
1
+ import type { CSSProperties, OctaneNode, SVGProps } from '../util/OctaneTypes.ts';
2
+ import type { CartesianViewBox } from '../util/types';
3
+
4
+ interface SurfaceProps {
5
+ width: number | string;
6
+ height: number | string;
7
+ viewBox?: CartesianViewBox;
8
+ className?: string;
9
+ style?: CSSProperties;
10
+ children?: OctaneNode;
11
+ title?: string;
12
+ desc?: string;
13
+ }
14
+ export type Props = Omit<SVGProps<SVGSVGElement>, 'viewBox'> & SurfaceProps;
1
15
  // Port of container/Surface.tsx — the root <svg> element every chart renders
2
16
  // into. Ref is a plain prop (octane model, no forwardRef).
3
17
  import { clsx } from 'clsx';
4
18
  import { svgPropertiesAndEvents } from '../util/svgPropertiesAndEvents.ts';
5
19
 
6
- export function Surface(props) {
20
+ export function Surface(props: Props) {
7
21
  const { children, width, height, viewBox, className, style, title, desc, ref, ...others } = props;
8
22
  const svgView = viewBox || { width, height, x: 0, y: 0 };
9
23
  const layerClass = clsx('recharts-surface', className);