import React, { createElement, ReactElement, ElementType, ComponentType } from 'react';
import { UR } from 'getstream';
export type ElementOrComponentOrLiteralType
=
| string
| number
| boolean
| null
| ReactElement
| ElementType
| ComponentType
;
export function smartRender(
ElementOrComponentOrLiteral?: ElementOrComponentOrLiteralType,
props?: T,
fallback?: ElementOrComponentOrLiteralType,
) {
const RenderComponent = ElementOrComponentOrLiteral === undefined ? fallback : ElementOrComponentOrLiteral;
if (React.isValidElement(RenderComponent)) return RenderComponent;
if (
typeof RenderComponent === 'string' ||
typeof RenderComponent === 'number' ||
typeof RenderComponent === 'boolean' ||
RenderComponent == null
) {
return RenderComponent;
}
return createElement(RenderComponent, props);
}