@mui/x-charts
Version:
The community edition of MUI X Charts components.
106 lines (101 loc) • 6.41 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.selectorChartZoomOptionsLookup = exports.selectorChartZoomMap = exports.selectorChartZoomIsInteracting = exports.selectorChartYAxis = exports.selectorChartXAxis = exports.selectorChartRawAxis = exports.selectorChartAxisZoomOptionsLookup = exports.selectorChartAxis = exports.createZoomMap = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _useChartDimensions = require("../../corePlugins/useChartDimensions");
var _useChartSeries = require("../../corePlugins/useChartSeries");
var _selectors = require("../../utils/selectors");
var _computeAxisValue = require("./computeAxisValue");
var _createAxisFilterMapper = require("./createAxisFilterMapper");
var _createZoomLookup = require("./createZoomLookup");
var _useChartCartesianAxisLayout = require("./useChartCartesianAxisLayout.selectors");
const createZoomMap = zoom => {
const zoomItemMap = new Map();
zoom.forEach(zoomItem => {
zoomItemMap.set(zoomItem.axisId, zoomItem);
});
return zoomItemMap;
};
exports.createZoomMap = createZoomMap;
const selectorChartZoomState = state => state.zoom;
/**
* Following selectors are not exported because they exist in the MIT chart only to ba able to reuse the Zoom state from the pro.
*/
const selectorChartZoomIsInteracting = exports.selectorChartZoomIsInteracting = (0, _selectors.createSelector)(selectorChartZoomState, zoom => zoom?.isInteracting);
const selectorChartZoomMap = exports.selectorChartZoomMap = (0, _selectors.createSelector)(selectorChartZoomState, zoom => zoom?.zoomData && createZoomMap(zoom?.zoomData));
const selectorChartXZoomOptionsLookup = (0, _selectors.createSelector)(_useChartCartesianAxisLayout.selectorChartRawXAxis, (0, _createZoomLookup.createZoomLookup)('x'));
const selectorChartYZoomOptionsLookup = (0, _selectors.createSelector)(_useChartCartesianAxisLayout.selectorChartRawYAxis, (0, _createZoomLookup.createZoomLookup)('y'));
const selectorChartZoomOptionsLookup = exports.selectorChartZoomOptionsLookup = (0, _selectors.createSelector)([selectorChartXZoomOptionsLookup, selectorChartYZoomOptionsLookup], (xLookup, yLookup) => (0, _extends2.default)({}, xLookup, yLookup));
const selectorChartAxisZoomOptionsLookup = exports.selectorChartAxisZoomOptionsLookup = (0, _selectors.createSelector)([selectorChartXZoomOptionsLookup, selectorChartYZoomOptionsLookup, (state, axisId) => axisId], (xLookup, yLookup, axisId) => xLookup[axisId] ?? yLookup[axisId]);
const selectorChartXFilter = (0, _selectors.createSelector)([selectorChartZoomMap, selectorChartZoomOptionsLookup, _useChartSeries.selectorChartSeriesConfig, _useChartSeries.selectorChartSeriesProcessed], (zoomMap, zoomOptions, seriesConfig, formattedSeries) => zoomMap && zoomOptions && (0, _createAxisFilterMapper.createAxisFilterMapper)({
zoomMap,
zoomOptions,
seriesConfig,
formattedSeries,
direction: 'x'
}));
const selectorChartYFilter = (0, _selectors.createSelector)([selectorChartZoomMap, selectorChartZoomOptionsLookup, _useChartSeries.selectorChartSeriesConfig, _useChartSeries.selectorChartSeriesProcessed], (zoomMap, zoomOptions, seriesConfig, formattedSeries) => zoomMap && zoomOptions && (0, _createAxisFilterMapper.createAxisFilterMapper)({
zoomMap,
zoomOptions,
seriesConfig,
formattedSeries,
direction: 'y'
}));
const selectorChartZoomAxisFilters = (0, _selectors.createSelector)([selectorChartXFilter, selectorChartYFilter, _useChartCartesianAxisLayout.selectorChartRawXAxis, _useChartCartesianAxisLayout.selectorChartRawYAxis], (xMapper, yMapper, xAxis, yAxis) => {
if (xMapper === undefined || yMapper === undefined) {
// Early return if there is no zoom.
return undefined;
}
const xFilters = xAxis?.reduce((acc, axis, index) => {
const filter = xMapper(axis, index);
if (filter !== null) {
acc[axis.id] = filter;
}
return acc;
}, {});
const yFilters = yAxis?.reduce((acc, axis, index) => {
const filter = yMapper(axis, index);
if (filter !== null) {
acc[axis.id] = filter;
}
return acc;
}, {});
if (Object.keys(xFilters ?? {}).length === 0 && Object.keys(yFilters ?? {}).length === 0) {
return undefined;
}
return (0, _createAxisFilterMapper.createGetAxisFilters)((0, _extends2.default)({}, xFilters, yFilters));
});
/**
* The only interesting selectors that merge axis data and zoom if provided.
*/
const selectorChartXAxis = exports.selectorChartXAxis = (0, _selectors.createSelector)([_useChartCartesianAxisLayout.selectorChartRawXAxis, _useChartDimensions.selectorChartDrawingArea, _useChartSeries.selectorChartSeriesProcessed, _useChartSeries.selectorChartSeriesConfig, selectorChartZoomMap, selectorChartZoomOptionsLookup, selectorChartZoomAxisFilters], (axis, drawingArea, formattedSeries, seriesConfig, zoomMap, zoomOptions, getFilters) => (0, _computeAxisValue.computeAxisValue)({
drawingArea,
formattedSeries,
axis,
seriesConfig,
axisDirection: 'x',
zoomMap,
zoomOptions,
getFilters
}));
const selectorChartYAxis = exports.selectorChartYAxis = (0, _selectors.createSelector)([_useChartCartesianAxisLayout.selectorChartRawYAxis, _useChartDimensions.selectorChartDrawingArea, _useChartSeries.selectorChartSeriesProcessed, _useChartSeries.selectorChartSeriesConfig, selectorChartZoomMap, selectorChartZoomOptionsLookup, selectorChartZoomAxisFilters], (axis, drawingArea, formattedSeries, seriesConfig, zoomMap, zoomOptions, getFilters) => (0, _computeAxisValue.computeAxisValue)({
drawingArea,
formattedSeries,
axis,
seriesConfig,
axisDirection: 'y',
zoomMap,
zoomOptions,
getFilters
}));
const selectorChartAxis = exports.selectorChartAxis = (0, _selectors.createSelector)([selectorChartXAxis, selectorChartYAxis, (_, axisId) => axisId], (xAxes, yAxes, axisId) => xAxes?.axis[axisId] ?? yAxes?.axis[axisId]);
const selectorChartRawAxis = exports.selectorChartRawAxis = (0, _selectors.createSelector)([_useChartCartesianAxisLayout.selectorChartRawXAxis, _useChartCartesianAxisLayout.selectorChartRawYAxis, (state, axisId) => axisId], (xAxes, yAxes, axisId) => {
const axis = xAxes?.find(a => a.id === axisId) ?? yAxes?.find(a => a.id === axisId) ?? null;
if (!axis) {
return undefined;
}
return axis;
});
;