UNPKG

@mui/x-charts

Version:

The community edition of MUI X Charts components.

76 lines (73 loc) 2.66 kB
'use client'; import { useSeries } from "../hooks/useSeries.js"; import { selectorChartsTooltipItem } from "../internals/plugins/featurePlugins/useChartTooltip/index.js"; import { useStore } from "../internals/store/useStore.js"; import { useRotationAxes, useXAxes, useYAxes } from "../hooks/useAxis.js"; import { useZAxes } from "../hooks/useZAxis.js"; import { selectorChartSeriesConfig } from "../internals/plugins/corePlugins/useChartSeries/useChartSeries.selectors.js"; import { isCartesianSeries } from "../internals/isCartesian.js"; export function useInternalItemTooltip() { const store = useStore(); const identifier = store.use(selectorChartsTooltipItem); const seriesConfig = store.use(selectorChartSeriesConfig); const series = useSeries(); const { xAxis, xAxisIds } = useXAxes(); const { yAxis, yAxisIds } = useYAxes(); const { zAxis, zAxisIds } = useZAxes(); const { rotationAxis, rotationAxisIds } = useRotationAxes(); if (!identifier) { return null; } const itemSeries = series[identifier.type]?.series[identifier.seriesId]; if (!itemSeries) { return null; } const xAxisId = isCartesianSeries(itemSeries) ? itemSeries.xAxisId ?? xAxisIds[0] : undefined; const yAxisId = isCartesianSeries(itemSeries) ? itemSeries.yAxisId ?? yAxisIds[0] : undefined; const zAxisId = 'zAxisId' in itemSeries ? itemSeries.zAxisId ?? zAxisIds[0] : zAxisIds[0]; const rotationAxisId = rotationAxisIds[0]; const getColor = seriesConfig[itemSeries.type].colorProcessor?.(itemSeries, xAxisId !== undefined ? xAxis[xAxisId] : undefined, yAxisId !== undefined ? yAxis[yAxisId] : undefined, zAxisId !== undefined ? zAxis[zAxisId] : undefined) ?? (() => ''); const axesConfig = {}; if (xAxisId !== undefined) { axesConfig.x = xAxis[xAxisId]; } if (yAxisId !== undefined) { axesConfig.y = yAxis[yAxisId]; } if (rotationAxisId !== undefined) { axesConfig.rotation = rotationAxis[rotationAxisId]; } return seriesConfig[itemSeries.type].tooltipGetter({ series: itemSeries, axesConfig, getColor, identifier }); } /** * Returns a config object when the tooltip contains a single item to display. * Some specific charts like radar need more complex structure. Use specific hook like `useRadarItemTooltip` for them. * @returns The tooltip item config */ export const useItemTooltip = () => { return useInternalItemTooltip(); }; /** * Contains an object per value with their content and the label of the associated metric. * @returns The tooltip item configs */ export const useRadarItemTooltip = () => { return useInternalItemTooltip(); };