UNPKG

@adaptabletools/adaptable

Version:

Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements

39 lines (38 loc) 1.65 kB
import { jsx as _jsx } from "react/jsx-runtime"; import * as React from 'react'; import { useAdaptable } from '../AdaptableContext'; export const ExternalRenderer = ({ render, frameworkComponent, componentName = 'N/A', onDestroy, ...rest }) => { const ref = React.useRef(null); const adaptable = useAdaptable(); const [contentsHTML, setContentsHTML] = React.useState(''); React.useLayoutEffect(() => { const element = ref.current; const adaptableApi = adaptable.api; if (render) { const html = render({ phase: 'onMount', element, ...adaptableApi.internalApi.buildBaseContext(), }); setContentsHTML(html); } else if (frameworkComponent) { adaptableApi.internalApi.createFrameworkComponent(element, frameworkComponent, 'toolbar'); } return () => { if (render) { render({ phase: 'onDestroy', element: element, ...adaptableApi.internalApi.buildBaseContext(), }); } else if (frameworkComponent) { onDestroy?.(); adaptableApi.internalApi.destroyFrameworkComponent(element, frameworkComponent, componentName); } }; }, []); const RFC = adaptable.variant === 'react' ? frameworkComponent : null; return RFC ? (_jsx("div", { ...rest, ref: ref, children: _jsx(RFC, { adaptableApi: adaptable.api }) })) : (_jsx("div", { ...rest, dangerouslySetInnerHTML: { __html: contentsHTML }, ref: ref })); };