@mui/x-charts
Version:
The community edition of MUI X Charts components.
48 lines (46 loc) • 1.7 kB
JavaScript
'use client';
import _extends from "@babel/runtime/helpers/esm/extends";
import * as React from 'react';
import { useItemHighlightStateGetter } from "../../hooks/useItemHighlightStateGetter.mjs";
import { useIsItemFocusedGetter } from "../../hooks/useIsItemFocusedGetter.mjs";
import { getModifiedArcProperties } from "./getModifiedArcProperties.mjs";
export function useTransformData(series) {
const {
id: seriesId,
data,
faded,
highlighted
} = series;
const getHighlightState = useItemHighlightStateGetter();
const isItemFocused = useIsItemFocusedGetter();
const dataWithHighlight = React.useMemo(() => data.map((item, itemIndex) => {
const identifier = {
type: 'pie',
seriesId,
dataIndex: itemIndex
};
const highlightState = getHighlightState(identifier);
const isHighlighted = highlightState === 'highlighted';
const isFaded = highlightState === 'faded';
const isFocused = isItemFocused(identifier);
// 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, getHighlightState, isItemFocused, series, faded, highlighted]);
return dataWithHighlight;
}