@mui/x-data-grid
Version:
The Community plan edition of the Data Grid components (MUI X).
36 lines • 1.13 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import * as React from 'react';
import clsx from 'clsx';
/**
* Resolves the rendering logic for a component.
* Handles three scenarios:
* 1. A render function that receives props and state
* 2. A React element
* 3. A default element
*
* @ignore - internal hook.
*/
export function useGridComponentRenderer(defaultElement, render, props, state = {}) {
if (typeof render === 'function') {
return render(props, state);
}
if (render) {
if (render.props.className) {
props.className = clsx(render.props.className, props.className);
}
if (render.props.style || props.style) {
props.style = _extends({}, props.style, render.props.style);
}
if (render.props.sx || props.sx) {
props.sx = mergeSx(props.sx, render.props.sx);
}
return /*#__PURE__*/React.cloneElement(render, props);
}
return /*#__PURE__*/React.createElement(defaultElement, props);
}
function mergeSx(sx1, sx2) {
if (!sx1 || !sx2) {
return sx1 || sx2;
}
return (Array.isArray(sx1) ? sx1 : [sx1]).concat(Array.isArray(sx2) ? sx2 : [sx2]);
}