UNPKG

@mui/x-charts

Version:

The community edition of MUI X Charts components.

42 lines (39 loc) 2 kB
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; }; });