solid-recharts 0.2.0 → 1.0.0

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 (508) hide show
  1. package/package.json +17 -13
  2. package/src/animation/AnimatedItems.tsx +2 -4
  3. package/src/animation/CSSTransitionAnimate.tsx +41 -39
  4. package/src/animation/JavascriptAnimate.tsx +45 -41
  5. package/src/cartesian/Area.tsx +43 -58
  6. package/src/cartesian/AreaRevealShape.tsx +1 -1
  7. package/src/cartesian/Bar.tsx +98 -78
  8. package/src/cartesian/BarStack.tsx +10 -7
  9. package/src/cartesian/Brush.tsx +20 -16
  10. package/src/cartesian/CartesianAxis.tsx +4 -4
  11. package/src/cartesian/CartesianGrid.tsx +5 -5
  12. package/src/cartesian/ErrorBar.tsx +9 -7
  13. package/src/cartesian/Funnel.tsx +17 -21
  14. package/src/cartesian/GraphicalItemClipPath.tsx +1 -1
  15. package/src/cartesian/Line.tsx +51 -66
  16. package/src/cartesian/LineDrawShape.tsx +20 -17
  17. package/src/cartesian/ReferenceArea.tsx +28 -38
  18. package/src/cartesian/ReferenceDot.tsx +27 -37
  19. package/src/cartesian/ReferenceLine.tsx +28 -37
  20. package/src/cartesian/RenderedTicksReporter.tsx +19 -17
  21. package/src/cartesian/Scatter.tsx +27 -39
  22. package/src/cartesian/XAxis.tsx +55 -68
  23. package/src/cartesian/YAxis.tsx +88 -99
  24. package/src/cartesian/ZAxis.tsx +29 -41
  25. package/src/chart/AreaChart.tsx +1 -1
  26. package/src/chart/BarChart.tsx +1 -1
  27. package/src/chart/CartesianChart.tsx +4 -3
  28. package/src/chart/CategoricalChart.tsx +5 -5
  29. package/src/chart/ComposedChart.tsx +1 -1
  30. package/src/chart/FunnelChart.tsx +1 -1
  31. package/src/chart/LineChart.tsx +1 -1
  32. package/src/chart/PieChart.tsx +4 -3
  33. package/src/chart/PolarChart.tsx +4 -3
  34. package/src/chart/RadarChart.tsx +4 -3
  35. package/src/chart/RadialBarChart.tsx +7 -3
  36. package/src/chart/RechartsWrapper.tsx +14 -24
  37. package/src/chart/Sankey.tsx +9 -6
  38. package/src/chart/ScatterChart.tsx +1 -1
  39. package/src/chart/SunburstChart.tsx +6 -5
  40. package/src/chart/Treemap.tsx +5 -4
  41. package/src/component/ActivePoints.tsx +6 -15
  42. package/src/component/Cell.tsx +23 -5
  43. package/src/component/Cursor.tsx +3 -3
  44. package/src/component/DefaultLegendContent.tsx +8 -6
  45. package/src/component/DefaultTooltipContent.tsx +14 -10
  46. package/src/component/Dots.tsx +11 -7
  47. package/src/component/Label.tsx +13 -10
  48. package/src/component/LabelList.tsx +12 -7
  49. package/src/component/Legend.tsx +26 -21
  50. package/src/component/ResponsiveContainer.tsx +52 -49
  51. package/src/component/Text.tsx +5 -5
  52. package/src/component/Tooltip.tsx +21 -18
  53. package/src/component/TooltipBoundingBox.tsx +18 -16
  54. package/src/component/responsiveContainerUtils.ts +1 -1
  55. package/src/container/ClipPathProvider.tsx +3 -3
  56. package/src/container/Layer.tsx +5 -5
  57. package/src/container/RootSurface.tsx +1 -1
  58. package/src/container/Surface.tsx +5 -6
  59. package/src/context/ErrorBarContext.tsx +17 -26
  60. package/src/context/PanoramaContext.tsx +2 -2
  61. package/src/context/RegisterGraphicalItemId.tsx +4 -2
  62. package/src/context/chartDataContext.tsx +26 -23
  63. package/src/context/chartLayoutContext.tsx +16 -12
  64. package/src/polar/Pie.tsx +49 -60
  65. package/src/polar/PolarAngleAxis.tsx +43 -52
  66. package/src/polar/PolarGrid.tsx +5 -5
  67. package/src/polar/PolarRadiusAxis.tsx +42 -50
  68. package/src/polar/Radar.tsx +24 -36
  69. package/src/polar/RadialBar.tsx +23 -41
  70. package/src/shape/Cross.tsx +5 -5
  71. package/src/shape/Curve.tsx +7 -8
  72. package/src/shape/Dot.tsx +4 -4
  73. package/src/shape/Polygon.tsx +5 -5
  74. package/src/shape/Rectangle.tsx +22 -20
  75. package/src/shape/Sector.tsx +5 -5
  76. package/src/shape/Symbols.tsx +6 -6
  77. package/src/shape/Trapezoid.tsx +29 -27
  78. package/src/state/RechartsStoreProvider.tsx +5 -3
  79. package/src/state/ReportChartProps.tsx +8 -6
  80. package/src/state/ReportEventSettings.tsx +8 -6
  81. package/src/state/ReportMainChartProps.tsx +11 -9
  82. package/src/state/ReportPolarOptions.tsx +15 -13
  83. package/src/state/SetLegendPayload.ts +20 -28
  84. package/src/state/SetTooltipEntrySettings.tsx +10 -27
  85. package/src/state/brushSlice.ts +10 -8
  86. package/src/state/cartesianAxisSlice.ts +72 -84
  87. package/src/state/chartDataSlice.ts +29 -23
  88. package/src/state/createCollectionActions.ts +51 -0
  89. package/src/state/createSelector.ts +97 -0
  90. package/src/state/errorBarSlice.ts +22 -16
  91. package/src/state/eventSettingsSlice.ts +11 -9
  92. package/src/state/externalEventsMiddleware.ts +2 -11
  93. package/src/state/graphicalItemsSlice.ts +35 -44
  94. package/src/state/isEventThrottled.ts +12 -0
  95. package/src/state/keyboardEventsMiddleware.ts +2 -8
  96. package/src/state/layoutSlice.ts +29 -17
  97. package/src/state/legendSlice.ts +35 -31
  98. package/src/state/mouseEventsMiddleware.ts +2 -13
  99. package/src/state/optionsSlice.ts +8 -6
  100. package/src/state/patched.ts +19 -0
  101. package/src/state/polarAxisSlice.ts +21 -13
  102. package/src/state/polarOptionsSlice.ts +16 -14
  103. package/src/state/referenceElementsSlice.ts +49 -34
  104. package/src/state/registerInStore.ts +70 -0
  105. package/src/state/renderedTicksSlice.ts +11 -7
  106. package/src/state/rootPropsSlice.ts +16 -14
  107. package/src/state/selectors/areaSelectors.ts +13 -36
  108. package/src/state/selectors/arrayEqualityCheck.ts +32 -7
  109. package/src/state/selectors/axisSelectors.ts +215 -169
  110. package/src/state/selectors/barSelectors.ts +8 -36
  111. package/src/state/selectors/combiners/combineConfiguredScale.ts +1 -1
  112. package/src/state/selectors/combiners/combineRealScaleType.ts +1 -1
  113. package/src/state/selectors/dataSelectors.ts +35 -16
  114. package/src/state/selectors/numberDomainEqualityCheck.ts +16 -8
  115. package/src/state/selectors/selectAxisForGraphicalItem.ts +52 -0
  116. package/src/state/tooltipSlice.ts +135 -86
  117. package/src/state/unregisterOnCleanup.ts +5 -20
  118. package/src/state/zIndexSlice.ts +50 -42
  119. package/src/synchronisation/useChartSynchronisation.tsx +213 -217
  120. package/src/util/ActiveShapeUtils.tsx +2 -9
  121. package/src/util/BarUtils.tsx +30 -23
  122. package/src/util/ChartUtils.ts +69 -25
  123. package/src/util/DirectPortal.tsx +107 -0
  124. package/src/util/FunnelUtils.tsx +1 -1
  125. package/src/util/RadialBarUtils.tsx +4 -3
  126. package/src/util/createCartesianCharts.tsx +1 -1
  127. package/src/util/createPolarCharts.tsx +1 -1
  128. package/src/util/propsAreEqual.ts +3 -33
  129. package/src/util/stacks/stackTypes.ts +1 -1
  130. package/src/util/svgPropertiesAndEvents.ts +1 -1
  131. package/src/util/tooltip/translate.ts +2 -2
  132. package/src/util/types.ts +3 -3
  133. package/src/zIndex/ZIndexLayer.tsx +39 -68
  134. package/src/zIndex/ZIndexPortal.tsx +29 -25
  135. package/src/state/reduxDevtoolsJsonStringifyReplacer.ts +0 -15
  136. package/src/util/axisPropsAreEqual.ts +0 -42
  137. package/src/util/resolveDefaultProps.tsx +0 -8
  138. package/src/util/typedDataKey.ts +0 -8
  139. package/test/_data.ts +0 -408
  140. package/test/animation/AnimationController.typed.spec.ts +0 -53
  141. package/test/animation/AnimationControllerImpl.spec.ts +0 -271
  142. package/test/animation/CSSTransitionAnimate.timing.spec.tsx +0 -473
  143. package/test/animation/JavascriptAnimate.spec.tsx +0 -62
  144. package/test/animation/RechartsAnimation.spec.ts +0 -636
  145. package/test/animation/easing.spec.ts +0 -218
  146. package/test/animation/legacyAnimationLengthChange.spec.tsx +0 -803
  147. package/test/animation/matchBy.spec.ts +0 -467
  148. package/test/animation/mockAnimationController.ts +0 -40
  149. package/test/animation/mockControllerAnimationManager.ts +0 -143
  150. package/test/animation/mockTimeoutController.ts +0 -114
  151. package/test/animation/timeoutController.spec.ts +0 -138
  152. package/test/animation/useAnimationStartSnapshot.spec.ts +0 -147
  153. package/test/animation/util.spec.ts +0 -28
  154. package/test/cartesian/Area.animation.spec.tsx +0 -363
  155. package/test/cartesian/Area.range.spec.tsx +0 -54
  156. package/test/cartesian/Area.spec.tsx +0 -1202
  157. package/test/cartesian/Area.stacked.render.spec.tsx +0 -69
  158. package/test/cartesian/Area.typed.spec.tsx +0 -209
  159. package/test/cartesian/Axis.integration.spec.tsx +0 -158
  160. package/test/cartesian/Bar/Bar.csstransition.spec.tsx +0 -299
  161. package/test/cartesian/Bar/Bar.spec.tsx +0 -2314
  162. package/test/cartesian/Bar/Bar.typed.spec.tsx +0 -192
  163. package/test/cartesian/Bar.animation.spec.tsx +0 -426
  164. package/test/cartesian/Bar.stackDomain.spec.tsx +0 -66
  165. package/test/cartesian/Bar.stacked.render.spec.tsx +0 -53
  166. package/test/cartesian/Bar.truncateByDomain.spec.tsx +0 -237
  167. package/test/cartesian/Bar.zeroDimensionFiltering.spec.tsx +0 -336
  168. package/test/cartesian/BarStack.spec.tsx +0 -91
  169. package/test/cartesian/Brush.keyboard.spec.tsx +0 -88
  170. package/test/cartesian/Brush.panorama.spec.tsx +0 -41
  171. package/test/cartesian/Brush.props.spec.tsx +0 -63
  172. package/test/cartesian/Brush.render.spec.tsx +0 -117
  173. package/test/cartesian/Brush.spec.tsx +0 -522
  174. package/test/cartesian/Brush.stacked.spec.tsx +0 -221
  175. package/test/cartesian/CartesianAxis.render.spec.tsx +0 -50
  176. package/test/cartesian/CartesianAxis.spec.tsx +0 -396
  177. package/test/cartesian/CartesianGrid.render.spec.tsx +0 -39
  178. package/test/cartesian/CartesianGrid.spec.tsx +0 -2103
  179. package/test/cartesian/ErrorBar.render.spec.tsx +0 -69
  180. package/test/cartesian/ErrorBar.spec.tsx +0 -2414
  181. package/test/cartesian/Funnel.animation.spec.tsx +0 -241
  182. package/test/cartesian/Funnel.spec.tsx +0 -226
  183. package/test/cartesian/Funnel.typed.spec.tsx +0 -221
  184. package/test/cartesian/GraphicalItemClipPath.scale-behavior.spec.tsx +0 -627
  185. package/test/cartesian/GraphicalItemClipPath.spec.tsx +0 -427
  186. package/test/cartesian/Line.animation.spec.tsx +0 -643
  187. package/test/cartesian/Line.sparseAnimationPath.spec.tsx +0 -98
  188. package/test/cartesian/Line.spec.tsx +0 -471
  189. package/test/cartesian/Line.typed.spec.tsx +0 -152
  190. package/test/cartesian/ReferenceArea.render.spec.tsx +0 -63
  191. package/test/cartesian/ReferenceArea.spec.tsx +0 -663
  192. package/test/cartesian/ReferenceArea.typed.spec.tsx +0 -74
  193. package/test/cartesian/ReferenceDot.render.spec.tsx +0 -55
  194. package/test/cartesian/ReferenceDot.spec.tsx +0 -462
  195. package/test/cartesian/ReferenceDot.typed.spec.tsx +0 -76
  196. package/test/cartesian/ReferenceLine/ReferenceLine.panorama.spec.tsx +0 -184
  197. package/test/cartesian/ReferenceLine/ReferenceLine.spec.tsx +0 -744
  198. package/test/cartesian/ReferenceLine/ReferenceLine.typed.spec.tsx +0 -74
  199. package/test/cartesian/ReferenceLine/getEndPoints.spec.ts +0 -399
  200. package/test/cartesian/ReferenceLine.render.spec.tsx +0 -134
  201. package/test/cartesian/Scatter.animation.spec.tsx +0 -381
  202. package/test/cartesian/Scatter.render.spec.tsx +0 -61
  203. package/test/cartesian/Scatter.spec.tsx +0 -406
  204. package/test/cartesian/Scatter.typed.spec.tsx +0 -153
  205. package/test/cartesian/XAxis/XAxis.barSize.spec.tsx +0 -336
  206. package/test/cartesian/XAxis/XAxis.brush.spec.tsx +0 -266
  207. package/test/cartesian/XAxis/XAxis.categorydomain.spec.tsx +0 -872
  208. package/test/cartesian/XAxis/XAxis.dataKey.spec.tsx +0 -86
  209. package/test/cartesian/XAxis/XAxis.datatypes.spec.tsx +0 -127
  210. package/test/cartesian/XAxis/XAxis.hide.spec.tsx +0 -106
  211. package/test/cartesian/XAxis/XAxis.multiaxis.spec.tsx +0 -336
  212. package/test/cartesian/XAxis/XAxis.numberdomain.spec.tsx +0 -1466
  213. package/test/cartesian/XAxis/XAxis.padding.spec.tsx +0 -758
  214. package/test/cartesian/XAxis/XAxis.padding_clip.spec.tsx +0 -65
  215. package/test/cartesian/XAxis/XAxis.state.spec.tsx +0 -355
  216. package/test/cartesian/XAxis/XAxis.tick.spec.tsx +0 -493
  217. package/test/cartesian/XAxis/XAxis.timescale.spec.tsx +0 -233
  218. package/test/cartesian/XAxis/XAxis.type.spec.tsx +0 -107
  219. package/test/cartesian/XAxis/XAxis.typed.spec.tsx +0 -102
  220. package/test/cartesian/XAxis/XAxis.vertical.spec.tsx +0 -265
  221. package/test/cartesian/XAxis.tickFormatter.spec.tsx +0 -54
  222. package/test/cartesian/YAxis/YAxis.7362.derivedDomain.spec.tsx +0 -230
  223. package/test/cartesian/YAxis/YAxis.7362.spec.tsx +0 -104
  224. package/test/cartesian/YAxis/YAxis.interval-zero.spec.tsx +0 -88
  225. package/test/cartesian/YAxis/YAxis.label.spec.tsx +0 -219
  226. package/test/cartesian/YAxis/YAxis.spec.tsx +0 -1595
  227. package/test/cartesian/YAxis/YAxis.tick.spec.tsx +0 -428
  228. package/test/cartesian/YAxis/YAxis.tickFormatter.spec.tsx +0 -54
  229. package/test/cartesian/YAxis/YAxis.ticks.spec.tsx +0 -263
  230. package/test/cartesian/YAxis/YAxis.type.spec.tsx +0 -107
  231. package/test/cartesian/YAxis/YAxis.typed.spec.tsx +0 -102
  232. package/test/cartesian/ZAxis.spec.tsx +0 -300
  233. package/test/cartesian/ZAxis.typed.spec.tsx +0 -33
  234. package/test/cartesian/__snapshots__/Brush.spec.tsx.snap +0 -5
  235. package/test/cartesian/axisLineAndStroke.spec.tsx +0 -72
  236. package/test/cartesian/getCartesianPosition.spec.ts +0 -907
  237. package/test/cartesian/getEquidistantTicks.spec.ts +0 -88
  238. package/test/cartesian/getTicks.spec.ts +0 -378
  239. package/test/cartesian/miscFeatureGaps.spec.tsx +0 -89
  240. package/test/cartesian/useAnimatedLineLength.spec.ts +0 -168
  241. package/test/chart/AccessibilityLayer.spec.tsx +0 -569
  242. package/test/chart/AccessibilityScans.spec.tsx +0 -286
  243. package/test/chart/AreaChart.spec.tsx +0 -409
  244. package/test/chart/AreaChart.stacked.spec.tsx +0 -1407
  245. package/test/chart/AreaChart.typed.spec.tsx +0 -39
  246. package/test/chart/BarChart.spec.tsx +0 -3719
  247. package/test/chart/BarChart.typed.spec.tsx +0 -60
  248. package/test/chart/CategoricalChart.spec.tsx +0 -255
  249. package/test/chart/ComposedChart.spec.tsx +0 -199
  250. package/test/chart/ComposedChart.typed.spec.tsx +0 -39
  251. package/test/chart/FunnelChart.spec.tsx +0 -215
  252. package/test/chart/FunnelChart.typed.spec.tsx +0 -39
  253. package/test/chart/LineChart.multiseries.spec.tsx +0 -50
  254. package/test/chart/LineChart.smoke.spec.tsx +0 -50
  255. package/test/chart/LineChart.spec.tsx +0 -930
  256. package/test/chart/LineChart.typed.spec.tsx +0 -39
  257. package/test/chart/NicheChartTooltip.spec.tsx +0 -81
  258. package/test/chart/PieChart.spec.tsx +0 -793
  259. package/test/chart/PieChart.typed.spec.tsx +0 -39
  260. package/test/chart/RadarChart.spec.tsx +0 -530
  261. package/test/chart/RadarChart.typed.spec.tsx +0 -39
  262. package/test/chart/RadialBarChart.5966.spec.tsx +0 -48
  263. package/test/chart/RadialBarChart.spec.tsx +0 -679
  264. package/test/chart/RadialBarChart.typed.spec.tsx +0 -39
  265. package/test/chart/RechartsWrapper.spec.tsx +0 -83
  266. package/test/chart/Sankey.content.spec.tsx +0 -46
  267. package/test/chart/Sankey.spec.tsx +0 -952
  268. package/test/chart/Sankey.typed.spec.tsx +0 -29
  269. package/test/chart/ScatterChart.spec.tsx +0 -2613
  270. package/test/chart/ScatterChart.typed.spec.tsx +0 -39
  271. package/test/chart/SunburstChart.spec.tsx +0 -146
  272. package/test/chart/Treemap.animation.spec.tsx +0 -52
  273. package/test/chart/Treemap.spec.tsx +0 -1003
  274. package/test/chart/Treemap.typed.spec.tsx +0 -26
  275. package/test/chart/chartEvents.spec.tsx +0 -127
  276. package/test/chart/responsive.spec.tsx +0 -620
  277. package/test/component/Cell.render.spec.tsx +0 -155
  278. package/test/component/Cell.spec.tsx +0 -12
  279. package/test/component/Cursor.spec.tsx +0 -186
  280. package/test/component/DefaultTooltipContent.spec.tsx +0 -102
  281. package/test/component/Label.render.spec.tsx +0 -63
  282. package/test/component/Label.spec.tsx +0 -686
  283. package/test/component/Label.typed.spec.tsx +0 -46
  284. package/test/component/LabelList.spec.tsx +0 -188
  285. package/test/component/Legend.itemSorter.spec.tsx +0 -704
  286. package/test/component/Legend.render.spec.tsx +0 -92
  287. package/test/component/Legend.spec.tsx +0 -2213
  288. package/test/component/Legend.typed.spec.tsx +0 -22
  289. package/test/component/ResponsiveContainer.spec.tsx +0 -523
  290. package/test/component/ResponsiveContainerDataTest.spec.tsx +0 -51
  291. package/test/component/Text.spec.tsx +0 -415
  292. package/test/component/Text.typed.spec.tsx +0 -46
  293. package/test/component/Tooltip/ActiveDot.spec.tsx +0 -370
  294. package/test/component/Tooltip/Tooltip.animation.spec.tsx +0 -209
  295. package/test/component/Tooltip/Tooltip.content.spec.tsx +0 -128
  296. package/test/component/Tooltip/Tooltip.formatter.spec.tsx +0 -152
  297. package/test/component/Tooltip/Tooltip.includeHidden.spec.tsx +0 -79
  298. package/test/component/Tooltip/Tooltip.multipleDataArrays.spec.tsx +0 -165
  299. package/test/component/Tooltip/Tooltip.offset.spec.tsx +0 -113
  300. package/test/component/Tooltip/Tooltip.state.spec.tsx +0 -74
  301. package/test/component/Tooltip/Tooltip.sync.spec.tsx +0 -639
  302. package/test/component/Tooltip/defaultIndex.spec.tsx +0 -227
  303. package/test/component/Tooltip/graphicalItem.formatter.spec.tsx +0 -138
  304. package/test/component/Tooltip/itemSorter.spec.tsx +0 -2815
  305. package/test/component/Tooltip/tooltipEventType.spec.tsx +0 -344
  306. package/test/component/Tooltip/tooltipMouseHoverSelectors.ts +0 -41
  307. package/test/component/Tooltip/tooltipTestHelpers.tsx +0 -162
  308. package/test/component/Tooltip.defaultIndex.spec.tsx +0 -48
  309. package/test/component/Tooltip.hover.spec.tsx +0 -61
  310. package/test/component/Tooltip.item.spec.tsx +0 -54
  311. package/test/component/Tooltip.keyboard.spec.tsx +0 -51
  312. package/test/component/Tooltip.payload.spec.tsx +0 -1716
  313. package/test/component/Tooltip.touch.spec.tsx +0 -39
  314. package/test/component/Tooltip.visibility.spec.tsx +0 -1889
  315. package/test/component/TooltipBoundingBox.spec.tsx +0 -89
  316. package/test/component/responsiveContainerUtils.spec.ts +0 -205
  317. package/test/container/ClipPath.spec.tsx +0 -602
  318. package/test/container/chartDimensions.spec.tsx +0 -368
  319. package/test/context/chartLayoutContext.spec.tsx +0 -378
  320. package/test/helper/ExpectAxisDomain.tsx +0 -27
  321. package/test/helper/assertNotNull.ts +0 -6
  322. package/test/helper/assertZIndexLayerOrder.ts +0 -19
  323. package/test/helper/createSelectorTestCase.tsx +0 -176
  324. package/test/helper/expectAnimatedPieAngles.ts +0 -100
  325. package/test/helper/expectAnimatedPiePaths.ts +0 -78
  326. package/test/helper/expectAreaCurve.ts +0 -15
  327. package/test/helper/expectAxisTicks.ts +0 -48
  328. package/test/helper/expectBars.ts +0 -54
  329. package/test/helper/expectFunctionReturning.ts +0 -58
  330. package/test/helper/expectLabel.ts +0 -32
  331. package/test/helper/expectLastCalledWith.ts +0 -48
  332. package/test/helper/expectLine.ts +0 -20
  333. package/test/helper/expectPieSectors.ts +0 -80
  334. package/test/helper/expectScale.ts +0 -37
  335. package/test/helper/expectScatterPoints.ts +0 -52
  336. package/test/helper/expectStackGroups.ts +0 -144
  337. package/test/helper/mockAxes.ts +0 -22
  338. package/test/helper/mockGetBoundingClientRect.ts +0 -66
  339. package/test/helper/mockHTMLElementProperty.ts +0 -19
  340. package/test/helper/mockTouchingElement.ts +0 -27
  341. package/test/helper/offsetHelpers.ts +0 -19
  342. package/test/helper/parameterizedTestCases.tsx +0 -99
  343. package/test/helper/produceState.ts +0 -32
  344. package/test/helper/selectorTestHelpers.tsx +0 -63
  345. package/test/helper/trim.spec.ts +0 -35
  346. package/test/helper/trim.ts +0 -11
  347. package/test/hooks/useActiveTooltipDataPoints.spec.tsx +0 -358
  348. package/test/hooks/useAxisDomain.spec.tsx +0 -361
  349. package/test/hooks/useAxisScale.spec.tsx +0 -283
  350. package/test/hooks/useAxisTicks.spec.tsx +0 -130
  351. package/test/hooks/useOffset.spec.tsx +0 -248
  352. package/test/hooks/useTooltipStateHooks.spec.tsx +0 -109
  353. package/test/polar/Pie/Pie-TwoLevelPieChart.spec.tsx +0 -135
  354. package/test/polar/Pie/Pie.spec.tsx +0 -784
  355. package/test/polar/Pie/Pie.typed.spec.tsx +0 -78
  356. package/test/polar/Pie.animation.spec.tsx +0 -529
  357. package/test/polar/PieWithLegend.animation.spec.tsx +0 -142
  358. package/test/polar/PolarAngleAxis/PolarAngleAxis.events.spec.tsx +0 -76
  359. package/test/polar/PolarAngleAxis/PolarAngleAxis.spec.tsx +0 -2079
  360. package/test/polar/PolarAngleAxis/PolarAngleAxis.typed.spec.tsx +0 -102
  361. package/test/polar/PolarAngleAxis.render.spec.tsx +0 -79
  362. package/test/polar/PolarGrid.render.spec.tsx +0 -75
  363. package/test/polar/PolarGrid.spec.tsx +0 -918
  364. package/test/polar/PolarLegendPerRow.render.spec.tsx +0 -85
  365. package/test/polar/PolarRadiusAxis.events.spec.tsx +0 -65
  366. package/test/polar/PolarRadiusAxis.render.spec.tsx +0 -52
  367. package/test/polar/PolarRadiusAxis.spec.tsx +0 -991
  368. package/test/polar/PolarRadiusAxis.typed.spec.tsx +0 -84
  369. package/test/polar/PolarTooltipLegend.render.spec.tsx +0 -80
  370. package/test/polar/Radar.animation.spec.tsx +0 -570
  371. package/test/polar/Radar.render.spec.tsx +0 -71
  372. package/test/polar/Radar.spec.tsx +0 -265
  373. package/test/polar/Radar.typed.spec.tsx +0 -119
  374. package/test/polar/RadialBar/RadialBar.spec.tsx +0 -1521
  375. package/test/polar/RadialBar/RadialBar.typed.spec.tsx +0 -132
  376. package/test/polar/RadialBar.animation.spec.tsx +0 -375
  377. package/test/polar/RadialBar.render.spec.tsx +0 -66
  378. package/test/polar/RadialBar.stacked.spec.tsx +0 -57
  379. package/test/setup.ts +0 -84
  380. package/test/shape/ActiveShape.spec.tsx +0 -181
  381. package/test/shape/Cross.spec.tsx +0 -60
  382. package/test/shape/Cross.typed.spec.tsx +0 -26
  383. package/test/shape/Curve.spec.tsx +0 -368
  384. package/test/shape/Curve.typed.spec.tsx +0 -69
  385. package/test/shape/Dot.spec.tsx +0 -73
  386. package/test/shape/Dot.typed.spec.tsx +0 -30
  387. package/test/shape/Polygon.spec.tsx +0 -357
  388. package/test/shape/Polygon.typed.spec.tsx +0 -28
  389. package/test/shape/Rectangle.animation.spec.tsx +0 -451
  390. package/test/shape/Rectangle.spec.tsx +0 -68
  391. package/test/shape/Rectangle.typed.spec.tsx +0 -24
  392. package/test/shape/Sector.spec.tsx +0 -76
  393. package/test/shape/Sector.typed.spec.tsx +0 -24
  394. package/test/shape/Symbols.spec.tsx +0 -43
  395. package/test/shape/Symbols.typed.spec.tsx +0 -24
  396. package/test/shape/Trapezoid.spec.tsx +0 -50
  397. package/test/shape/Trapezoid.typed.spec.tsx +0 -24
  398. package/test/shape/__snapshots__/Cross.spec.tsx.snap +0 -62
  399. package/test/shape/__snapshots__/Curve.spec.tsx.snap +0 -460
  400. package/test/shape/__snapshots__/Polygon.spec.tsx.snap +0 -58
  401. package/test/shape/__snapshots__/Rectangle.spec.tsx.snap +0 -117
  402. package/test/shape/__snapshots__/Sector.spec.tsx.snap +0 -71
  403. package/test/shape/__snapshots__/Trapezoid.spec.tsx.snap +0 -64
  404. package/test/state/chartDataSlice.spec.ts +0 -53
  405. package/test/state/externalEventsMiddleware.spec.ts +0 -178
  406. package/test/state/graphicalItemsSlice.spec.ts +0 -92
  407. package/test/state/hooks.spec.tsx +0 -68
  408. package/test/state/legendSlice.spec.ts +0 -44
  409. package/test/state/mouseEventsMiddleware.spec.ts +0 -75
  410. package/test/state/optionsSlice.spec.ts +0 -19
  411. package/test/state/reduxDevtoolsJsonStringifyReplacer.spec.ts +0 -25
  412. package/test/state/referenceElementsSlice.spec.ts +0 -84
  413. package/test/state/selectors/areaSelectors.spec.tsx +0 -77
  414. package/test/state/selectors/axisSelectors.spec.tsx +0 -1418
  415. package/test/state/selectors/barStackSelectors.spec.tsx +0 -752
  416. package/test/state/selectors/brushSelectors.spec.tsx +0 -30
  417. package/test/state/selectors/cartesianAxisSlice.spec.ts +0 -96
  418. package/test/state/selectors/combineNiceTicks.spec.ts +0 -207
  419. package/test/state/selectors/combiners/combineActiveTooltipIndex.spec.ts +0 -61
  420. package/test/state/selectors/combiners/combineAllBarPositions.spec.ts +0 -39
  421. package/test/state/selectors/combiners/combineConfiguredScale.spec.ts +0 -56
  422. package/test/state/selectors/combiners/combineDisplayedStackedData.spec.ts +0 -123
  423. package/test/state/selectors/combiners/combineRealScaleType.spec.ts +0 -80
  424. package/test/state/selectors/containerSelectors.spec.tsx +0 -168
  425. package/test/state/selectors/dataSelectors.spec.tsx +0 -136
  426. package/test/state/selectors/legendSelectors.spec.tsx +0 -113
  427. package/test/state/selectors/lineSelectors.spec.tsx +0 -60
  428. package/test/state/selectors/pieSelectors.spec.tsx +0 -72
  429. package/test/state/selectors/radarSelectors.spec.tsx +0 -496
  430. package/test/state/selectors/rootPropsSelectors.spec.tsx +0 -169
  431. package/test/state/selectors/scatterSelectors.spec.tsx +0 -47
  432. package/test/state/selectors/selectActiveTooltipIndex.spec.tsx +0 -234
  433. package/test/state/selectors/selectAllAxes.spec.tsx +0 -18
  434. package/test/state/selectors/selectAxisDomain.spec.tsx +0 -21
  435. package/test/state/selectors/selectAxisDomainIncludingNiceTicks.spec.tsx +0 -19
  436. package/test/state/selectors/selectAxisRangeWithReverse.spec.tsx +0 -22
  437. package/test/state/selectors/selectAxisScale.spec.tsx +0 -91
  438. package/test/state/selectors/selectBarRectangles.stackOffset.spec.tsx +0 -503
  439. package/test/state/selectors/selectBaseAxis.spec.tsx +0 -56
  440. package/test/state/selectors/selectCartesianItemsSettings.spec.tsx +0 -57
  441. package/test/state/selectors/selectChartOffset.spec.tsx +0 -26
  442. package/test/state/selectors/selectDisplayedData.spec.tsx +0 -282
  443. package/test/state/selectors/selectIsTooltipActive.spec.tsx +0 -231
  444. package/test/state/selectors/selectNumericalDomain.spec.tsx +0 -21
  445. package/test/state/selectors/selectRealScaleType.spec.tsx +0 -19
  446. package/test/state/selectors/selectStackGroups.spec.tsx +0 -322
  447. package/test/state/selectors/selectXAxisPosition.spec.tsx +0 -22
  448. package/test/state/selectors/selectYAxisPosition.spec.tsx +0 -22
  449. package/test/state/selectors/selectors.spec.tsx +0 -1613
  450. package/test/state/throttling.spec.ts +0 -200
  451. package/test/state/zIndexSlice.spec.ts +0 -85
  452. package/test/synchronisation/useChartSynchronisation.spec.tsx +0 -225
  453. package/test/util/BarUtils.spec.ts +0 -39
  454. package/test/util/CartesianUtils/CartesianUtils.spec.ts +0 -261
  455. package/test/util/CartesianUtils/rectWithPoints.spec.ts +0 -48
  456. package/test/util/ChartUtils/ChartUtils.spec.ts +0 -491
  457. package/test/util/ChartUtils/appendOffsetOfLegend.spec.ts +0 -136
  458. package/test/util/ChartUtils/appendOffsetOfLegend.spec.tsx +0 -133
  459. package/test/util/ChartUtils/getCateCoordinateOfLine.spec.ts +0 -83
  460. package/test/util/ChartUtils/getStackedData.spec.ts +0 -416
  461. package/test/util/ChartUtils/truncateByDomain.spec.ts +0 -70
  462. package/test/util/DataUtils.spec.ts +0 -385
  463. package/test/util/DomUtils.spec.tsx +0 -117
  464. package/test/util/FunnelUtils.spec.tsx +0 -70
  465. package/test/util/Global.spec.ts +0 -11
  466. package/test/util/LRUCache.spec.ts +0 -81
  467. package/test/util/LogUtils.spec.ts +0 -45
  468. package/test/util/PolarUtils.spec.ts +0 -66
  469. package/test/util/ReduceCssCalcPrototype.spec.ts +0 -141
  470. package/test/util/ShallowEqual.spec.ts +0 -102
  471. package/test/util/TickUtils.spec.ts +0 -29
  472. package/test/util/axisPropsAreEqual.spec.ts +0 -93
  473. package/test/util/createChartHelpers.spec.tsx +0 -210
  474. package/test/util/cursor/getCursorPoints.spec.ts +0 -136
  475. package/test/util/cursor/getCursorRectangle.spec.ts +0 -50
  476. package/test/util/cursor/getRadialCursorPoints.spec.ts +0 -36
  477. package/test/util/errorValue.spec.ts +0 -69
  478. package/test/util/getEveryNth.spec.ts +0 -39
  479. package/test/util/getRadiusAndStrokeWidthFromDot.spec.ts +0 -51
  480. package/test/util/getRelativeCoordinate.spec.ts +0 -250
  481. package/test/util/getSliced.spec.ts +0 -45
  482. package/test/util/isDomainSpecifiedByUser.spec.ts +0 -207
  483. package/test/util/isWellBehavedNumber.spec.ts +0 -54
  484. package/test/util/payload/getUniqPayload.spec.ts +0 -56
  485. package/test/util/propsAreEqual.spec.ts +0 -75
  486. package/test/util/round.spec.ts +0 -112
  487. package/test/util/scale/arithmetic.spec.ts +0 -61
  488. package/test/util/scale/createCategoricalInverse.spec.ts +0 -84
  489. package/test/util/scale/getNiceTickValues.spec.ts +0 -421
  490. package/test/util/scale/getTickValuesFixedDomain.spec.ts +0 -155
  491. package/test/util/svgPropertiesAndEvents.spec.tsx +0 -206
  492. package/test/util/svgPropertiesNoEvents.spec.tsx +0 -228
  493. package/test/util/tooltip/translate.spec.ts +0 -396
  494. package/test/util/useAnimationId.spec.tsx +0 -59
  495. package/test/util/useElementOffset.spec.tsx +0 -173
  496. package/test/util/usePrefersReducedMotion.spec.ts +0 -54
  497. package/test/util/useUniqueId.spec.ts +0 -99
  498. package/test/utils/diagnostics-allowlist.ts +0 -18
  499. package/test/utils/diagnostics.ts +0 -58
  500. package/test/zIndex/AllZIndexPortals.spec.tsx +0 -83
  501. package/test/zIndex/DefaultZIndexes.spec.ts +0 -80
  502. package/test/zIndex/DynamicZIndex.spec.tsx +0 -102
  503. package/test/zIndex/ZIndexLayer.portalOwner.spec.tsx +0 -125
  504. package/test/zIndex/componentZIndex.spec.tsx +0 -255
  505. package/test/zIndex/getZIndexFromUnknown.spec.ts +0 -51
  506. package/test/zIndex/multiChartZIndexIsolation.spec.tsx +0 -90
  507. package/test/zIndex/zIndexSelectors.spec.ts +0 -172
  508. package/tsconfig.json +0 -11
@@ -88,7 +88,21 @@ import {
88
88
  import { selectChartHeight, selectChartWidth } from "./containerSelectors";
89
89
  import { selectAllXAxes, selectAllYAxes } from "./selectAllAxes";
90
90
  import { pickAxisType } from "./pickAxisType";
91
+ import { pickAxisId } from "./pickAxisId";
92
+ import { createSelector } from "../createSelector";
93
+ import { arrayContentsAreEqualCheck, emptyArraysAreEqualCheck } from "./arrayEqualityCheck";
94
+ import { numberDomainEqualityCheck } from "./numberDomainEqualityCheck";
91
95
  import { isWellBehavedNumber } from "../../util/isWellBehavedNumber";
96
+
97
+ // `pickAxisType` is generic (`<T>(state, axisType: T) => T`), so as a bare input
98
+ // selector its return infers to `unknown`. These typed picks pin it to the axis
99
+ // arg shape each combiner expects — used wherever it feeds a wrapped selector.
100
+ const pickAxisTypeArg = (_state: RechartsRootState, axisType: AllAxisTypes): AllAxisTypes =>
101
+ axisType;
102
+ const pickRenderableAxisType = (
103
+ _state: RechartsRootState,
104
+ axisType: RenderableAxisType,
105
+ ): RenderableAxisType => axisType;
92
106
  import { getNiceTickValues, getTickValuesFixedDomain } from "../../util/scale";
93
107
  import { selectChartOffsetInternal } from "./selectChartOffsetInternal";
94
108
  import { selectBrushDimensions } from "./brushSelectors";
@@ -387,11 +401,17 @@ export function itemAxisPredicate(axisType: AllAxisTypes, axisId: AxisId) {
387
401
  };
388
402
  }
389
403
 
390
- const selectAxisPredicate = (
391
- _state: RechartsRootState,
404
+ // Wrapped (ADR-0002) so the predicate reference is stable per (axisType, axisId)
405
+ // — an unwrapped fresh closure per call would defeat downstream item-settings
406
+ // caching. Mirrors upstream `createSelector([pickAxisType, pickAxisId], itemAxisPredicate)`.
407
+ const selectAxisPredicate: (
408
+ state: RechartsRootState,
392
409
  axisType: AllAxisTypes,
393
410
  axisId: AxisId,
394
- ): ((item: CartesianGraphicalItemSettings) => boolean) => itemAxisPredicate(axisType, axisId);
411
+ ) => (item: CartesianGraphicalItemSettings) => boolean = createSelector(
412
+ [pickAxisTypeArg, pickAxisId],
413
+ itemAxisPredicate,
414
+ );
395
415
 
396
416
  export const combineGraphicalItemsSettings = <T extends GraphicalItemSettings>(
397
417
  graphicalItems: ReadonlyArray<T>,
@@ -405,28 +425,29 @@ export const combineGraphicalItemsSettings = <T extends GraphicalItemSettings>(
405
425
  return !item.hide;
406
426
  });
407
427
 
408
- export const selectCartesianItemsSettings = (
428
+ export const selectCartesianItemsSettings: (
409
429
  state: RechartsRootState,
410
430
  axisType: AllAxisTypes,
411
431
  axisId: AxisId,
412
- ): ReadonlyArray<CartesianGraphicalItemSettings> =>
413
- combineGraphicalItemsSettings(
414
- selectUnfilteredCartesianItems(state),
415
- selectBaseAxis(state, axisType, axisId),
416
- selectAxisPredicate(state, axisType, axisId),
417
- );
432
+ ) => ReadonlyArray<CartesianGraphicalItemSettings> = createSelector(
433
+ [selectUnfilteredCartesianItems, selectBaseAxis, selectAxisPredicate],
434
+ combineGraphicalItemsSettings,
435
+ { resultEqualityCheck: emptyArraysAreEqualCheck },
436
+ );
418
437
 
419
438
  export const filterGraphicalNotStackedItems = (
420
439
  cartesianItems: ReadonlyArray<GraphicalItemSettings>,
421
440
  ): ReadonlyArray<GraphicalItemSettings> =>
422
441
  cartesianItems.filter((item) => !("stackId" in item) || item.stackId === undefined);
423
442
 
424
- const selectCartesianItemsSettingsExceptStacked = (
443
+ const selectCartesianItemsSettingsExceptStacked: (
425
444
  state: RechartsRootState,
426
445
  axisType: AllAxisTypes,
427
446
  axisId: AxisId,
428
- ): ReadonlyArray<GraphicalItemSettings> =>
429
- filterGraphicalNotStackedItems(selectCartesianItemsSettings(state, axisType, axisId));
447
+ ) => ReadonlyArray<GraphicalItemSettings> = createSelector(
448
+ [selectCartesianItemsSettings],
449
+ filterGraphicalNotStackedItems,
450
+ );
430
451
 
431
452
  export const combineGraphicalItemsData = (
432
453
  cartesianItems: ReadonlyArray<GraphicalItemSettings>,
@@ -440,20 +461,24 @@ export const combineGraphicalItemsData = (
440
461
  * True if at least one graphical item relies on the chart-level data (no own
441
462
  * `data` prop).
442
463
  */
443
- export const selectAnyCartesianItemsUsesChartData = (
464
+ export const selectAnyCartesianItemsUsesChartData: (
444
465
  state: RechartsRootState,
445
466
  axisType: AllAxisTypes,
446
467
  axisId: AxisId,
447
- ): boolean => selectCartesianItemsSettings(state, axisType, axisId).some((item) => !item.data);
468
+ ) => boolean = createSelector([selectCartesianItemsSettings], (items) =>
469
+ items.some((item) => !item.data),
470
+ );
448
471
 
449
472
  /**
450
473
  * Data defined on the chart graphical items (Line/Scatter/etc.), filtered by axis.
451
474
  */
452
- export const selectCartesianGraphicalItemsData = (
475
+ export const selectCartesianGraphicalItemsData: (
453
476
  state: RechartsRootState,
454
477
  axisType: AllAxisTypes,
455
478
  axisId: AxisId,
456
- ): ChartData => combineGraphicalItemsData(selectCartesianItemsSettings(state, axisType, axisId));
479
+ ) => ChartData = createSelector([selectCartesianItemsSettings], combineGraphicalItemsData, {
480
+ resultEqualityCheck: emptyArraysAreEqualCheck,
481
+ });
457
482
 
458
483
  export const combineDisplayedData = (
459
484
  graphicalItemsData: ChartData,
@@ -469,16 +494,15 @@ export const combineDisplayedData = (
469
494
  * All data in the chart (graphical items + chart root), useful for figuring out
470
495
  * an axis domain. Discards original indexes, so not useful for ordering.
471
496
  */
472
- export const selectDisplayedData = (
497
+ export const selectDisplayedData: (
473
498
  state: RechartsRootState,
474
499
  axisType: AllAxisTypes,
475
500
  axisId: AxisId,
476
501
  isPanorama: boolean,
477
- ): ChartData =>
478
- combineDisplayedData(
479
- selectCartesianGraphicalItemsData(state, axisType, axisId),
480
- selectChartDataWithIndexesIfNotInPanoramaPosition4(state, axisType, axisId, isPanorama),
481
- );
502
+ ) => ChartData = createSelector(
503
+ [selectCartesianGraphicalItemsData, selectChartDataWithIndexesIfNotInPanoramaPosition4],
504
+ combineDisplayedData,
505
+ );
482
506
 
483
507
  export const combineAppliedValues = (
484
508
  data: ChartData,
@@ -518,20 +542,22 @@ export const combineAllAppliedValues = (
518
542
  /**
519
543
  * All values with the appropriate dataKey applied. Expensive — iterates all data.
520
544
  */
521
- export const selectAllAppliedValues = (
545
+ export const selectAllAppliedValues: (
522
546
  state: RechartsRootState,
523
547
  axisType: AllAxisTypes,
524
548
  axisId: AxisId,
525
549
  isPanorama: boolean,
526
- ): AppliedChartData =>
527
- combineAllAppliedValues(
528
- selectDisplayedData(state, axisType, axisId, isPanorama),
529
- selectBaseAxis(state, axisType, axisId),
530
- selectCartesianItemsSettings(state, axisType, axisId),
531
- selectChartDataWithIndexesIfNotInPanoramaPosition4(state, axisType, axisId, isPanorama),
532
- selectAnyCartesianItemsUsesChartData(state, axisType, axisId),
533
- selectCartesianGraphicalItemsData(state, axisType, axisId),
534
- );
550
+ ) => AppliedChartData = createSelector(
551
+ [
552
+ selectDisplayedData,
553
+ selectBaseAxis,
554
+ selectCartesianItemsSettings,
555
+ selectChartDataWithIndexesIfNotInPanoramaPosition4,
556
+ selectAnyCartesianItemsUsesChartData,
557
+ selectCartesianGraphicalItemsData,
558
+ ],
559
+ combineAllAppliedValues,
560
+ );
535
561
 
536
562
  function makeNumber(val: unknown): number | undefined {
537
563
  if (isNumOrStr(val) || val instanceof Date) {
@@ -713,6 +739,14 @@ export const combineDomainOfAllAppliedNumericalValuesIncludingErrorValues = (
713
739
  return undefined;
714
740
  };
715
741
 
742
+ // NOT wrapped (ADR-0002 leaf-input constraint): `selectAllErrorBarSettings`
743
+ // returns the `errorBars` slice root and the combiner iterates its nested,
744
+ // dynamically-keyed entries. Under a wrapped selector the combiner runs
745
+ // untracked and the input reads only the root, so an ErrorBar registering after
746
+ // first compute is never tracked → the domain stays stale (missed the error-bar
747
+ // extension). Kept as a plain function so its combiner runs tracked inside its
748
+ // wrapped consumer `selectNumericalDomain`, whose numberDomainEqualityCheck
749
+ // still stabilizes the domain reference downstream.
716
750
  export const selectDomainOfAllAppliedNumericalValuesIncludingErrorValues = (
717
751
  state: RechartsRootState,
718
752
  axisType: AllAxisTypes,
@@ -945,29 +979,32 @@ export const selectDomainFromUserPreference = (
945
979
  // (reselect createSelectors → plain functions; memoization from useAppSelector).
946
980
 
947
981
  /** Cartesian items (Bar/Area) that are actually stacked (have stackId + dataKey). */
948
- export const selectStackedCartesianItemsSettings = (
982
+ export const selectStackedCartesianItemsSettings: (
949
983
  state: RechartsRootState,
950
984
  axisType: AllAxisTypes,
951
985
  axisId: AxisId,
952
- ): ReadonlyArray<DefinitelyStackedGraphicalItem> =>
953
- selectCartesianItemsSettings(state, axisType, axisId)
954
- .filter((item) => item.type === "area" || item.type === "bar")
955
- .filter(isStacked);
986
+ ) => ReadonlyArray<DefinitelyStackedGraphicalItem> = createSelector(
987
+ [selectCartesianItemsSettings],
988
+ (cartesianItems): ReadonlyArray<DefinitelyStackedGraphicalItem> =>
989
+ cartesianItems.filter((item) => item.type === "area" || item.type === "bar").filter(isStacked),
990
+ );
956
991
 
957
992
  const selectTooltipAxisForStacks = (state: RechartsRootState): BaseCartesianAxis =>
958
993
  selectRenderableAxisSettings(state, selectTooltipAxisType(state), selectTooltipAxisId(state));
959
994
 
960
- export const selectDisplayedStackedData = (
995
+ export const selectDisplayedStackedData: (
961
996
  state: RechartsRootState,
962
997
  axisType: AllAxisTypes,
963
998
  axisId: AxisId,
964
999
  isPanorama: boolean,
965
- ): DisplayedStackedData =>
966
- combineDisplayedStackedData(
967
- selectStackedCartesianItemsSettings(state, axisType, axisId),
968
- selectChartDataWithIndexesIfNotInPanoramaPosition4(state, axisType, axisId, isPanorama),
969
- selectTooltipAxisForStacks(state),
970
- );
1000
+ ) => DisplayedStackedData = createSelector(
1001
+ [
1002
+ selectStackedCartesianItemsSettings,
1003
+ selectChartDataWithIndexesIfNotInPanoramaPosition4,
1004
+ selectTooltipAxisForStacks,
1005
+ ],
1006
+ combineDisplayedStackedData,
1007
+ );
971
1008
 
972
1009
  export const combineStackGroups = (
973
1010
  displayedData: DisplayedStackedData,
@@ -1006,18 +1043,20 @@ export const combineStackGroups = (
1006
1043
  * Stack groups are groups of graphical items that stack on each other, keyed by
1007
1044
  * stack ID. Items without a stack ID do not appear.
1008
1045
  */
1009
- export const selectStackGroups = (
1046
+ export const selectStackGroups: (
1010
1047
  state: RechartsRootState,
1011
1048
  axisType: AllAxisTypes,
1012
1049
  axisId: AxisId,
1013
1050
  isPanorama: boolean,
1014
- ): AllStackGroups =>
1015
- combineStackGroups(
1016
- selectDisplayedStackedData(state, axisType, axisId, isPanorama),
1017
- selectStackedCartesianItemsSettings(state, axisType, axisId),
1018
- selectStackOffsetType(state),
1019
- selectReverseStackOrder(state),
1020
- );
1051
+ ) => AllStackGroups = createSelector(
1052
+ [
1053
+ selectDisplayedStackedData,
1054
+ selectStackedCartesianItemsSettings,
1055
+ selectStackOffsetType,
1056
+ selectReverseStackOrder,
1057
+ ],
1058
+ combineStackGroups,
1059
+ );
1021
1060
 
1022
1061
  export const combineDomainOfStackGroups = (
1023
1062
  stackGroups: AllStackGroups | undefined,
@@ -1034,18 +1073,16 @@ export const combineDomainOfStackGroups = (
1034
1073
  return getDomainOfStackGroups(stackGroups, dataStartIndex, dataEndIndex);
1035
1074
  };
1036
1075
 
1037
- export const selectDomainOfStackGroups = (
1076
+ export const selectDomainOfStackGroups: (
1038
1077
  state: RechartsRootState,
1039
1078
  axisType: AllAxisTypes,
1040
1079
  axisId: AxisId,
1041
1080
  isPanorama: boolean,
1042
- ): NumberDomain | undefined =>
1043
- combineDomainOfStackGroups(
1044
- selectStackGroups(state, axisType, axisId, isPanorama),
1045
- selectChartDataWithIndexes(state),
1046
- axisType,
1047
- selectDomainFromUserPreference(state, axisType, axisId),
1048
- );
1081
+ ) => NumberDomain | undefined = createSelector(
1082
+ [selectStackGroups, selectChartDataWithIndexes, pickAxisTypeArg, selectDomainFromUserPreference],
1083
+ combineDomainOfStackGroups,
1084
+ { resultEqualityCheck: numberDomainEqualityCheck },
1085
+ );
1049
1086
 
1050
1087
  export const combineNumericalDomain = (
1051
1088
  axisSettings: BaseCartesianAxis,
@@ -1127,34 +1164,34 @@ export const combineNumericTicksDomain = (
1127
1164
  return [Math.min(...numericTicks), Math.max(...numericTicks)];
1128
1165
  };
1129
1166
 
1130
- export const selectNumericTicksDomain = (
1167
+ export const selectNumericTicksDomain: (
1131
1168
  state: RechartsRootState,
1132
1169
  axisType: AllAxisTypes,
1133
1170
  axisId: AxisId,
1134
- ): NumberDomain | undefined => combineNumericTicksDomain(selectBaseAxis(state, axisType, axisId));
1171
+ ) => NumberDomain | undefined = createSelector([selectBaseAxis], combineNumericTicksDomain, {
1172
+ resultEqualityCheck: numberDomainEqualityCheck,
1173
+ });
1135
1174
 
1136
- export const selectNumericalDomain = (
1175
+ export const selectNumericalDomain: (
1137
1176
  state: RechartsRootState,
1138
1177
  axisType: AllAxisTypes,
1139
1178
  axisId: AxisId,
1140
1179
  isPanorama: boolean,
1141
- ): NumberDomain | undefined =>
1142
- combineNumericalDomain(
1143
- selectBaseAxis(state, axisType, axisId),
1144
- selectDomainDefinition(state, axisType, axisId),
1145
- selectDomainFromUserPreference(state, axisType, axisId),
1146
- selectDomainOfStackGroups(state, axisType, axisId, isPanorama),
1147
- selectDomainOfAllAppliedNumericalValuesIncludingErrorValues(
1148
- state,
1149
- axisType,
1150
- axisId,
1151
- isPanorama,
1152
- ),
1153
- selectReferenceElementsDomain(state, axisType, axisId),
1154
- selectChartLayout(state),
1155
- axisType,
1156
- selectNumericTicksDomain(state, axisType, axisId),
1157
- );
1180
+ ) => NumberDomain | undefined = createSelector(
1181
+ [
1182
+ selectBaseAxis,
1183
+ selectDomainDefinition,
1184
+ selectDomainFromUserPreference,
1185
+ selectDomainOfStackGroups,
1186
+ selectDomainOfAllAppliedNumericalValuesIncludingErrorValues,
1187
+ selectReferenceElementsDomain,
1188
+ selectChartLayout,
1189
+ pickAxisTypeArg,
1190
+ selectNumericTicksDomain,
1191
+ ],
1192
+ combineNumericalDomain,
1193
+ { resultEqualityCheck: numberDomainEqualityCheck },
1194
+ );
1158
1195
 
1159
1196
  /**
1160
1197
  * Expand maps everything between 0 and 1; nothing to compute.
@@ -1194,32 +1231,32 @@ export const combineAxisDomain = (
1194
1231
  return numericalDomain;
1195
1232
  };
1196
1233
 
1197
- export const selectAxisDomain = (
1234
+ export const selectAxisDomain: (
1198
1235
  state: RechartsRootState,
1199
1236
  axisType: AllAxisTypes,
1200
1237
  axisId: AxisId,
1201
1238
  isPanorama: boolean,
1202
- ): NumberDomain | CategoricalDomain | undefined =>
1203
- combineAxisDomain(
1204
- selectBaseAxis(state, axisType, axisId),
1205
- selectChartLayout(state),
1206
- selectDisplayedData(state, axisType, axisId, isPanorama),
1207
- selectAllAppliedValues(state, axisType, axisId, isPanorama),
1208
- selectStackOffsetType(state),
1209
- axisType,
1210
- selectNumericalDomain(state, axisType, axisId, isPanorama),
1211
- );
1212
-
1213
- export const selectRealScaleType = (
1239
+ ) => NumberDomain | CategoricalDomain | undefined = createSelector(
1240
+ [
1241
+ selectBaseAxis,
1242
+ selectChartLayout,
1243
+ selectDisplayedData,
1244
+ selectAllAppliedValues,
1245
+ selectStackOffsetType,
1246
+ pickAxisTypeArg,
1247
+ selectNumericalDomain,
1248
+ ],
1249
+ combineAxisDomain,
1250
+ );
1251
+
1252
+ export const selectRealScaleType: (
1214
1253
  state: RechartsRootState,
1215
1254
  axisType: AllAxisTypes,
1216
1255
  axisId: AxisId,
1217
- ): RechartsScaleType | undefined =>
1218
- combineRealScaleType(
1219
- selectBaseAxis(state, axisType, axisId),
1220
- selectHasBar(state),
1221
- selectChartName(state),
1222
- );
1256
+ ) => RechartsScaleType | undefined = createSelector(
1257
+ [selectBaseAxis, selectHasBar, selectChartName],
1258
+ combineRealScaleType,
1259
+ );
1223
1260
 
1224
1261
  export const combineNiceTicks = (
1225
1262
  axisDomain: NumberDomain | CategoricalDomain | undefined,
@@ -1289,17 +1326,15 @@ export const combineNiceTicks = (
1289
1326
  return undefined;
1290
1327
  };
1291
1328
 
1292
- export const selectNiceTicks = (
1329
+ export const selectNiceTicks: (
1293
1330
  state: RechartsRootState,
1294
1331
  axisType: RenderableAxisType,
1295
1332
  axisId: AxisId,
1296
1333
  isPanorama: boolean,
1297
- ): ReadonlyArray<number> | undefined =>
1298
- combineNiceTicks(
1299
- selectAxisDomain(state, axisType, axisId, isPanorama),
1300
- selectRenderableAxisSettings(state, axisType, axisId),
1301
- selectRealScaleType(state, axisType, axisId),
1302
- );
1334
+ ) => ReadonlyArray<number> | undefined = createSelector(
1335
+ [selectAxisDomain, selectRenderableAxisSettings, selectRealScaleType],
1336
+ combineNiceTicks,
1337
+ );
1303
1338
 
1304
1339
  export const combineAxisDomainWithNiceTicks = (
1305
1340
  axisSettings: BaseCartesianAxis,
@@ -1325,18 +1360,15 @@ export const combineAxisDomainWithNiceTicks = (
1325
1360
  return domain;
1326
1361
  };
1327
1362
 
1328
- export const selectAxisDomainIncludingNiceTicks = (
1363
+ export const selectAxisDomainIncludingNiceTicks: (
1329
1364
  state: RechartsRootState,
1330
1365
  axisType: RenderableAxisType,
1331
1366
  axisId: AxisId,
1332
1367
  isPanorama: boolean,
1333
- ): NumberDomain | CategoricalDomain | undefined =>
1334
- combineAxisDomainWithNiceTicks(
1335
- selectBaseAxis(state, axisType, axisId),
1336
- selectAxisDomain(state, axisType, axisId, isPanorama),
1337
- selectNiceTicks(state, axisType, axisId, isPanorama),
1338
- axisType,
1339
- );
1368
+ ) => NumberDomain | CategoricalDomain | undefined = createSelector(
1369
+ [selectBaseAxis, selectAxisDomain, selectNiceTicks, pickRenderableAxisType],
1370
+ combineAxisDomainWithNiceTicks,
1371
+ );
1340
1372
 
1341
1373
  /**
1342
1374
  * Smallest gap between two data numbers as a ratio of the whole range (0..1).
@@ -1515,7 +1547,7 @@ export const selectYAxisRange = (
1515
1547
  return [offset.top + padding.top, offset.top + offset.height - padding.bottom];
1516
1548
  };
1517
1549
 
1518
- export const selectAxisRange = (
1550
+ const computeAxisRange = (
1519
1551
  state: RechartsRootState,
1520
1552
  axisType: AllAxisTypes,
1521
1553
  axisId: AxisId,
@@ -1537,40 +1569,57 @@ export const selectAxisRange = (
1537
1569
  }
1538
1570
  };
1539
1571
 
1540
- export const selectAxisRangeWithReverse = (
1572
+ // The range tuple is rebuilt fresh from offset/padding on every call; this
1573
+ // identity wrapper (ADR-0002) applies content-equality so callers get a stable
1574
+ // reference when the plot range is unchanged — otherwise the tick/scale chain
1575
+ // above rebuilds per consumer per mousemove frame.
1576
+ export const selectAxisRange: (
1541
1577
  state: RechartsRootState,
1542
1578
  axisType: AllAxisTypes,
1543
1579
  axisId: AxisId,
1544
1580
  isPanorama: boolean,
1545
- ): AxisRange | undefined =>
1546
- combineAxisRangeWithReverse(
1547
- selectBaseAxis(state, axisType, axisId),
1548
- selectAxisRange(state, axisType, axisId, isPanorama),
1549
- );
1581
+ ) => AxisRange | undefined = createSelector([computeAxisRange], (range) => range, {
1582
+ resultEqualityCheck: (a, b) =>
1583
+ a == null || b == null ? a === b : arrayContentsAreEqualCheck(a, b),
1584
+ });
1550
1585
 
1551
- export const selectCheckedAxisDomain = (
1586
+ export const selectAxisRangeWithReverse: (
1587
+ state: RechartsRootState,
1588
+ axisType: AllAxisTypes,
1589
+ axisId: AxisId,
1590
+ isPanorama: boolean,
1591
+ ) => AxisRange | undefined = createSelector(
1592
+ [selectBaseAxis, selectAxisRange],
1593
+ combineAxisRangeWithReverse,
1594
+ // The range tuple is recomputed fresh each call (from offset/padding) but only
1595
+ // its VALUES matter; content-equality returns the prior reference when the plot
1596
+ // range is unchanged (e.g. across a mousemove), so the scale/ticks chain above
1597
+ // stays cache-stable instead of rebuilding a d3 scale per consumer per frame.
1598
+ {
1599
+ resultEqualityCheck: (a, b) =>
1600
+ a == null || b == null ? a === b : arrayContentsAreEqualCheck(a, b),
1601
+ },
1602
+ );
1603
+
1604
+ export const selectCheckedAxisDomain: (
1552
1605
  state: RechartsRootState,
1553
1606
  axisType: RenderableAxisType,
1554
1607
  axisId: AxisId,
1555
1608
  isPanorama: boolean,
1556
- ): NumberDomain | CategoricalDomain | undefined =>
1557
- combineCheckedDomain(
1558
- selectRealScaleType(state, axisType, axisId),
1559
- selectAxisDomainIncludingNiceTicks(state, axisType, axisId, isPanorama),
1560
- );
1609
+ ) => NumberDomain | CategoricalDomain | undefined = createSelector(
1610
+ [selectRealScaleType, selectAxisDomainIncludingNiceTicks],
1611
+ combineCheckedDomain,
1612
+ );
1561
1613
 
1562
- const selectConfiguredScale = (
1614
+ const selectConfiguredScale: (
1563
1615
  state: RechartsRootState,
1564
1616
  axisType: RenderableAxisType,
1565
1617
  axisId: AxisId,
1566
1618
  isPanorama: boolean,
1567
- ): CustomScaleDefinition | undefined =>
1568
- combineConfiguredScale(
1569
- selectBaseAxis(state, axisType, axisId),
1570
- selectRealScaleType(state, axisType, axisId),
1571
- selectCheckedAxisDomain(state, axisType, axisId, isPanorama),
1572
- selectAxisRangeWithReverse(state, axisType, axisId, isPanorama),
1573
- );
1619
+ ) => CustomScaleDefinition | undefined = createSelector(
1620
+ [selectBaseAxis, selectRealScaleType, selectCheckedAxisDomain, selectAxisRangeWithReverse],
1621
+ combineConfiguredScale,
1622
+ );
1574
1623
 
1575
1624
  export const combineCategoricalDomain = (
1576
1625
  layout: LayoutType,
@@ -1589,26 +1638,22 @@ export const combineCategoricalDomain = (
1589
1638
  return undefined;
1590
1639
  };
1591
1640
 
1592
- export const selectCategoricalDomain = (
1641
+ export const selectCategoricalDomain: (
1593
1642
  state: RechartsRootState,
1594
1643
  axisType: RenderableAxisType,
1595
1644
  axisId: AxisId,
1596
1645
  isPanorama: boolean,
1597
- ): ReadonlyArray<unknown> | undefined =>
1598
- combineCategoricalDomain(
1599
- selectChartLayout(state),
1600
- selectAllAppliedValues(state, axisType, axisId, isPanorama),
1601
- selectRenderableAxisSettings(state, axisType, axisId),
1602
- axisType,
1603
- );
1646
+ ) => ReadonlyArray<unknown> | undefined = createSelector(
1647
+ [selectChartLayout, selectAllAppliedValues, selectRenderableAxisSettings, pickRenderableAxisType],
1648
+ combineCategoricalDomain,
1649
+ );
1604
1650
 
1605
- export const selectAxisScale = (
1651
+ export const selectAxisScale: (
1606
1652
  state: RechartsRootState,
1607
1653
  axisType: RenderableAxisType,
1608
1654
  axisId: AxisId,
1609
1655
  isPanorama: boolean,
1610
- ): RechartsScale | undefined =>
1611
- rechartsScaleFactory(selectConfiguredScale(state, axisType, axisId, isPanorama));
1656
+ ) => RechartsScale | undefined = createSelector([selectConfiguredScale], rechartsScaleFactory);
1612
1657
 
1613
1658
  /** The ticks the axis component actually rendered (from the renderedTicks slice). */
1614
1659
  export const selectRenderedTicksOfAxis = (
@@ -1621,13 +1666,15 @@ export const selectRenderedTicksOfAxis = (
1621
1666
  * Maps a pixel coordinate back to a data value (the inverse of the axis scale).
1622
1667
  * Continuous scales invert; categorical scales snap to the nearest category.
1623
1668
  */
1624
- export const selectAxisInverseScale = (
1669
+ export const selectAxisInverseScale: (
1625
1670
  state: RechartsRootState,
1626
1671
  axisType: RenderableAxisType,
1627
1672
  axisId: AxisId,
1628
1673
  isPanorama: boolean,
1629
- ): InverseScaleFunction | undefined =>
1630
- combineInverseScaleFunction(selectConfiguredScale(state, axisType, axisId, isPanorama));
1674
+ ) => InverseScaleFunction | undefined = createSelector(
1675
+ [selectConfiguredScale],
1676
+ combineInverseScaleFunction,
1677
+ );
1631
1678
 
1632
1679
  /** Inverse scale that snaps a pixel coordinate to the nearest rendered tick value. */
1633
1680
  export const selectAxisInverseTickSnapScale = (
@@ -1678,18 +1725,15 @@ export const combineDuplicateDomain = (
1678
1725
  return undefined;
1679
1726
  };
1680
1727
 
1681
- export const selectDuplicateDomain = (
1728
+ export const selectDuplicateDomain: (
1682
1729
  state: RechartsRootState,
1683
1730
  axisType: AllAxisTypes,
1684
1731
  axisId: AxisId,
1685
1732
  isPanorama: boolean,
1686
- ): ReadonlyArray<unknown> | undefined =>
1687
- combineDuplicateDomain(
1688
- selectChartLayout(state),
1689
- selectAllAppliedValues(state, axisType, axisId, isPanorama),
1690
- selectBaseAxis(state, axisType, axisId),
1691
- axisType,
1692
- );
1733
+ ) => ReadonlyArray<unknown> | undefined = createSelector(
1734
+ [selectChartLayout, selectAllAppliedValues, selectBaseAxis, pickAxisTypeArg],
1735
+ combineDuplicateDomain,
1736
+ );
1693
1737
 
1694
1738
  /**
1695
1739
  * One of four near-identical tick generators. This one feeds graphical items
@@ -1767,21 +1811,23 @@ export const combineGraphicalItemTicks = (
1767
1811
  .filter(isNotNil);
1768
1812
  };
1769
1813
 
1770
- export const selectTicksOfGraphicalItem = (
1814
+ export const selectTicksOfGraphicalItem: (
1771
1815
  state: RechartsRootState,
1772
1816
  axisType: RenderableAxisType,
1773
1817
  axisId: AxisId,
1774
1818
  isPanorama: boolean,
1775
- ): TickItem[] | undefined =>
1776
- combineGraphicalItemTicks(
1777
- selectChartLayout(state),
1778
- selectRenderableAxisSettings(state, axisType, axisId),
1779
- selectAxisScale(state, axisType, axisId, isPanorama),
1780
- selectAxisRange(state, axisType, axisId, isPanorama),
1781
- selectDuplicateDomain(state, axisType, axisId, isPanorama),
1782
- selectCategoricalDomain(state, axisType, axisId, isPanorama),
1783
- axisType,
1784
- );
1819
+ ) => TickItem[] | undefined = createSelector(
1820
+ [
1821
+ selectChartLayout,
1822
+ selectRenderableAxisSettings,
1823
+ selectAxisScale,
1824
+ selectAxisRange,
1825
+ selectDuplicateDomain,
1826
+ selectCategoricalDomain,
1827
+ pickRenderableAxisType,
1828
+ ],
1829
+ combineGraphicalItemTicks,
1830
+ );
1785
1831
 
1786
1832
  export const selectAxisWithScale = (
1787
1833
  state: RechartsRootState,