@@ -24,11 +24,22 @@ import {
2424 selectorChartsLastInteraction ,
2525} from './useChartInteraction.selectors' ;
2626import { ChartSeriesConfig } from '../../models/seriesConfig/seriesConfig.types' ;
27- import { AxisId , ChartsXAxisProps , ChartsYAxisProps } from '../../../../models/axis' ;
27+ import {
28+ AxisId ,
29+ ChartsRadiusAxisProps ,
30+ ChartsRotationAxisProps ,
31+ ChartsXAxisProps ,
32+ ChartsYAxisProps ,
33+ } from '../../../../models/axis' ;
2834import { ComputeResult } from '../useChartCartesianAxis/computeAxisValue' ;
2935import { selectorChartDrawingArea } from '../../corePlugins/useChartDimensions/useChartDimensions.selectors' ;
3036import { ChartDrawingArea } from '../../../../hooks/useDrawingArea' ;
3137import { isCartesianSeries } from '../../../isCartesian' ;
38+ import {
39+ selectorChartRadiusAxis ,
40+ selectorChartRotationAxis ,
41+ } from '../useChartPolarAxis/useChartPolarAxis.selectors' ;
42+ import { ComputeResult as ComputePolarResult } from '../useChartPolarAxis/computeAxisValue' ;
3243
3344export const selectorChartsTooltipItem = createSelector (
3445 selectorChartsLastInteraction ,
@@ -47,60 +58,89 @@ export const selectorChartsTooltipItemIsDefined = createSelector(
4758 lastInteraction === 'keyboard' ? keyboardItemIsDefined : interactionItemIsDefined ,
4859) ;
4960
50- export const selectorChartsTooltipItemPosition = createSelector (
61+ const selectorChartsTooltipAxisConfig = createSelector (
5162 selectorChartsTooltipItem ,
52- selectorChartDrawingArea ,
53- selectorChartSeriesConfig ,
5463 selectorChartXAxis ,
5564 selectorChartYAxis ,
65+ selectorChartRotationAxis ,
66+ selectorChartRadiusAxis ,
5667 selectorChartSeriesProcessed ,
57- ( _ , placement ?: 'top' | 'bottom' | 'left' | 'right' ) => placement ,
58-
59- function selectorChartsTooltipItemPosition < T extends ChartSeriesType > (
68+ function selectorChartsTooltipAxisConfig < T extends ChartSeriesType > (
6069 identifier : ChartItemIdentifierWithData < T > | null ,
61- drawingArea : ChartDrawingArea ,
62- seriesConfig : ChartSeriesConfig < T > ,
6370 { axis : xAxis , axisIds : xAxisIds } : ComputeResult < ChartsXAxisProps > ,
6471 { axis : yAxis , axisIds : yAxisIds } : ComputeResult < ChartsYAxisProps > ,
72+ rotationAxes : ComputePolarResult < ChartsRotationAxisProps > ,
73+ radiusAxes : ComputePolarResult < ChartsRadiusAxisProps > ,
6574 series : ProcessedSeries < T > ,
66- placement : 'top' | 'bottom' | 'left' | 'right' = 'top' ,
6775 ) {
6876 if ( ! identifier ) {
69- return null ;
77+ return { } ;
7078 }
7179
7280 const itemSeries = series [ identifier . type as T ] ?. series [ identifier . seriesId ] as
7381 | ChartSeriesDefaultized < T >
7482 | undefined ;
7583
76- if ( itemSeries ) {
77- const axesConfig : TooltipPositionGetterAxesConfig = { } ;
84+ if ( ! itemSeries ) {
85+ return { } ;
86+ }
87+ const axesConfig : TooltipPositionGetterAxesConfig = {
88+ rotationAxes,
89+ radiusAxes,
90+ } ;
7891
79- const xAxisId : AxisId | undefined = isCartesianSeries ( itemSeries )
80- ? ( itemSeries . xAxisId ?? xAxisIds [ 0 ] )
81- : undefined ;
82- const yAxisId : AxisId | undefined = isCartesianSeries ( itemSeries )
83- ? ( itemSeries . yAxisId ?? yAxisIds [ 0 ] )
84- : undefined ;
92+ const xAxisId : AxisId | undefined = isCartesianSeries ( itemSeries )
93+ ? ( itemSeries . xAxisId ?? xAxisIds [ 0 ] )
94+ : undefined ;
95+ const yAxisId : AxisId | undefined = isCartesianSeries ( itemSeries )
96+ ? ( itemSeries . yAxisId ?? yAxisIds [ 0 ] )
97+ : undefined ;
8598
86- if ( xAxisId !== undefined ) {
87- axesConfig . x = xAxis [ xAxisId ] ;
88- }
89- if ( yAxisId !== undefined ) {
90- axesConfig . y = yAxis [ yAxisId ] ;
91- }
99+ if ( xAxisId !== undefined ) {
100+ axesConfig . x = xAxis [ xAxisId ] ;
101+ }
102+ if ( yAxisId !== undefined ) {
103+ axesConfig . y = yAxis [ yAxisId ] ;
104+ }
92105
93- return (
94- seriesConfig [ itemSeries . type as T ] . tooltipItemPositionGetter ?.( {
95- series,
96- drawingArea,
97- axesConfig,
98- identifier,
99- placement,
100- } ) ?? null
101- ) ;
106+ return axesConfig ;
107+ } ,
108+ ) ;
109+
110+ export const selectorChartsTooltipItemPosition = createSelector (
111+ selectorChartsTooltipItem ,
112+ selectorChartDrawingArea ,
113+ selectorChartSeriesConfig ,
114+ selectorChartSeriesProcessed ,
115+ selectorChartsTooltipAxisConfig ,
116+
117+ function selectorChartsTooltipItemPosition < T extends ChartSeriesType > (
118+ identifier : ChartItemIdentifierWithData < T > | null ,
119+ drawingArea : ChartDrawingArea ,
120+ seriesConfig : ChartSeriesConfig < T > ,
121+ series : ProcessedSeries < T > ,
122+ axesConfig : TooltipPositionGetterAxesConfig ,
123+ placement : 'top' | 'bottom' | 'left' | 'right' = 'top' ,
124+ ) {
125+ if ( ! identifier ) {
126+ return { } ;
102127 }
103128
104- return null ;
129+ const itemSeries = series [ identifier . type as T ] ?. series [ identifier . seriesId ] as
130+ | ChartSeriesDefaultized < T >
131+ | undefined ;
132+
133+ if ( ! itemSeries ) {
134+ return null ;
135+ }
136+ return (
137+ seriesConfig [ itemSeries . type as T ] . tooltipItemPositionGetter ?.( {
138+ series,
139+ drawingArea,
140+ axesConfig,
141+ identifier,
142+ placement,
143+ } ) ?? null
144+ ) ;
105145 } ,
106146) ;
0 commit comments