@mui/x-charts
Version:
The community edition of MUI X Charts components.
71 lines (69 loc) • 2.03 kB
JavaScript
'use client';
import _extends from "@babel/runtime/helpers/esm/extends";
import { useEffectAfterFirstRender } from '@mui/x-internals/useEffectAfterFirstRender';
import useEventCallback from '@mui/utils/useEventCallback';
import { rainbowSurgePalette } from "../../../../colorPalettes/index.js";
import { defaultizeSeries } from "./processSeries.js";
import { serializeIdentifier as serializeIdentifierFn } from "./serializeIdentifier.js";
export const useChartSeries = ({
params,
store,
seriesConfig
}) => {
const {
series,
dataset,
theme,
colors
} = params;
// The effect do not track any value defined synchronously during the 1st render by hooks called after `useChartSeries`
// As a consequence, the state generated by the 1st run of this useEffect will always be equal to the initialization one
useEffectAfterFirstRender(() => {
store.set('series', _extends({}, store.state.series, {
defaultizedSeries: defaultizeSeries({
series,
colors: typeof colors === 'function' ? colors(theme) : colors,
seriesConfig
}),
dataset
}));
}, [colors, dataset, series, theme, seriesConfig, store]);
const serializeIdentifier = useEventCallback(identifier => serializeIdentifierFn(seriesConfig, identifier));
return {
instance: {
serializeIdentifier
}
};
};
useChartSeries.params = {
dataset: true,
series: true,
colors: true,
theme: true
};
const EMPTY_ARRAY = [];
useChartSeries.getDefaultizedParams = ({
params
}) => _extends({}, params, {
series: params.series?.length ? params.series : EMPTY_ARRAY,
colors: params.colors ?? rainbowSurgePalette,
theme: params.theme ?? 'light'
});
useChartSeries.getInitialState = ({
series = [],
colors,
theme,
dataset
}, _, seriesConfig) => {
return {
series: {
seriesConfig,
defaultizedSeries: defaultizeSeries({
series,
colors: typeof colors === 'function' ? colors(theme) : colors,
seriesConfig
}),
dataset
}
};
};