@mui/x-charts
Version:
The community edition of MUI X Charts components.
96 lines (91 loc) • 4 kB
JavaScript
;
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;
});