@mui/x-charts
Version:
The community edition of MUI X Charts components.
66 lines (65 loc) • 2.1 kB
JavaScript
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);
}