UNPKG

@mui/x-charts

Version:

The community edition of MUI X Charts components.

58 lines 3.41 kB
import { createSelector, createSelectorMemoized } from '@mui/x-internals/store'; import { selectorChartSeriesConfig, selectorChartSeriesProcessed, selectorChartSeriesLayout } from "../../corePlugins/useChartSeries/index.js"; import { selectorChartXAxis, selectorChartYAxis } from "../useChartCartesianAxis/useChartCartesianAxisRendering.selectors.js"; import { selectorChartsKeyboardItem, selectorChartsHasFocusedItem } from "../useChartKeyboardNavigation/index.js"; import { selectorChartsLastInteraction } from "../useChartInteraction/useChartInteraction.selectors.js"; import { selectorChartDrawingArea } from "../../corePlugins/useChartDimensions/useChartDimensions.selectors.js"; import { isCartesianSeries } from "../../../isCartesian.js"; import { selectorChartRadiusAxis, selectorChartRotationAxis } from "../useChartPolarAxis/useChartPolarAxis.selectors.js"; const selectTooltip = state => state.tooltip; export const selectorChartsTooltipPointerItem = createSelector(selectTooltip, tooltip => tooltip?.item ?? null); export const selectorChartsTooltipPointerItemIsDefined = createSelector(selectorChartsTooltipPointerItem, item => item !== null); export const selectorChartsTooltipItem = createSelector(selectorChartsLastInteraction, selectorChartsTooltipPointerItem, selectorChartsKeyboardItem, (lastInteraction, pointerItem, keyboardItem) => lastInteraction === 'keyboard' ? keyboardItem : pointerItem ?? null); export const selectorChartsTooltipItemIsDefined = createSelector(selectorChartsLastInteraction, selectorChartsTooltipPointerItemIsDefined, selectorChartsHasFocusedItem, (lastInteraction, pointerItemIsDefined, keyboardItemIsDefined) => lastInteraction === 'keyboard' ? keyboardItemIsDefined : pointerItemIsDefined); const selectorChartsTooltipAxisConfig = createSelectorMemoized(selectorChartsTooltipItem, selectorChartXAxis, selectorChartYAxis, selectorChartRotationAxis, selectorChartRadiusAxis, selectorChartSeriesProcessed, function selectorChartsTooltipAxisConfig(identifier, { axis: xAxis, axisIds: xAxisIds }, { axis: yAxis, axisIds: yAxisIds }, rotationAxes, radiusAxes, series) { if (!identifier) { return {}; } const itemSeries = series[identifier.type]?.series[identifier.seriesId]; if (!itemSeries) { return {}; } const axesConfig = { rotationAxes, radiusAxes }; const xAxisId = isCartesianSeries(itemSeries) ? itemSeries.xAxisId ?? xAxisIds[0] : undefined; const yAxisId = isCartesianSeries(itemSeries) ? itemSeries.yAxisId ?? yAxisIds[0] : undefined; if (xAxisId !== undefined) { axesConfig.x = xAxis[xAxisId]; } if (yAxisId !== undefined) { axesConfig.y = yAxis[yAxisId]; } return axesConfig; }); export const selectorChartsTooltipItemPosition = createSelectorMemoized(selectorChartsTooltipItem, selectorChartDrawingArea, selectorChartSeriesConfig, selectorChartSeriesProcessed, selectorChartSeriesLayout, selectorChartsTooltipAxisConfig, function selectorChartsTooltipItemPosition(identifier, drawingArea, seriesConfig, series, seriesLayout, axesConfig, placement = 'top') { if (!identifier) { return null; } const itemSeries = series[identifier.type]?.series[identifier.seriesId]; if (!itemSeries) { return null; } return seriesConfig[itemSeries.type].tooltipItemPositionGetter?.({ series, seriesLayout, drawingArea, axesConfig, identifier, placement }) ?? null; });