@mui/x-charts
Version:
The community edition of the Charts components (MUI X).
48 lines (47 loc) • 1.9 kB
JavaScript
'use client';
import _extends from "@babel/runtime/helpers/esm/extends";
import * as React from 'react';
import { useHighlighted } from "../../context/index.js";
export function useTransformData(series) {
const {
id: seriesId,
data,
faded,
highlighted,
paddingAngle: basePaddingAngle = 0,
innerRadius: baseInnerRadius = 0,
arcLabelRadius: baseArcLabelRadius,
outerRadius: baseOuterRadius,
cornerRadius: baseCornerRadius = 0
} = series;
const {
isFaded: isItemFaded,
isHighlighted: isItemHighlighted
} = useHighlighted();
const dataWithHighlight = React.useMemo(() => data.map((item, itemIndex) => {
const currentItem = {
seriesId,
dataIndex: itemIndex
};
const isHighlighted = isItemHighlighted(currentItem);
const isFaded = !isHighlighted && isItemFaded(currentItem);
const attributesOverride = _extends({
additionalRadius: 0
}, isFaded && faded || isHighlighted && highlighted || {});
const paddingAngle = Math.max(0, Math.PI * (attributesOverride.paddingAngle ?? basePaddingAngle) / 180);
const innerRadius = Math.max(0, attributesOverride.innerRadius ?? baseInnerRadius);
const outerRadius = Math.max(0, attributesOverride.outerRadius ?? baseOuterRadius + attributesOverride.additionalRadius);
const cornerRadius = attributesOverride.cornerRadius ?? baseCornerRadius;
const arcLabelRadius = attributesOverride.arcLabelRadius ?? baseArcLabelRadius ?? (innerRadius + outerRadius) / 2;
return _extends({}, item, attributesOverride, {
isFaded,
isHighlighted,
paddingAngle,
innerRadius,
outerRadius,
cornerRadius,
arcLabelRadius
});
}), [baseCornerRadius, baseInnerRadius, baseOuterRadius, basePaddingAngle, baseArcLabelRadius, data, faded, highlighted, isItemFaded, isItemHighlighted, seriesId]);
return dataWithHighlight;
}