UNPKG

@mui/x-charts

Version:

The community edition of MUI X Charts components.

104 lines (99 loc) 5.85 kB
"use strict"; 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); });