UNPKG

@mui/x-charts

Version:

The community edition of the charts components (MUI X).

60 lines 3.06 kB
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; }