@octanejs/recharts 0.1.41 → 0.1.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. package/{LICENSE → LICENSE.recharts} +3 -2
  2. package/README.md +12 -0
  3. package/package.json +10 -9
  4. package/src/animation/AnimatedItems.tsrx +36 -3
  5. package/src/animation/AnimationController.ts +17 -65
  6. package/src/animation/{AnimationControllerImpl.js → AnimationControllerImpl.ts} +19 -12
  7. package/src/animation/{AnimationHandle.js → AnimationHandle.ts} +82 -65
  8. package/src/animation/CSSTransitionAnimate.tsrx +3 -2
  9. package/src/animation/JavascriptAnimate.tsrx +18 -2
  10. package/src/animation/easing.ts +235 -0
  11. package/src/animation/{matchBy.js → matchBy.ts} +76 -120
  12. package/src/animation/timeoutController.ts +71 -0
  13. package/src/animation/useAnimationController.ts +4 -1
  14. package/src/animation/useAnimationStartSnapshot.ts +3 -3
  15. package/src/animation/util.ts +12 -0
  16. package/src/cartesian/Area.tsrx +33 -31
  17. package/src/cartesian/AreaRevealShape.tsrx +4 -3
  18. package/src/cartesian/Bar.ts +1 -0
  19. package/src/cartesian/Bar.tsrx +293 -39
  20. package/src/cartesian/BarStack.tsrx +31 -9
  21. package/src/cartesian/CartesianAxis.tsrx +154 -22
  22. package/src/cartesian/CartesianGrid.tsrx +5 -6
  23. package/src/cartesian/ErrorBar.tsrx +9 -8
  24. package/src/cartesian/Funnel.tsrx +40 -37
  25. package/src/cartesian/GraphicalItemClipPath.tsrx +11 -4
  26. package/src/cartesian/Line.ts +1 -0
  27. package/src/cartesian/Line.tsrx +206 -28
  28. package/src/cartesian/LineDrawShape.tsrx +23 -10
  29. package/src/cartesian/ReferenceLine.tsrx +8 -8
  30. package/src/cartesian/Scatter.tsrx +61 -66
  31. package/src/cartesian/XAxis.tsrx +78 -9
  32. package/src/cartesian/YAxis.tsrx +85 -12
  33. package/src/cartesian/getCartesianPosition.ts +265 -0
  34. package/src/cartesian/getEquidistantTicks.ts +144 -0
  35. package/src/cartesian/getTicks.ts +221 -0
  36. package/src/chart/AreaChart.tsrx +5 -1
  37. package/src/chart/BarChart.tsrx +8 -2
  38. package/src/chart/CartesianChart.tsrx +17 -4
  39. package/src/chart/CategoricalChart.tsrx +4 -1
  40. package/src/chart/ComposedChart.tsrx +5 -1
  41. package/src/chart/FunnelChart.tsrx +5 -1
  42. package/src/chart/LineChart.tsrx +8 -2
  43. package/src/chart/PieChart.tsrx +6 -2
  44. package/src/chart/PolarChart.tsrx +5 -4
  45. package/src/chart/RadarChart.tsrx +6 -2
  46. package/src/chart/RadialBarChart.tsrx +6 -2
  47. package/src/chart/RechartsWrapper.tsrx +57 -21
  48. package/src/chart/Sankey.tsrx +89 -91
  49. package/src/chart/ScatterChart.tsrx +5 -1
  50. package/src/chart/SunburstChart.tsrx +21 -14
  51. package/src/chart/types.ts +0 -1
  52. package/src/component/ActivePoints.tsrx +30 -5
  53. package/src/component/Cell.ts +19 -1
  54. package/src/component/Cursor.tsrx +11 -10
  55. package/src/component/DefaultLegendContent.tsrx +15 -10
  56. package/src/component/DefaultTooltipContent.tsrx +11 -9
  57. package/src/component/Dots.tsrx +37 -6
  58. package/src/component/Label.tsrx +99 -19
  59. package/src/component/LabelList.tsrx +54 -5
  60. package/src/component/Legend.tsrx +9 -5
  61. package/src/component/ResponsiveContainer.tsrx +13 -10
  62. package/src/component/Text.tsrx +95 -32
  63. package/src/component/Tooltip.tsrx +11 -10
  64. package/src/component/TooltipBoundingBox.tsrx +4 -5
  65. package/src/component/{responsiveContainerUtils.js → responsiveContainerUtils.ts} +59 -36
  66. package/src/container/ClipPathProvider.tsrx +6 -2
  67. package/src/container/Layer.tsrx +8 -1
  68. package/src/container/RootSurface.tsrx +15 -4
  69. package/src/container/Surface.tsrx +15 -1
  70. package/src/context/CellsContext.ts +6 -5
  71. package/src/context/ErrorBarContext.tsrx +23 -4
  72. package/src/context/RegisterGraphicalItemId.tsrx +10 -2
  73. package/src/context/accessibilityContext.ts +5 -0
  74. package/src/context/brushUpdateContext.ts +11 -0
  75. package/src/context/chartDataContext.ts +5 -4
  76. package/src/context/chartLayoutContext.ts +22 -8
  77. package/src/context/legendPayloadContext.tsrx +1 -1
  78. package/src/context/tooltipContext.ts +83 -0
  79. package/src/{hooks.js → hooks.ts} +88 -66
  80. package/src/index.ts +37 -37
  81. package/src/legacy-props.ts +129 -0
  82. package/src/polar/Pie.tsrx +91 -69
  83. package/src/polar/PolarAngleAxis.tsrx +47 -47
  84. package/src/polar/PolarGrid.tsrx +7 -6
  85. package/src/polar/PolarRadiusAxis.tsrx +29 -21
  86. package/src/polar/Radar.tsrx +26 -19
  87. package/src/polar/RadialBar.tsrx +59 -42
  88. package/src/polar/{defaultPolarAngleAxisProps.js → defaultPolarAngleAxisProps.ts} +6 -6
  89. package/src/polar/{defaultPolarRadiusAxisProps.js → defaultPolarRadiusAxisProps.ts} +5 -4
  90. package/src/shape/Cross.tsrx +14 -2
  91. package/src/shape/Curve.tsrx +111 -23
  92. package/src/shape/Dot.tsrx +12 -1
  93. package/src/shape/Polygon.tsrx +28 -6
  94. package/src/shape/Rectangle.tsrx +30 -3
  95. package/src/shape/Sector.tsrx +48 -6
  96. package/src/shape/Symbols.tsrx +24 -6
  97. package/src/shape/Trapezoid.tsrx +33 -3
  98. package/src/state/RechartsStoreProvider.tsrx +11 -2
  99. package/src/state/ReportChartProps.ts +2 -2
  100. package/src/state/ReportMainChartProps.ts +2 -1
  101. package/src/state/SetGraphicalItem.ts +6 -4
  102. package/src/state/SetLegendPayload.ts +7 -4
  103. package/src/state/SetTooltipEntrySettings.ts +5 -2
  104. package/src/state/brushSlice.ts +40 -0
  105. package/src/state/cartesianAxisSlice.ts +291 -0
  106. package/src/state/chartDataSlice.ts +87 -0
  107. package/src/state/errorBarSlice.ts +78 -0
  108. package/src/state/eventSettingsSlice.ts +30 -0
  109. package/src/state/{externalEventsMiddleware.js → externalEventsMiddleware.ts} +55 -34
  110. package/src/state/graphicalItemsSlice.ts +180 -0
  111. package/src/state/{keyboardEventsMiddleware.js → keyboardEventsMiddleware.ts} +72 -57
  112. package/src/state/layoutSlice.ts +50 -0
  113. package/src/state/legendSlice.ts +109 -0
  114. package/src/state/{mouseEventsMiddleware.js → mouseEventsMiddleware.ts} +45 -35
  115. package/src/state/optionsSlice.ts +65 -0
  116. package/src/state/polarAxisSlice.ts +42 -0
  117. package/src/state/polarOptionsSlice.ts +43 -0
  118. package/src/state/reduxDevtoolsJsonStringifyReplacer.ts +13 -0
  119. package/src/state/referenceElementsSlice.ts +100 -0
  120. package/src/state/renderedTicksSlice.ts +60 -0
  121. package/src/state/rootPropsSlice.ts +72 -0
  122. package/src/state/selectors/areaSelectors.ts +1 -2
  123. package/src/state/selectors/{arrayEqualityCheck.js → arrayEqualityCheck.ts} +4 -5
  124. package/src/state/selectors/axisSelectors.ts +2502 -0
  125. package/src/state/selectors/barSelectors.ts +373 -0
  126. package/src/state/selectors/barStackSelectors.ts +99 -0
  127. package/src/state/selectors/brushSelectors.ts +28 -0
  128. package/src/state/selectors/combiners/combineActiveLabel.ts +16 -0
  129. package/src/state/selectors/combiners/{combineActiveTooltipIndex.js → combineActiveTooltipIndex.ts} +45 -23
  130. package/src/state/selectors/combiners/combineAllBarPositions.ts +130 -0
  131. package/src/state/selectors/combiners/combineAxisRangeWithReverse.ts +16 -0
  132. package/src/state/selectors/combiners/combineBarPosition.ts +23 -0
  133. package/src/state/selectors/combiners/combineBarSizeList.ts +79 -0
  134. package/src/state/selectors/combiners/{combineCheckedDomain.js → combineCheckedDomain.ts} +9 -6
  135. package/src/state/selectors/combiners/combineConfiguredScale.ts +100 -0
  136. package/src/state/selectors/combiners/combineCoordinateForDefaultIndex.ts +46 -0
  137. package/src/state/selectors/combiners/{combineDisplayedStackedData.js → combineDisplayedStackedData.ts} +23 -19
  138. package/src/state/selectors/combiners/combineInverseScaleFunction.ts +16 -0
  139. package/src/state/selectors/combiners/{combineRealScaleType.js → combineRealScaleType.ts} +16 -8
  140. package/src/state/selectors/combiners/combineStackedData.ts +27 -0
  141. package/src/state/selectors/combiners/combineTooltipInteractionState.ts +86 -0
  142. package/src/state/selectors/combiners/combineTooltipPayload.ts +201 -0
  143. package/src/state/selectors/combiners/{combineTooltipPayloadConfigurations.js → combineTooltipPayloadConfigurations.ts} +17 -18
  144. package/src/state/selectors/containerSelectors.ts +12 -0
  145. package/src/state/selectors/{dataSelectors.js → dataSelectors.ts} +43 -41
  146. package/src/state/selectors/funnelSelectors.ts +5 -5
  147. package/src/state/selectors/graphicalItemSelectors.ts +22 -0
  148. package/src/state/selectors/legendSelectors.ts +25 -0
  149. package/src/state/selectors/lineSelectors.ts +159 -0
  150. package/src/state/selectors/numberDomainEqualityCheck.ts +15 -0
  151. package/src/state/selectors/pickAxisId.ts +6 -0
  152. package/src/state/selectors/pickAxisType.ts +4 -0
  153. package/src/state/selectors/pieSelectors.ts +14 -13
  154. package/src/state/selectors/polarAxisSelectors.ts +223 -0
  155. package/src/state/selectors/polarSelectors.ts +1 -1
  156. package/src/state/selectors/radarSelectors.ts +1 -1
  157. package/src/state/selectors/radialBarSelectors.ts +17 -16
  158. package/src/state/selectors/rootPropsSelectors.ts +26 -0
  159. package/src/state/selectors/scatterSelectors.ts +11 -10
  160. package/src/state/selectors/{selectActivePropsFromChartPointer.js → selectActivePropsFromChartPointer.ts} +11 -4
  161. package/src/state/selectors/selectAllAxes.ts +20 -0
  162. package/src/state/selectors/selectChartOffset.ts +17 -0
  163. package/src/state/selectors/selectChartOffsetInternal.ts +147 -0
  164. package/src/state/selectors/{selectPlotArea.js → selectPlotArea.ts} +4 -3
  165. package/src/state/selectors/selectTooltipAxisId.ts +6 -0
  166. package/src/state/selectors/{selectTooltipAxisType.js → selectTooltipAxisType.ts} +10 -4
  167. package/src/state/selectors/selectTooltipEventType.ts +39 -0
  168. package/src/state/selectors/selectTooltipPayloadSearcher.ts +6 -0
  169. package/src/state/selectors/selectTooltipSettings.ts +6 -0
  170. package/src/state/selectors/selectTooltipState.ts +5 -0
  171. package/src/state/selectors/selectors.ts +315 -0
  172. package/src/state/selectors/tooltipSelectors.ts +611 -0
  173. package/src/state/selectors/touchSelectors.ts +52 -0
  174. package/src/state/{store.js → store.ts} +46 -36
  175. package/src/state/tooltipSlice.ts +507 -0
  176. package/src/state/{touchEventsMiddleware.js → touchEventsMiddleware.ts} +54 -42
  177. package/src/state/types/AreaSettings.ts +15 -0
  178. package/src/state/types/BarSettings.ts +15 -0
  179. package/src/state/types/LineSettings.ts +10 -0
  180. package/src/state/types/PieSettings.ts +32 -0
  181. package/src/state/types/RadarSettings.ts +6 -0
  182. package/src/state/types/RadialBarSettings.ts +10 -0
  183. package/src/state/types/ScatterSettings.ts +13 -0
  184. package/src/state/types/StackedGraphicalItem.ts +34 -0
  185. package/src/state/zIndexSlice.ts +137 -0
  186. package/src/synchronisation/syncSelectors.ts +7 -0
  187. package/src/synchronisation/types.ts +42 -0
  188. package/src/synchronisation/useChartSynchronisation.tsrx +26 -11
  189. package/src/types.ts +55 -0
  190. package/src/util/ActiveShapeUtils.tsrx +34 -10
  191. package/src/util/BarUtils.tsrx +43 -3
  192. package/src/util/{CartesianUtils.js → CartesianUtils.ts} +22 -39
  193. package/src/util/ChartUtils.ts +759 -0
  194. package/src/util/{Constants.js → Constants.ts} +6 -6
  195. package/src/util/DOMUtils.ts +135 -0
  196. package/src/util/{DataUtils.js → DataUtils.ts} +120 -47
  197. package/src/util/Events.ts +22 -0
  198. package/src/util/FunnelUtils.tsrx +3 -3
  199. package/src/util/Global.ts +13 -0
  200. package/src/util/IfOverflow.ts +16 -0
  201. package/src/util/LRUCache.ts +42 -0
  202. package/src/util/{LogUtils.js → LogUtils.ts} +7 -12
  203. package/src/util/OctaneTypes.ts +51 -0
  204. package/src/util/PolarUtils.ts +132 -0
  205. package/src/util/RadialBarUtils.tsrx +3 -3
  206. package/src/util/ReduceCSSCalc.ts +186 -0
  207. package/src/util/ScatterUtils.tsrx +9 -7
  208. package/src/util/{TickUtils.js → TickUtils.ts} +30 -13
  209. package/src/util/{YAxisUtils.js → YAxisUtils.ts} +27 -17
  210. package/src/util/axisPropsAreEqual.ts +49 -0
  211. package/src/util/createEventProxy.ts +20 -0
  212. package/src/util/{excludeEventProps.js → excludeEventProps.ts} +8 -6
  213. package/src/util/getActiveCoordinate.ts +210 -0
  214. package/src/util/{getAxisTypeBasedOnLayout.js → getAxisTypeBasedOnLayout.ts} +7 -3
  215. package/src/util/getClassNameFromUnknown.ts +7 -0
  216. package/src/util/{getEveryNth.js → getEveryNth.ts} +5 -6
  217. package/src/util/getRadiusAndStrokeWidthFromDot.ts +31 -0
  218. package/src/util/{getRelativeCoordinate.js → getRelativeCoordinate.ts} +26 -9
  219. package/src/util/getSliced.ts +14 -0
  220. package/src/util/{isDomainSpecifiedByUser.js → isDomainSpecifiedByUser.ts} +46 -100
  221. package/src/util/isWellBehavedNumber.ts +8 -0
  222. package/src/util/payload/getUniqPayload.ts +1 -1
  223. package/src/util/{propsAreEqual.js → propsAreEqual.ts} +10 -8
  224. package/src/util/{resolveDefaultProps.js → resolveDefaultProps.ts} +35 -57
  225. package/src/util/round.ts +33 -0
  226. package/src/util/scale/CustomScaleDefinition.ts +82 -0
  227. package/src/util/scale/RechartsScale.ts +131 -0
  228. package/src/util/scale/{createCategoricalInverse.js → createCategoricalInverse.ts} +24 -29
  229. package/src/util/scale/{getNiceTickValues.js → getNiceTickValues.ts} +125 -146
  230. package/src/util/scale/index.ts +2 -0
  231. package/src/util/scale/util/{arithmetic.js → arithmetic.ts} +12 -8
  232. package/src/util/stacks/getStackSeriesIdentifier.ts +21 -0
  233. package/src/util/stacks/stackTypes.ts +58 -0
  234. package/src/util/{svgPropertiesNoEvents.js → svgPropertiesNoEvents.ts} +52 -27
  235. package/src/util/tooltip/translate.ts +2 -1
  236. package/src/util/typedDataKey.ts +49 -0
  237. package/src/util/types.ts +1265 -7
  238. package/src/util/{useUniqueId.js → useUniqueId.ts} +9 -5
  239. package/src/zIndex/{DefaultZIndexes.js → DefaultZIndexes.ts} +13 -4
  240. package/src/zIndex/ZIndexLayer.tsrx +13 -4
  241. package/src/zIndex/ZIndexPortal.tsrx +14 -4
  242. package/src/zIndex/{getZIndexFromUnknown.js → getZIndexFromUnknown.ts} +3 -3
  243. package/src/zIndex/{zIndexSelectors.js → zIndexSelectors.ts} +17 -11
  244. package/src/animation/easing.js +0 -193
  245. package/src/animation/timeoutController.js +0 -49
  246. package/src/animation/util.js +0 -11
  247. package/src/cartesian/Area.tsrx.d.ts +0 -340
  248. package/src/cartesian/Bar.tsrx.d.ts +0 -4
  249. package/src/cartesian/BarStack.tsrx.d.ts +0 -6
  250. package/src/cartesian/CartesianAxis.tsrx.d.ts +0 -3
  251. package/src/cartesian/CartesianGrid.tsrx.d.ts +0 -219
  252. package/src/cartesian/ErrorBar.tsrx.d.ts +0 -131
  253. package/src/cartesian/Funnel.tsrx.d.ts +0 -274
  254. package/src/cartesian/Line.tsrx.d.ts +0 -4
  255. package/src/cartesian/LineDrawShape.tsrx.d.ts +0 -2
  256. package/src/cartesian/ReferenceLine.tsrx.d.ts +0 -178
  257. package/src/cartesian/Scatter.tsrx.d.ts +0 -351
  258. package/src/cartesian/XAxis.tsrx.d.ts +0 -3
  259. package/src/cartesian/YAxis.tsrx.d.ts +0 -3
  260. package/src/cartesian/ZAxis.tsrx.d.ts +0 -102
  261. package/src/cartesian/getCartesianPosition.js +0 -277
  262. package/src/cartesian/getEquidistantTicks.js +0 -133
  263. package/src/cartesian/getTicks.js +0 -280
  264. package/src/chart/AreaChart.tsrx.d.ts +0 -12
  265. package/src/chart/BarChart.tsrx.d.ts +0 -2
  266. package/src/chart/CartesianChart.tsrx.d.ts +0 -10
  267. package/src/chart/ComposedChart.tsrx.d.ts +0 -12
  268. package/src/chart/FunnelChart.tsrx.d.ts +0 -12
  269. package/src/chart/LineChart.tsrx.d.ts +0 -2
  270. package/src/chart/PieChart.tsrx.d.ts +0 -31
  271. package/src/chart/RadarChart.tsrx.d.ts +0 -31
  272. package/src/chart/RadialBarChart.tsrx.d.ts +0 -31
  273. package/src/chart/Sankey.tsrx.d.ts +0 -253
  274. package/src/chart/ScatterChart.tsrx.d.ts +0 -12
  275. package/src/chart/SunburstChart.tsrx.d.ts +0 -146
  276. package/src/component/DefaultLegendContent.tsrx.d.ts +0 -125
  277. package/src/component/DefaultTooltipContent.tsrx.d.ts +0 -87
  278. package/src/component/Label.tsrx.d.ts +0 -12
  279. package/src/component/LabelList.tsrx.d.ts +0 -8
  280. package/src/component/Legend.tsrx.d.ts +0 -88
  281. package/src/component/ResponsiveContainer.tsrx.d.ts +0 -81
  282. package/src/component/Text.tsrx.d.ts +0 -9
  283. package/src/component/Tooltip.tsrx.d.ts +0 -246
  284. package/src/container/Layer.tsrx.d.ts +0 -6
  285. package/src/container/Surface.tsrx.d.ts +0 -12
  286. package/src/context/accessibilityContext.js +0 -10
  287. package/src/context/tooltipContext.js +0 -55
  288. package/src/index.d.ts +0 -281
  289. package/src/polar/Pie.tsrx.d.ts +0 -436
  290. package/src/polar/PolarAngleAxis.tsrx.d.ts +0 -215
  291. package/src/polar/PolarGrid.tsrx.d.ts +0 -117
  292. package/src/polar/PolarRadiusAxis.tsrx.d.ts +0 -209
  293. package/src/polar/Radar.tsrx.d.ts +0 -215
  294. package/src/polar/RadialBar.tsrx.d.ts +0 -340
  295. package/src/shape/Cross.tsrx.d.ts +0 -12
  296. package/src/shape/Curve.tsrx.d.ts +0 -42
  297. package/src/shape/Dot.tsrx.d.ts +0 -9
  298. package/src/shape/Polygon.tsrx.d.ts +0 -13
  299. package/src/shape/Rectangle.tsrx.d.ts +0 -31
  300. package/src/shape/Sector.tsrx.d.ts +0 -29
  301. package/src/shape/Symbols.tsrx.d.ts +0 -15
  302. package/src/shape/Trapezoid.tsrx.d.ts +0 -29
  303. package/src/state/brushSlice.js +0 -36
  304. package/src/state/cartesianAxisSlice.js +0 -256
  305. package/src/state/chartDataSlice.js +0 -67
  306. package/src/state/errorBarSlice.js +0 -53
  307. package/src/state/eventSettingsSlice.js +0 -25
  308. package/src/state/graphicalItemsSlice.js +0 -91
  309. package/src/state/layoutSlice.js +0 -57
  310. package/src/state/legendSlice.js +0 -83
  311. package/src/state/optionsSlice.js +0 -45
  312. package/src/state/polarAxisSlice.js +0 -33
  313. package/src/state/polarOptionsSlice.js +0 -26
  314. package/src/state/reduxDevtoolsJsonStringifyReplacer.js +0 -14
  315. package/src/state/referenceElementsSlice.js +0 -51
  316. package/src/state/renderedTicksSlice.js +0 -41
  317. package/src/state/rootPropsSlice.js +0 -48
  318. package/src/state/selectors/axisSelectors.js +0 -2113
  319. package/src/state/selectors/barSelectors.js +0 -263
  320. package/src/state/selectors/barStackSelectors.js +0 -65
  321. package/src/state/selectors/brushSelectors.js +0 -21
  322. package/src/state/selectors/combiners/combineActiveLabel.js +0 -18
  323. package/src/state/selectors/combiners/combineAllBarPositions.js +0 -169
  324. package/src/state/selectors/combiners/combineAxisRangeWithReverse.js +0 -11
  325. package/src/state/selectors/combiners/combineBarPosition.js +0 -17
  326. package/src/state/selectors/combiners/combineBarSizeList.js +0 -115
  327. package/src/state/selectors/combiners/combineConfiguredScale.js +0 -46
  328. package/src/state/selectors/combiners/combineCoordinateForDefaultIndex.js +0 -48
  329. package/src/state/selectors/combiners/combineInverseScaleFunction.js +0 -12
  330. package/src/state/selectors/combiners/combineStackedData.js +0 -22
  331. package/src/state/selectors/combiners/combineTooltipInteractionState.js +0 -121
  332. package/src/state/selectors/combiners/combineTooltipPayload.js +0 -248
  333. package/src/state/selectors/containerSelectors.js +0 -6
  334. package/src/state/selectors/graphicalItemSelectors.js +0 -25
  335. package/src/state/selectors/legendSelectors.js +0 -18
  336. package/src/state/selectors/lineSelectors.js +0 -106
  337. package/src/state/selectors/numberDomainEqualityCheck.js +0 -11
  338. package/src/state/selectors/pickAxisId.js +0 -3
  339. package/src/state/selectors/pickAxisType.js +0 -3
  340. package/src/state/selectors/polarAxisSelectors.js +0 -237
  341. package/src/state/selectors/rootPropsSelectors.js +0 -13
  342. package/src/state/selectors/selectAllAxes.js +0 -15
  343. package/src/state/selectors/selectChartOffset.js +0 -12
  344. package/src/state/selectors/selectChartOffsetInternal.js +0 -174
  345. package/src/state/selectors/selectTooltipAxisId.js +0 -3
  346. package/src/state/selectors/selectTooltipEventType.js +0 -27
  347. package/src/state/selectors/selectTooltipPayloadSearcher.js +0 -3
  348. package/src/state/selectors/selectTooltipSettings.js +0 -3
  349. package/src/state/selectors/selectTooltipState.js +0 -3
  350. package/src/state/selectors/selectors.js +0 -222
  351. package/src/state/selectors/tooltipSelectors.js +0 -471
  352. package/src/state/selectors/touchSelectors.js +0 -31
  353. package/src/state/tooltipSlice.js +0 -237
  354. package/src/state/types/StackedGraphicalItem.js +0 -18
  355. package/src/state/zIndexSlice.js +0 -167
  356. package/src/synchronisation/syncSelectors.js +0 -5
  357. package/src/util/ChartUtils.js +0 -630
  358. package/src/util/DOMUtils.js +0 -180
  359. package/src/util/Events.js +0 -7
  360. package/src/util/Global.js +0 -13
  361. package/src/util/LRUCache.js +0 -58
  362. package/src/util/PolarUtils.js +0 -190
  363. package/src/util/ReduceCSSCalc.js +0 -260
  364. package/src/util/axisPropsAreEqual.js +0 -63
  365. package/src/util/createEventProxy.js +0 -18
  366. package/src/util/getActiveCoordinate.js +0 -253
  367. package/src/util/getClassNameFromUnknown.js +0 -8
  368. package/src/util/getRadiusAndStrokeWidthFromDot.js +0 -28
  369. package/src/util/getSliced.js +0 -11
  370. package/src/util/isWellBehavedNumber.js +0 -8
  371. package/src/util/round.js +0 -39
  372. package/src/util/scale/RechartsScale.js +0 -68
  373. package/src/util/scale/index.js +0 -3
  374. package/src/util/stacks/getStackSeriesIdentifier.js +0 -10
  375. package/src/zIndex/ZIndexLayer.tsrx.d.ts +0 -2
@@ -1,16 +1,25 @@
1
+ import type { RegisteredCell } from '../context/CellsContext.ts';
2
+ import type { CellPropsFor } from '../component/Cell.ts';
3
+
4
+ import type {
5
+ MutableRefObject,
6
+ NativeMouseEvent,
7
+ OctaneElement,
8
+ OctaneNode,
9
+ } from '../util/OctaneTypes.ts';
1
10
  import * as React from 'octane';
2
- import { MutableRefObject, ReactElement, ReactNode, useMemo, useRef } from 'octane';
11
+ import { useMemo, useRef } from 'octane';
3
12
 
4
13
  import { clsx } from 'clsx';
5
- import { Layer } from '../container/Layer';
14
+ import { Layer } from '../container/Layer.tsrx';
6
15
  import {
7
16
  CartesianLabelListContextProvider,
8
17
  CartesianLabelListEntry,
9
18
  ImplicitLabelListType,
10
19
  LabelListFromLabelProp,
11
- } from '../component/LabelList';
12
- import { Curve, CurveType, Props as CurveProps } from '../shape/Curve';
13
- import { ErrorBarDataItem, ErrorBarDataPointFormatter, ErrorBarDirection } from './ErrorBar';
20
+ } from '../component/LabelList.tsrx';
21
+ import { Curve, CurveType, Props as CurveProps } from '../shape/Curve.tsrx';
22
+ import { ErrorBarDataItem, ErrorBarDataPointFormatter, ErrorBarDirection } from './ErrorBar.tsrx';
14
23
  import { getLinearRegression, interpolate, isNullish } from '../util/DataUtils';
15
24
  import { getCateCoordinateOfLine, getTooltipNameProp, getValueByDataKey } from '../util/ChartUtils';
16
25
  import {
@@ -33,10 +42,10 @@ import {
33
42
  TrapezoidViewBox,
34
43
  CartesianLayout,
35
44
  } from '../util/types';
36
- import { Formatter, TooltipType } from '../component/DefaultTooltipContent';
37
- import { ScatterShapeProps, ScatterSymbol } from '../util/ScatterUtils';
38
- import { InnerSymbolsProp } from '../shape/Symbols';
39
- import type { LegendPayload } from '../component/DefaultLegendContent';
45
+ import { Formatter, TooltipType } from '../component/DefaultTooltipContent.tsrx';
46
+ import { ScatterShapeProps, ScatterSymbol } from '../util/ScatterUtils.tsrx';
47
+ import { InnerSymbolsProp } from '../shape/Symbols.tsrx';
48
+ import type { LegendPayload } from '../component/DefaultLegendContent.tsrx';
40
49
  import {
41
50
  useMouseClickItemDispatch,
42
51
  useMouseEnterItemDispatch,
@@ -48,9 +57,9 @@ import {
48
57
  TooltipPayloadEntry,
49
58
  } from '../state/tooltipSlice';
50
59
  import { SetTooltipEntrySettings } from '../state/SetTooltipEntrySettings';
51
- import { SetErrorBarContext } from '../context/ErrorBarContext';
60
+ import { SetErrorBarContext } from '../context/ErrorBarContext.tsrx';
52
61
  import { AxisId } from '../state/cartesianAxisSlice';
53
- import { GraphicalItemClipPath, useNeedsClip } from './GraphicalItemClipPath';
62
+ import { GraphicalItemClipPath, useNeedsClip } from './GraphicalItemClipPath.tsrx';
54
63
  import { selectScatterPoints } from '../state/selectors/scatterSelectors';
55
64
  import { useAppSelector } from '../state/hooks';
56
65
  import { RechartsRootState } from '../state/store';
@@ -60,7 +69,7 @@ import { selectActiveTooltipIndex } from '../state/selectors/tooltipSelectors';
60
69
  import { SetLegendPayload } from '../state/SetLegendPayload';
61
70
  import { DATA_ITEM_GRAPHICAL_ITEM_ID_ATTRIBUTE_NAME } from '../util/Constants';
62
71
  import { resolveDefaultProps } from '../util/resolveDefaultProps';
63
- import { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId';
72
+ import { RegisterGraphicalItemId } from '../context/RegisterGraphicalItemId.tsrx';
64
73
  import type { ScatterSettings } from '../state/types/ScatterSettings';
65
74
  import { SetCartesianGraphicalItem } from '../state/SetGraphicalItem';
66
75
  import {
@@ -72,11 +81,11 @@ import {
72
81
  AnimatedItems,
73
82
  AnimationInterpolateFn,
74
83
  useAnimationCallbacks,
75
- } from '../animation/AnimatedItems';
84
+ } from '../animation/AnimatedItems.tsrx';
76
85
  import { AnimationMatchByProp, matchAppend } from '../animation/matchBy';
77
86
  import { WithIdRequired, WithoutId } from '../util/useUniqueId';
78
87
  import { GraphicalItemId } from '../state/graphicalItemsSlice';
79
- import { ZIndexable, ZIndexLayer } from '../zIndex/ZIndexLayer';
88
+ import { ZIndexable, ZIndexLayer } from '../zIndex/ZIndexLayer.tsrx';
80
89
  import { DefaultZIndexes } from '../zIndex/DefaultZIndexes';
81
90
  import { propsAreEqual } from '../util/propsAreEqual';
82
91
  import { ChartData } from '../state/chartDataSlice';
@@ -99,11 +108,11 @@ export interface ScatterPointItem {
99
108
  /**
100
109
  * The x coordinate of the point center in pixels.
101
110
  */
102
- cx: number | undefined;
111
+ cx: number | null | undefined;
103
112
  /**
104
113
  * The y coordinate of the point center in pixels.
105
114
  */
106
- cy: number | undefined;
115
+ cy: number | null | undefined;
107
116
  /**
108
117
  * The x coordinate (in pixels) of the top-left corner of the rectangle that wraps the point.
109
118
  */
@@ -117,7 +126,7 @@ export interface ScatterPointItem {
117
126
  * It's not the radius itself, but rather a value that is used to calculate the radius.
118
127
  * Interacts with the zAxis range.
119
128
  */
120
- size: number;
129
+ size: number | undefined;
121
130
  /**
122
131
  * Width of the point in pixels.
123
132
  */
@@ -129,11 +138,12 @@ export interface ScatterPointItem {
129
138
  node: ScatterPointNode;
130
139
  payload?: any;
131
140
  tooltipPayload?: TooltipPayload;
132
- tooltipPosition: Coordinate;
141
+ tooltipPosition: Coordinate | undefined;
133
142
  }
134
143
 
135
144
  export type ScatterCustomizedShape =
136
- ActiveShape<ScatterShapeProps & InnerSymbolsProp, SVGPathElement> | SymbolType;
145
+ | ActiveShape<ScatterShapeProps & Omit<InnerSymbolsProp, keyof ScatterShapeProps>, SVGPathElement>
146
+ | SymbolType;
137
147
 
138
148
  /**
139
149
  * Internal props, combination of external props + defaultProps + private Recharts state
@@ -144,10 +154,7 @@ interface ScatterInternalProps extends ZIndexable {
144
154
  yAxisId: string | number;
145
155
  zAxisId: string | number;
146
156
  dataKey?: DataKey<any>;
147
- line?: | ReactElement<SVGElement>
148
- | ((props: any) => ReactElement<SVGElement>)
149
- | CurveProps
150
- | boolean;
157
+ line?: OctaneElement<CurveProps> | ((props: CurveProps) => OctaneNode) | CurveProps | boolean;
151
158
  lineType: 'fitting' | 'joint';
152
159
  lineJointType: CurveType;
153
160
  legendType: LegendType;
@@ -170,7 +177,7 @@ interface ScatterInternalProps extends ZIndexable {
170
177
  onAnimationEnd?: () => void;
171
178
  needClip: boolean;
172
179
  id: GraphicalItemId;
173
- children?: ReactNode;
180
+ children?: OctaneNode;
174
181
  }
175
182
 
176
183
  /**
@@ -211,7 +218,7 @@ interface ScatterProps<DataPointType = any, DataValueType = any> extends DataPro
211
218
  * Options:
212
219
  * - `false`: no line is drawn.
213
220
  * - `true`: a default line is drawn.
214
- * - `ReactElement`: the option is the custom line element.
221
+ * - `OctaneElement`: the option is the custom line element.
215
222
  * - `function`: the function will be called to render customized line.
216
223
  * - `object`: the option is the props of Curve element.
217
224
  *
@@ -224,10 +231,7 @@ interface ScatterProps<DataPointType = any, DataValueType = any> extends DataPro
224
231
  *
225
232
  * @see {@link https://recharts.github.io/en-US/examples/JointLineScatterChart/ Scatter chart with joint line}
226
233
  */
227
- line?: | ReactElement<SVGElement>
228
- | ((props: any) => ReactElement<SVGElement>)
229
- | CurveProps
230
- | boolean;
234
+ line?: OctaneElement<CurveProps> | ((props: CurveProps) => OctaneNode) | CurveProps | boolean;
231
235
  /**
232
236
  * Determines calculation method of the line if the `line` prop is set.
233
237
  * Options:
@@ -283,7 +287,7 @@ interface ScatterProps<DataPointType = any, DataValueType = any> extends DataPro
283
287
  /**
284
288
  * Determines the shape of individual data points.
285
289
  * - Can be one of the predefined shapes as a string, which will be passed to {@link Symbols} component.
286
- * - If set a ReactElement, the shape of point can be customized.
290
+ * - If set a OctaneElement, the shape of point can be customized.
287
291
  * - If set a function, the function will be called to render customized shape.
288
292
  * - During animations, the function shape also receives `animationElapsedTime`, `isAnimating`, and `isEntrance`.
289
293
  * @defaultValue circle
@@ -310,7 +314,7 @@ interface ScatterProps<DataPointType = any, DataValueType = any> extends DataPro
310
314
  * - `true`: renders default labels;
311
315
  * - `false`: no labels are rendered;
312
316
  * - `object`: the props of LabelList component;
313
- * - `ReactElement`: a custom SVG label element, such as `<text>` or `<g>`.
317
+ * - `OctaneElement`: a custom SVG label element, such as `<text>` or `<g>`.
314
318
  * HTML elements such as `<div>` are not valid inside the chart SVG and may trigger React DOM warnings.
315
319
  * - `function`: a render function of custom label.
316
320
  *
@@ -389,7 +393,7 @@ interface ScatterProps<DataPointType = any, DataValueType = any> extends DataPro
389
393
  * @see {@link https://recharts.github.io/en-US/guide/zIndex/ Z-Index and layers guide}
390
394
  */
391
395
  zIndex?: number;
392
- children?: ReactNode;
396
+ children?: OctaneNode;
393
397
  }
394
398
 
395
399
  /**
@@ -488,7 +492,7 @@ function ScatterLine({
488
492
 
489
493
  const scatterProps = svgPropertiesNoEvents(props);
490
494
  const customLineProps = svgPropertiesNoEventsFromUnknown(line);
491
- let linePoints: ReadonlyArray<NullableCoordinate>, lineItem: ReactNode;
495
+ let linePoints: ReadonlyArray<NullableCoordinate> | undefined, lineItem: OctaneNode;
492
496
 
493
497
  if (lineType === 'joint') {
494
498
  linePoints = points.map((entry) => ({ x: entry.cx ?? null, y: entry.cy ?? null }));
@@ -503,17 +507,14 @@ function ScatterLine({
503
507
 
504
508
  const lineProps: CurveProps = {
505
509
  ...scatterProps,
506
- // @ts-expect-error customLineProps is contributing unknown props
507
510
  fill: 'none',
508
- // @ts-expect-error customLineProps is contributing unknown props
509
511
  stroke: scatterProps && scatterProps.fill,
510
512
  ...customLineProps,
511
- // @ts-expect-error linePoints is used before it is assigned (???)
512
513
  points: linePoints,
513
514
  };
514
515
 
515
- if (React.isValidElement(line)) {
516
- lineItem = React.cloneElement(line as any, lineProps);
516
+ if (React.isValidElement<CurveProps>(line)) {
517
+ lineItem = React.cloneElement(line, lineProps);
517
518
  } else if (typeof line === 'function') {
518
519
  lineItem = line(lineProps);
519
520
  } else {
@@ -530,7 +531,7 @@ function ScatterLabelListProvider({
530
531
  }: {
531
532
  showLabels: boolean;
532
533
  points: ReadonlyArray<ScatterPointItem>;
533
- children: ReactNode;
534
+ children: OctaneNode;
534
535
  }) {
535
536
  const chartViewBox = useViewBox();
536
537
  const labelListEntries: ReadonlyArray<CartesianLabelListEntry> = useMemo(() => {
@@ -610,16 +611,16 @@ function ScatterPoint({
610
611
  baseProps: ReturnType<typeof svgPropertiesNoEvents>;
611
612
  id: GraphicalItemId;
612
613
  restOfAllOtherProps: InternalProps;
613
- onMouseEnterFromContext: (data: ScatterPointItem, index: number) => (event: React.MouseEvent<
614
+ onMouseEnterFromContext: (data: ScatterPointItem, index: number) => (event: NativeMouseEvent<
614
615
  SVGGraphicsElement
615
616
  >) => void;
616
- onMouseLeaveFromContext: (data: ScatterPointItem, index: number) => (event: React.MouseEvent<
617
+ onMouseLeaveFromContext: (data: ScatterPointItem, index: number) => (event: NativeMouseEvent<
617
618
  SVGGraphicsElement
618
619
  >) => void;
619
- onClickFromContext: (data: ScatterPointItem, index: number) => (event: React.MouseEvent<
620
+ onClickFromContext: (data: ScatterPointItem, index: number) => (event: NativeMouseEvent<
620
621
  SVGGraphicsElement
621
622
  >) => void;
622
- }): React.ReactElement {
623
+ }): OctaneElement {
623
624
  const hasActiveShape = activeShape != null && activeShape !== false;
624
625
  const selectIsActive = useMemo(() => {
625
626
  const strIndex = String(index);
@@ -813,7 +814,7 @@ export function computeScatterPoints({
813
814
  scatterSettings: ScatterSettings;
814
815
  xAxisTicks: ReadonlyArray<TickItem> | undefined;
815
816
  yAxisTicks: ReadonlyArray<TickItem> | undefined;
816
- cells: ReadonlyArray<ReactElement> | undefined;
817
+ cells: ReadonlyArray<RegisteredCell> | undefined;
817
818
  }): ReadonlyArray<ScatterPointItem> {
818
819
  const xAxisDataKey = isNullish(xAxis.dataKey) ? scatterSettings.dataKey : xAxis.dataKey;
819
820
  const yAxisDataKey = isNullish(yAxis.dataKey) ? scatterSettings.dataKey : yAxis.dataKey;
@@ -825,17 +826,16 @@ export function computeScatterPoints({
825
826
  const yBandSize =
826
827
  yAxis.scale.bandwidth ? yAxis.scale.bandwidth() : 0;
827
828
  return displayedData.map((entry: unknown, index): ScatterPointItem => {
828
- const x: unknown = getValueByDataKey(entry, xAxisDataKey);
829
- const y: unknown = getValueByDataKey(entry, yAxisDataKey);
830
- const z: unknown = isNullish(zAxisDataKey)
829
+ const x = getValueByDataKey<unknown, number | string>(entry, xAxisDataKey);
830
+ const y = getValueByDataKey<unknown, number | string>(entry, yAxisDataKey);
831
+ const z: number | string = isNullish(zAxisDataKey)
831
832
  ? '-'
832
- : getValueByDataKey(entry, zAxisDataKey) ?? '-';
833
+ : getValueByDataKey<unknown, number | string>(entry, zAxisDataKey) ?? '-';
833
834
 
834
835
  const tooltipPayload: Array<TooltipPayloadEntry> = [
835
836
  {
836
837
  name: isNullish(xAxis.dataKey) ? scatterSettings.name : xAxis.name || String(xAxis.dataKey),
837
838
  unit: xAxis.unit || '',
838
- // @ts-expect-error getValueByDataKey does not validate the output type
839
839
  value: x,
840
840
  payload: entry,
841
841
  dataKey: xAxisDataKey,
@@ -845,7 +845,6 @@ export function computeScatterPoints({
845
845
  {
846
846
  name: isNullish(yAxis.dataKey) ? scatterSettings.name : yAxis.name || String(yAxis.dataKey),
847
847
  unit: yAxis.unit || '',
848
- // @ts-expect-error getValueByDataKey does not validate the output type
849
848
  value: y,
850
849
  payload: entry,
851
850
  dataKey: yAxisDataKey,
@@ -856,10 +855,8 @@ export function computeScatterPoints({
856
855
 
857
856
  if (z !== '-' && zAxis != null) {
858
857
  tooltipPayload.push({
859
- // @ts-expect-error name prop should not have dataKey in it
860
- name: zAxis.name || zAxis.dataKey,
858
+ name: zAxis.name || String(zAxis.dataKey),
861
859
  unit: zAxis.unit || '',
862
- // @ts-expect-error getValueByDataKey does not validate the output type
863
860
  value: z,
864
861
  payload: entry,
865
862
  dataKey: zAxisDataKey,
@@ -890,8 +887,7 @@ export function computeScatterPoints({
890
887
  size == null ? 0 : Math.sqrt(Math.max(size, 0) / Math.PI);
891
888
 
892
889
  return {
893
- // @ts-expect-error can't spread unknown
894
- ...entry,
890
+ ...entry as Record<string, unknown>,
895
891
  cx,
896
892
  cy,
897
893
  x: cx == null ? undefined : cx - radius,
@@ -901,9 +897,9 @@ export function computeScatterPoints({
901
897
  size,
902
898
  node: { x, y, z },
903
899
  tooltipPayload,
904
- tooltipPosition: { x: cx, y: cy },
900
+ tooltipPosition: cx == null || cy == null ? undefined : { x: cx, y: cy },
905
901
  payload: entry,
906
- ...cells && cells[index] && cells[index].props,
902
+ ...cells && cells[index] && cells[index].props as CellPropsFor<SVGPathElement>,
907
903
  };
908
904
  });
909
905
  }
@@ -917,8 +913,7 @@ const errorBarDataPointFormatter: ErrorBarDataPointFormatter<ScatterPointItem> =
917
913
  x: dataPoint.cx,
918
914
  y: dataPoint.cy,
919
915
  value: direction === 'x' ? Number(dataPoint.node.x) : Number(dataPoint.node.y),
920
- // @ts-expect-error getValueByDataKey does not validate the output type
921
- errorVal: getValueByDataKey(dataPoint, dataKey),
916
+ errorVal: getValueByDataKey<unknown, ErrorBarDataItem['errorVal']>(dataPoint, dataKey),
922
917
  };
923
918
  };
924
919
 
@@ -1037,7 +1032,9 @@ function ScatterImpl(props: WithIdRequired<Props>) {
1037
1032
  </CellsContext.Provider>;
1038
1033
  }
1039
1034
 
1040
- function ScatterFn(outsideProps: Props) {
1035
+ function ScatterFn<DataPointType = any, ValueAxisType = any>(
1036
+ outsideProps: Props<DataPointType, ValueAxisType>,
1037
+ ) {
1041
1038
  const props = resolveDefaultProps(outsideProps, defaultScatterProps);
1042
1039
  const isPanorama = useIsPanorama();
1043
1040
  return <RegisterGraphicalItemId id={props.id} type="scatter">
@@ -1067,10 +1064,8 @@ function ScatterFn(outsideProps: Props) {
1067
1064
  * @provides CellReader
1068
1065
  * @consumes CartesianChartContext
1069
1066
  */
1070
- export const Scatter = React.memo(ScatterFn, propsAreEqual) as (props: Props<
1071
- DataPointType,
1072
- ValueAxisType
1073
- >) => ReactElement;
1074
- // @ts-expect-error we need to set the displayName for debugging purposes
1075
-
1067
+ export const Scatter = React.memo(ScatterFn, propsAreEqual) as
1068
+ typeof ScatterFn & {
1069
+ displayName?: string;
1070
+ };
1076
1071
  Scatter.displayName = 'Scatter';
@@ -1,3 +1,58 @@
1
+ import type { OctaneElement } from '../util/OctaneTypes.ts';
2
+ import type {
3
+ AxisInterval,
4
+ AxisTick,
5
+ RenderableAxisProps,
6
+ PresentationAttributesAdaptChildEvent,
7
+ AxisDomain,
8
+ ScaleType,
9
+ AxisDomainTypeInput,
10
+ EvaluatedAxisDomainType,
11
+ TickProp,
12
+ XAxisTickContentProps,
13
+ TickItem,
14
+ } from '../util/types';
15
+ import type {
16
+ XAxisOrientation,
17
+ XAxisPadding,
18
+ XAxisSettings,
19
+ NiceTicksAlgorithm,
20
+ } from '../state/cartesianAxisSlice';
21
+ import type { RequiresDefaultProps } from '../util/resolveDefaultProps';
22
+ import type { CustomScaleDefinition } from '../util/scale/CustomScaleDefinition';
23
+
24
+ interface XAxisProps<DataPointType = any, DataValueType = any> extends Omit<
25
+ RenderableAxisProps<DataPointType, DataValueType>,
26
+ 'domain' | 'scale' | 'tick'
27
+ > {
28
+ type?: AxisDomainTypeInput;
29
+ xAxisId?: string | number;
30
+ height?: number;
31
+ mirror?: boolean;
32
+ orientation?: XAxisOrientation;
33
+ domain?: AxisDomain;
34
+ scale?: | ScaleType
35
+ | CustomScaleDefinition
36
+ | CustomScaleDefinition<string>
37
+ | CustomScaleDefinition<number>
38
+ | CustomScaleDefinition<Date>;
39
+ tick?: TickProp<XAxisTickContentProps>;
40
+ ticks?: ReadonlyArray<AxisTick>;
41
+ padding?: XAxisPadding;
42
+ minTickGap?: number;
43
+ interval?: AxisInterval;
44
+ tickMargin?: number;
45
+ fontSize?: number | string;
46
+ letterSpacing?: number | string;
47
+ niceTicks?: NiceTicksAlgorithm;
48
+ }
49
+ export type Props<DataPointType = any, DataValueType = any> =
50
+ Omit<
51
+ PresentationAttributesAdaptChildEvent<TickItem, SVGTextElement>,
52
+ 'scale' | 'ref'
53
+ > & XAxisProps<DataPointType, DataValueType>;
54
+ type PropsWithDefaults<DataPointType = any, DataValueType = any> =
55
+ RequiresDefaultProps<Props<DataPointType, DataValueType>, typeof xAxisDefaultProps>;
1
56
  // Port of cartesian/XAxis.tsx — registers x-axis settings in the store and
2
57
  // renders through CartesianAxis with store-synchronized settings.
3
58
  import { useLayoutEffect, useMemo, useRef, memo } from 'octane';
@@ -19,13 +74,19 @@ import { axisPropsAreEqual } from '../util/axisPropsAreEqual';
19
74
  import { useCartesianChartLayout } from '../context/chartLayoutContext.ts';
20
75
  import { getAxisTypeBasedOnLayout } from '../util/getAxisTypeBasedOnLayout';
21
76
 
22
- function SetXAxisSettings(props) {
77
+ function SetXAxisSettings(props: Omit<XAxisSettings, 'type'> & {
78
+ type: AxisDomainTypeInput;
79
+ }) {
23
80
  const dispatch = useAppDispatch();
24
- const prevSettingsRef = useRef(null);
81
+ const prevSettingsRef = useRef<XAxisSettings | null>(null);
25
82
  const layout = useCartesianChartLayout();
26
83
  const { type: typeFromProps, ...restProps } = props;
27
- const evaluatedType = getAxisTypeBasedOnLayout(layout, 'xAxis', typeFromProps);
28
- const settings = useMemo(() => {
84
+ const evaluatedType: EvaluatedAxisDomainType | undefined = getAxisTypeBasedOnLayout(
85
+ layout,
86
+ 'xAxis',
87
+ typeFromProps,
88
+ );
89
+ const settings: XAxisSettings | undefined = useMemo(() => {
29
90
  if (evaluatedType == null) {
30
91
  return undefined;
31
92
  }
@@ -53,7 +114,7 @@ function SetXAxisSettings(props) {
53
114
  return null;
54
115
  }
55
116
 
56
- function XAxisImpl(props) {
117
+ function XAxisImpl(props: PropsWithDefaults) {
57
118
  const { xAxisId, className } = props;
58
119
  const viewBox = useAppSelector(selectAxisViewBox);
59
120
  const isPanorama = useIsPanorama();
@@ -112,10 +173,15 @@ export const xAxisDefaultProps = {
112
173
  type: implicitXAxis.type,
113
174
  niceTicks: implicitXAxis.niceTicks,
114
175
  xAxisId: 0,
115
- };
176
+ } as const satisfies Partial<Props>;
116
177
 
117
- function XAxisSettingsDispatcher(outsideProps) @{
118
- const props = resolveDefaultProps(outsideProps, xAxisDefaultProps);
178
+ function XAxisSettingsDispatcher<DataPointType = any, DataValueType = any>(
179
+ outsideProps: Props<DataPointType, DataValueType>,
180
+ ) @{
181
+ const props: PropsWithDefaults<DataPointType, DataValueType> = resolveDefaultProps(
182
+ outsideProps,
183
+ xAxisDefaultProps,
184
+ );
119
185
  <>
120
186
  <SetXAxisSettings
121
187
  allowDataOverflow={props.allowDataOverflow}
@@ -152,5 +218,8 @@ function XAxisSettingsDispatcher(outsideProps) @{
152
218
  * @consumes CartesianViewBoxContext
153
219
  * @provides CartesianLabelContext
154
220
  */
155
- export const XAxis = memo(XAxisSettingsDispatcher, axisPropsAreEqual);
221
+ export const XAxis = memo(
222
+ XAxisSettingsDispatcher,
223
+ axisPropsAreEqual,
224
+ ) as typeof XAxisSettingsDispatcher & { displayName?: string };
156
225
  XAxis.displayName = 'XAxis';
@@ -1,3 +1,62 @@
1
+ import type { OctaneElement, SVGProps } from '../util/OctaneTypes.ts';
2
+ import type {
3
+ AxisDomainTypeInput,
4
+ AxisInterval,
5
+ AxisTick,
6
+ RenderableAxisProps,
7
+ PresentationAttributesAdaptChildEvent,
8
+ Size,
9
+ AxisDomain,
10
+ ScaleType,
11
+ EvaluatedAxisDomainType,
12
+ TickProp,
13
+ YAxisTickContentProps,
14
+ TickItem,
15
+ } from '../util/types';
16
+ import type { CartesianAxisRef } from './CartesianAxis.tsrx';
17
+ import type {
18
+ YAxisOrientation,
19
+ YAxisPadding,
20
+ YAxisSettings,
21
+ YAxisWidth,
22
+ NiceTicksAlgorithm,
23
+ } from '../state/cartesianAxisSlice';
24
+ import type { RequiresDefaultProps } from '../util/resolveDefaultProps';
25
+ import type { CustomScaleDefinition } from '../util/scale/CustomScaleDefinition';
26
+
27
+ interface YAxisProps<DataPointType = any, DataValueType = any> extends Omit<
28
+ RenderableAxisProps<DataPointType, DataValueType>,
29
+ 'axisLine' | 'domain' | 'scale' | 'tick'
30
+ > {
31
+ axisLine?: boolean | SVGProps<SVGLineElement>;
32
+ type?: AxisDomainTypeInput;
33
+ domain?: AxisDomain;
34
+ scale?: | ScaleType
35
+ | CustomScaleDefinition
36
+ | CustomScaleDefinition<string>
37
+ | CustomScaleDefinition<number>
38
+ | CustomScaleDefinition<Date>;
39
+ yAxisId?: string | number;
40
+ tick?: TickProp<YAxisTickContentProps>;
41
+ ticks?: ReadonlyArray<AxisTick>;
42
+ width?: YAxisWidth;
43
+ mirror?: boolean;
44
+ orientation?: YAxisOrientation;
45
+ padding?: YAxisPadding;
46
+ minTickGap?: number;
47
+ interval?: AxisInterval;
48
+ tickMargin?: number;
49
+ fontSize?: number | string;
50
+ letterSpacing?: number | string;
51
+ niceTicks?: NiceTicksAlgorithm;
52
+ }
53
+ export type Props<DataPointType = any, DataValueType = any> =
54
+ Omit<
55
+ PresentationAttributesAdaptChildEvent<TickItem, SVGTextElement>,
56
+ 'scale' | 'ref'
57
+ > & YAxisProps<DataPointType, DataValueType>;
58
+ type PropsWithDefaults<DataPointType = any, DataValueType = any> =
59
+ RequiresDefaultProps<Props<DataPointType, DataValueType>, typeof yAxisDefaultProps>;
1
60
  // Port of cartesian/YAxis.tsx — registers y-axis settings in the store,
2
61
  // renders through CartesianAxis, and drives width="auto" via the axis
3
62
  // component's imperative getCalculatedWidth handle.
@@ -21,13 +80,19 @@ import { axisPropsAreEqual } from '../util/axisPropsAreEqual';
21
80
  import { useCartesianChartLayout } from '../context/chartLayoutContext.ts';
22
81
  import { getAxisTypeBasedOnLayout } from '../util/getAxisTypeBasedOnLayout';
23
82
 
24
- function SetYAxisSettings(props) {
83
+ function SetYAxisSettings(props: Omit<YAxisSettings, 'type'> & {
84
+ type: AxisDomainTypeInput;
85
+ }) {
25
86
  const dispatch = useAppDispatch();
26
- const prevSettingsRef = useRef(null);
87
+ const prevSettingsRef = useRef<YAxisSettings | null>(null);
27
88
  const layout = useCartesianChartLayout();
28
89
  const { type: typeFromProps, ...restProps } = props;
29
- const evaluatedType = getAxisTypeBasedOnLayout(layout, 'yAxis', typeFromProps);
30
- const settings = useMemo(() => {
90
+ const evaluatedType: EvaluatedAxisDomainType | undefined = getAxisTypeBasedOnLayout(
91
+ layout,
92
+ 'yAxis',
93
+ typeFromProps,
94
+ );
95
+ const settings: YAxisSettings | undefined = useMemo(() => {
31
96
  if (evaluatedType == null) {
32
97
  return undefined;
33
98
  }
@@ -55,15 +120,15 @@ function SetYAxisSettings(props) {
55
120
  return null;
56
121
  }
57
122
 
58
- function YAxisImpl(props) {
123
+ function YAxisImpl(props: PropsWithDefaults) {
59
124
  const { yAxisId, className, width, label } = props;
60
- const cartesianAxisRef = useRef(null);
61
- const labelRef = useRef(null);
125
+ const cartesianAxisRef = useRef<CartesianAxisRef | null>(null);
126
+ const labelRef = useRef<SVGTextElement | null>(null);
62
127
  const viewBox = useAppSelector(selectAxisViewBox);
63
128
  const isPanorama = useIsPanorama();
64
129
  const dispatch = useAppDispatch();
65
130
  const axisType = 'yAxis';
66
- const axisSize = useAppSelector((state) => selectYAxisSize(state, yAxisId));
131
+ const axisSize: Size | undefined = useAppSelector((state) => selectYAxisSize(state, yAxisId));
67
132
  const position = useAppSelector((state) => selectYAxisPosition(state, yAxisId));
68
133
  const cartesianTickItems = useAppSelector(
69
134
  (state) => selectTicksOfAxis(state, axisType, yAxisId, isPanorama),
@@ -139,10 +204,15 @@ export const yAxisDefaultProps = {
139
204
  niceTicks: implicitYAxis.niceTicks,
140
205
  width: implicitYAxis.width,
141
206
  yAxisId: 0,
142
- };
207
+ } as const satisfies Partial<Props>;
143
208
 
144
- function YAxisSettingsDispatcher(outsideProps) @{
145
- const props = resolveDefaultProps(outsideProps, yAxisDefaultProps);
209
+ function YAxisSettingsDispatcher<DataPointType = any, DataValueType = any>(
210
+ outsideProps: Props<DataPointType, DataValueType>,
211
+ ) @{
212
+ const props: PropsWithDefaults<DataPointType, DataValueType> = resolveDefaultProps(
213
+ outsideProps,
214
+ yAxisDefaultProps,
215
+ );
146
216
  <>
147
217
  <SetYAxisSettings
148
218
  interval={props.interval}
@@ -179,5 +249,8 @@ function YAxisSettingsDispatcher(outsideProps) @{
179
249
  * @consumes CartesianViewBoxContext
180
250
  * @provides CartesianLabelContext
181
251
  */
182
- export const YAxis = memo(YAxisSettingsDispatcher, axisPropsAreEqual);
252
+ export const YAxis = memo(
253
+ YAxisSettingsDispatcher,
254
+ axisPropsAreEqual,
255
+ ) as typeof YAxisSettingsDispatcher & { displayName?: string };
183
256
  YAxis.displayName = 'YAxis';