UNPKG

@mui/x-charts

Version:

The community edition of MUI X Charts components.

94 lines (92 loc) 3.05 kB
"use strict"; 'use client'; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.useChartZAxis = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var React = _interopRequireWildcard(require("react")); var _colorScale = require("../../../colorScale"); function addDefaultId(axisConfig, defaultId) { if (axisConfig.id !== undefined) { return axisConfig; } return (0, _extends2.default)({ id: defaultId }, axisConfig); } function processColorMap(axisConfig) { if (!axisConfig.colorMap) { return axisConfig; } return (0, _extends2.default)({}, axisConfig, { colorScale: axisConfig.colorMap.type === 'ordinal' && axisConfig.data ? (0, _colorScale.getOrdinalColorScale)((0, _extends2.default)({ values: axisConfig.data }, axisConfig.colorMap)) : (0, _colorScale.getColorScale)(axisConfig.colorMap.type === 'continuous' ? (0, _extends2.default)({ min: axisConfig.min, max: axisConfig.max }, axisConfig.colorMap) : axisConfig.colorMap) }); } function getZAxisState(zAxis, dataset) { if (!zAxis || zAxis.length === 0) { return { axis: {}, axisIds: [] }; } const zAxisLookup = {}; const axisIds = []; zAxis.forEach((axisConfig, index) => { const dataKey = axisConfig.dataKey; const defaultizedId = axisConfig.id ?? `defaultized-z-axis-${index}`; if (dataKey === undefined || axisConfig.data !== undefined) { zAxisLookup[defaultizedId] = processColorMap(addDefaultId(axisConfig, defaultizedId)); axisIds.push(defaultizedId); return; } if (dataset === undefined) { throw new Error('MUI X Charts: z-axis uses `dataKey` but no `dataset` is provided.'); } zAxisLookup[defaultizedId] = processColorMap(addDefaultId((0, _extends2.default)({}, axisConfig, { data: dataset.map(d => d[dataKey]) }), defaultizedId)); axisIds.push(defaultizedId); }); return { axis: zAxisLookup, axisIds }; } const useChartZAxis = ({ params, store }) => { const { zAxis, dataset } = params; // The effect do not track any value defined synchronously during the 1st render by hooks called after `useChartZAxis` // As a consequence, the state generated by the 1st run of this useEffect will always be equal to the initialization one const isFirstRender = React.useRef(true); React.useEffect(() => { if (isFirstRender.current) { isFirstRender.current = false; return; } store.update(prev => (0, _extends2.default)({}, prev, { zAxis: getZAxisState(zAxis, dataset) })); }, [zAxis, dataset, store]); return {}; }; exports.useChartZAxis = useChartZAxis; useChartZAxis.params = { zAxis: true, dataset: true }; useChartZAxis.getInitialState = params => ({ zAxis: getZAxisState(params.zAxis, params.dataset) });