kibana/x-pack/plugins/lens/public/native_renderer/native_renderer.tsx
Brandon Kobel 4584a8b570
Elastic License 2.0 (#90099)
* Updating everything except the license headers themselves

* Applying ESLint rules

* Manually replacing the stragglers
2021-02-03 18:12:39 -08:00

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),
});
}