@octanejs/recharts 0.1.40 → 0.1.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/{LICENSE → LICENSE.recharts} +3 -2
  2. package/README.md +12 -0
  3. package/package.json +10 -9
  4. package/src/animation/AnimatedItems.tsrx +36 -3
  5. package/src/animation/AnimationController.ts +17 -65
  6. package/src/animation/{AnimationControllerImpl.js → AnimationControllerImpl.ts} +19 -12
  7. package/src/animation/{AnimationHandle.js → AnimationHandle.ts} +82 -65
  8. package/src/animation/CSSTransitionAnimate.tsrx +3 -2
  9. package/src/animation/JavascriptAnimate.tsrx +18 -2
  10. package/src/animation/easing.ts +235 -0
  11. package/src/animation/{matchBy.js → matchBy.ts} +76 -120
  12. package/src/animation/timeoutController.ts +71 -0
  13. package/src/animation/useAnimationController.ts +4 -1
  14. package/src/animation/useAnimationStartSnapshot.ts +3 -3
  15. package/src/animation/util.ts +12 -0
  16. package/src/cartesian/Area.tsrx +33 -31
  17. package/src/cartesian/AreaRevealShape.tsrx +4 -3
  18. package/src/cartesian/Bar.ts +1 -0
  19. package/src/cartesian/Bar.tsrx +293 -39
  20. package/src/cartesian/BarStack.tsrx +31 -9
  21. package/src/cartesian/CartesianAxis.tsrx +154 -22
  22. package/src/cartesian/CartesianGrid.tsrx +5 -6
  23. package/src/cartesian/ErrorBar.tsrx +9 -8
  24. package/src/cartesian/Funnel.tsrx +40 -37
  25. package/src/cartesian/GraphicalItemClipPath.tsrx +11 -4
  26. package/src/cartesian/Line.ts +1 -0
  27. package/src/cartesian/Line.tsrx +206 -28
  28. package/src/cartesian/LineDrawShape.tsrx +23 -10
  29. package/src/cartesian/ReferenceLine.tsrx +8 -8
  30. package/src/cartesian/Scatter.tsrx +61 -66
  31. package/src/cartesian/XAxis.tsrx +78 -9
  32. package/src/cartesian/YAxis.tsrx +85 -12
  33. package/src/cartesian/getCartesianPosition.ts +265 -0
  34. package/src/cartesian/getEquidistantTicks.ts +144 -0
  35. package/src/cartesian/getTicks.ts +221 -0
  36. package/src/chart/AreaChart.tsrx +5 -1
  37. package/src/chart/BarChart.tsrx +8 -2
  38. package/src/chart/CartesianChart.tsrx +17 -4
  39. package/src/chart/CategoricalChart.tsrx +4 -1
  40. package/src/chart/ComposedChart.tsrx +5 -1
  41. package/src/chart/FunnelChart.tsrx +5 -1
  42. package/src/chart/LineChart.tsrx +8 -2
  43. package/src/chart/PieChart.tsrx +6 -2
  44. package/src/chart/PolarChart.tsrx +5 -4
  45. package/src/chart/RadarChart.tsrx +6 -2
  46. package/src/chart/RadialBarChart.tsrx +6 -2
  47. package/src/chart/RechartsWrapper.tsrx +57 -21
  48. package/src/chart/Sankey.tsrx +89 -91
  49. package/src/chart/ScatterChart.tsrx +5 -1
  50. package/src/chart/SunburstChart.tsrx +21 -14
  51. package/src/chart/types.ts +0 -1
  52. package/src/component/ActivePoints.tsrx +30 -5
  53. package/src/component/Cell.ts +19 -1
  54. package/src/component/Cursor.tsrx +11 -10
  55. package/src/component/DefaultLegendContent.tsrx +15 -10
  56. package/src/component/DefaultTooltipContent.tsrx +11 -9
  57. package/src/component/Dots.tsrx +37 -6
  58. package/src/component/Label.tsrx +99 -19
  59. package/src/component/LabelList.tsrx +54 -5
  60. package/src/component/Legend.tsrx +9 -5
  61. package/src/component/ResponsiveContainer.tsrx +13 -10
  62. package/src/component/Text.tsrx +95 -32
  63. package/src/component/Tooltip.tsrx +11 -10
  64. package/src/component/TooltipBoundingBox.tsrx +4 -5
  65. package/src/component/{responsiveContainerUtils.js → responsiveContainerUtils.ts} +59 -36
  66. package/src/container/ClipPathProvider.tsrx +6 -2
  67. package/src/container/Layer.tsrx +8 -1
  68. package/src/container/RootSurface.tsrx +15 -4
  69. package/src/container/Surface.tsrx +15 -1
  70. package/src/context/CellsContext.ts +6 -5
  71. package/src/context/ErrorBarContext.tsrx +23 -4
  72. package/src/context/RegisterGraphicalItemId.tsrx +10 -2
  73. package/src/context/accessibilityContext.ts +5 -0
  74. package/src/context/brushUpdateContext.ts +11 -0
  75. package/src/context/chartDataContext.ts +5 -4
  76. package/src/context/chartLayoutContext.ts +22 -8
  77. package/src/context/legendPayloadContext.tsrx +1 -1
  78. package/src/context/tooltipContext.ts +83 -0
  79. package/src/{hooks.js → hooks.ts} +88 -66
  80. package/src/index.ts +37 -37
  81. package/src/internal.ts +4 -20
  82. package/src/legacy-props.ts +129 -0
  83. package/src/polar/Pie.tsrx +91 -69
  84. package/src/polar/PolarAngleAxis.tsrx +47 -47
  85. package/src/polar/PolarGrid.tsrx +7 -6
  86. package/src/polar/PolarRadiusAxis.tsrx +29 -21
  87. package/src/polar/Radar.tsrx +26 -19
  88. package/src/polar/RadialBar.tsrx +59 -42
  89. package/src/polar/{defaultPolarAngleAxisProps.js → defaultPolarAngleAxisProps.ts} +6 -6
  90. package/src/polar/{defaultPolarRadiusAxisProps.js → defaultPolarRadiusAxisProps.ts} +5 -4
  91. package/src/shape/Cross.tsrx +14 -2
  92. package/src/shape/Curve.tsrx +111 -23
  93. package/src/shape/Dot.tsrx +12 -1
  94. package/src/shape/Polygon.tsrx +28 -6
  95. package/src/shape/Rectangle.tsrx +30 -3
  96. package/src/shape/Sector.tsrx +48 -6
  97. package/src/shape/Symbols.tsrx +24 -6
  98. package/src/shape/Trapezoid.tsrx +33 -3
  99. package/src/state/RechartsStoreProvider.tsrx +11 -2
  100. package/src/state/ReportChartProps.ts +2 -2
  101. package/src/state/ReportMainChartProps.ts +2 -1
  102. package/src/state/SetGraphicalItem.ts +6 -4
  103. package/src/state/SetLegendPayload.ts +7 -4
  104. package/src/state/SetTooltipEntrySettings.ts +5 -2
  105. package/src/state/brushSlice.ts +40 -0
  106. package/src/state/cartesianAxisSlice.ts +291 -0
  107. package/src/state/chartDataSlice.ts +87 -0
  108. package/src/state/errorBarSlice.ts +78 -0
  109. package/src/state/eventSettingsSlice.ts +30 -0
  110. package/src/state/{externalEventsMiddleware.js → externalEventsMiddleware.ts} +55 -34
  111. package/src/state/graphicalItemsSlice.ts +180 -0
  112. package/src/state/{keyboardEventsMiddleware.js → keyboardEventsMiddleware.ts} +72 -57
  113. package/src/state/layoutSlice.ts +50 -0
  114. package/src/state/legendSlice.ts +109 -0
  115. package/src/state/{mouseEventsMiddleware.js → mouseEventsMiddleware.ts} +45 -35
  116. package/src/state/optionsSlice.ts +65 -0
  117. package/src/state/polarAxisSlice.ts +42 -0
  118. package/src/state/polarOptionsSlice.ts +43 -0
  119. package/src/state/reduxDevtoolsJsonStringifyReplacer.ts +13 -0
  120. package/src/state/referenceElementsSlice.ts +100 -0
  121. package/src/state/renderedTicksSlice.ts +60 -0
  122. package/src/state/rootPropsSlice.ts +72 -0
  123. package/src/state/selectors/areaSelectors.ts +1 -2
  124. package/src/state/selectors/{arrayEqualityCheck.js → arrayEqualityCheck.ts} +4 -5
  125. package/src/state/selectors/axisSelectors.ts +2502 -0
  126. package/src/state/selectors/barSelectors.ts +373 -0
  127. package/src/state/selectors/barStackSelectors.ts +99 -0
  128. package/src/state/selectors/brushSelectors.ts +28 -0
  129. package/src/state/selectors/combiners/combineActiveLabel.ts +16 -0
  130. package/src/state/selectors/combiners/{combineActiveTooltipIndex.js → combineActiveTooltipIndex.ts} +45 -23
  131. package/src/state/selectors/combiners/combineAllBarPositions.ts +130 -0
  132. package/src/state/selectors/combiners/combineAxisRangeWithReverse.ts +16 -0
  133. package/src/state/selectors/combiners/combineBarPosition.ts +23 -0
  134. package/src/state/selectors/combiners/combineBarSizeList.ts +79 -0
  135. package/src/state/selectors/combiners/{combineCheckedDomain.js → combineCheckedDomain.ts} +9 -6
  136. package/src/state/selectors/combiners/combineConfiguredScale.ts +100 -0
  137. package/src/state/selectors/combiners/combineCoordinateForDefaultIndex.ts +46 -0
  138. package/src/state/selectors/combiners/{combineDisplayedStackedData.js → combineDisplayedStackedData.ts} +23 -19
  139. package/src/state/selectors/combiners/combineInverseScaleFunction.ts +16 -0
  140. package/src/state/selectors/combiners/{combineRealScaleType.js → combineRealScaleType.ts} +16 -8
  141. package/src/state/selectors/combiners/combineStackedData.ts +27 -0
  142. package/src/state/selectors/combiners/combineTooltipInteractionState.ts +86 -0
  143. package/src/state/selectors/combiners/combineTooltipPayload.ts +201 -0
  144. package/src/state/selectors/combiners/{combineTooltipPayloadConfigurations.js → combineTooltipPayloadConfigurations.ts} +17 -18
  145. package/src/state/selectors/containerSelectors.ts +12 -0
  146. package/src/state/selectors/{dataSelectors.js → dataSelectors.ts} +43 -41
  147. package/src/state/selectors/funnelSelectors.ts +5 -5
  148. package/src/state/selectors/graphicalItemSelectors.ts +22 -0
  149. package/src/state/selectors/legendSelectors.ts +25 -0
  150. package/src/state/selectors/lineSelectors.ts +159 -0
  151. package/src/state/selectors/numberDomainEqualityCheck.ts +15 -0
  152. package/src/state/selectors/pickAxisId.ts +6 -0
  153. package/src/state/selectors/pickAxisType.ts +4 -0
  154. package/src/state/selectors/pieSelectors.ts +14 -13
  155. package/src/state/selectors/polarAxisSelectors.ts +223 -0
  156. package/src/state/selectors/polarSelectors.ts +1 -1
  157. package/src/state/selectors/radarSelectors.ts +1 -1
  158. package/src/state/selectors/radialBarSelectors.ts +17 -16
  159. package/src/state/selectors/rootPropsSelectors.ts +26 -0
  160. package/src/state/selectors/scatterSelectors.ts +11 -10
  161. package/src/state/selectors/{selectActivePropsFromChartPointer.js → selectActivePropsFromChartPointer.ts} +11 -4
  162. package/src/state/selectors/selectAllAxes.ts +20 -0
  163. package/src/state/selectors/selectChartOffset.ts +17 -0
  164. package/src/state/selectors/selectChartOffsetInternal.ts +147 -0
  165. package/src/state/selectors/{selectPlotArea.js → selectPlotArea.ts} +4 -3
  166. package/src/state/selectors/selectTooltipAxisId.ts +6 -0
  167. package/src/state/selectors/{selectTooltipAxisType.js → selectTooltipAxisType.ts} +10 -4
  168. package/src/state/selectors/selectTooltipEventType.ts +39 -0
  169. package/src/state/selectors/selectTooltipPayloadSearcher.ts +6 -0
  170. package/src/state/selectors/selectTooltipSettings.ts +6 -0
  171. package/src/state/selectors/selectTooltipState.ts +5 -0
  172. package/src/state/selectors/selectors.ts +315 -0
  173. package/src/state/selectors/tooltipSelectors.ts +611 -0
  174. package/src/state/selectors/touchSelectors.ts +52 -0
  175. package/src/state/{store.js → store.ts} +46 -36
  176. package/src/state/tooltipSlice.ts +507 -0
  177. package/src/state/{touchEventsMiddleware.js → touchEventsMiddleware.ts} +54 -42
  178. package/src/state/types/AreaSettings.ts +15 -0
  179. package/src/state/types/BarSettings.ts +15 -0
  180. package/src/state/types/LineSettings.ts +10 -0
  181. package/src/state/types/PieSettings.ts +32 -0
  182. package/src/state/types/RadarSettings.ts +6 -0
  183. package/src/state/types/RadialBarSettings.ts +10 -0
  184. package/src/state/types/ScatterSettings.ts +13 -0
  185. package/src/state/types/StackedGraphicalItem.ts +34 -0
  186. package/src/state/zIndexSlice.ts +137 -0
  187. package/src/synchronisation/syncSelectors.ts +7 -0
  188. package/src/synchronisation/types.ts +42 -0
  189. package/src/synchronisation/useChartSynchronisation.tsrx +26 -11
  190. package/src/types.ts +55 -0
  191. package/src/util/ActiveShapeUtils.tsrx +34 -10
  192. package/src/util/BarUtils.tsrx +43 -3
  193. package/src/util/{CartesianUtils.js → CartesianUtils.ts} +22 -39
  194. package/src/util/ChartUtils.ts +759 -0
  195. package/src/util/{Constants.js → Constants.ts} +6 -6
  196. package/src/util/DOMUtils.ts +135 -0
  197. package/src/util/{DataUtils.js → DataUtils.ts} +120 -47
  198. package/src/util/Events.ts +22 -0
  199. package/src/util/FunnelUtils.tsrx +3 -3
  200. package/src/util/Global.ts +13 -0
  201. package/src/util/IfOverflow.ts +16 -0
  202. package/src/util/LRUCache.ts +42 -0
  203. package/src/util/{LogUtils.js → LogUtils.ts} +7 -12
  204. package/src/util/OctaneTypes.ts +51 -0
  205. package/src/util/PolarUtils.ts +132 -0
  206. package/src/util/RadialBarUtils.tsrx +3 -3
  207. package/src/util/ReduceCSSCalc.ts +186 -0
  208. package/src/util/ScatterUtils.tsrx +9 -7
  209. package/src/util/{TickUtils.js → TickUtils.ts} +30 -13
  210. package/src/util/{YAxisUtils.js → YAxisUtils.ts} +27 -17
  211. package/src/util/axisPropsAreEqual.ts +49 -0
  212. package/src/util/createEventProxy.ts +20 -0
  213. package/src/util/{excludeEventProps.js → excludeEventProps.ts} +8 -6
  214. package/src/util/getActiveCoordinate.ts +210 -0
  215. package/src/util/{getAxisTypeBasedOnLayout.js → getAxisTypeBasedOnLayout.ts} +7 -3
  216. package/src/util/getClassNameFromUnknown.ts +7 -0
  217. package/src/util/{getEveryNth.js → getEveryNth.ts} +5 -6
  218. package/src/util/getRadiusAndStrokeWidthFromDot.ts +31 -0
  219. package/src/util/{getRelativeCoordinate.js → getRelativeCoordinate.ts} +26 -9
  220. package/src/util/getSliced.ts +14 -0
  221. package/src/util/{isDomainSpecifiedByUser.js → isDomainSpecifiedByUser.ts} +46 -100
  222. package/src/util/isWellBehavedNumber.ts +8 -0
  223. package/src/util/payload/getUniqPayload.ts +1 -1
  224. package/src/util/{propsAreEqual.js → propsAreEqual.ts} +10 -8
  225. package/src/util/{resolveDefaultProps.js → resolveDefaultProps.ts} +35 -57
  226. package/src/util/round.ts +33 -0
  227. package/src/util/scale/CustomScaleDefinition.ts +82 -0
  228. package/src/util/scale/RechartsScale.ts +131 -0
  229. package/src/util/scale/{createCategoricalInverse.js → createCategoricalInverse.ts} +24 -29
  230. package/src/util/scale/{getNiceTickValues.js → getNiceTickValues.ts} +125 -146
  231. package/src/util/scale/index.ts +2 -0
  232. package/src/util/scale/util/{arithmetic.js → arithmetic.ts} +12 -8
  233. package/src/util/stacks/getStackSeriesIdentifier.ts +21 -0
  234. package/src/util/stacks/stackTypes.ts +58 -0
  235. package/src/util/{svgPropertiesNoEvents.js → svgPropertiesNoEvents.ts} +52 -27
  236. package/src/util/tooltip/translate.ts +2 -1
  237. package/src/util/typedDataKey.ts +49 -0
  238. package/src/util/types.ts +1265 -7
  239. package/src/util/{useUniqueId.js → useUniqueId.ts} +9 -5
  240. package/src/zIndex/{DefaultZIndexes.js → DefaultZIndexes.ts} +13 -4
  241. package/src/zIndex/ZIndexLayer.tsrx +13 -4
  242. package/src/zIndex/ZIndexPortal.tsrx +14 -4
  243. package/src/zIndex/{getZIndexFromUnknown.js → getZIndexFromUnknown.ts} +3 -3
  244. package/src/zIndex/{zIndexSelectors.js → zIndexSelectors.ts} +17 -11
  245. package/src/animation/easing.js +0 -193
  246. package/src/animation/timeoutController.js +0 -49
  247. package/src/animation/util.js +0 -11
  248. package/src/cartesian/Area.tsrx.d.ts +0 -340
  249. package/src/cartesian/Bar.tsrx.d.ts +0 -4
  250. package/src/cartesian/BarStack.tsrx.d.ts +0 -6
  251. package/src/cartesian/CartesianAxis.tsrx.d.ts +0 -3
  252. package/src/cartesian/CartesianGrid.tsrx.d.ts +0 -219
  253. package/src/cartesian/ErrorBar.tsrx.d.ts +0 -131
  254. package/src/cartesian/Funnel.tsrx.d.ts +0 -274
  255. package/src/cartesian/Line.tsrx.d.ts +0 -4
  256. package/src/cartesian/LineDrawShape.tsrx.d.ts +0 -2
  257. package/src/cartesian/ReferenceLine.tsrx.d.ts +0 -178
  258. package/src/cartesian/Scatter.tsrx.d.ts +0 -351
  259. package/src/cartesian/XAxis.tsrx.d.ts +0 -3
  260. package/src/cartesian/YAxis.tsrx.d.ts +0 -3
  261. package/src/cartesian/ZAxis.tsrx.d.ts +0 -102
  262. package/src/cartesian/getCartesianPosition.js +0 -277
  263. package/src/cartesian/getEquidistantTicks.js +0 -133
  264. package/src/cartesian/getTicks.js +0 -280
  265. package/src/chart/AreaChart.tsrx.d.ts +0 -12
  266. package/src/chart/BarChart.tsrx.d.ts +0 -2
  267. package/src/chart/CartesianChart.tsrx.d.ts +0 -10
  268. package/src/chart/ComposedChart.tsrx.d.ts +0 -12
  269. package/src/chart/FunnelChart.tsrx.d.ts +0 -12
  270. package/src/chart/LineChart.tsrx.d.ts +0 -2
  271. package/src/chart/PieChart.tsrx.d.ts +0 -31
  272. package/src/chart/RadarChart.tsrx.d.ts +0 -31
  273. package/src/chart/RadialBarChart.tsrx.d.ts +0 -31
  274. package/src/chart/Sankey.tsrx.d.ts +0 -253
  275. package/src/chart/ScatterChart.tsrx.d.ts +0 -12
  276. package/src/chart/SunburstChart.tsrx.d.ts +0 -146
  277. package/src/component/DefaultLegendContent.tsrx.d.ts +0 -125
  278. package/src/component/DefaultTooltipContent.tsrx.d.ts +0 -87
  279. package/src/component/Label.tsrx.d.ts +0 -12
  280. package/src/component/LabelList.tsrx.d.ts +0 -8
  281. package/src/component/Legend.tsrx.d.ts +0 -88
  282. package/src/component/ResponsiveContainer.tsrx.d.ts +0 -81
  283. package/src/component/Text.tsrx.d.ts +0 -9
  284. package/src/component/Tooltip.tsrx.d.ts +0 -246
  285. package/src/container/Layer.tsrx.d.ts +0 -6
  286. package/src/container/Surface.tsrx.d.ts +0 -12
  287. package/src/context/accessibilityContext.js +0 -10
  288. package/src/context/tooltipContext.js +0 -55
  289. package/src/index.d.ts +0 -281
  290. package/src/polar/Pie.tsrx.d.ts +0 -436
  291. package/src/polar/PolarAngleAxis.tsrx.d.ts +0 -215
  292. package/src/polar/PolarGrid.tsrx.d.ts +0 -117
  293. package/src/polar/PolarRadiusAxis.tsrx.d.ts +0 -209
  294. package/src/polar/Radar.tsrx.d.ts +0 -215
  295. package/src/polar/RadialBar.tsrx.d.ts +0 -340
  296. package/src/shape/Cross.tsrx.d.ts +0 -12
  297. package/src/shape/Curve.tsrx.d.ts +0 -42
  298. package/src/shape/Dot.tsrx.d.ts +0 -9
  299. package/src/shape/Polygon.tsrx.d.ts +0 -13
  300. package/src/shape/Rectangle.tsrx.d.ts +0 -31
  301. package/src/shape/Sector.tsrx.d.ts +0 -29
  302. package/src/shape/Symbols.tsrx.d.ts +0 -15
  303. package/src/shape/Trapezoid.tsrx.d.ts +0 -29
  304. package/src/state/brushSlice.js +0 -36
  305. package/src/state/cartesianAxisSlice.js +0 -256
  306. package/src/state/chartDataSlice.js +0 -67
  307. package/src/state/errorBarSlice.js +0 -53
  308. package/src/state/eventSettingsSlice.js +0 -25
  309. package/src/state/graphicalItemsSlice.js +0 -91
  310. package/src/state/layoutSlice.js +0 -57
  311. package/src/state/legendSlice.js +0 -83
  312. package/src/state/optionsSlice.js +0 -45
  313. package/src/state/polarAxisSlice.js +0 -33
  314. package/src/state/polarOptionsSlice.js +0 -26
  315. package/src/state/reduxDevtoolsJsonStringifyReplacer.js +0 -14
  316. package/src/state/referenceElementsSlice.js +0 -51
  317. package/src/state/renderedTicksSlice.js +0 -41
  318. package/src/state/rootPropsSlice.js +0 -48
  319. package/src/state/selectors/axisSelectors.js +0 -2113
  320. package/src/state/selectors/barSelectors.js +0 -263
  321. package/src/state/selectors/barStackSelectors.js +0 -65
  322. package/src/state/selectors/brushSelectors.js +0 -21
  323. package/src/state/selectors/combiners/combineActiveLabel.js +0 -18
  324. package/src/state/selectors/combiners/combineAllBarPositions.js +0 -169
  325. package/src/state/selectors/combiners/combineAxisRangeWithReverse.js +0 -11
  326. package/src/state/selectors/combiners/combineBarPosition.js +0 -17
  327. package/src/state/selectors/combiners/combineBarSizeList.js +0 -115
  328. package/src/state/selectors/combiners/combineConfiguredScale.js +0 -46
  329. package/src/state/selectors/combiners/combineCoordinateForDefaultIndex.js +0 -48
  330. package/src/state/selectors/combiners/combineInverseScaleFunction.js +0 -12
  331. package/src/state/selectors/combiners/combineStackedData.js +0 -22
  332. package/src/state/selectors/combiners/combineTooltipInteractionState.js +0 -121
  333. package/src/state/selectors/combiners/combineTooltipPayload.js +0 -248
  334. package/src/state/selectors/containerSelectors.js +0 -6
  335. package/src/state/selectors/graphicalItemSelectors.js +0 -25
  336. package/src/state/selectors/legendSelectors.js +0 -18
  337. package/src/state/selectors/lineSelectors.js +0 -106
  338. package/src/state/selectors/numberDomainEqualityCheck.js +0 -11
  339. package/src/state/selectors/pickAxisId.js +0 -3
  340. package/src/state/selectors/pickAxisType.js +0 -3
  341. package/src/state/selectors/polarAxisSelectors.js +0 -237
  342. package/src/state/selectors/rootPropsSelectors.js +0 -13
  343. package/src/state/selectors/selectAllAxes.js +0 -15
  344. package/src/state/selectors/selectChartOffset.js +0 -12
  345. package/src/state/selectors/selectChartOffsetInternal.js +0 -174
  346. package/src/state/selectors/selectTooltipAxisId.js +0 -3
  347. package/src/state/selectors/selectTooltipEventType.js +0 -27
  348. package/src/state/selectors/selectTooltipPayloadSearcher.js +0 -3
  349. package/src/state/selectors/selectTooltipSettings.js +0 -3
  350. package/src/state/selectors/selectTooltipState.js +0 -3
  351. package/src/state/selectors/selectors.js +0 -222
  352. package/src/state/selectors/tooltipSelectors.js +0 -471
  353. package/src/state/selectors/touchSelectors.js +0 -31
  354. package/src/state/tooltipSlice.js +0 -237
  355. package/src/state/types/StackedGraphicalItem.js +0 -18
  356. package/src/state/zIndexSlice.js +0 -167
  357. package/src/synchronisation/syncSelectors.js +0 -5
  358. package/src/util/ChartUtils.js +0 -630
  359. package/src/util/DOMUtils.js +0 -180
  360. package/src/util/Events.js +0 -7
  361. package/src/util/Global.js +0 -13
  362. package/src/util/LRUCache.js +0 -58
  363. package/src/util/PolarUtils.js +0 -190
  364. package/src/util/ReduceCSSCalc.js +0 -260
  365. package/src/util/axisPropsAreEqual.js +0 -63
  366. package/src/util/createEventProxy.js +0 -18
  367. package/src/util/getActiveCoordinate.js +0 -253
  368. package/src/util/getClassNameFromUnknown.js +0 -8
  369. package/src/util/getRadiusAndStrokeWidthFromDot.js +0 -28
  370. package/src/util/getSliced.js +0 -11
  371. package/src/util/isWellBehavedNumber.js +0 -8
  372. package/src/util/round.js +0 -39
  373. package/src/util/scale/RechartsScale.js +0 -68
  374. package/src/util/scale/index.js +0 -3
  375. package/src/util/stacks/getStackSeriesIdentifier.js +0 -10
  376. package/src/zIndex/ZIndexLayer.tsrx.d.ts +0 -2
@@ -0,0 +1,210 @@
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ import {
3
+ AxisType,
4
+ CartesianLayout,
5
+ ChartOffsetInternal,
6
+ RelativePointer,
7
+ Coordinate,
8
+ PolarCoordinate,
9
+ PolarLayout,
10
+ RangeObj,
11
+ TickItem,
12
+ } from './types';
13
+ import { polarToCartesian } from './PolarUtils';
14
+ import { AxisRange } from '../state/selectors/axisSelectors';
15
+ import { mathSign } from './DataUtils';
16
+
17
+ export const getActiveCartesianCoordinate = (
18
+ layout: CartesianLayout,
19
+ tooltipTicks: readonly TickItem[],
20
+ activeIndex: number | undefined,
21
+ pointer: RelativePointer,
22
+ ): Coordinate => {
23
+ const entry = tooltipTicks.find((tick) => tick && tick.index === activeIndex);
24
+
25
+ if (entry) {
26
+ if (layout === 'horizontal') {
27
+ return { x: entry.coordinate, y: pointer.relativeY };
28
+ }
29
+ if (layout === 'vertical') {
30
+ return { x: pointer.relativeX, y: entry.coordinate };
31
+ }
32
+ }
33
+
34
+ return { x: 0, y: 0 };
35
+ };
36
+
37
+ /**
38
+ * Get the active coordinate in polar coordinate system.
39
+ * Internally we only really use x and y, but this returned object is part of public API
40
+ * (because it goes straight to the tooltip content) so we keep all the other properties
41
+ * for backwards compatibility.
42
+ *
43
+ * @param layout - The polar layout type ('centric' or 'radial').
44
+ * @param tooltipTicks - Array of tick items used for tooltips.
45
+ * @param activeIndex - The index of the active tick.
46
+ * @param rangeObj - The range object containing polar chart properties.
47
+ * @returns The active coordinate object with polar properties.
48
+ */
49
+ export const getActivePolarCoordinate = (
50
+ layout: PolarLayout,
51
+ tooltipTicks: readonly TickItem[],
52
+ activeIndex: number | undefined,
53
+ rangeObj: RangeObj,
54
+ ): PolarCoordinate => {
55
+ const entry = tooltipTicks.find((tick) => tick && tick.index === activeIndex);
56
+
57
+ if (entry) {
58
+ if (layout === 'centric') {
59
+ const angle = entry.coordinate;
60
+ const { radius } = rangeObj;
61
+
62
+ return {
63
+ ...rangeObj,
64
+ ...polarToCartesian(rangeObj.cx, rangeObj.cy, radius, angle),
65
+ angle,
66
+ radius,
67
+ };
68
+ }
69
+
70
+ const radius = entry.coordinate;
71
+ const { angle } = rangeObj;
72
+
73
+ return {
74
+ ...rangeObj,
75
+ ...polarToCartesian(rangeObj.cx, rangeObj.cy, radius, angle),
76
+ angle,
77
+ radius,
78
+ };
79
+ }
80
+
81
+ return {
82
+ angle: 0,
83
+ clockWise: false,
84
+ cx: 0,
85
+ cy: 0,
86
+ endAngle: 0,
87
+ innerRadius: 0,
88
+ outerRadius: 0,
89
+ radius: 0,
90
+ startAngle: 0,
91
+ x: 0,
92
+ y: 0,
93
+ };
94
+ };
95
+
96
+ export function isInCartesianRange(pointer: RelativePointer, offset: ChartOffsetInternal): boolean {
97
+ const { relativeX: x, relativeY: y } = pointer;
98
+ return (
99
+ x >= offset.left &&
100
+ x <= offset.left + offset.width &&
101
+ y >= offset.top &&
102
+ y <= offset.top + offset.height
103
+ );
104
+ }
105
+
106
+ export const calculateActiveTickIndex = (
107
+ /**
108
+ * For different layouts, `coordinate` is different:
109
+ * In horizontal layout, this is expected to be the `x` coordinate
110
+ * vertical -> y
111
+ * centric -> angle
112
+ * radial -> radius
113
+ */
114
+ coordinate: number | undefined,
115
+ ticks: ReadonlyArray<TickItem> | undefined,
116
+ unsortedTicks: ReadonlyArray<TickItem>,
117
+ axisType: AxisType | undefined,
118
+ range: AxisRange | undefined,
119
+ ): number | undefined => {
120
+ const len = ticks?.length ?? 0;
121
+
122
+ // if there are 1 or fewer ticks or if there is no coordinate then the active tick is at index 0
123
+ if (len <= 1 || coordinate == null) {
124
+ return 0;
125
+ }
126
+
127
+ if (
128
+ axisType === 'angleAxis' &&
129
+ range != null &&
130
+ Math.abs(Math.abs(range[1] - range[0]) - 360) <= 1e-6
131
+ ) {
132
+ // ticks are distributed in a circle
133
+ for (let i = 0; i < len; i++) {
134
+ const before = i > 0 ? unsortedTicks[i - 1]?.coordinate : unsortedTicks[len - 1]?.coordinate;
135
+ const cur = unsortedTicks[i]?.coordinate;
136
+ const after = i >= len - 1 ? unsortedTicks[0]?.coordinate : unsortedTicks[i + 1]?.coordinate;
137
+ let sameDirectionCoord;
138
+
139
+ if (before == null || cur == null || after == null) {
140
+ continue;
141
+ }
142
+
143
+ if (mathSign(cur - before) !== mathSign(after - cur)) {
144
+ const diffInterval = [];
145
+ if (mathSign(after - cur) === mathSign(range[1] - range[0])) {
146
+ sameDirectionCoord = after;
147
+
148
+ const curInRange = cur + range[1] - range[0];
149
+ diffInterval[0] = Math.min(curInRange, (curInRange + before) / 2);
150
+ diffInterval[1] = Math.max(curInRange, (curInRange + before) / 2);
151
+ } else {
152
+ sameDirectionCoord = before;
153
+
154
+ const afterInRange = after + range[1] - range[0];
155
+ diffInterval[0] = Math.min(cur, (afterInRange + cur) / 2);
156
+ diffInterval[1] = Math.max(cur, (afterInRange + cur) / 2);
157
+ }
158
+ const sameInterval: [number, number] = [
159
+ Math.min(cur, (sameDirectionCoord + cur) / 2),
160
+ Math.max(cur, (sameDirectionCoord + cur) / 2),
161
+ ];
162
+
163
+ if (
164
+ (coordinate > sameInterval[0] && coordinate <= sameInterval[1]) ||
165
+ (coordinate >= diffInterval[0] && coordinate <= diffInterval[1])
166
+ ) {
167
+ return unsortedTicks[i]?.index;
168
+ }
169
+ } else {
170
+ const minValue = Math.min(before, after);
171
+ const maxValue = Math.max(before, after);
172
+
173
+ if (coordinate > (minValue + cur) / 2 && coordinate <= (maxValue + cur) / 2) {
174
+ return unsortedTicks[i]?.index;
175
+ }
176
+ }
177
+ }
178
+ } else if (ticks) {
179
+ // ticks are distributed in a single direction
180
+ for (let i = 0; i < len; i++) {
181
+ const curr = ticks[i];
182
+ if (curr == null) {
183
+ continue;
184
+ }
185
+ const next = ticks[i + 1];
186
+ const prev = ticks[i - 1];
187
+
188
+ if (i === 0 && next != null && coordinate <= (curr.coordinate + next.coordinate) / 2) {
189
+ return curr.index;
190
+ }
191
+
192
+ if (i === len - 1 && prev != null && coordinate > (curr.coordinate + prev.coordinate) / 2) {
193
+ return curr.index;
194
+ }
195
+
196
+ if (
197
+ i > 0 &&
198
+ i < len - 1 &&
199
+ prev != null &&
200
+ next != null &&
201
+ coordinate > (curr.coordinate + prev.coordinate) / 2 &&
202
+ coordinate <= (curr.coordinate + next.coordinate) / 2
203
+ ) {
204
+ return curr.index;
205
+ }
206
+ }
207
+ }
208
+
209
+ return -1;
210
+ };
@@ -1,12 +1,16 @@
1
- // Vendored verbatim from recharts@3.9.2 es6/util/getAxisTypeBasedOnLayout.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 { AxisDomainTypeInput, AxisType, EvaluatedAxisDomainType, LayoutType } from './types';
3
3
  import { isCategoricalAxis } from './ChartUtils';
4
4
 
5
5
  /**
6
6
  * This function evaluates the "auto" axis domain type based on the chart layout and axis type.
7
7
  * It outputs a definitive axis domain type that can be used for further processing.
8
8
  */
9
- export function getAxisTypeBasedOnLayout(layout, axisType, axisDomainType) {
9
+ export function getAxisTypeBasedOnLayout(
10
+ layout: LayoutType | undefined,
11
+ axisType: AxisType,
12
+ axisDomainType: AxisDomainTypeInput,
13
+ ): EvaluatedAxisDomainType | undefined {
10
14
  if (axisDomainType !== 'auto') {
11
15
  return axisDomainType;
12
16
  }
@@ -0,0 +1,7 @@
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ export function getClassNameFromUnknown(u: unknown): string {
3
+ if (u && typeof u === 'object' && 'className' in u && typeof u.className === 'string') {
4
+ return u.className;
5
+ }
6
+ return '';
7
+ }
@@ -1,5 +1,4 @@
1
- // Vendored verbatim from recharts@3.9.2 es6/util/getEveryNth.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.
3
2
  /**
4
3
  * Given an array and a number N, return a new array which contains every nTh
5
4
  * element of the input array. For n below 1, an empty array is returned.
@@ -11,16 +10,16 @@
11
10
  * @param n A number specifying which elements to take.
12
11
  * @returns The result array of the same type as the input array.
13
12
  */
14
- export function getEveryNth(array, n) {
13
+ export function getEveryNth<Type>(array: ReadonlyArray<Type>, n: number): ReadonlyArray<Type> {
15
14
  if (n < 1) {
16
15
  return [];
17
16
  }
18
17
  if (n === 1) {
19
18
  return array;
20
19
  }
21
- var result = [];
22
- for (var i = 0; i < array.length; i += n) {
23
- var item = array[i];
20
+ const result: Type[] = [];
21
+ for (let i = 0; i < array.length; i += n) {
22
+ const item = array[i];
24
23
  if (item !== undefined) {
25
24
  result.push(item);
26
25
  }
@@ -0,0 +1,31 @@
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ import { ActiveDotType, DotType } from './types';
3
+ import { svgPropertiesNoEventsFromUnknown } from './svgPropertiesNoEvents';
4
+
5
+ export function getRadiusAndStrokeWidthFromDot(dot: ActiveDotType | DotType): {
6
+ r: number;
7
+ strokeWidth: number;
8
+ } {
9
+ const props = svgPropertiesNoEventsFromUnknown(dot);
10
+ const defaultR = 3;
11
+ const defaultStrokeWidth = 2;
12
+ if (props != null) {
13
+ const { r, strokeWidth } = props;
14
+ let realR = Number(r);
15
+ let realStrokeWidth = Number(strokeWidth);
16
+ if (Number.isNaN(realR) || realR < 0) {
17
+ realR = defaultR;
18
+ }
19
+ if (Number.isNaN(realStrokeWidth) || realStrokeWidth < 0) {
20
+ realStrokeWidth = defaultStrokeWidth;
21
+ }
22
+ return {
23
+ r: realR,
24
+ strokeWidth: realStrokeWidth,
25
+ };
26
+ }
27
+ return {
28
+ r: defaultR,
29
+ strokeWidth: defaultStrokeWidth,
30
+ };
31
+ }
@@ -1,9 +1,18 @@
1
- // Vendored verbatim from recharts@3.9.2 es6/util/getRelativeCoordinate.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 {
3
+ RelativePointer,
4
+ MousePointer,
5
+ SVGMousePointer,
6
+ TouchPointer,
7
+ SVGTouchPointer,
8
+ } from './types';
9
+
3
10
  /**
4
11
  * Type guard to check if the pointer event is from an SVG element.
5
12
  */
6
- function isSvgPointer(pointer) {
13
+ function isSvgPointer(
14
+ pointer: MousePointer | TouchPointer,
15
+ ): pointer is SVGMousePointer | SVGTouchPointer {
7
16
  return 'getBBox' in pointer.currentTarget && typeof pointer.currentTarget.getBBox === 'function';
8
17
  }
9
18
 
@@ -60,22 +69,28 @@ function isSvgPointer(pointer) {
60
69
  * @param event The mouse or touch event from React event handlers (works with both HTML and SVG elements)
61
70
  * @returns Coordinates relative to the top-left corner of the element. Single object for Mouse events, array of objects for Touch events.
62
71
  */
72
+ export function getRelativeCoordinate(event: MousePointer): RelativePointer;
73
+ export function getRelativeCoordinate(event: TouchPointer): Array<RelativePointer>;
74
+ export function getRelativeCoordinate(
75
+ event: MousePointer | TouchPointer,
76
+ ): RelativePointer | Array<RelativePointer> {
77
+ const rect = event.currentTarget.getBoundingClientRect();
78
+
79
+ let scaleX: number, scaleY: number;
63
80
 
64
- export function getRelativeCoordinate(event) {
65
- var rect = event.currentTarget.getBoundingClientRect();
66
- var scaleX, scaleY;
67
81
  if (isSvgPointer(event)) {
68
82
  // For SVG elements, use getBBox() to get the intrinsic size in SVG coordinates
69
- var bbox = event.currentTarget.getBBox();
83
+ const bbox = event.currentTarget.getBBox();
70
84
  scaleX = bbox.width > 0 ? rect.width / bbox.width : 1;
71
85
  scaleY = bbox.height > 0 ? rect.height / bbox.height : 1;
72
86
  } else {
73
87
  // For HTML elements, use offsetWidth/offsetHeight
74
- var element = event.currentTarget;
88
+ const element = event.currentTarget;
75
89
  scaleX = element.offsetWidth > 0 ? rect.width / element.offsetWidth : 1;
76
90
  scaleY = element.offsetHeight > 0 ? rect.height / element.offsetHeight : 1;
77
91
  }
78
- var getCoordinates = (clientX, clientY) => ({
92
+
93
+ const getCoordinates = (clientX: number, clientY: number): RelativePointer => ({
79
94
  /*
80
95
  * Here it's important to use:
81
96
  * - event.clientX and event.clientY to get the mouse position relative to the viewport, including scroll.
@@ -89,8 +104,10 @@ export function getRelativeCoordinate(event) {
89
104
  relativeX: Math.round((clientX - rect.left) / scaleX),
90
105
  relativeY: Math.round((clientY - rect.top) / scaleY),
91
106
  });
107
+
92
108
  if ('touches' in event) {
93
109
  return Array.from(event.touches).map((touch) => getCoordinates(touch.clientX, touch.clientY));
94
110
  }
111
+
95
112
  return getCoordinates(event.clientX, event.clientY);
96
113
  }
@@ -0,0 +1,14 @@
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ export function getSliced<T>(
3
+ arr: ReadonlyArray<T>,
4
+ startIndex: number,
5
+ endIndex: number,
6
+ ): ReadonlyArray<T> {
7
+ if (!Array.isArray(arr)) {
8
+ return arr;
9
+ }
10
+ if (arr && startIndex + endIndex !== 0) {
11
+ return arr.slice(startIndex, endIndex + 1);
12
+ }
13
+ return arr;
14
+ }
@@ -1,83 +1,24 @@
1
- // Vendored verbatim from recharts@3.9.2 es6/util/isDomainSpecifiedByUser.js (framework-agnostic).
2
- // Do not edit — update by re-vendoring when the recharts devDependency moves.
3
- function _slicedToArray(r, e) {
4
- return (
5
- _arrayWithHoles(r) ||
6
- _iterableToArrayLimit(r, e) ||
7
- _unsupportedIterableToArray(r, e) ||
8
- _nonIterableRest()
9
- );
10
- }
11
- function _nonIterableRest() {
12
- throw new TypeError(
13
- 'Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.',
14
- );
15
- }
16
- function _unsupportedIterableToArray(r, a) {
17
- if (r) {
18
- if ('string' == typeof r) return _arrayLikeToArray(r, a);
19
- var t = {}.toString.call(r).slice(8, -1);
20
- return (
21
- 'Object' === t && r.constructor && (t = r.constructor.name),
22
- 'Map' === t || 'Set' === t
23
- ? Array.from(r)
24
- : 'Arguments' === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)
25
- ? _arrayLikeToArray(r, a)
26
- : void 0
27
- );
28
- }
29
- }
30
- function _arrayLikeToArray(r, a) {
31
- (null == a || a > r.length) && (a = r.length);
32
- for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
33
- return n;
34
- }
35
- function _iterableToArrayLimit(r, l) {
36
- var t =
37
- null == r ? null : ('undefined' != typeof Symbol && r[Symbol.iterator]) || r['@@iterator'];
38
- if (null != t) {
39
- var e,
40
- n,
41
- i,
42
- u,
43
- a = [],
44
- f = !0,
45
- o = !1;
46
- try {
47
- if (((i = (t = t.call(r)).next), 0 === l)) {
48
- if (Object(t) !== t) return;
49
- f = !1;
50
- } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
51
- } catch (r) {
52
- ((o = !0), (n = r));
53
- } finally {
54
- try {
55
- if (!f && null != t.return && ((u = t.return()), Object(u) !== u)) return;
56
- } finally {
57
- if (o) throw n;
58
- }
59
- }
60
- return a;
61
- }
62
- }
63
- function _arrayWithHoles(r) {
64
- if (Array.isArray(r)) return r;
65
- }
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
66
2
  import { MAX_VALUE_REG, MIN_VALUE_REG } from './ChartUtils';
67
3
  import { isNumber } from './DataUtils';
4
+ import { AxisDomain, NumberDomain } from './types';
68
5
  import { isWellBehavedNumber } from './isWellBehavedNumber';
69
- export function isWellFormedNumberDomain(v) {
6
+
7
+ export function isWellFormedNumberDomain(v: unknown): v is NumberDomain {
70
8
  if (Array.isArray(v) && v.length === 2) {
71
- var _v = _slicedToArray(v, 2),
72
- min = _v[0],
73
- max = _v[1];
9
+ const [min, max] = v;
74
10
  if (isWellBehavedNumber(min) && isWellBehavedNumber(max)) {
75
11
  return true;
76
12
  }
77
13
  }
78
14
  return false;
79
15
  }
80
- export function extendDomain(providedDomain, boundaryDomain, allowDataOverflow) {
16
+
17
+ export function extendDomain(
18
+ providedDomain: NumberDomain,
19
+ boundaryDomain: NumberDomain,
20
+ allowDataOverflow: boolean,
21
+ ): NumberDomain {
81
22
  if (allowDataOverflow) {
82
23
  // If the data are allowed to overflow - we're fine with whatever user provided
83
24
  return providedDomain;
@@ -115,7 +56,10 @@ export function extendDomain(providedDomain, boundaryDomain, allowDataOverflow)
115
56
  *
116
57
  * @return [min, max] domain if it's well-formed; undefined if the domain is invalid
117
58
  */
118
- export function numericalDomainSpecifiedWithoutRequiringData(userDomain, allowDataOverflow) {
59
+ export function numericalDomainSpecifiedWithoutRequiringData(
60
+ userDomain: AxisDomain | undefined,
61
+ allowDataOverflow: boolean,
62
+ ) {
119
63
  if (!allowDataOverflow) {
120
64
  // Cannot compute data overflow if the data is not provided
121
65
  return undefined;
@@ -125,23 +69,24 @@ export function numericalDomainSpecifiedWithoutRequiringData(userDomain, allowDa
125
69
  return undefined;
126
70
  }
127
71
  if (Array.isArray(userDomain) && userDomain.length === 2) {
128
- var _userDomain = _slicedToArray(userDomain, 2),
129
- providedMin = _userDomain[0],
130
- providedMax = _userDomain[1];
131
- var finalMin, finalMax;
72
+ const [providedMin, providedMax] = userDomain;
73
+ let finalMin, finalMax: string | number | undefined;
74
+
132
75
  if (isWellBehavedNumber(providedMin)) {
133
76
  finalMin = providedMin;
134
77
  } else if (typeof providedMin === 'function') {
135
78
  // The user function expects the data to be provided as an argument
136
79
  return undefined;
137
80
  }
81
+
138
82
  if (isWellBehavedNumber(providedMax)) {
139
83
  finalMax = providedMax;
140
84
  } else if (typeof providedMax === 'function') {
141
85
  // The user function expects the data to be provided as an argument
142
86
  return undefined;
143
87
  }
144
- var candidate = [finalMin, finalMax];
88
+
89
+ const candidate = [finalMin, finalMax];
145
90
  if (isWellFormedNumberDomain(candidate)) {
146
91
  return candidate;
147
92
  }
@@ -169,26 +114,29 @@ export function numericalDomainSpecifiedWithoutRequiringData(userDomain, allowDa
169
114
  *
170
115
  * @return [min, max] domain if it's well-formed; undefined if the domain is invalid
171
116
  */
172
- export function parseNumericalUserDomain(userDomain, dataDomain, allowDataOverflow) {
117
+ export function parseNumericalUserDomain(
118
+ userDomain: AxisDomain | undefined,
119
+ dataDomain: NumberDomain | undefined,
120
+ allowDataOverflow: boolean,
121
+ ): NumberDomain | undefined {
173
122
  if (!allowDataOverflow && dataDomain == null) {
174
123
  // Cannot compute data overflow if the data is not provided
175
124
  return undefined;
176
125
  }
177
126
  if (typeof userDomain === 'function' && dataDomain != null) {
178
127
  try {
179
- var result = userDomain(dataDomain, allowDataOverflow);
128
+ const result = userDomain(dataDomain, allowDataOverflow);
180
129
  if (isWellFormedNumberDomain(result)) {
181
130
  return extendDomain(result, dataDomain, allowDataOverflow);
182
131
  }
183
- } catch (_unused) {
132
+ } catch {
184
133
  /* ignore the exception and compute domain from data later */
185
134
  }
186
135
  }
187
136
  if (Array.isArray(userDomain) && userDomain.length === 2) {
188
- var _userDomain2 = _slicedToArray(userDomain, 2),
189
- providedMin = _userDomain2[0],
190
- providedMax = _userDomain2[1];
191
- var finalMin, finalMax;
137
+ const [providedMin, providedMax] = userDomain;
138
+ let finalMin, finalMax: string | number | undefined;
139
+
192
140
  if (providedMin === 'auto') {
193
141
  if (dataDomain != null) {
194
142
  finalMin = Math.min(...dataDomain);
@@ -198,24 +146,23 @@ export function parseNumericalUserDomain(userDomain, dataDomain, allowDataOverfl
198
146
  } else if (typeof providedMin === 'function') {
199
147
  try {
200
148
  if (dataDomain != null) {
201
- finalMin = providedMin(
202
- dataDomain === null || dataDomain === void 0 ? void 0 : dataDomain[0],
203
- );
149
+ finalMin = providedMin(dataDomain?.[0]);
204
150
  }
205
- } catch (_unused2) {
151
+ } catch {
206
152
  /* ignore the exception and compute domain from data later */
207
153
  }
208
154
  } else if (typeof providedMin === 'string' && MIN_VALUE_REG.test(providedMin)) {
209
- var match = MIN_VALUE_REG.exec(providedMin);
155
+ const match = MIN_VALUE_REG.exec(providedMin);
210
156
  if (match == null || match[1] == null || dataDomain == null) {
211
157
  finalMin = undefined;
212
158
  } else {
213
- var value = +match[1];
159
+ const value = +match[1];
214
160
  finalMin = dataDomain[0] - value;
215
161
  }
216
162
  } else {
217
- finalMin = dataDomain === null || dataDomain === void 0 ? void 0 : dataDomain[0];
163
+ finalMin = dataDomain?.[0];
218
164
  }
165
+
219
166
  if (providedMax === 'auto') {
220
167
  if (dataDomain != null) {
221
168
  finalMax = Math.max(...dataDomain);
@@ -225,25 +172,24 @@ export function parseNumericalUserDomain(userDomain, dataDomain, allowDataOverfl
225
172
  } else if (typeof providedMax === 'function') {
226
173
  try {
227
174
  if (dataDomain != null) {
228
- finalMax = providedMax(
229
- dataDomain === null || dataDomain === void 0 ? void 0 : dataDomain[1],
230
- );
175
+ finalMax = providedMax(dataDomain?.[1]);
231
176
  }
232
- } catch (_unused3) {
177
+ } catch {
233
178
  /* ignore the exception and compute domain from data later */
234
179
  }
235
180
  } else if (typeof providedMax === 'string' && MAX_VALUE_REG.test(providedMax)) {
236
- var _match = MAX_VALUE_REG.exec(providedMax);
237
- if (_match == null || _match[1] == null || dataDomain == null) {
181
+ const match = MAX_VALUE_REG.exec(providedMax);
182
+ if (match == null || match[1] == null || dataDomain == null) {
238
183
  finalMax = undefined;
239
184
  } else {
240
- var _value = +_match[1];
241
- finalMax = dataDomain[1] + _value;
185
+ const value = +match[1];
186
+ finalMax = dataDomain[1] + value;
242
187
  }
243
188
  } else {
244
- finalMax = dataDomain === null || dataDomain === void 0 ? void 0 : dataDomain[1];
189
+ finalMax = dataDomain?.[1];
245
190
  }
246
- var candidate = [finalMin, finalMax];
191
+
192
+ const candidate = [finalMin, finalMax];
247
193
  if (isWellFormedNumberDomain(candidate)) {
248
194
  if (dataDomain == null) {
249
195
  return candidate;
@@ -0,0 +1,8 @@
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ export function isWellBehavedNumber(n: unknown): n is number {
3
+ return Number.isFinite(n);
4
+ }
5
+
6
+ export function isPositiveNumber(n: unknown): n is number {
7
+ return typeof n === 'number' && n > 0 && Number.isFinite(n);
8
+ }
@@ -1,4 +1,4 @@
1
- import uniqBy from 'es-toolkit/compat/uniqBy';
1
+ import { uniqBy } from 'es-toolkit/compat';
2
2
 
3
3
  type UniqueFunc<T> = (entry: T) => unknown;
4
4
 
@@ -1,8 +1,7 @@
1
- // Vendored from recharts@3.9.2 es6/util/propsAreEqual.js with ONE adaptation:
2
- // shallowEqual comes from @octanejs/redux instead of react-redux (identical
3
- // algorithm). Update by re-vendoring when the recharts devDependency moves.
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
4
2
  import { shallowEqual } from '@octanejs/redux';
5
- var propsToShallowCompare = new Set([
3
+
4
+ const propsToShallowCompare = new Set<string>([
6
5
  'axisLine',
7
6
  'tickLine',
8
7
  'activeBar',
@@ -40,7 +39,7 @@ var propsToShallowCompare = new Set([
40
39
  * @param y second value to compare
41
40
  * return true if the same, false if different
42
41
  */
43
- function sameValueZero(x, y) {
42
+ function sameValueZero(x: unknown, y: unknown): boolean {
44
43
  if (x == null && y == null) {
45
44
  /*
46
45
  * treat null and undefined as equal. Internally in Recharts we make no difference between these two
@@ -67,9 +66,12 @@ function sameValueZero(x, y) {
67
66
  * @param prevProps
68
67
  * @param nextProps
69
68
  */
70
- export function propsAreEqual(prevProps, nextProps) {
71
- var allKeys = new Set([...Object.keys(prevProps), ...Object.keys(nextProps)]);
72
- for (var key of allKeys) {
69
+ export function propsAreEqual<T extends Record<string, unknown>>(
70
+ prevProps: T,
71
+ nextProps: T,
72
+ ): boolean {
73
+ const allKeys = new Set<string>([...Object.keys(prevProps), ...Object.keys(nextProps)]);
74
+ for (const key of allKeys) {
73
75
  /*
74
76
  * If a key is on a special allowlist, go one level deeper
75
77
  * and do a shallow comparison of the values.