@octanejs/recharts 0.1.41 → 0.1.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. package/{LICENSE → LICENSE.recharts} +3 -2
  2. package/README.md +12 -0
  3. package/package.json +10 -9
  4. package/src/animation/AnimatedItems.tsrx +36 -3
  5. package/src/animation/AnimationController.ts +17 -65
  6. package/src/animation/{AnimationControllerImpl.js → AnimationControllerImpl.ts} +19 -12
  7. package/src/animation/{AnimationHandle.js → AnimationHandle.ts} +82 -65
  8. package/src/animation/CSSTransitionAnimate.tsrx +3 -2
  9. package/src/animation/JavascriptAnimate.tsrx +18 -2
  10. package/src/animation/easing.ts +235 -0
  11. package/src/animation/{matchBy.js → matchBy.ts} +76 -120
  12. package/src/animation/timeoutController.ts +71 -0
  13. package/src/animation/useAnimationController.ts +4 -1
  14. package/src/animation/useAnimationStartSnapshot.ts +3 -3
  15. package/src/animation/util.ts +12 -0
  16. package/src/cartesian/Area.tsrx +33 -31
  17. package/src/cartesian/AreaRevealShape.tsrx +4 -3
  18. package/src/cartesian/Bar.ts +1 -0
  19. package/src/cartesian/Bar.tsrx +293 -39
  20. package/src/cartesian/BarStack.tsrx +31 -9
  21. package/src/cartesian/CartesianAxis.tsrx +154 -22
  22. package/src/cartesian/CartesianGrid.tsrx +5 -6
  23. package/src/cartesian/ErrorBar.tsrx +9 -8
  24. package/src/cartesian/Funnel.tsrx +40 -37
  25. package/src/cartesian/GraphicalItemClipPath.tsrx +11 -4
  26. package/src/cartesian/Line.ts +1 -0
  27. package/src/cartesian/Line.tsrx +206 -28
  28. package/src/cartesian/LineDrawShape.tsrx +23 -10
  29. package/src/cartesian/ReferenceLine.tsrx +8 -8
  30. package/src/cartesian/Scatter.tsrx +61 -66
  31. package/src/cartesian/XAxis.tsrx +78 -9
  32. package/src/cartesian/YAxis.tsrx +85 -12
  33. package/src/cartesian/getCartesianPosition.ts +265 -0
  34. package/src/cartesian/getEquidistantTicks.ts +144 -0
  35. package/src/cartesian/getTicks.ts +221 -0
  36. package/src/chart/AreaChart.tsrx +5 -1
  37. package/src/chart/BarChart.tsrx +8 -2
  38. package/src/chart/CartesianChart.tsrx +17 -4
  39. package/src/chart/CategoricalChart.tsrx +4 -1
  40. package/src/chart/ComposedChart.tsrx +5 -1
  41. package/src/chart/FunnelChart.tsrx +5 -1
  42. package/src/chart/LineChart.tsrx +8 -2
  43. package/src/chart/PieChart.tsrx +6 -2
  44. package/src/chart/PolarChart.tsrx +5 -4
  45. package/src/chart/RadarChart.tsrx +6 -2
  46. package/src/chart/RadialBarChart.tsrx +6 -2
  47. package/src/chart/RechartsWrapper.tsrx +57 -21
  48. package/src/chart/Sankey.tsrx +89 -91
  49. package/src/chart/ScatterChart.tsrx +5 -1
  50. package/src/chart/SunburstChart.tsrx +21 -14
  51. package/src/chart/types.ts +0 -1
  52. package/src/component/ActivePoints.tsrx +30 -5
  53. package/src/component/Cell.ts +19 -1
  54. package/src/component/Cursor.tsrx +11 -10
  55. package/src/component/DefaultLegendContent.tsrx +15 -10
  56. package/src/component/DefaultTooltipContent.tsrx +11 -9
  57. package/src/component/Dots.tsrx +37 -6
  58. package/src/component/Label.tsrx +99 -19
  59. package/src/component/LabelList.tsrx +54 -5
  60. package/src/component/Legend.tsrx +9 -5
  61. package/src/component/ResponsiveContainer.tsrx +13 -10
  62. package/src/component/Text.tsrx +95 -32
  63. package/src/component/Tooltip.tsrx +11 -10
  64. package/src/component/TooltipBoundingBox.tsrx +4 -5
  65. package/src/component/{responsiveContainerUtils.js → responsiveContainerUtils.ts} +59 -36
  66. package/src/container/ClipPathProvider.tsrx +6 -2
  67. package/src/container/Layer.tsrx +8 -1
  68. package/src/container/RootSurface.tsrx +15 -4
  69. package/src/container/Surface.tsrx +15 -1
  70. package/src/context/CellsContext.ts +6 -5
  71. package/src/context/ErrorBarContext.tsrx +23 -4
  72. package/src/context/RegisterGraphicalItemId.tsrx +10 -2
  73. package/src/context/accessibilityContext.ts +5 -0
  74. package/src/context/brushUpdateContext.ts +11 -0
  75. package/src/context/chartDataContext.ts +5 -4
  76. package/src/context/chartLayoutContext.ts +22 -8
  77. package/src/context/legendPayloadContext.tsrx +1 -1
  78. package/src/context/tooltipContext.ts +83 -0
  79. package/src/{hooks.js → hooks.ts} +88 -66
  80. package/src/index.ts +37 -37
  81. package/src/legacy-props.ts +129 -0
  82. package/src/polar/Pie.tsrx +91 -69
  83. package/src/polar/PolarAngleAxis.tsrx +47 -47
  84. package/src/polar/PolarGrid.tsrx +7 -6
  85. package/src/polar/PolarRadiusAxis.tsrx +29 -21
  86. package/src/polar/Radar.tsrx +26 -19
  87. package/src/polar/RadialBar.tsrx +59 -42
  88. package/src/polar/{defaultPolarAngleAxisProps.js → defaultPolarAngleAxisProps.ts} +6 -6
  89. package/src/polar/{defaultPolarRadiusAxisProps.js → defaultPolarRadiusAxisProps.ts} +5 -4
  90. package/src/shape/Cross.tsrx +14 -2
  91. package/src/shape/Curve.tsrx +111 -23
  92. package/src/shape/Dot.tsrx +12 -1
  93. package/src/shape/Polygon.tsrx +28 -6
  94. package/src/shape/Rectangle.tsrx +30 -3
  95. package/src/shape/Sector.tsrx +48 -6
  96. package/src/shape/Symbols.tsrx +24 -6
  97. package/src/shape/Trapezoid.tsrx +33 -3
  98. package/src/state/RechartsStoreProvider.tsrx +11 -2
  99. package/src/state/ReportChartProps.ts +2 -2
  100. package/src/state/ReportMainChartProps.ts +2 -1
  101. package/src/state/SetGraphicalItem.ts +6 -4
  102. package/src/state/SetLegendPayload.ts +7 -4
  103. package/src/state/SetTooltipEntrySettings.ts +5 -2
  104. package/src/state/brushSlice.ts +40 -0
  105. package/src/state/cartesianAxisSlice.ts +291 -0
  106. package/src/state/chartDataSlice.ts +87 -0
  107. package/src/state/errorBarSlice.ts +78 -0
  108. package/src/state/eventSettingsSlice.ts +30 -0
  109. package/src/state/{externalEventsMiddleware.js → externalEventsMiddleware.ts} +55 -34
  110. package/src/state/graphicalItemsSlice.ts +180 -0
  111. package/src/state/{keyboardEventsMiddleware.js → keyboardEventsMiddleware.ts} +72 -57
  112. package/src/state/layoutSlice.ts +50 -0
  113. package/src/state/legendSlice.ts +109 -0
  114. package/src/state/{mouseEventsMiddleware.js → mouseEventsMiddleware.ts} +45 -35
  115. package/src/state/optionsSlice.ts +65 -0
  116. package/src/state/polarAxisSlice.ts +42 -0
  117. package/src/state/polarOptionsSlice.ts +43 -0
  118. package/src/state/reduxDevtoolsJsonStringifyReplacer.ts +13 -0
  119. package/src/state/referenceElementsSlice.ts +100 -0
  120. package/src/state/renderedTicksSlice.ts +60 -0
  121. package/src/state/rootPropsSlice.ts +72 -0
  122. package/src/state/selectors/areaSelectors.ts +1 -2
  123. package/src/state/selectors/{arrayEqualityCheck.js → arrayEqualityCheck.ts} +4 -5
  124. package/src/state/selectors/axisSelectors.ts +2502 -0
  125. package/src/state/selectors/barSelectors.ts +373 -0
  126. package/src/state/selectors/barStackSelectors.ts +99 -0
  127. package/src/state/selectors/brushSelectors.ts +28 -0
  128. package/src/state/selectors/combiners/combineActiveLabel.ts +16 -0
  129. package/src/state/selectors/combiners/{combineActiveTooltipIndex.js → combineActiveTooltipIndex.ts} +45 -23
  130. package/src/state/selectors/combiners/combineAllBarPositions.ts +130 -0
  131. package/src/state/selectors/combiners/combineAxisRangeWithReverse.ts +16 -0
  132. package/src/state/selectors/combiners/combineBarPosition.ts +23 -0
  133. package/src/state/selectors/combiners/combineBarSizeList.ts +79 -0
  134. package/src/state/selectors/combiners/{combineCheckedDomain.js → combineCheckedDomain.ts} +9 -6
  135. package/src/state/selectors/combiners/combineConfiguredScale.ts +100 -0
  136. package/src/state/selectors/combiners/combineCoordinateForDefaultIndex.ts +46 -0
  137. package/src/state/selectors/combiners/{combineDisplayedStackedData.js → combineDisplayedStackedData.ts} +23 -19
  138. package/src/state/selectors/combiners/combineInverseScaleFunction.ts +16 -0
  139. package/src/state/selectors/combiners/{combineRealScaleType.js → combineRealScaleType.ts} +16 -8
  140. package/src/state/selectors/combiners/combineStackedData.ts +27 -0
  141. package/src/state/selectors/combiners/combineTooltipInteractionState.ts +86 -0
  142. package/src/state/selectors/combiners/combineTooltipPayload.ts +201 -0
  143. package/src/state/selectors/combiners/{combineTooltipPayloadConfigurations.js → combineTooltipPayloadConfigurations.ts} +17 -18
  144. package/src/state/selectors/containerSelectors.ts +12 -0
  145. package/src/state/selectors/{dataSelectors.js → dataSelectors.ts} +43 -41
  146. package/src/state/selectors/funnelSelectors.ts +5 -5
  147. package/src/state/selectors/graphicalItemSelectors.ts +22 -0
  148. package/src/state/selectors/legendSelectors.ts +25 -0
  149. package/src/state/selectors/lineSelectors.ts +159 -0
  150. package/src/state/selectors/numberDomainEqualityCheck.ts +15 -0
  151. package/src/state/selectors/pickAxisId.ts +6 -0
  152. package/src/state/selectors/pickAxisType.ts +4 -0
  153. package/src/state/selectors/pieSelectors.ts +14 -13
  154. package/src/state/selectors/polarAxisSelectors.ts +223 -0
  155. package/src/state/selectors/polarSelectors.ts +1 -1
  156. package/src/state/selectors/radarSelectors.ts +1 -1
  157. package/src/state/selectors/radialBarSelectors.ts +17 -16
  158. package/src/state/selectors/rootPropsSelectors.ts +26 -0
  159. package/src/state/selectors/scatterSelectors.ts +11 -10
  160. package/src/state/selectors/{selectActivePropsFromChartPointer.js → selectActivePropsFromChartPointer.ts} +11 -4
  161. package/src/state/selectors/selectAllAxes.ts +20 -0
  162. package/src/state/selectors/selectChartOffset.ts +17 -0
  163. package/src/state/selectors/selectChartOffsetInternal.ts +147 -0
  164. package/src/state/selectors/{selectPlotArea.js → selectPlotArea.ts} +4 -3
  165. package/src/state/selectors/selectTooltipAxisId.ts +6 -0
  166. package/src/state/selectors/{selectTooltipAxisType.js → selectTooltipAxisType.ts} +10 -4
  167. package/src/state/selectors/selectTooltipEventType.ts +39 -0
  168. package/src/state/selectors/selectTooltipPayloadSearcher.ts +6 -0
  169. package/src/state/selectors/selectTooltipSettings.ts +6 -0
  170. package/src/state/selectors/selectTooltipState.ts +5 -0
  171. package/src/state/selectors/selectors.ts +315 -0
  172. package/src/state/selectors/tooltipSelectors.ts +611 -0
  173. package/src/state/selectors/touchSelectors.ts +52 -0
  174. package/src/state/{store.js → store.ts} +46 -36
  175. package/src/state/tooltipSlice.ts +507 -0
  176. package/src/state/{touchEventsMiddleware.js → touchEventsMiddleware.ts} +54 -42
  177. package/src/state/types/AreaSettings.ts +15 -0
  178. package/src/state/types/BarSettings.ts +15 -0
  179. package/src/state/types/LineSettings.ts +10 -0
  180. package/src/state/types/PieSettings.ts +32 -0
  181. package/src/state/types/RadarSettings.ts +6 -0
  182. package/src/state/types/RadialBarSettings.ts +10 -0
  183. package/src/state/types/ScatterSettings.ts +13 -0
  184. package/src/state/types/StackedGraphicalItem.ts +34 -0
  185. package/src/state/zIndexSlice.ts +137 -0
  186. package/src/synchronisation/syncSelectors.ts +7 -0
  187. package/src/synchronisation/types.ts +42 -0
  188. package/src/synchronisation/useChartSynchronisation.tsrx +26 -11
  189. package/src/types.ts +55 -0
  190. package/src/util/ActiveShapeUtils.tsrx +34 -10
  191. package/src/util/BarUtils.tsrx +43 -3
  192. package/src/util/{CartesianUtils.js → CartesianUtils.ts} +22 -39
  193. package/src/util/ChartUtils.ts +759 -0
  194. package/src/util/{Constants.js → Constants.ts} +6 -6
  195. package/src/util/DOMUtils.ts +135 -0
  196. package/src/util/{DataUtils.js → DataUtils.ts} +120 -47
  197. package/src/util/Events.ts +22 -0
  198. package/src/util/FunnelUtils.tsrx +3 -3
  199. package/src/util/Global.ts +13 -0
  200. package/src/util/IfOverflow.ts +16 -0
  201. package/src/util/LRUCache.ts +42 -0
  202. package/src/util/{LogUtils.js → LogUtils.ts} +7 -12
  203. package/src/util/OctaneTypes.ts +51 -0
  204. package/src/util/PolarUtils.ts +132 -0
  205. package/src/util/RadialBarUtils.tsrx +3 -3
  206. package/src/util/ReduceCSSCalc.ts +186 -0
  207. package/src/util/ScatterUtils.tsrx +9 -7
  208. package/src/util/{TickUtils.js → TickUtils.ts} +30 -13
  209. package/src/util/{YAxisUtils.js → YAxisUtils.ts} +27 -17
  210. package/src/util/axisPropsAreEqual.ts +49 -0
  211. package/src/util/createEventProxy.ts +20 -0
  212. package/src/util/{excludeEventProps.js → excludeEventProps.ts} +8 -6
  213. package/src/util/getActiveCoordinate.ts +210 -0
  214. package/src/util/{getAxisTypeBasedOnLayout.js → getAxisTypeBasedOnLayout.ts} +7 -3
  215. package/src/util/getClassNameFromUnknown.ts +7 -0
  216. package/src/util/{getEveryNth.js → getEveryNth.ts} +5 -6
  217. package/src/util/getRadiusAndStrokeWidthFromDot.ts +31 -0
  218. package/src/util/{getRelativeCoordinate.js → getRelativeCoordinate.ts} +26 -9
  219. package/src/util/getSliced.ts +14 -0
  220. package/src/util/{isDomainSpecifiedByUser.js → isDomainSpecifiedByUser.ts} +46 -100
  221. package/src/util/isWellBehavedNumber.ts +8 -0
  222. package/src/util/payload/getUniqPayload.ts +1 -1
  223. package/src/util/{propsAreEqual.js → propsAreEqual.ts} +10 -8
  224. package/src/util/{resolveDefaultProps.js → resolveDefaultProps.ts} +35 -57
  225. package/src/util/round.ts +33 -0
  226. package/src/util/scale/CustomScaleDefinition.ts +82 -0
  227. package/src/util/scale/RechartsScale.ts +131 -0
  228. package/src/util/scale/{createCategoricalInverse.js → createCategoricalInverse.ts} +24 -29
  229. package/src/util/scale/{getNiceTickValues.js → getNiceTickValues.ts} +125 -146
  230. package/src/util/scale/index.ts +2 -0
  231. package/src/util/scale/util/{arithmetic.js → arithmetic.ts} +12 -8
  232. package/src/util/stacks/getStackSeriesIdentifier.ts +21 -0
  233. package/src/util/stacks/stackTypes.ts +58 -0
  234. package/src/util/{svgPropertiesNoEvents.js → svgPropertiesNoEvents.ts} +52 -27
  235. package/src/util/tooltip/translate.ts +2 -1
  236. package/src/util/typedDataKey.ts +49 -0
  237. package/src/util/types.ts +1265 -7
  238. package/src/util/{useUniqueId.js → useUniqueId.ts} +9 -5
  239. package/src/zIndex/{DefaultZIndexes.js → DefaultZIndexes.ts} +13 -4
  240. package/src/zIndex/ZIndexLayer.tsrx +13 -4
  241. package/src/zIndex/ZIndexPortal.tsrx +14 -4
  242. package/src/zIndex/{getZIndexFromUnknown.js → getZIndexFromUnknown.ts} +3 -3
  243. package/src/zIndex/{zIndexSelectors.js → zIndexSelectors.ts} +17 -11
  244. package/src/animation/easing.js +0 -193
  245. package/src/animation/timeoutController.js +0 -49
  246. package/src/animation/util.js +0 -11
  247. package/src/cartesian/Area.tsrx.d.ts +0 -340
  248. package/src/cartesian/Bar.tsrx.d.ts +0 -4
  249. package/src/cartesian/BarStack.tsrx.d.ts +0 -6
  250. package/src/cartesian/CartesianAxis.tsrx.d.ts +0 -3
  251. package/src/cartesian/CartesianGrid.tsrx.d.ts +0 -219
  252. package/src/cartesian/ErrorBar.tsrx.d.ts +0 -131
  253. package/src/cartesian/Funnel.tsrx.d.ts +0 -274
  254. package/src/cartesian/Line.tsrx.d.ts +0 -4
  255. package/src/cartesian/LineDrawShape.tsrx.d.ts +0 -2
  256. package/src/cartesian/ReferenceLine.tsrx.d.ts +0 -178
  257. package/src/cartesian/Scatter.tsrx.d.ts +0 -351
  258. package/src/cartesian/XAxis.tsrx.d.ts +0 -3
  259. package/src/cartesian/YAxis.tsrx.d.ts +0 -3
  260. package/src/cartesian/ZAxis.tsrx.d.ts +0 -102
  261. package/src/cartesian/getCartesianPosition.js +0 -277
  262. package/src/cartesian/getEquidistantTicks.js +0 -133
  263. package/src/cartesian/getTicks.js +0 -280
  264. package/src/chart/AreaChart.tsrx.d.ts +0 -12
  265. package/src/chart/BarChart.tsrx.d.ts +0 -2
  266. package/src/chart/CartesianChart.tsrx.d.ts +0 -10
  267. package/src/chart/ComposedChart.tsrx.d.ts +0 -12
  268. package/src/chart/FunnelChart.tsrx.d.ts +0 -12
  269. package/src/chart/LineChart.tsrx.d.ts +0 -2
  270. package/src/chart/PieChart.tsrx.d.ts +0 -31
  271. package/src/chart/RadarChart.tsrx.d.ts +0 -31
  272. package/src/chart/RadialBarChart.tsrx.d.ts +0 -31
  273. package/src/chart/Sankey.tsrx.d.ts +0 -253
  274. package/src/chart/ScatterChart.tsrx.d.ts +0 -12
  275. package/src/chart/SunburstChart.tsrx.d.ts +0 -146
  276. package/src/component/DefaultLegendContent.tsrx.d.ts +0 -125
  277. package/src/component/DefaultTooltipContent.tsrx.d.ts +0 -87
  278. package/src/component/Label.tsrx.d.ts +0 -12
  279. package/src/component/LabelList.tsrx.d.ts +0 -8
  280. package/src/component/Legend.tsrx.d.ts +0 -88
  281. package/src/component/ResponsiveContainer.tsrx.d.ts +0 -81
  282. package/src/component/Text.tsrx.d.ts +0 -9
  283. package/src/component/Tooltip.tsrx.d.ts +0 -246
  284. package/src/container/Layer.tsrx.d.ts +0 -6
  285. package/src/container/Surface.tsrx.d.ts +0 -12
  286. package/src/context/accessibilityContext.js +0 -10
  287. package/src/context/tooltipContext.js +0 -55
  288. package/src/index.d.ts +0 -281
  289. package/src/polar/Pie.tsrx.d.ts +0 -436
  290. package/src/polar/PolarAngleAxis.tsrx.d.ts +0 -215
  291. package/src/polar/PolarGrid.tsrx.d.ts +0 -117
  292. package/src/polar/PolarRadiusAxis.tsrx.d.ts +0 -209
  293. package/src/polar/Radar.tsrx.d.ts +0 -215
  294. package/src/polar/RadialBar.tsrx.d.ts +0 -340
  295. package/src/shape/Cross.tsrx.d.ts +0 -12
  296. package/src/shape/Curve.tsrx.d.ts +0 -42
  297. package/src/shape/Dot.tsrx.d.ts +0 -9
  298. package/src/shape/Polygon.tsrx.d.ts +0 -13
  299. package/src/shape/Rectangle.tsrx.d.ts +0 -31
  300. package/src/shape/Sector.tsrx.d.ts +0 -29
  301. package/src/shape/Symbols.tsrx.d.ts +0 -15
  302. package/src/shape/Trapezoid.tsrx.d.ts +0 -29
  303. package/src/state/brushSlice.js +0 -36
  304. package/src/state/cartesianAxisSlice.js +0 -256
  305. package/src/state/chartDataSlice.js +0 -67
  306. package/src/state/errorBarSlice.js +0 -53
  307. package/src/state/eventSettingsSlice.js +0 -25
  308. package/src/state/graphicalItemsSlice.js +0 -91
  309. package/src/state/layoutSlice.js +0 -57
  310. package/src/state/legendSlice.js +0 -83
  311. package/src/state/optionsSlice.js +0 -45
  312. package/src/state/polarAxisSlice.js +0 -33
  313. package/src/state/polarOptionsSlice.js +0 -26
  314. package/src/state/reduxDevtoolsJsonStringifyReplacer.js +0 -14
  315. package/src/state/referenceElementsSlice.js +0 -51
  316. package/src/state/renderedTicksSlice.js +0 -41
  317. package/src/state/rootPropsSlice.js +0 -48
  318. package/src/state/selectors/axisSelectors.js +0 -2113
  319. package/src/state/selectors/barSelectors.js +0 -263
  320. package/src/state/selectors/barStackSelectors.js +0 -65
  321. package/src/state/selectors/brushSelectors.js +0 -21
  322. package/src/state/selectors/combiners/combineActiveLabel.js +0 -18
  323. package/src/state/selectors/combiners/combineAllBarPositions.js +0 -169
  324. package/src/state/selectors/combiners/combineAxisRangeWithReverse.js +0 -11
  325. package/src/state/selectors/combiners/combineBarPosition.js +0 -17
  326. package/src/state/selectors/combiners/combineBarSizeList.js +0 -115
  327. package/src/state/selectors/combiners/combineConfiguredScale.js +0 -46
  328. package/src/state/selectors/combiners/combineCoordinateForDefaultIndex.js +0 -48
  329. package/src/state/selectors/combiners/combineInverseScaleFunction.js +0 -12
  330. package/src/state/selectors/combiners/combineStackedData.js +0 -22
  331. package/src/state/selectors/combiners/combineTooltipInteractionState.js +0 -121
  332. package/src/state/selectors/combiners/combineTooltipPayload.js +0 -248
  333. package/src/state/selectors/containerSelectors.js +0 -6
  334. package/src/state/selectors/graphicalItemSelectors.js +0 -25
  335. package/src/state/selectors/legendSelectors.js +0 -18
  336. package/src/state/selectors/lineSelectors.js +0 -106
  337. package/src/state/selectors/numberDomainEqualityCheck.js +0 -11
  338. package/src/state/selectors/pickAxisId.js +0 -3
  339. package/src/state/selectors/pickAxisType.js +0 -3
  340. package/src/state/selectors/polarAxisSelectors.js +0 -237
  341. package/src/state/selectors/rootPropsSelectors.js +0 -13
  342. package/src/state/selectors/selectAllAxes.js +0 -15
  343. package/src/state/selectors/selectChartOffset.js +0 -12
  344. package/src/state/selectors/selectChartOffsetInternal.js +0 -174
  345. package/src/state/selectors/selectTooltipAxisId.js +0 -3
  346. package/src/state/selectors/selectTooltipEventType.js +0 -27
  347. package/src/state/selectors/selectTooltipPayloadSearcher.js +0 -3
  348. package/src/state/selectors/selectTooltipSettings.js +0 -3
  349. package/src/state/selectors/selectTooltipState.js +0 -3
  350. package/src/state/selectors/selectors.js +0 -222
  351. package/src/state/selectors/tooltipSelectors.js +0 -471
  352. package/src/state/selectors/touchSelectors.js +0 -31
  353. package/src/state/tooltipSlice.js +0 -237
  354. package/src/state/types/StackedGraphicalItem.js +0 -18
  355. package/src/state/zIndexSlice.js +0 -167
  356. package/src/synchronisation/syncSelectors.js +0 -5
  357. package/src/util/ChartUtils.js +0 -630
  358. package/src/util/DOMUtils.js +0 -180
  359. package/src/util/Events.js +0 -7
  360. package/src/util/Global.js +0 -13
  361. package/src/util/LRUCache.js +0 -58
  362. package/src/util/PolarUtils.js +0 -190
  363. package/src/util/ReduceCSSCalc.js +0 -260
  364. package/src/util/axisPropsAreEqual.js +0 -63
  365. package/src/util/createEventProxy.js +0 -18
  366. package/src/util/getActiveCoordinate.js +0 -253
  367. package/src/util/getClassNameFromUnknown.js +0 -8
  368. package/src/util/getRadiusAndStrokeWidthFromDot.js +0 -28
  369. package/src/util/getSliced.js +0 -11
  370. package/src/util/isWellBehavedNumber.js +0 -8
  371. package/src/util/round.js +0 -39
  372. package/src/util/scale/RechartsScale.js +0 -68
  373. package/src/util/scale/index.js +0 -3
  374. package/src/util/stacks/getStackSeriesIdentifier.js +0 -10
  375. package/src/zIndex/ZIndexLayer.tsrx.d.ts +0 -2
@@ -0,0 +1,132 @@
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ import {
3
+ ChartOffsetInternal,
4
+ RelativePointer,
5
+ Coordinate,
6
+ PolarViewBoxRequired,
7
+ RangeObj,
8
+ } from './types';
9
+
10
+ export const RADIAN = Math.PI / 180;
11
+
12
+ export const degreeToRadian = (angle: number) => (angle * Math.PI) / 180;
13
+
14
+ export const radianToDegree = (angleInRadian: number) => (angleInRadian * 180) / Math.PI;
15
+
16
+ export const polarToCartesian = (
17
+ cx: number,
18
+ cy: number,
19
+ radius: number,
20
+ angle: number,
21
+ ): Coordinate => ({
22
+ x: cx + Math.cos(-RADIAN * angle) * radius,
23
+ y: cy + Math.sin(-RADIAN * angle) * radius,
24
+ });
25
+
26
+ export const getMaxRadius = (
27
+ width: number,
28
+ height: number,
29
+ offset: ChartOffsetInternal = {
30
+ top: 0,
31
+ right: 0,
32
+ bottom: 0,
33
+ left: 0,
34
+ width: 0,
35
+ height: 0,
36
+ brushBottom: 0,
37
+ },
38
+ ) =>
39
+ Math.min(
40
+ Math.abs(width - (offset.left || 0) - (offset.right || 0)),
41
+ Math.abs(height - (offset.top || 0) - (offset.bottom || 0)),
42
+ ) / 2;
43
+
44
+ const distanceBetweenPoints = (point: Coordinate, anotherPoint: Coordinate) => {
45
+ const { x: x1, y: y1 } = point;
46
+ const { x: x2, y: y2 } = anotherPoint;
47
+
48
+ return Math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2);
49
+ };
50
+
51
+ const getAngleOfPoint = ({ x, y }: Coordinate, { cx, cy }: PolarViewBoxRequired) => {
52
+ const radius = distanceBetweenPoints({ x, y }, { x: cx, y: cy });
53
+
54
+ if (radius <= 0) {
55
+ return { radius, angle: 0 };
56
+ }
57
+
58
+ const cos = (x - cx) / radius;
59
+ let angleInRadian = Math.acos(cos);
60
+
61
+ if (y > cy) {
62
+ angleInRadian = 2 * Math.PI - angleInRadian;
63
+ }
64
+
65
+ return { radius, angle: radianToDegree(angleInRadian), angleInRadian };
66
+ };
67
+
68
+ const formatAngleOfSector = ({ startAngle, endAngle }: PolarViewBoxRequired) => {
69
+ const startCnt = Math.floor(startAngle / 360);
70
+ const endCnt = Math.floor(endAngle / 360);
71
+ const min = Math.min(startCnt, endCnt);
72
+
73
+ return {
74
+ startAngle: startAngle - min * 360,
75
+ endAngle: endAngle - min * 360,
76
+ };
77
+ };
78
+
79
+ const reverseFormatAngleOfSector = (
80
+ angle: number,
81
+ { startAngle, endAngle }: PolarViewBoxRequired,
82
+ ): number => {
83
+ const startCnt = Math.floor(startAngle / 360);
84
+ const endCnt = Math.floor(endAngle / 360);
85
+ const min = Math.min(startCnt, endCnt);
86
+
87
+ return angle + min * 360;
88
+ };
89
+
90
+ export const inRangeOfSector = (
91
+ { relativeX: x, relativeY: y }: RelativePointer,
92
+ viewBox: PolarViewBoxRequired,
93
+ ): RangeObj | null => {
94
+ const { radius, angle } = getAngleOfPoint({ x, y }, viewBox);
95
+ const { innerRadius, outerRadius } = viewBox;
96
+
97
+ if (radius < innerRadius || radius > outerRadius) {
98
+ return null;
99
+ }
100
+
101
+ if (radius === 0) {
102
+ return null;
103
+ }
104
+
105
+ const { startAngle, endAngle } = formatAngleOfSector(viewBox);
106
+ let formatAngle = angle;
107
+ let inRange;
108
+
109
+ if (startAngle <= endAngle) {
110
+ while (formatAngle > endAngle) {
111
+ formatAngle -= 360;
112
+ }
113
+ while (formatAngle < startAngle) {
114
+ formatAngle += 360;
115
+ }
116
+ inRange = formatAngle >= startAngle && formatAngle <= endAngle;
117
+ } else {
118
+ while (formatAngle > startAngle) {
119
+ formatAngle -= 360;
120
+ }
121
+ while (formatAngle < endAngle) {
122
+ formatAngle += 360;
123
+ }
124
+ inRange = formatAngle >= endAngle && formatAngle <= startAngle;
125
+ }
126
+
127
+ if (inRange) {
128
+ return { ...viewBox, radius, angle: reverseFormatAngleOfSector(formatAngle, viewBox) };
129
+ }
130
+
131
+ return null;
132
+ };
@@ -1,8 +1,8 @@
1
1
  import * as React from 'octane';
2
- import { RadialBarDataItem, RadialBarProps } from '../polar/RadialBar';
3
- import { Sector } from '../shape/Sector';
2
+ import { RadialBarDataItem, RadialBarProps } from '../polar/RadialBar.tsrx';
3
+ import { Sector } from '../shape/Sector.tsrx';
4
4
  import { ShapeAnimationProps } from './types';
5
- import { Shape } from './ActiveShapeUtils';
5
+ import { Shape } from './ActiveShapeUtils.tsrx';
6
6
 
7
7
  export const defaultRadialBarShape = Sector;
8
8
 
@@ -0,0 +1,186 @@
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ import { isNan } from './DataUtils';
3
+
4
+ const MULTIPLY_OR_DIVIDE_REGEX = /(-?\d+(?:\.\d+)?[a-zA-Z%]*)([*/])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/;
5
+ const ADD_OR_SUBTRACT_REGEX = /(-?\d+(?:\.\d+)?[a-zA-Z%]*)([+-])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/;
6
+ const CSS_LENGTH_UNIT_REGEX = /^(px|cm|vh|vw|em|rem|%|mm|in|pt|pc|ex|ch|vmin|vmax|Q)$/;
7
+ const NUM_SPLIT_REGEX = /(-?\d+(?:\.\d+)?)([a-zA-Z%]+)?/;
8
+
9
+ type SupportedUnits = 'cm' | 'mm' | 'pt' | 'pc' | 'in' | 'Q' | 'px';
10
+
11
+ const CONVERSION_RATES: Record<SupportedUnits, number> = {
12
+ cm: 96 / 2.54,
13
+ mm: 96 / 25.4,
14
+ pt: 96 / 72,
15
+ pc: 96 / 6,
16
+ in: 96,
17
+ Q: 96 / (2.54 * 40),
18
+ px: 1,
19
+ };
20
+
21
+ const FIXED_CSS_LENGTH_UNITS: ReadonlyArray<SupportedUnits> = [
22
+ 'cm',
23
+ 'mm',
24
+ 'pt',
25
+ 'pc',
26
+ 'in',
27
+ 'Q',
28
+ 'px',
29
+ ];
30
+
31
+ function isSupportedUnit(unit: string): unit is SupportedUnits {
32
+ return FIXED_CSS_LENGTH_UNITS.includes(unit as SupportedUnits);
33
+ }
34
+
35
+ const STR_NAN = 'NaN';
36
+
37
+ function convertToPx(value: number, unit: SupportedUnits): number {
38
+ return value * CONVERSION_RATES[unit];
39
+ }
40
+
41
+ class DecimalCSS {
42
+ static parse(str: string) {
43
+ const [, numStr, unit] = NUM_SPLIT_REGEX.exec(str) ?? [];
44
+
45
+ if (numStr == null) {
46
+ return DecimalCSS.NaN;
47
+ }
48
+
49
+ return new DecimalCSS(parseFloat(numStr), unit ?? '');
50
+ }
51
+
52
+ static NaN = new DecimalCSS(NaN, '');
53
+
54
+ constructor(
55
+ public num: number,
56
+ public unit: string,
57
+ ) {
58
+ this.num = num;
59
+ this.unit = unit;
60
+
61
+ if (isNan(num)) {
62
+ this.unit = '';
63
+ }
64
+
65
+ if (unit !== '' && !CSS_LENGTH_UNIT_REGEX.test(unit)) {
66
+ this.num = NaN;
67
+ this.unit = '';
68
+ }
69
+
70
+ if (isSupportedUnit(unit)) {
71
+ this.num = convertToPx(num, unit);
72
+ this.unit = 'px';
73
+ }
74
+ }
75
+
76
+ add(other: DecimalCSS) {
77
+ if (this.unit !== other.unit) {
78
+ return new DecimalCSS(NaN, '');
79
+ }
80
+
81
+ return new DecimalCSS(this.num + other.num, this.unit);
82
+ }
83
+
84
+ subtract(other: DecimalCSS) {
85
+ if (this.unit !== other.unit) {
86
+ return new DecimalCSS(NaN, '');
87
+ }
88
+
89
+ return new DecimalCSS(this.num - other.num, this.unit);
90
+ }
91
+
92
+ multiply(other: DecimalCSS) {
93
+ if (this.unit !== '' && other.unit !== '' && this.unit !== other.unit) {
94
+ return new DecimalCSS(NaN, '');
95
+ }
96
+
97
+ return new DecimalCSS(this.num * other.num, this.unit || other.unit);
98
+ }
99
+
100
+ divide(other: DecimalCSS) {
101
+ if (this.unit !== '' && other.unit !== '' && this.unit !== other.unit) {
102
+ return new DecimalCSS(NaN, '');
103
+ }
104
+
105
+ return new DecimalCSS(this.num / other.num, this.unit || other.unit);
106
+ }
107
+
108
+ toString() {
109
+ return `${this.num}${this.unit}`;
110
+ }
111
+
112
+ isNaN() {
113
+ return isNan(this.num);
114
+ }
115
+ }
116
+
117
+ function calculateArithmetic(expr: string | undefined): string {
118
+ if (expr == null || expr.includes(STR_NAN)) {
119
+ return STR_NAN;
120
+ }
121
+
122
+ let newExpr = expr;
123
+ while (newExpr.includes('*') || newExpr.includes('/')) {
124
+ const [, leftOperand, operator, rightOperand] = MULTIPLY_OR_DIVIDE_REGEX.exec(newExpr) ?? [];
125
+ const lTs = DecimalCSS.parse(leftOperand ?? '');
126
+ const rTs = DecimalCSS.parse(rightOperand ?? '');
127
+ const result = operator === '*' ? lTs.multiply(rTs) : lTs.divide(rTs);
128
+ if (result.isNaN()) {
129
+ return STR_NAN;
130
+ }
131
+ newExpr = newExpr.replace(MULTIPLY_OR_DIVIDE_REGEX, result.toString());
132
+ }
133
+
134
+ while (newExpr.includes('+') || /.-\d+(?:\.\d+)?/.test(newExpr)) {
135
+ const [, leftOperand, operator, rightOperand] = ADD_OR_SUBTRACT_REGEX.exec(newExpr) ?? [];
136
+ const lTs = DecimalCSS.parse(leftOperand ?? '');
137
+ const rTs = DecimalCSS.parse(rightOperand ?? '');
138
+ const result = operator === '+' ? lTs.add(rTs) : lTs.subtract(rTs);
139
+ if (result.isNaN()) {
140
+ return STR_NAN;
141
+ }
142
+ newExpr = newExpr.replace(ADD_OR_SUBTRACT_REGEX, result.toString());
143
+ }
144
+
145
+ return newExpr;
146
+ }
147
+
148
+ const PARENTHESES_REGEX = /\(([^()]*)\)/;
149
+
150
+ function calculateParentheses(expr: string): string {
151
+ let newExpr = expr;
152
+ let match: ReturnType<typeof RegExp.prototype.exec> | null;
153
+ // eslint-disable-next-line no-cond-assign
154
+ while ((match = PARENTHESES_REGEX.exec(newExpr)) != null) {
155
+ const [, parentheticalExpression] = match;
156
+ newExpr = newExpr.replace(PARENTHESES_REGEX, calculateArithmetic(parentheticalExpression));
157
+ }
158
+
159
+ return newExpr;
160
+ }
161
+
162
+ function evaluateExpression(expression: string): string {
163
+ let newExpr = expression.replace(/\s+/g, '');
164
+ newExpr = calculateParentheses(newExpr);
165
+ newExpr = calculateArithmetic(newExpr);
166
+
167
+ return newExpr;
168
+ }
169
+
170
+ export function safeEvaluateExpression(expression: string): string {
171
+ try {
172
+ return evaluateExpression(expression);
173
+ } catch {
174
+ return STR_NAN;
175
+ }
176
+ }
177
+
178
+ export function reduceCSSCalc(expression: string): string {
179
+ const result = safeEvaluateExpression(expression.slice(5, -1));
180
+
181
+ if (result === STR_NAN) {
182
+ return '';
183
+ }
184
+
185
+ return result;
186
+ }
@@ -1,8 +1,8 @@
1
1
  import * as React from 'octane';
2
2
  import { ActiveShape, ShapeAnimationProps, SymbolType } from './types';
3
- import { ScatterPointItem } from '../cartesian/Scatter';
4
- import { InnerSymbolsProp, Symbols } from '../shape/Symbols';
5
- import { Shape } from './ActiveShapeUtils';
3
+ import { ScatterPointItem } from '../cartesian/Scatter.tsrx';
4
+ import { InnerSymbolsProp, Symbols } from '../shape/Symbols.tsrx';
5
+ import { Shape } from './ActiveShapeUtils.tsrx';
6
6
  import { DATA_ITEM_GRAPHICAL_ITEM_ID_ATTRIBUTE_NAME } from './Constants';
7
7
  import { GraphicalItemId } from '../state/graphicalItemsSlice';
8
8
 
@@ -13,22 +13,24 @@ export type ScatterShapeProps =
13
13
  [DATA_ITEM_GRAPHICAL_ITEM_ID_ATTRIBUTE_NAME]: GraphicalItemId;
14
14
  };
15
15
 
16
- type ScatterSymbolShapeProps = ScatterShapeProps & InnerSymbolsProp;
16
+ type ScatterSymbolShapeProps = ScatterShapeProps & Omit<InnerSymbolsProp, keyof ScatterShapeProps>;
17
17
 
18
18
  function renderSymbols(props: ScatterSymbolShapeProps) {
19
19
  return <Symbols {...props} />;
20
20
  }
21
21
 
22
+ const ScatterShape = Shape<ScatterSymbolShapeProps, SVGPathElement>;
23
+
22
24
  export function ScatterSymbol({ option, ...props }: {
23
- option: ActiveShape<ScatterShapeProps & InnerSymbolsProp, SVGPathElement> | SymbolType;
25
+ option: ActiveShape<ScatterSymbolShapeProps, SVGPathElement> | SymbolType;
24
26
  } & ScatterShapeProps) {
25
27
  if (typeof option === 'string') {
26
- return <Shape
28
+ return <ScatterShape
27
29
  option={<Symbols type={option} {...props} />}
28
30
  DefaultShape={renderSymbols}
29
31
  shapeProps={props}
30
32
  />;
31
33
  }
32
34
 
33
- return <Shape option={option} DefaultShape={renderSymbols} shapeProps={props} />;
35
+ return <ScatterShape option={option} DefaultShape={renderSymbols} shapeProps={props} />;
34
36
  }
@@ -1,20 +1,24 @@
1
- // Vendored verbatim from recharts@3.9.2 es6/util/TickUtils.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
  import { getAngledRectangleWidth } from './CartesianUtils';
4
3
  import { getEveryNth } from './getEveryNth';
5
- export function getAngledTickWidth(contentSize, unitSize, angle) {
6
- var size = {
4
+ import { Size, CartesianTickItem, CartesianViewBoxRequired } from './types';
5
+
6
+ export function getAngledTickWidth(contentSize: Size, unitSize: Size, angle: number | undefined) {
7
+ const size = {
7
8
  width: contentSize.width + unitSize.width,
8
9
  height: contentSize.height + unitSize.height,
9
10
  };
11
+
10
12
  return getAngledRectangleWidth(size, angle);
11
13
  }
12
- export function getTickBoundaries(viewBox, sign, sizeKey) {
13
- var isWidth = sizeKey === 'width';
14
- var x = viewBox.x,
15
- y = viewBox.y,
16
- width = viewBox.width,
17
- height = viewBox.height;
14
+
15
+ export function getTickBoundaries(
16
+ viewBox: CartesianViewBoxRequired,
17
+ sign: number,
18
+ sizeKey: string,
19
+ ) {
20
+ const isWidth = sizeKey === 'width';
21
+ const { x, y, width, height } = viewBox;
18
22
  if (sign === 1) {
19
23
  return {
20
24
  start: isWidth ? x : y,
@@ -26,18 +30,31 @@ export function getTickBoundaries(viewBox, sign, sizeKey) {
26
30
  end: isWidth ? x : y,
27
31
  };
28
32
  }
29
- export function isVisible(sign, tickPosition, getSize, start, end) {
33
+
34
+ export function isVisible(
35
+ sign: number,
36
+ tickPosition: number,
37
+ getSize: () => number,
38
+ start: number,
39
+ end: number,
40
+ ): boolean {
30
41
  /* Since getSize() is expensive (it reads the ticks' size from the DOM), we do this check first to avoid calculating
31
42
  * the tick's size. */
32
43
  if (sign * tickPosition < sign * start || sign * tickPosition > sign * end) {
33
44
  return false;
34
45
  }
35
- var size = getSize();
46
+
47
+ const size = getSize();
48
+
36
49
  return (
37
50
  sign * (tickPosition - (sign * size) / 2 - start) >= 0 &&
38
51
  sign * (tickPosition + (sign * size) / 2 - end) <= 0
39
52
  );
40
53
  }
41
- export function getNumberIntervalTicks(ticks, interval) {
54
+
55
+ export function getNumberIntervalTicks(
56
+ ticks: ReadonlyArray<CartesianTickItem>,
57
+ interval: number,
58
+ ): ReadonlyArray<CartesianTickItem> | undefined {
42
59
  return getEveryNth(ticks, interval + 1);
43
60
  }
@@ -1,5 +1,6 @@
1
- // Vendored verbatim from recharts@3.9.2 es6/util/YAxisUtils.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
+ type IGetBoundingClient = Pick<Element, 'getBoundingClientRect'>;
3
+
3
4
  /**
4
5
  * Calculates the width of the Y-axis based on the tick labels and the axis label.
5
6
  * @param params - The parameters object.
@@ -10,21 +11,26 @@
10
11
  * @param [params.tickMargin=0] - The margin between the tick line and the tick text.
11
12
  * @returns The calculated width of the Y-axis.
12
13
  */
13
- export var getCalculatedYAxisWidth = (_ref) => {
14
- var ticks = _ref.ticks,
15
- label = _ref.label,
16
- _ref$labelGapWithTick = _ref.labelGapWithTick,
17
- labelGapWithTick = _ref$labelGapWithTick === void 0 ? 5 : _ref$labelGapWithTick,
18
- _ref$tickSize = _ref.tickSize,
19
- tickSize = _ref$tickSize === void 0 ? 0 : _ref$tickSize,
20
- _ref$tickMargin = _ref.tickMargin,
21
- tickMargin = _ref$tickMargin === void 0 ? 0 : _ref$tickMargin;
14
+ export const getCalculatedYAxisWidth = ({
15
+ ticks,
16
+ label,
17
+ labelGapWithTick = 5, // Default gap between label and tick
18
+ tickSize = 0,
19
+ tickMargin = 0,
20
+ }: {
21
+ ticks: ArrayLike<IGetBoundingClient> | null;
22
+ label: IGetBoundingClient | null | undefined;
23
+ labelGapWithTick: number | undefined;
24
+ tickSize: number | undefined;
25
+ tickMargin: number | undefined;
26
+ }): number => {
22
27
  // find the max width of the tick labels
23
- var maxTickWidth = 0;
28
+ let maxTickWidth = 0;
24
29
  if (ticks) {
25
- Array.from(ticks).forEach((tickNode) => {
30
+ Array.from(ticks).forEach((tickNode: IGetBoundingClient) => {
26
31
  if (tickNode) {
27
- var bbox = tickNode.getBoundingClientRect();
32
+ const bbox = tickNode.getBoundingClientRect();
33
+
28
34
  if (bbox.width > maxTickWidth) {
29
35
  maxTickWidth = bbox.width;
30
36
  }
@@ -32,12 +38,16 @@ export var getCalculatedYAxisWidth = (_ref) => {
32
38
  });
33
39
 
34
40
  // calculate width of the axis label
35
- var labelWidth = label ? label.getBoundingClientRect().width : 0;
36
- var tickWidth = tickSize + tickMargin;
41
+ const labelWidth = label ? label.getBoundingClientRect().width : 0;
42
+
43
+ const tickWidth = tickSize + tickMargin;
37
44
 
38
45
  // calculate the updated width of the y-axis
39
- var updatedYAxisWidth = maxTickWidth + tickWidth + labelWidth + (label ? labelGapWithTick : 0);
46
+ const updatedYAxisWidth =
47
+ maxTickWidth + tickWidth + labelWidth + (label ? labelGapWithTick : 0);
48
+
40
49
  return Math.round(updatedYAxisWidth);
41
50
  }
51
+
42
52
  return 0;
43
53
  };
@@ -0,0 +1,49 @@
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ import { XAxisProps, YAxisProps } from '../index';
3
+ import { AxisDomain } from './types';
4
+ import { AxisRange } from '../state/selectors/axisSelectors';
5
+ import { propsAreEqual } from './propsAreEqual';
6
+
7
+ function shortArraysAreEqual(
8
+ arr1: AxisDomain | AxisRange | undefined,
9
+ arr2: AxisDomain | AxisRange | undefined,
10
+ ): boolean {
11
+ if (arr1 === arr2) {
12
+ return true;
13
+ }
14
+
15
+ if (Array.isArray(arr1) && arr1.length === 2 && Array.isArray(arr2) && arr2.length === 2) {
16
+ return arr1[0] === arr2[0] && arr1[1] === arr2[1];
17
+ }
18
+
19
+ return false;
20
+ }
21
+
22
+ /**
23
+ * Usually we would not compare array props deeply for performance consideration.
24
+ * However, for axis props, domain is sometimes defined as a two-elements array, and range is always
25
+ * a two-elements array. So we can do a shallow comparison for the rest props and a shallow
26
+ * comparison for these two array props.
27
+ * @param prevProps
28
+ * @param nextProps
29
+ */
30
+ export function axisPropsAreEqual<T extends YAxisProps | XAxisProps>(
31
+ prevProps: T,
32
+ nextProps: T,
33
+ ): boolean {
34
+ if (prevProps === nextProps) {
35
+ return true;
36
+ }
37
+ const { domain: prevDomain, range: prevRange, ...prevRest } = prevProps;
38
+ const { domain: nextDomain, range: nextRange, ...nextRest } = nextProps;
39
+
40
+ if (!shortArraysAreEqual(prevDomain, nextDomain)) {
41
+ return false;
42
+ }
43
+
44
+ if (!shortArraysAreEqual(prevRange, nextRange)) {
45
+ return false;
46
+ }
47
+
48
+ return propsAreEqual(prevRest, nextRest);
49
+ }
@@ -0,0 +1,20 @@
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ import type { NativeEvent } from './OctaneTypes';
3
+
4
+ export function createEventProxy<T extends NativeEvent>(reactEvent: T): T {
5
+ // Native events are not pooled. Capture the delegated target before a
6
+ // throttled callback runs, after dispatch has cleared currentTarget.
7
+ const { currentTarget } = reactEvent;
8
+ return new Proxy(reactEvent, {
9
+ get: (target, prop) => {
10
+ if (prop === 'currentTarget') {
11
+ return currentTarget;
12
+ }
13
+ const value = Reflect.get(target, prop);
14
+ if (typeof value === 'function') {
15
+ return value.bind(target);
16
+ }
17
+ return value;
18
+ },
19
+ });
20
+ }
@@ -1,6 +1,5 @@
1
- // Vendored verbatim from recharts@3.9.2 es6/util/excludeEventProps.js (framework-agnostic).
2
- // Do not edit — update by re-vendoring when the recharts devDependency moves.
3
- var EventKeys = [
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ const EventKeys = [
4
3
  'dangerouslySetInnerHTML',
5
4
  'onCopy',
6
5
  'onCopyCapture',
@@ -162,11 +161,14 @@ var EventKeys = [
162
161
  'onAnimationIterationCapture',
163
162
  'onTransitionEnd',
164
163
  'onTransitionEndCapture',
165
- ];
166
- export function isEventKey(key) {
164
+ ] as const;
165
+
166
+ export type EventKeysType = (typeof EventKeys)[number];
167
+
168
+ export function isEventKey(key: PropertyKey): key is EventKeysType {
167
169
  if (typeof key !== 'string') {
168
170
  return false;
169
171
  }
170
- var allowedEventKeys = EventKeys;
172
+ const allowedEventKeys: ReadonlyArray<string> = EventKeys;
171
173
  return allowedEventKeys.includes(key);
172
174
  }