/* * 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 extends HTMLAttributes { 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({ render, nativeProps, tag, ...rest }: NativeRendererProps) { return React.createElement(tag || 'div', { ...rest, ref: (el) => el && render(el, nativeProps), }); }