@mui/x-charts
Version:
The community edition of MUI X Charts components.
43 lines • 3.13 kB
JavaScript
import { createSelector, createSelectorMemoized } from '@mui/x-internals/store';
import { createIsHighlighted } from "./createIsHighlighted.js";
import { createIsFaded } from "./createIsFaded.js";
import { getSeriesHighlightedItem, getSeriesUnfadedItem, isSeriesFaded, isSeriesHighlighted } from "./highlightStates.js";
import { selectorChartsKeyboardItem } from "../useChartKeyboardNavigation/index.js";
import { selectorChartSeriesProcessed } from "../../corePlugins/useChartSeries/useChartSeries.selectors.js";
const selectHighlight = state => state.highlight;
export const selectorChartsHighlightScopePerSeriesId = createSelector(selectorChartSeriesProcessed, processedSeries => {
const map = new Map();
Object.keys(processedSeries).forEach(seriesType => {
const seriesData = processedSeries[seriesType];
seriesData?.seriesOrder?.forEach(seriesId => {
const seriesItem = seriesData?.series[seriesId];
map.set(seriesId, seriesItem?.highlightScope);
});
});
return map;
});
export const selectorChartsHighlightedItem = createSelectorMemoized(selectHighlight, selectorChartsKeyboardItem, function selectorChartsHighlightedItem(highlight, keyboardItem) {
return highlight.isControlled || highlight.lastUpdate === 'pointer' ? highlight.item : keyboardItem;
});
export const selectorChartsHighlightScope = createSelector(selectorChartsHighlightScopePerSeriesId, selectorChartsHighlightedItem, function selectorChartsHighlightScope(seriesIdToHighlightScope, highlightedItem) {
if (!highlightedItem) {
return null;
}
const highlightScope = seriesIdToHighlightScope.get(highlightedItem.seriesId);
if (highlightScope === undefined) {
return null;
}
return highlightScope;
});
export const selectorChartsIsHighlightedCallback = createSelectorMemoized(selectorChartsHighlightScope, selectorChartsHighlightedItem, createIsHighlighted);
export const selectorChartsIsFadedCallback = createSelectorMemoized(selectorChartsHighlightScope, selectorChartsHighlightedItem, createIsFaded);
export const selectorChartsIsHighlighted = createSelector(selectorChartsHighlightScope, selectorChartsHighlightedItem, function selectorChartsIsHighlighted(highlightScope, highlightedItem, item) {
return createIsHighlighted(highlightScope, highlightedItem)(item);
});
export const selectorChartIsSeriesHighlighted = createSelector(selectorChartsHighlightScope, selectorChartsHighlightedItem, isSeriesHighlighted);
export const selectorChartIsSeriesFaded = createSelector(selectorChartsHighlightScope, selectorChartsHighlightedItem, isSeriesFaded);
export const selectorChartSeriesUnfadedItem = createSelector(selectorChartsHighlightScope, selectorChartsHighlightedItem, getSeriesUnfadedItem);
export const selectorChartSeriesHighlightedItem = createSelector(selectorChartsHighlightScope, selectorChartsHighlightedItem, getSeriesHighlightedItem);
export const selectorChartsIsFaded = createSelector(selectorChartsHighlightScope, selectorChartsHighlightedItem, function selectorChartsIsFaded(highlightScope, highlightedItem, item) {
return createIsFaded(highlightScope, highlightedItem)(item);
});