@mui/x-charts
Version:
The community edition of MUI X Charts components.
42 lines (39 loc) • 2 kB
JavaScript
import { createSelectorMemoized, createSelector } from '@mui/x-internals/store';
import { applySeriesProcessors } from "./processSeries.mjs";
import { selectorIsItemVisibleGetter } from "../../featurePlugins/useChartVisibilityManager/index.mjs";
import { selectorChartSeriesConfig } from "../useChartSeriesConfig/useChartSeriesConfig.selectors.mjs";
export const selectorChartSeriesState = state => state.series;
export const selectorChartDefaultizedSeries = createSelector(selectorChartSeriesState, seriesState => seriesState.defaultizedSeries);
/**
* Get the dataset from the series state.
* @returns {DatasetType | undefined} The dataset.
*/
export const selectorChartsDataset = createSelector(selectorChartSeriesState, seriesState => seriesState.dataset);
/**
* Get the processed series after applying series processors.
* This selector computes the processed series on-demand from the defaultized series.
* @returns {ProcessedSeries} The processed series.
*/
export const selectorChartSeriesProcessed = createSelectorMemoized(selectorChartDefaultizedSeries, selectorChartSeriesConfig, selectorChartsDataset, selectorIsItemVisibleGetter, function selectorChartSeriesProcessed(defaultizedSeries, seriesConfig, dataset, isItemVisible) {
return applySeriesProcessors(defaultizedSeries, seriesConfig, dataset, isItemVisible);
});
/**
* Returns a function that returns the series configuration for a given series id.
*/
export const selectorChartSeriesConfigGetter = createSelectorMemoized(selectorChartSeriesConfig, selectorChartSeriesProcessed, (seriesConfig, processedSeries) => {
return function getSeriesConfigById(seriesId) {
for (const type in processedSeries) {
if (!Object.hasOwn(processedSeries, type)) {
continue;
}
const seriesGroup = processedSeries[type];
if (seriesGroup?.series) {
const item = seriesGroup.series[seriesId];
if (item) {
return seriesConfig[type];
}
}
}
return null;
};
});