UNPKG

@mui/x-charts

Version:

The community edition of MUI X Charts components.

71 lines (69 loc) 2.03 kB
'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 } }; };