export function createInputJsxRenderer()

in libs/core/src/lib/components/render-props.ts [62:90]


export function createInputJsxRenderer<TContext extends object>(
  input: InputRendererOptions<TContext>,
  ngZone: NgZone,
  additionalProps?: ReactContentProps
): JsxRenderFunc<TContext> | undefined {
  if (input instanceof TemplateRef) {
    const templateRenderer = createTemplateRenderer(input, ngZone, additionalProps);
    return (context: TContext) => templateRenderer.render(context);
  }

  if (input instanceof ComponentRef) {
    const componentRenderer = createComponentRenderer(input, additionalProps);
    return (context: TContext) => componentRenderer.render(context);
  }

  if (input instanceof Function) {
    const htmlRenderer = createHtmlRenderer(input, additionalProps);
    return (context: TContext) => htmlRenderer.render(context);
  }

  if (isRenderComponentOptions(input)) {
    const { componentType, factoryResolver, injector } = input;
    const componentFactory = factoryResolver.resolveComponentFactory(componentType);
    const componentRef = componentFactory.create(injector);

    // Call the function again with the created ComponentRef<TContext>
    return createInputJsxRenderer(componentRef, ngZone, additionalProps);
  }
}