@mui/x-charts
Version:
The community edition of the charts components (MUI X).
60 lines • 3.06 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import * as React from 'react';
import { InteractionContext } from '../../context/InteractionProvider';
import { getIsHighlighted, getIsFaded } from '../../hooks/useInteractionItemProps';
export function useTransformData(series) {
var seriesId = series.id,
highlightScope = series.highlightScope,
data = series.data,
faded = series.faded,
highlighted = series.highlighted,
_series$paddingAngle = series.paddingAngle,
basePaddingAngle = _series$paddingAngle === void 0 ? 0 : _series$paddingAngle,
_series$innerRadius = series.innerRadius,
baseInnerRadius = _series$innerRadius === void 0 ? 0 : _series$innerRadius,
baseOuterRadius = series.outerRadius,
_series$cornerRadius = series.cornerRadius,
baseCornerRadius = _series$cornerRadius === void 0 ? 0 : _series$cornerRadius;
var _React$useContext = React.useContext(InteractionContext),
highlightedItem = _React$useContext.item;
var getHighlightStatus = React.useCallback(function (dataIndex) {
var isHighlighted = getIsHighlighted(highlightedItem, {
type: 'pie',
seriesId: seriesId,
dataIndex: dataIndex
}, highlightScope);
var isFaded = !isHighlighted && getIsFaded(highlightedItem, {
type: 'pie',
seriesId: seriesId,
dataIndex: dataIndex
}, highlightScope);
return {
isHighlighted: isHighlighted,
isFaded: isFaded
};
}, [highlightScope, highlightedItem, seriesId]);
var dataWithHighlight = React.useMemo(function () {
return data.map(function (item, itemIndex) {
var _attibuesOverride$pad, _attibuesOverride$inn, _attibuesOverride$out, _attibuesOverride$cor;
var _getHighlightStatus = getHighlightStatus(itemIndex),
isHighlighted = _getHighlightStatus.isHighlighted,
isFaded = _getHighlightStatus.isFaded;
var attibuesOverride = _extends({
additionalRadius: 0
}, isFaded && faded || isHighlighted && highlighted || {});
var paddingAngle = Math.max(0, Math.PI * ((_attibuesOverride$pad = attibuesOverride.paddingAngle) != null ? _attibuesOverride$pad : basePaddingAngle) / 180);
var innerRadius = Math.max(0, (_attibuesOverride$inn = attibuesOverride.innerRadius) != null ? _attibuesOverride$inn : baseInnerRadius);
var outerRadius = Math.max(0, (_attibuesOverride$out = attibuesOverride.outerRadius) != null ? _attibuesOverride$out : baseOuterRadius + attibuesOverride.additionalRadius);
var cornerRadius = (_attibuesOverride$cor = attibuesOverride.cornerRadius) != null ? _attibuesOverride$cor : baseCornerRadius;
return _extends({}, item, attibuesOverride, {
isFaded: isFaded,
isHighlighted: isHighlighted,
paddingAngle: paddingAngle,
innerRadius: innerRadius,
outerRadius: outerRadius,
cornerRadius: cornerRadius
});
});
}, [baseCornerRadius, baseInnerRadius, baseOuterRadius, basePaddingAngle, data, faded, getHighlightStatus, highlighted]);
return dataWithHighlight;
}