{"version":3,"file":"renderReactElement.cjs","names":[],"sources":["../../../src/reactElement/renderReactElement.ts"],"sourcesContent":["import { createElement, type ReactElement, type ReactNode } from 'react';\n\n// This function recursively creates React elements from a given JSON-like structure\nexport const renderReactElement = (element: ReactElement<any>): any => {\n  if (element === null || typeof element !== 'object') {\n    return element;\n  }\n\n  const convertChildrenAsArray = (\n    element: ReactElement<{ children?: ReactNode }>\n  ): ReactElement<{ children?: ReactNode }> => {\n    const children = element.props?.children;\n\n    if (Array.isArray(children)) {\n      const childrenResult: ReactNode[] = children.map((child, index) => {\n        const renderedChild = renderReactElement(child as ReactElement<any>);\n\n        if (\n          typeof renderedChild === 'object' &&\n          renderedChild !== null &&\n          'type' in renderedChild\n        ) {\n          const childElement = renderedChild as ReactElement<any>;\n          return createElement(\n            childElement.type,\n            { ...childElement.props, key: index },\n            ...(Array.isArray(childElement.props?.children)\n              ? childElement.props.children\n              : typeof childElement.props?.children !== 'undefined'\n                ? [childElement.props.children]\n                : [])\n          );\n        }\n        return renderedChild;\n      });\n\n      return {\n        ...element,\n        props: { ...element.props, children: childrenResult },\n      };\n    } else if (typeof children !== 'undefined' && children !== null) {\n      const renderedChild = renderReactElement(children as ReactElement<any>);\n      return {\n        ...element,\n        props: { ...element.props, children: [renderedChild] },\n      };\n    }\n\n    return {\n      ...element,\n      props: { ...element.props, children: [] },\n    };\n  };\n\n  const fixedElement = convertChildrenAsArray(\n    element as ReactElement<{ children?: ReactNode }>\n  );\n\n  const { type, props } = fixedElement;\n\n  // Create and return the React element\n  return createElement(\n    type ?? 'span',\n    props,\n    ...(props.children as ReactNode[])\n  );\n};\n"],"mappings":";;;;;AAGA,MAAa,sBAAsB,YAAoC;AACrE,KAAI,YAAY,QAAQ,OAAO,YAAY,SACzC,QAAO;CAGT,MAAM,0BACJ,YAC2C;EAC3C,MAAM,WAAW,QAAQ,OAAO;AAEhC,MAAI,MAAM,QAAQ,SAAS,EAAE;GAC3B,MAAM,iBAA8B,SAAS,KAAK,OAAO,UAAU;IACjE,MAAM,gBAAgB,mBAAmB,MAA2B;AAEpE,QACE,OAAO,kBAAkB,YACzB,kBAAkB,QAClB,UAAU,eACV;KACA,MAAM,eAAe;AACrB,qCACE,aAAa,MACb;MAAE,GAAG,aAAa;MAAO,KAAK;MAAO,EACrC,GAAI,MAAM,QAAQ,aAAa,OAAO,SAAS,GAC3C,aAAa,MAAM,WACnB,OAAO,aAAa,OAAO,aAAa,cACtC,CAAC,aAAa,MAAM,SAAS,GAC7B,EAAE,CACT;;AAEH,WAAO;KACP;AAEF,UAAO;IACL,GAAG;IACH,OAAO;KAAE,GAAG,QAAQ;KAAO,UAAU;KAAgB;IACtD;aACQ,OAAO,aAAa,eAAe,aAAa,MAAM;GAC/D,MAAM,gBAAgB,mBAAmB,SAA8B;AACvE,UAAO;IACL,GAAG;IACH,OAAO;KAAE,GAAG,QAAQ;KAAO,UAAU,CAAC,cAAc;KAAE;IACvD;;AAGH,SAAO;GACL,GAAG;GACH,OAAO;IAAE,GAAG,QAAQ;IAAO,UAAU,EAAE;IAAE;GAC1C;;CAOH,MAAM,EAAE,MAAM,UAJO,uBACnB,QAGkC;AAGpC,iCACE,QAAQ,QACR,OACA,GAAI,MAAM,SACX"}