UNPKG

@mui/x-charts

Version:

The community edition of MUI X Charts components.

66 lines (65 loc) 2.1 kB
import { useChartsLocalization, useRadiusAxes, useRotationAxes, useSeries, useXAxes, useYAxes } from "../../../hooks/index.mjs"; import { useStore } from "../../store/useStore.mjs"; import { selectorChartSeriesConfig } from "../../plugins/corePlugins/useChartSeriesConfig/index.mjs"; import { isCartesianSeries } from "../../isCartesian.mjs"; import { isPolarSeriesType } from "../../isPolar.mjs"; import { selectorChartsFocusedOrToFocusedItem } from "../../plugins/featurePlugins/useChartKeyboardNavigation/index.mjs"; /** * Get the message associated to the focused item. * @returns {string | null} the accessibility description linked to the focused item */ export function useDescription() { const store = useStore(); const focusedItem = store.use(selectorChartsFocusedOrToFocusedItem); const seriesConfig = store.use(selectorChartSeriesConfig); const seriesState = useSeries(); const { localeText } = useChartsLocalization(); const { xAxis, xAxisIds } = useXAxes(); const { yAxis, yAxisIds } = useYAxes(); const { rotationAxis, rotationAxisIds } = useRotationAxes(); const { radiusAxis, radiusAxisIds } = useRadiusAxes(); if (focusedItem === null) { return null; } const { type, seriesId } = focusedItem; const focusedSeries = seriesState[type]?.series[seriesId]; if (!focusedSeries) { return null; } const descriptionGetter = seriesConfig[type]?.descriptionGetter; if (!descriptionGetter) { return null; } const descriptionParams = { identifier: focusedItem, series: focusedSeries, localeText }; if (isCartesianSeries(focusedSeries)) { const xAxisId = focusedSeries.xAxisId ?? xAxisIds[0]; const yAxisId = focusedSeries.yAxisId ?? yAxisIds[0]; descriptionParams.xAxis = xAxis[xAxisId]; descriptionParams.yAxis = yAxis[yAxisId]; } else if (isPolarSeriesType(type)) { descriptionParams.rotationAxis = rotationAxis[rotationAxisIds[0]]; descriptionParams.radiusAxis = radiusAxis[radiusAxisIds[0]]; } return descriptionGetter(descriptionParams); }