@mui/x-charts
Version:
The community edition of MUI X Charts components.
53 lines (51 loc) • 1.75 kB
JavaScript
'use client';
import _extends from "@babel/runtime/helpers/esm/extends";
import * as React from 'react';
import { useItemHighlightedGetter } from "../../hooks/useItemHighlightedGetter.js";
import { useIsItemFocusedGetter } from "../../hooks/useIsItemFocusedGetter.js";
import { getModifiedArcProperties } from "./getModifiedArcProperties.js";
export function useTransformData(series) {
const {
id: seriesId,
data,
faded,
highlighted
} = series;
const {
isFaded: isItemFaded,
isHighlighted: isItemHighlighted
} = useItemHighlightedGetter();
const isItemFocused = useIsItemFocusedGetter();
const dataWithHighlight = React.useMemo(() => data.map((item, itemIndex) => {
const currentItem = {
seriesId,
dataIndex: itemIndex
};
const isHighlighted = isItemHighlighted(currentItem);
const isFaded = !isHighlighted && isItemFaded(currentItem);
const isFocused = isItemFocused({
type: 'pie',
seriesId,
dataIndex: itemIndex
});
// TODO v9: Replace the second argument with the result of useSeriesLayout
const arcSizes = getModifiedArcProperties(series, {
radius: {
inner: series.innerRadius ?? 0,
outer: series.outerRadius,
label: series.arcLabelRadius ?? 0,
available: 0
}
}, isHighlighted, isFaded);
const attributesOverride = _extends({
additionalRadius: 0
}, isFaded && faded || isHighlighted && highlighted || {});
return _extends({}, item, attributesOverride, {
dataIndex: itemIndex,
isFaded,
isHighlighted,
isFocused
}, arcSizes);
}), [data, seriesId, isItemHighlighted, isItemFaded, isItemFocused, series, faded, highlighted]);
return dataWithHighlight;
}