@mui/x-charts
Version:
The community edition of MUI X Charts components.
104 lines (99 loc) • 5.85 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.selectorChartsHighlightScopePerSeriesId = exports.selectorChartsHighlightScope = exports.selectorChartSeriesUnfadedItem = exports.selectorChartSeriesHighlightedItem = exports.selectorChartIsSeriesHighlighted = exports.selectorChartIsSeriesFaded = void 0;
exports.selectorChartsHighlightState = selectorChartsHighlightState;
exports.selectorChartsHighlightStateCallback = selectorChartsHighlightStateCallback;
exports.selectorChartsHighlightedItem = void 0;
var _store = require("@mui/x-internals/store");
var _highlightStates = require("./highlightStates");
var _useChartKeyboardNavigation = require("../useChartKeyboardNavigation");
var _useChartSeries = require("../../corePlugins/useChartSeries/useChartSeries.selectors");
var _useChartSeriesConfig = require("../../corePlugins/useChartSeriesConfig");
const selectHighlight = state => state.highlight;
const selectorChartsHighlightScopePerSeriesId = exports.selectorChartsHighlightScopePerSeriesId = (0, _store.createSelectorMemoized)(_useChartSeries.selectorChartSeriesProcessed, processedSeries => {
const map = {};
Object.keys(processedSeries).forEach(seriesType => {
map[seriesType] = new Map();
const seriesData = processedSeries[seriesType];
seriesData?.seriesOrder?.forEach(seriesId => {
const seriesItem = seriesData?.series[seriesId];
if (seriesItem?.highlightScope !== undefined) {
map[seriesType]?.set(seriesId, seriesItem.highlightScope);
}
});
});
return map;
});
const selectorChartsHighlightedItem = exports.selectorChartsHighlightedItem = (0, _store.createSelectorMemoized)(selectHighlight, _useChartKeyboardNavigation.selectorChartsKeyboardItem, function selectorChartsHighlightedItem(highlight, keyboardItem) {
return highlight.isControlled || highlight.lastUpdate === 'pointer' ? highlight.item : keyboardItem;
});
const selectorChartsHighlightScope = exports.selectorChartsHighlightScope = (0, _store.createSelector)(selectorChartsHighlightScopePerSeriesId, selectorChartsHighlightedItem, function selectorChartsHighlightScope(seriesIdToHighlightScope, highlightedItem) {
if (!highlightedItem) {
return null;
}
const highlightScope = seriesIdToHighlightScope[highlightedItem.type]?.get(highlightedItem.seriesId);
if (highlightScope === undefined) {
return null;
}
return highlightScope;
});
const alwaysNone = () => 'none';
const selectorChartsHighlightStateCallbackImpl = (0, _store.createSelectorMemoized)(selectorChartsHighlightScope, selectorChartsHighlightedItem, _useChartSeriesConfig.selectorChartSeriesConfig, function selectorChartsHighlightStateCallbackCombiner(highlightScope, highlightedItem, seriesConfig) {
if (highlightedItem === null || highlightScope === null) {
return alwaysNone;
}
const config = seriesConfig[highlightedItem.type];
const isHighlighted = config.isHighlightedCreator(highlightScope, highlightedItem);
const isFaded = config.isFadedCreator(highlightScope, highlightedItem);
return item => {
if (isHighlighted(item)) {
return 'highlighted';
}
if (isFaded(item)) {
return 'faded';
}
return 'none';
};
});
/**
* Returns a callback to get the highlight state of an item.
* Uses an explicit function declaration so that TypeScript preserves
* the `HighlightItemIdentifier<ChartSeriesType>` reference in `.d.ts` output,
* allowing module augmentation from pro/premium packages to extend the accepted types.
*/
function selectorChartsHighlightStateCallback(state) {
return selectorChartsHighlightStateCallbackImpl(state);
}
const selectorChartsHighlightStateImpl = (0, _store.createSelectorMemoized)(selectorChartsHighlightStateCallback, function selectorChartsHighlightStateCombiner(getHighlightState, item) {
return getHighlightState(item);
});
/**
* Returns the highlight state of an item.
* Uses an explicit function declaration so that TypeScript preserves
* the `HighlightItemIdentifier<ChartSeriesType>` reference in `.d.ts` output,
* allowing module augmentation from pro/premium packages to extend the accepted types.
*/
function selectorChartsHighlightState(state, item) {
return selectorChartsHighlightStateImpl(state, item);
}
// ==========================================================================================
//
// Selectors for a specific series
//
// Those selectors are for series with batch rendering (e.g., Scatter, Bar, Line)
//
// ==========================================================================================
const selectorChartIsSeriesHighlighted = exports.selectorChartIsSeriesHighlighted = (0, _store.createSelector)(selectorChartsHighlightScope, selectorChartsHighlightedItem, function selectorChartIsSeriesHighlighted(scope, item, seriesId) {
return (0, _highlightStates.isSeriesHighlighted)(scope, item, seriesId);
});
const selectorChartIsSeriesFaded = exports.selectorChartIsSeriesFaded = (0, _store.createSelector)(selectorChartsHighlightScope, selectorChartsHighlightedItem, function selectorChartIsSeriesFaded(scope, item, seriesId) {
return (0, _highlightStates.isSeriesFaded)(scope, item, seriesId);
});
const selectorChartSeriesUnfadedItem = exports.selectorChartSeriesUnfadedItem = (0, _store.createSelector)(selectorChartsHighlightScope, selectorChartsHighlightedItem, function selectorChartSeriesUnfadedItem(scope, item, seriesId) {
return (0, _highlightStates.getSeriesUnfadedDataIndex)(scope, item, seriesId);
});
const selectorChartSeriesHighlightedItem = exports.selectorChartSeriesHighlightedItem = (0, _store.createSelector)(selectorChartsHighlightScope, selectorChartsHighlightedItem, function selectorChartSeriesHighlightedItem(scope, item, seriesId) {
return (0, _highlightStates.getSeriesHighlightedDataIndex)(scope, item, seriesId);
});