/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0; you may not use this file except in compliance with the Elastic License
* 2.0.
*/
import React, { HTMLAttributes } from 'react';
export interface NativeRendererProps<T> extends HTMLAttributes<HTMLDivElement> {
render: (domElement: Element, props: T) => void;
nativeProps: T;
tag?: string;
}
/**
* A component which takes care of providing a mountpoint for a generic render
* function which takes an html element and an optional props object.
* By default the mountpoint element will be a div, this can be changed with the
* `tag` prop.
*
* @param props
export function NativeRenderer<T>({ render, nativeProps, tag, ...rest }: NativeRendererProps<T>) {
return React.createElement(tag || 'div', {
...rest,
ref: (el) => el && render(el, nativeProps),
});