UNPKG

@mui/x-charts

Version:

The community edition of MUI X Charts components.

96 lines (91 loc) 4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.selectorChartYAxisAutoSizes = exports.selectorChartYAxisAutoSizeResults = exports.selectorChartXAxisAutoSizes = exports.selectorChartXAxisAutoSizeResults = void 0; var _store = require("@mui/x-internals/store"); var _useChartCartesianAxisLayout = require("./useChartCartesianAxisLayout.selectors"); var _computeAxisAutoSize = require("./computeAxisAutoSize"); var _useChartAxisDomains = require("./useChartAxisDomains.selectors"); // Direct state access to avoid circular dependency const selectorIsHydrated = state => state.dimensions.width && state.dimensions.height; const EMPTY_SIZES = {}; const EMPTY_RESULTS = {}; /** * Selector that computes full auto-size results for X axes that have `height: 'auto'`. * Returns a map of axis ID to full result (including group tick sizes for grouped axes). */ const selectorChartXAxisAutoSizeResults = exports.selectorChartXAxisAutoSizeResults = (0, _store.createSelectorMemoized)(_useChartCartesianAxisLayout.selectorChartRawXAxis, selectorIsHydrated, _useChartAxisDomains.selectorChartXAxisDomainsForAutoSize, function selectorChartXAxisAutoSizeResults(xAxes, isHydrated, domainsMap) { const hasAutoAxis = xAxes?.some(axis => axis.height === 'auto'); if (!hasAutoAxis || !isHydrated) { return EMPTY_RESULTS; } const results = {}; for (let axisIndex = 0; axisIndex < (xAxes?.length ?? 0); axisIndex += 1) { const axis = xAxes[axisIndex]; if (axis.height === 'auto') { const computed = (0, _computeAxisAutoSize.computeAxisAutoSize)({ axis, direction: 'x', domain: domainsMap[axis.id] }); if (computed !== undefined) { results[axis.id] = computed; } } } return results; }); /** * Selector that computes auto-sizes for X axes that have `height: 'auto'`. * Returns a map of axis ID to computed height (just the size, not group tick sizes). */ const selectorChartXAxisAutoSizes = exports.selectorChartXAxisAutoSizes = (0, _store.createSelectorMemoized)(selectorChartXAxisAutoSizeResults, function selectorChartXAxisAutoSizes(results) { if (results === EMPTY_RESULTS) { return EMPTY_SIZES; } const sizes = {}; for (const [axisId, result] of Object.entries(results)) { sizes[axisId] = result.size; } return sizes; }); /** * Selector that computes full auto-size results for Y axes that have `width: 'auto'`. * Returns a map of axis ID to full result (including group tick sizes for grouped axes). */ const selectorChartYAxisAutoSizeResults = exports.selectorChartYAxisAutoSizeResults = (0, _store.createSelectorMemoized)(_useChartCartesianAxisLayout.selectorChartRawYAxis, selectorIsHydrated, _useChartAxisDomains.selectorChartYAxisDomainsForAutoSize, function selectorChartYAxisAutoSizeResults(yAxes, isHydrated, domainsMap) { const hasAutoAxis = yAxes?.some(axis => axis.width === 'auto'); if (!hasAutoAxis || !isHydrated) { return EMPTY_RESULTS; } const results = {}; for (let axisIndex = 0; axisIndex < (yAxes?.length ?? 0); axisIndex += 1) { const axis = yAxes[axisIndex]; if (axis.width === 'auto') { const computed = (0, _computeAxisAutoSize.computeAxisAutoSize)({ axis, direction: 'y', domain: domainsMap[axis.id] }); if (computed !== undefined) { results[axis.id] = computed; } } } return results; }); /** * Selector that computes auto-sizes for Y axes that have `width: 'auto'`. * Returns a map of axis ID to computed width (just the size, not group tick sizes). */ const selectorChartYAxisAutoSizes = exports.selectorChartYAxisAutoSizes = (0, _store.createSelectorMemoized)(selectorChartYAxisAutoSizeResults, function selectorChartYAxisAutoSizes(results) { if (results === EMPTY_RESULTS) { return EMPTY_SIZES; } const sizes = {}; for (const [axisId, result] of Object.entries(results)) { sizes[axisId] = result.size; } return sizes; });