@mui/x-charts
Version:
The community edition of MUI X Charts components.
31 lines (28 loc) • 1.87 kB
JavaScript
import { createSelectorMemoized } from '@mui/x-internals/store';
import { selectorChartRawXAxis, selectorChartRawYAxis } from "./useChartCartesianAxisLayout.selectors.mjs";
import { selectorChartSeriesProcessed } from "../../corePlugins/useChartSeries/useChartSeries.selectors.mjs";
import { selectorChartXAxisExtrema, selectorChartYAxisExtrema } from "./useChartAxisExtrema.selectors.mjs";
import { computeAxisDomainsMap } from "./domain.mjs";
/**
* Default tick number used for auto-size domain computation.
* We use a fixed value instead of deriving it from the drawing area
* to avoid a circular dependency (auto-size → drawing area → axis sizes → auto-size).
*/
const DEFAULT_TICK_NUMBER = 8;
const EMPTY_DOMAINS = {};
/**
* Selector that computes niced domains for X axes.
* Used by auto-size to get accurate tick labels that match what the chart actually displays.
*/
export const selectorChartXAxisDomainsForAutoSize = createSelectorMemoized(selectorChartRawXAxis, selectorChartSeriesProcessed, selectorChartXAxisExtrema, function selectorChartXAxisDomainsForAutoSize(axes, formattedSeries, extremaMap) {
const domains = computeAxisDomainsMap(axes, formattedSeries, DEFAULT_TICK_NUMBER, extremaMap, 'x');
return Object.keys(domains).length > 0 ? domains : EMPTY_DOMAINS;
});
/**
* Selector that computes niced domains for Y axes.
* Used by auto-size to get accurate tick labels that match what the chart actually displays.
*/
export const selectorChartYAxisDomainsForAutoSize = createSelectorMemoized(selectorChartRawYAxis, selectorChartSeriesProcessed, selectorChartYAxisExtrema, function selectorChartYAxisDomainsForAutoSize(axes, formattedSeries, extremaMap) {
const domains = computeAxisDomainsMap(axes, formattedSeries, DEFAULT_TICK_NUMBER, extremaMap, 'y');
return Object.keys(domains).length > 0 ? domains : EMPTY_DOMAINS;
});