(
series: ResolvedChartGPUOptions['series'],
gridX: number,
gridY: number,
plotWidthCss: number,
plotHeightCss: number
)
| 2415 | |
| 2416 | // Helper: Find pie slice at pointer position (extracted to avoid duplication) |
| 2417 | const findPieSliceAtPointer = ( |
| 2418 | series: ResolvedChartGPUOptions['series'], |
| 2419 | gridX: number, |
| 2420 | gridY: number, |
| 2421 | plotWidthCss: number, |
| 2422 | plotHeightCss: number |
| 2423 | ): ReturnType<typeof findPieSlice> | null => { |
| 2424 | const maxRadiusCss = 0.5 * Math.min(plotWidthCss, plotHeightCss); |
| 2425 | if (!(maxRadiusCss > 0)) return null; |
| 2426 | |
| 2427 | for (let i = currentOptions.series.length - 1; i >= 0; i--) { |
| 2428 | const s = series[i]; |
| 2429 | if (s.type !== 'pie') continue; |
| 2430 | const pieSeries = s as ResolvedPieSeriesConfig; |
| 2431 | const center = resolvePieCenterPlotCss(pieSeries.center, plotWidthCss, plotHeightCss); |
| 2432 | const radii = resolvePieRadiiCss(pieSeries.radius, maxRadiusCss); |
| 2433 | const m = findPieSlice(gridX, gridY, { seriesIndex: i, series: pieSeries }, center, radii); |
| 2434 | if (m) return m; |
| 2435 | } |
| 2436 | return null; |
| 2437 | }; |
| 2438 | |
| 2439 | // Helper: Find candlestick match at pointer position (hoisted to avoid closure allocation) |
| 2440 | const findCandlestickAtPointer = ( |
no test coverage detected