import { useEffect, useMemo, useState } from 'react'; import { SelectableValue } from '@grafana/data'; import { EditorField } from '@grafana/plugin-ui'; import { Select } from '@grafana/ui'; import CloudMonitoringDatasource from '../datasource'; export interface Props { refId: string; datasource: CloudMonitoringDatasource; onChange: (projectName: string) => void; templateVariableOptions: Array>; projectName: string; } export function Project({ refId, projectName, datasource, onChange, templateVariableOptions }: Props) { const [projects, setProjects] = useState>>([]); useEffect(() => { datasource.getProjects().then((projects) => setProjects(projects)); }, [datasource]); const projectsWithTemplateVariables = useMemo( () => [ { label: 'Template Variables', options: templateVariableOptions, }, ...projects, ], [projects, templateVariableOptions] ); return (