UNPKG

react-intlayer

Version:

Easily internationalize i18n your React applications with type-safe multilingual content management.

51 lines (49 loc) 1.54 kB
import { createElement } from "react"; //#region src/reactElement/renderReactElement.ts const renderReactElement = (element) => { if (element === null || typeof element !== "object") return element; const convertChildrenAsArray = (element) => { const children = element.props?.children; if (Array.isArray(children)) { const childrenResult = children.map((child, index) => { const renderedChild = renderReactElement(child); if (typeof renderedChild === "object" && renderedChild !== null && "type" in renderedChild) { const childElement = renderedChild; return createElement(childElement.type, { ...childElement.props, key: index }, ...Array.isArray(childElement.props?.children) ? childElement.props.children : typeof childElement.props?.children !== "undefined" ? [childElement.props.children] : []); } return renderedChild; }); return { ...element, props: { ...element.props, children: childrenResult } }; } else if (typeof children !== "undefined" && children !== null) { const renderedChild = renderReactElement(children); return { ...element, props: { ...element.props, children: [renderedChild] } }; } return { ...element, props: { ...element.props, children: [] } }; }; const { type, props } = convertChildrenAsArray(element); return createElement(type ?? "span", props, ...props.children); }; //#endregion export { renderReactElement }; //# sourceMappingURL=renderReactElement.mjs.map