@mui/x-charts
Version:
The community edition of MUI X Charts components.
39 lines (37 loc) • 1.92 kB
JavaScript
import { createSelectorMemoized } from '@mui/x-internals/store';
import { selectorChartRawXAxis, selectorChartRawYAxis } from "./useChartCartesianAxisLayout.selectors.mjs";
import { isBandScaleConfig, isPointScaleConfig } from "../../../../models/axis.mjs";
import { selectorChartSeriesProcessed } from "../../corePlugins/useChartSeries/useChartSeries.selectors.mjs";
import { selectorChartSeriesConfig } from "../../corePlugins/useChartSeriesConfig/index.mjs";
import { getAxisExtrema } from "./getAxisExtrema.mjs";
const EMPTY_EXTREMA = {};
/**
* Selector that computes extrema for all non-band/point X axes.
* Shared between domain computation and auto-size measurement.
*/
export const selectorChartXAxisExtrema = createSelectorMemoized(selectorChartRawXAxis, selectorChartSeriesProcessed, selectorChartSeriesConfig, function selectorChartXAxisExtrema(axes, formattedSeries, seriesConfig) {
const extrema = {};
let hasExtrema = false;
axes?.forEach((axis, axisIndex) => {
if (!isBandScaleConfig(axis) && !isPointScaleConfig(axis)) {
extrema[axis.id] = getAxisExtrema(axis, 'x', seriesConfig, axisIndex, formattedSeries);
hasExtrema = true;
}
});
return hasExtrema ? extrema : EMPTY_EXTREMA;
});
/**
* Selector that computes extrema for all non-band/point Y axes.
* Shared between domain computation and auto-size measurement.
*/
export const selectorChartYAxisExtrema = createSelectorMemoized(selectorChartRawYAxis, selectorChartSeriesProcessed, selectorChartSeriesConfig, function selectorChartYAxisExtrema(axes, formattedSeries, seriesConfig) {
const extrema = {};
let hasExtrema = false;
axes?.forEach((axis, axisIndex) => {
if (!isBandScaleConfig(axis) && !isPointScaleConfig(axis)) {
extrema[axis.id] = getAxisExtrema(axis, 'y', seriesConfig, axisIndex, formattedSeries);
hasExtrema = true;
}
});
return hasExtrema ? extrema : EMPTY_EXTREMA;
});