import React, { useEffect, useMemo, useState } from 'react'; import { SelectableValue } from '@grafana/data'; import { Select } from '@grafana/ui'; import { SELECT_WIDTH } from '../constants'; import CloudMonitoringDatasource from '../datasource'; import { QueryEditorRow } from '.'; 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( () => [ projects, { label: 'Template Variables', options: templateVariableOptions, }, ...projects, ], [projects, templateVariableOptions] ); return (