@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
@@ -0,0 +1,130 @@
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ import { getPercentValue, isNullish } from '../../../util/DataUtils';
3
+ import { BarWithPosition, SizeList } from '../barSelectors';
4
+ import { isWellBehavedNumber } from '../../../util/isWellBehavedNumber';
5
+ import { BarPositionPosition } from '../../../util/ChartUtils';
6
+ import { BarCategory } from './combineBarSizeList';
7
+
8
+ function getBarPositions(
9
+ barGap: string | number,
10
+ barCategoryGap: string | number,
11
+ bandSize: number,
12
+ sizeList: SizeList,
13
+ maxBarSize: number | undefined,
14
+ ): ReadonlyArray<BarWithPosition> | undefined {
15
+ const len = sizeList.length;
16
+ if (len < 1) {
17
+ return undefined;
18
+ }
19
+
20
+ let realBarGap = getPercentValue(barGap, bandSize, 0, true);
21
+
22
+ let result: ReadonlyArray<BarWithPosition>;
23
+ const initialValue: ReadonlyArray<BarWithPosition> = [];
24
+
25
+ // whether is barSize set by user
26
+ // Okay but why does it check only for the first element? What if the first element is set but others are not?
27
+ if (isWellBehavedNumber(sizeList[0]?.barSize)) {
28
+ let useFull = false;
29
+ let fullBarSize: number = bandSize / len;
30
+ let sum = sizeList.reduce((res, entry) => res + (entry.barSize || 0), 0);
31
+ sum += (len - 1) * realBarGap;
32
+
33
+ if (sum >= bandSize) {
34
+ sum -= (len - 1) * realBarGap;
35
+ realBarGap = 0;
36
+ }
37
+ if (sum >= bandSize && fullBarSize > 0) {
38
+ useFull = true;
39
+ fullBarSize *= 0.9;
40
+ sum = len * fullBarSize;
41
+ }
42
+
43
+ const offset = Math.round((bandSize - sum) / 2);
44
+ let prev: BarPositionPosition = { offset: offset - realBarGap, size: 0 };
45
+
46
+ result = sizeList.reduce(
47
+ (res: ReadonlyArray<BarWithPosition>, entry: BarCategory): ReadonlyArray<BarWithPosition> => {
48
+ const newPosition: BarWithPosition = {
49
+ stackId: entry.stackId,
50
+ dataKeys: entry.dataKeys,
51
+ position: {
52
+ offset: prev.offset + prev.size + realBarGap,
53
+ size: useFull ? fullBarSize : (entry.barSize ?? 0),
54
+ },
55
+ };
56
+ const newRes: Array<BarWithPosition> = [...res, newPosition];
57
+
58
+ prev = newPosition.position;
59
+
60
+ return newRes;
61
+ },
62
+ initialValue,
63
+ );
64
+ } else {
65
+ const offset = getPercentValue(barCategoryGap, bandSize, 0, true);
66
+
67
+ if (bandSize - 2 * offset - (len - 1) * realBarGap <= 0) {
68
+ realBarGap = 0;
69
+ }
70
+
71
+ let originalSize = (bandSize - 2 * offset - (len - 1) * realBarGap) / len;
72
+ if (originalSize > 1) {
73
+ originalSize = Math.round(originalSize);
74
+ }
75
+ const size = isWellBehavedNumber(maxBarSize)
76
+ ? Math.min(originalSize, maxBarSize)
77
+ : originalSize;
78
+ result = sizeList.reduce(
79
+ (
80
+ res: ReadonlyArray<BarWithPosition>,
81
+ entry: BarCategory,
82
+ i,
83
+ ): ReadonlyArray<BarWithPosition> => [
84
+ ...res,
85
+ {
86
+ stackId: entry.stackId,
87
+ dataKeys: entry.dataKeys,
88
+ position: {
89
+ offset: offset + (originalSize + realBarGap) * i + (originalSize - size) / 2,
90
+ size,
91
+ },
92
+ },
93
+ ],
94
+ initialValue,
95
+ );
96
+ }
97
+
98
+ return result;
99
+ }
100
+
101
+ export const combineAllBarPositions = (
102
+ sizeList: SizeList,
103
+ globalMaxBarSize: number | undefined,
104
+ barGap: string | number,
105
+ barCategoryGap: string | number,
106
+ barBandSize: number,
107
+ bandSize: number | undefined,
108
+ childMaxBarSize: number | undefined,
109
+ ): ReadonlyArray<BarWithPosition> | undefined => {
110
+ const maxBarSize: number | undefined = isNullish(childMaxBarSize)
111
+ ? globalMaxBarSize
112
+ : childMaxBarSize;
113
+
114
+ let allBarPositions: ReadonlyArray<BarWithPosition> | undefined = getBarPositions(
115
+ barGap,
116
+ barCategoryGap,
117
+ barBandSize !== bandSize ? barBandSize : bandSize,
118
+ sizeList,
119
+ maxBarSize,
120
+ );
121
+
122
+ if (barBandSize !== bandSize && allBarPositions != null) {
123
+ allBarPositions = allBarPositions.map((pos) => ({
124
+ ...pos,
125
+ position: { ...pos.position, offset: pos.position.offset - barBandSize / 2 },
126
+ }));
127
+ }
128
+
129
+ return allBarPositions;
130
+ };
@@ -0,0 +1,16 @@
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ import { BaseCartesianAxis } from '../../cartesianAxisSlice';
3
+ import { AxisRange } from '../axisSelectors';
4
+
5
+ export const combineAxisRangeWithReverse = (
6
+ axisSettings: BaseCartesianAxis | undefined,
7
+ axisRange: AxisRange | undefined,
8
+ ): AxisRange | undefined => {
9
+ if (!axisSettings || !axisRange) {
10
+ return undefined;
11
+ }
12
+ if (axisSettings?.reversed) {
13
+ return [axisRange[1], axisRange[0]];
14
+ }
15
+ return axisRange;
16
+ };
@@ -0,0 +1,23 @@
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ import { MaybeStackedGraphicalItem } from '../../types/StackedGraphicalItem';
3
+ import { BarPositionPosition } from '../../../util/ChartUtils';
4
+ import { BarWithPosition } from '../barSelectors';
5
+
6
+ export const combineBarPosition = (
7
+ allBarPositions: ReadonlyArray<BarWithPosition> | undefined,
8
+ barSettings: MaybeStackedGraphicalItem | undefined,
9
+ ): BarPositionPosition | undefined => {
10
+ if (allBarPositions == null || barSettings == null) {
11
+ return undefined;
12
+ }
13
+ const position = allBarPositions.find(
14
+ (p: BarWithPosition) =>
15
+ p.stackId === barSettings.stackId &&
16
+ barSettings.dataKey != null &&
17
+ p.dataKeys.includes(barSettings.dataKey),
18
+ );
19
+ if (position == null) {
20
+ return undefined;
21
+ }
22
+ return position.position;
23
+ };
@@ -0,0 +1,79 @@
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ import {
3
+ DefinitelyStackedGraphicalItem,
4
+ isStacked,
5
+ MaybeStackedGraphicalItem,
6
+ } from '../../types/StackedGraphicalItem';
7
+ import { StackId } from '../../../util/ChartUtils';
8
+ import { SizeList } from '../barSelectors';
9
+ import { getPercentValue, isNullish } from '../../../util/DataUtils';
10
+ import { DataKey } from '../../../util/types';
11
+
12
+ const getBarSize = (
13
+ globalSize: string | number | undefined,
14
+ totalSize: number | undefined,
15
+ selfSize: number | string | undefined,
16
+ ): number | undefined => {
17
+ const barSize: string | number | undefined = selfSize ?? globalSize;
18
+
19
+ if (isNullish(barSize)) {
20
+ return undefined;
21
+ }
22
+ return getPercentValue(barSize, totalSize, 0);
23
+ };
24
+
25
+ export const combineBarSizeList = (
26
+ allBars: ReadonlyArray<MaybeStackedGraphicalItem>,
27
+ globalSize: string | number | undefined,
28
+ totalSize: number | undefined,
29
+ ): SizeList => {
30
+ const initialValue: Record<StackId, Array<DefinitelyStackedGraphicalItem>> = {};
31
+
32
+ const stackedBars: ReadonlyArray<DefinitelyStackedGraphicalItem> = allBars.filter(isStacked);
33
+ const unstackedBars = allBars.filter((b) => b.stackId == null);
34
+
35
+ const groupByStack: Record<StackId, Array<DefinitelyStackedGraphicalItem>> = stackedBars.reduce(
36
+ (acc, bar) => {
37
+ let s = acc[bar.stackId];
38
+ if (s == null) {
39
+ s = [];
40
+ }
41
+ s.push(bar);
42
+ acc[bar.stackId] = s;
43
+ return acc;
44
+ },
45
+ initialValue,
46
+ );
47
+
48
+ const stackedSizeList: SizeList = Object.entries(groupByStack).map(
49
+ ([stackId, bars]): BarCategory => {
50
+ const dataKeys = bars.map((b) => b.dataKey);
51
+ const barSize: number | undefined = getBarSize(globalSize, totalSize, bars[0]?.barSize);
52
+ return { stackId, dataKeys, barSize };
53
+ },
54
+ );
55
+
56
+ const unstackedSizeList: SizeList = unstackedBars.map((b): BarCategory => {
57
+ const dataKeys = [b.dataKey].filter((dk) => dk != null);
58
+ const barSize: number | undefined = getBarSize(globalSize, totalSize, b.barSize);
59
+ return { stackId: undefined, dataKeys, barSize };
60
+ });
61
+
62
+ return [...stackedSizeList, ...unstackedSizeList];
63
+ };
64
+ export type BarCategory = {
65
+ stackId: StackId | undefined;
66
+ /**
67
+ * List of dataKeys of items stacked at this position.
68
+ * All of these Bars are either sharing the same stackId,
69
+ * or this is an array with one Bar because it has no stackId defined.
70
+ *
71
+ * This structure limits us to having one dataKey only once per stack which I think is reasonable.
72
+ * People who want to have the same data twice can duplicate their data to have two distinct dataKeys.
73
+ */
74
+ dataKeys: ReadonlyArray<DataKey<any>>;
75
+ /**
76
+ * Width (in horizontal chart) or height (in vertical chart) of this stack of items
77
+ */
78
+ barSize: number | undefined;
79
+ };
@@ -1,12 +1,15 @@
1
- // Vendored verbatim from recharts@3.9.2 es6/state/selectors/combiners/combineCheckedDomain.js (framework-agnostic).
2
- // Do not edit update by re-vendoring when the recharts devDependency moves.
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ import { CategoricalDomain, NumberDomain } from '../../../util/types';
3
3
  import { isWellFormedNumberDomain } from '../../../util/isDomainSpecifiedByUser';
4
4
  import { isWellBehavedNumber } from '../../../util/isWellBehavedNumber';
5
5
 
6
6
  /**
7
7
  * This function validates and transforms the axis domain so that it is safe to use in the provided scale.
8
8
  */
9
- export var combineCheckedDomain = (realScaleType, axisDomain) => {
9
+ export const combineCheckedDomain = (
10
+ realScaleType: string | undefined,
11
+ axisDomain: NumberDomain | CategoricalDomain | undefined,
12
+ ): NumberDomain | CategoricalDomain | undefined => {
10
13
  if (axisDomain == null) {
11
14
  return undefined;
12
15
  }
@@ -18,9 +21,9 @@ export var combineCheckedDomain = (realScaleType, axisDomain) => {
18
21
  * let's pick the min and max from it.
19
22
  */
20
23
  if (!isWellFormedNumberDomain(axisDomain)) {
21
- var min, max;
22
- for (var i = 0; i < axisDomain.length; i++) {
23
- var value = axisDomain[i];
24
+ let min: number | undefined, max: number | undefined;
25
+ for (let i = 0; i < axisDomain.length; i++) {
26
+ const value = axisDomain[i];
24
27
  if (!isWellBehavedNumber(value)) {
25
28
  continue;
26
29
  }
@@ -0,0 +1,100 @@
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ import * as d3Scales from 'victory-vendor/d3-scale';
3
+ import { BaseCartesianAxis } from '../../cartesianAxisSlice';
4
+ import {
5
+ CategoricalDomain,
6
+ CategoricalDomainItem,
7
+ D3ScaleType,
8
+ NumberDomain,
9
+ RechartsScaleType,
10
+ } from '../../../util/types';
11
+ import { CustomScaleDefinition } from '../../../util/scale/CustomScaleDefinition';
12
+ import { AxisRange } from '../axisSelectors';
13
+ import { upperFirst } from '../../../util/DataUtils';
14
+
15
+ function getD3ScaleFromType<Domain extends CategoricalDomainItem = CategoricalDomainItem>(
16
+ realScaleType: D3ScaleType | RechartsScaleType,
17
+ ): CustomScaleDefinition<Domain> | undefined {
18
+ const scales = d3Scales as Record<string, unknown>;
19
+ if (realScaleType in scales && typeof scales[realScaleType] === 'function') {
20
+ return scales[realScaleType]();
21
+ }
22
+ const name = `scale${upperFirst(realScaleType)}`;
23
+ if (name in scales && typeof scales[name] === 'function') {
24
+ return scales[name]();
25
+ }
26
+ return undefined;
27
+ }
28
+
29
+ /**
30
+ * Converts external scale definition into internal RechartsScale definition.
31
+ * @param scale custom function scale - if you have the `string` from outside, use `combineRealScaleType` first which will validate it and return RechartsScaleType or undefined
32
+ * @param axisDomain
33
+ * @param axisRange
34
+ */
35
+ export function combineConfiguredScaleInternal(
36
+ scale:
37
+ | CustomScaleDefinition
38
+ | CustomScaleDefinition<string>
39
+ | CustomScaleDefinition<number>
40
+ | CustomScaleDefinition<Date>,
41
+ axisDomain: ReadonlyArray<CategoricalDomainItem>,
42
+ axisRange: AxisRange,
43
+ ): CustomScaleDefinition;
44
+ export function combineConfiguredScaleInternal(
45
+ scale: D3ScaleType | RechartsScaleType,
46
+ axisDomain: ReadonlyArray<CategoricalDomainItem>,
47
+ axisRange: AxisRange,
48
+ ): CustomScaleDefinition;
49
+ export function combineConfiguredScaleInternal(
50
+ scale: D3ScaleType | RechartsScaleType | undefined,
51
+ axisDomain: ReadonlyArray<CategoricalDomainItem>,
52
+ axisRange: AxisRange,
53
+ ): CustomScaleDefinition | undefined;
54
+ export function combineConfiguredScaleInternal(
55
+ scale: undefined,
56
+ axisDomain: ReadonlyArray<CategoricalDomainItem>,
57
+ axisRange: AxisRange,
58
+ ): undefined;
59
+ export function combineConfiguredScaleInternal<
60
+ Domain extends CategoricalDomainItem = CategoricalDomainItem,
61
+ >(
62
+ scale: D3ScaleType | RechartsScaleType | CustomScaleDefinition<Domain> | undefined,
63
+ axisDomain: ReadonlyArray<Domain>,
64
+ axisRange: AxisRange,
65
+ ): CustomScaleDefinition<Domain> | undefined;
66
+ export function combineConfiguredScaleInternal<
67
+ Domain extends CategoricalDomainItem = CategoricalDomainItem,
68
+ >(
69
+ scale: D3ScaleType | RechartsScaleType | CustomScaleDefinition<Domain> | undefined,
70
+ axisDomain: ReadonlyArray<Domain>,
71
+ axisRange: AxisRange,
72
+ ): CustomScaleDefinition<Domain> | undefined {
73
+ if (typeof scale === 'function') {
74
+ return scale.copy().domain(axisDomain).range(axisRange);
75
+ }
76
+ if (scale == null) {
77
+ return undefined;
78
+ }
79
+ const d3ScaleFunction: CustomScaleDefinition<Domain> | undefined = getD3ScaleFromType(scale);
80
+ if (d3ScaleFunction == null) {
81
+ return undefined;
82
+ }
83
+ d3ScaleFunction.domain(axisDomain).range(axisRange);
84
+ return d3ScaleFunction;
85
+ }
86
+
87
+ export function combineConfiguredScale(
88
+ axis: BaseCartesianAxis,
89
+ realScaleType: D3ScaleType | RechartsScaleType | undefined,
90
+ axisDomain: NumberDomain | CategoricalDomain | undefined,
91
+ axisRange: AxisRange | undefined,
92
+ ): CustomScaleDefinition | undefined {
93
+ if (axisDomain == null || axisRange == null) {
94
+ return undefined;
95
+ }
96
+ if (typeof axis.scale === 'function') {
97
+ return combineConfiguredScaleInternal(axis.scale, axisDomain, axisRange);
98
+ }
99
+ return combineConfiguredScaleInternal(realScaleType, axisDomain, axisRange);
100
+ }
@@ -0,0 +1,46 @@
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ import { ChartOffsetInternal, Coordinate, LayoutType, TickItem } from '../../../util/types';
3
+ import { TooltipIndex, TooltipPayloadConfiguration } from '../../tooltipSlice';
4
+
5
+ export const combineCoordinateForDefaultIndex = (
6
+ width: number,
7
+ height: number,
8
+ layout: LayoutType,
9
+ offset: ChartOffsetInternal,
10
+ tooltipTicks: ReadonlyArray<TickItem> | undefined,
11
+ defaultIndex: TooltipIndex | undefined,
12
+ tooltipConfigurations: ReadonlyArray<TooltipPayloadConfiguration>,
13
+ ): Coordinate | undefined => {
14
+ if (defaultIndex == null) {
15
+ return undefined;
16
+ }
17
+ /*
18
+ * With defaultIndex alone, we don't have enough information to decide _which_ of the multiple tooltips to display.
19
+ * Maybe one day we could add new prop `activeGraphicalItemId` to the chart to help with that.
20
+ * Until then, we choose the first one.
21
+ */
22
+ const firstConfiguration = tooltipConfigurations[0];
23
+ const maybePosition: Coordinate | undefined = firstConfiguration?.getPosition(defaultIndex);
24
+ if (maybePosition != null) {
25
+ return maybePosition;
26
+ }
27
+ const tick = tooltipTicks?.[Number(defaultIndex)];
28
+ if (!tick) {
29
+ return undefined;
30
+ }
31
+ switch (layout) {
32
+ case 'horizontal': {
33
+ return {
34
+ x: tick.coordinate,
35
+ y: (offset.top + height) / 2,
36
+ };
37
+ }
38
+ default: {
39
+ // This logic is not super sound - it conflates vertical, radial, centric layouts into just one. TODO improve!
40
+ return {
41
+ x: (offset.left + width) / 2,
42
+ y: tick.coordinate,
43
+ };
44
+ }
45
+ }
46
+ };
@@ -1,7 +1,10 @@
1
- // Vendored verbatim from recharts@3.9.2 es6/state/selectors/combiners/combineDisplayedStackedData.js (framework-agnostic).
2
- // Do not edit update by re-vendoring when the recharts devDependency moves.
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ import { ChartDataState } from '../../chartDataSlice';
3
+ import { BaseCartesianAxis } from '../../cartesianAxisSlice';
3
4
  import { getStackSeriesIdentifier } from '../../../util/stacks/getStackSeriesIdentifier';
4
5
  import { getValueByDataKey } from '../../../util/ChartUtils';
6
+ import { StackSeriesIdentifier } from '../../../util/stacks/stackTypes';
7
+ import { DefinitelyStackedGraphicalItem } from '../../types/StackedGraphicalItem';
5
8
 
6
9
  /**
7
10
  * In a stacked chart, each graphical item has its own data. That data could be either:
@@ -13,40 +16,41 @@ import { getValueByDataKey } from '../../../util/ChartUtils';
13
16
  * This type represents a single data point in a stacked chart, where each key is a series identifier
14
17
  * and the value is the numeric value for that series using the numerical axis dataKey.
15
18
  */
19
+ export type DisplayedStackedDataPoint = Record<StackSeriesIdentifier, number>;
16
20
 
17
- export function combineDisplayedStackedData(stackedGraphicalItems, _ref, tooltipAxisSettings) {
18
- var _ref$chartData = _ref.chartData,
19
- chartData = _ref$chartData === void 0 ? [] : _ref$chartData;
20
- var allowDuplicatedCategory = tooltipAxisSettings.allowDuplicatedCategory,
21
- tooltipDataKey = tooltipAxisSettings.dataKey;
21
+ export type DisplayedStackedData = ReadonlyArray<DisplayedStackedDataPoint>;
22
+
23
+ export function combineDisplayedStackedData(
24
+ stackedGraphicalItems: ReadonlyArray<DefinitelyStackedGraphicalItem>,
25
+ { chartData = [] }: ChartDataState,
26
+ tooltipAxisSettings: BaseCartesianAxis,
27
+ ): DisplayedStackedData {
28
+ const { allowDuplicatedCategory, dataKey: tooltipDataKey } = tooltipAxisSettings;
22
29
 
23
30
  // A map of tooltip data keys to the stacked data points
24
- var knownItemsByDataKey = new Map();
31
+ const knownItemsByDataKey = new Map<string | number, DisplayedStackedDataPoint>();
32
+
25
33
  stackedGraphicalItems.forEach((item) => {
26
- var _item$data;
27
34
  // If there is no data on the individual item then we use the root chart data
28
- var resolvedData =
29
- (_item$data = item.data) !== null && _item$data !== void 0 ? _item$data : chartData;
35
+ const resolvedData = item.data ?? chartData;
30
36
  if (resolvedData == null || resolvedData.length === 0) {
31
37
  // if that doesn't work then we skip this item
32
38
  return;
33
39
  }
34
- var stackIdentifier = getStackSeriesIdentifier(item);
40
+ const stackIdentifier = getStackSeriesIdentifier(item);
35
41
  resolvedData.forEach((entry, index) => {
36
- var tooltipValue =
42
+ const tooltipValue =
37
43
  tooltipDataKey == null || allowDuplicatedCategory
38
44
  ? index
39
45
  : String(getValueByDataKey(entry, tooltipDataKey, null));
40
- var numericValue = getValueByDataKey(entry, item.dataKey, 0);
41
- var curr;
46
+ const numericValue = getValueByDataKey(entry, item.dataKey, 0);
47
+ let curr;
42
48
  if (knownItemsByDataKey.has(tooltipValue)) {
43
- curr = knownItemsByDataKey.get(tooltipValue);
49
+ curr = knownItemsByDataKey.get(tooltipValue)!;
44
50
  } else {
45
51
  curr = {};
46
52
  }
47
- Object.assign(curr, {
48
- [stackIdentifier]: numericValue,
49
- });
53
+ Object.assign(curr, { [stackIdentifier]: numericValue });
50
54
  knownItemsByDataKey.set(tooltipValue, curr);
51
55
  });
52
56
  });
@@ -0,0 +1,16 @@
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ import { InverseScaleFunction } from '../../../hooks';
3
+ import { createCategoricalInverse } from '../../../util/scale/createCategoricalInverse';
4
+ import { CustomScaleDefinition } from '../../../util/scale/CustomScaleDefinition';
5
+
6
+ export function combineInverseScaleFunction(
7
+ configuredScale: CustomScaleDefinition | undefined,
8
+ ): InverseScaleFunction | undefined {
9
+ if (configuredScale == null) {
10
+ return undefined;
11
+ }
12
+ if ('invert' in configuredScale && typeof configuredScale.invert === 'function') {
13
+ return configuredScale.invert.bind(configuredScale);
14
+ }
15
+ return createCategoricalInverse(configuredScale, undefined);
16
+ }
@@ -1,19 +1,26 @@
1
- // Vendored verbatim from recharts@3.9.2 es6/state/selectors/combiners/combineRealScaleType.js (framework-agnostic).
2
- // Do not edit — update by re-vendoring when the recharts devDependency moves.
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
3
2
  import * as d3Scales from 'victory-vendor/d3-scale';
3
+ import { D3ScaleType, RechartsScaleType } from '../../../util/types';
4
+ import { BaseCartesianAxis } from '../../cartesianAxisSlice';
4
5
  import { upperFirst } from '../../../util/DataUtils';
5
- function getD3ScaleName(name) {
6
- return 'scale'.concat(upperFirst(name));
6
+
7
+ function getD3ScaleName(name: string): D3ScaleType {
8
+ return `scale${upperFirst(name)}` as D3ScaleType;
7
9
  }
8
- function isSupportedScaleName(name) {
10
+
11
+ function isSupportedScaleName(name: string): name is RechartsScaleType {
9
12
  return getD3ScaleName(name) in d3Scales;
10
13
  }
11
- export var combineRealScaleType = (axisConfig, hasBar, chartType) => {
14
+
15
+ export const combineRealScaleType = (
16
+ axisConfig: BaseCartesianAxis | undefined,
17
+ hasBar: boolean,
18
+ chartType: string,
19
+ ): RechartsScaleType | undefined => {
12
20
  if (axisConfig == null) {
13
21
  return undefined;
14
22
  }
15
- var scale = axisConfig.scale,
16
- type = axisConfig.type;
23
+ const { scale, type } = axisConfig;
17
24
  if (scale === 'auto') {
18
25
  if (
19
26
  type === 'category' &&
@@ -27,6 +34,7 @@ export var combineRealScaleType = (axisConfig, hasBar, chartType) => {
27
34
  if (type === 'category') {
28
35
  return 'band';
29
36
  }
37
+
30
38
  return 'linear';
31
39
  }
32
40
  if (typeof scale === 'string') {
@@ -0,0 +1,27 @@
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ import { AllStackGroups, StackGroup, StackSeries } from '../../../util/stacks/stackTypes';
3
+ import { MaybeStackedGraphicalItem } from '../../types/StackedGraphicalItem';
4
+ import { getStackSeriesIdentifier } from '../../../util/stacks/getStackSeriesIdentifier';
5
+
6
+ export const combineStackedData = (
7
+ stackGroups: AllStackGroups | undefined,
8
+ barSettings: MaybeStackedGraphicalItem | undefined,
9
+ ): StackSeries | undefined => {
10
+ const stackSeriesIdentifier = getStackSeriesIdentifier(barSettings);
11
+ if (!stackGroups || stackSeriesIdentifier == null || barSettings == null) {
12
+ return undefined;
13
+ }
14
+ const { stackId } = barSettings;
15
+ if (stackId == null) {
16
+ return undefined;
17
+ }
18
+ const stackGroup: StackGroup | undefined = stackGroups[stackId];
19
+ if (!stackGroup) {
20
+ return undefined;
21
+ }
22
+ const { stackedData }: StackGroup = stackGroup;
23
+ if (!stackedData) {
24
+ return undefined;
25
+ }
26
+ return stackedData.find((sd) => sd.key === stackSeriesIdentifier);
27
+ };
@@ -0,0 +1,86 @@
1
+ // Adapted from recharts@3.9.2, commit b3451050c027a23957ffa50a2665c9119df21e47.
2
+ import {
3
+ noInteraction,
4
+ TooltipIndex,
5
+ TooltipInteractionState,
6
+ TooltipState,
7
+ } from '../../tooltipSlice';
8
+ import { TooltipEventType } from '../../../util/types';
9
+ import { TooltipTrigger } from '../../../chart/types';
10
+
11
+ function chooseAppropriateMouseInteraction(
12
+ tooltipState: TooltipState,
13
+ tooltipEventType: TooltipEventType,
14
+ trigger: TooltipTrigger,
15
+ ): TooltipInteractionState | undefined {
16
+ if (tooltipEventType === 'axis') {
17
+ if (trigger === 'click') {
18
+ return tooltipState.axisInteraction.click;
19
+ }
20
+ return tooltipState.axisInteraction.hover;
21
+ }
22
+ if (trigger === 'click') {
23
+ return tooltipState.itemInteraction.click;
24
+ }
25
+ return tooltipState.itemInteraction.hover;
26
+ }
27
+
28
+ function hasBeenActivePreviously(tooltipInteractionState: TooltipInteractionState): boolean {
29
+ return tooltipInteractionState.index != null;
30
+ }
31
+
32
+ export const combineTooltipInteractionState = (
33
+ tooltipState: TooltipState,
34
+ tooltipEventType: TooltipEventType | undefined,
35
+ trigger: TooltipTrigger,
36
+ defaultIndex: TooltipIndex | undefined,
37
+ ): TooltipInteractionState => {
38
+ if (tooltipEventType == null) {
39
+ return noInteraction;
40
+ }
41
+ const appropriateMouseInteraction = chooseAppropriateMouseInteraction(
42
+ tooltipState,
43
+ tooltipEventType,
44
+ trigger,
45
+ );
46
+
47
+ if (appropriateMouseInteraction == null) {
48
+ return noInteraction;
49
+ }
50
+
51
+ if (appropriateMouseInteraction.active) {
52
+ return appropriateMouseInteraction;
53
+ }
54
+
55
+ if (tooltipState.keyboardInteraction.active) {
56
+ return tooltipState.keyboardInteraction;
57
+ }
58
+
59
+ if (tooltipState.syncInteraction.active && tooltipState.syncInteraction.index != null) {
60
+ return tooltipState.syncInteraction;
61
+ }
62
+
63
+ const activeFromProps = tooltipState.settings.active === true;
64
+
65
+ if (hasBeenActivePreviously(appropriateMouseInteraction)) {
66
+ if (activeFromProps) {
67
+ return {
68
+ ...appropriateMouseInteraction,
69
+ active: true,
70
+ };
71
+ }
72
+ } else if (defaultIndex != null) {
73
+ return {
74
+ active: true,
75
+ coordinate: undefined,
76
+ dataKey: undefined,
77
+ index: defaultIndex,
78
+ graphicalItemId: undefined,
79
+ };
80
+ }
81
+
82
+ return {
83
+ ...noInteraction,
84
+ coordinate: appropriateMouseInteraction.coordinate,
85
+ };
86
+ };