* Updating everything except the license headers themselves * Applying ESLint rules * Manually replacing the stragglers
30 lines
956 B
TypeScript
30 lines
956 B
TypeScript
/*
|
|
* 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),
|
|
});
|
|
}
|