import { useState, useMemo, useEffect } from 'react'; import { FieldConfigSource, getTimeZone, PanelPlugin, PluginContextProvider, getPanelOptionsWithDefaults, OptionDefaults, useFieldOverrides, } from '@grafana/data'; import { Trans } from '@grafana/i18n'; import { getTemplateSrv, PanelRendererProps } from '@grafana/runtime'; import { ErrorBoundaryAlert, usePanelContext, useTheme2 } from '@grafana/ui'; import { appEvents } from 'app/core/core'; import { importPanelPlugin, syncGetPanelPlugin } from '../../plugins/importPanelPlugin'; const defaultFieldConfig = { defaults: {}, overrides: [] }; export function PanelRenderer
(props: PanelRendererProps
) {
const {
pluginId,
data,
timeZone = getTimeZone(),
options = {},
width,
height,
title,
onOptionsChange = () => {},
onChangeTimeRange = () => {},
onFieldConfigChange = () => {},
fieldConfig = defaultFieldConfig,
} = props;
const theme = useTheme2();
const templateSrv = getTemplateSrv();
const replace = useMemo(() => templateSrv.replace.bind(templateSrv), [templateSrv]);
const [plugin, setPlugin] = useState(syncGetPanelPlugin(pluginId));
const [error, setError] = useState = {}, F extends object = {}>(
plugin: PanelPlugin | undefined,
options: P,
fieldConfig: FieldConfigSource