@mui/x-charts
Version:
The community edition of MUI X Charts components.
31 lines • 1.99 kB
JavaScript
import { createSelector } from "../../utils/selectors.js";
import { createIsHighlighted } from "./createIsHighlighted.js";
import { createIsFaded } from "./createIsFaded.js";
const selectHighlight = state => state.highlight;
const selectSeries = state => state.series;
export const selectorChartsHighlightScopePerSeriesId = createSelector(selectSeries, series => {
const map = new Map();
Object.keys(series.processedSeries).forEach(seriesType => {
const seriesData = series.processedSeries[seriesType];
Object.keys(seriesData?.series ?? {}).forEach(seriesId => {
const seriesItem = seriesData?.series[seriesId];
map.set(seriesId, seriesItem?.highlightScope);
});
});
return map;
});
export const selectorChartsHighlightedItem = createSelector(selectHighlight, highlight => highlight.item);
export const selectorChartsHighlightScope = createSelector([selectorChartsHighlightScopePerSeriesId, selectorChartsHighlightedItem], (seriesIdToHighlightScope, highlightedItem) => {
if (!highlightedItem) {
return null;
}
const highlightScope = seriesIdToHighlightScope.get(highlightedItem.seriesId);
if (highlightScope === undefined) {
return null;
}
return highlightScope;
});
export const selectorChartsIsHighlightedCallback = createSelector([selectorChartsHighlightScope, selectorChartsHighlightedItem], createIsHighlighted);
export const selectorChartsIsFadedCallback = createSelector([selectorChartsHighlightScope, selectorChartsHighlightedItem], createIsFaded);
export const selectorChartsIsHighlighted = createSelector([selectorChartsHighlightScope, selectorChartsHighlightedItem, (_, item) => item], (highlightScope, highlightedItem, item) => createIsHighlighted(highlightScope, highlightedItem)(item));
export const selectorChartsIsFaded = createSelector([selectorChartsHighlightScope, selectorChartsHighlightedItem, (_, item) => item], (highlightScope, highlightedItem, item) => createIsFaded(highlightScope, highlightedItem)(item));