import React from 'react'; import { TextArea, InlineFormLabel, Input, Select, HorizontalGroup } from '@grafana/ui'; import { InfluxQuery } from '../types'; import { useShadowedState } from './useShadowedState'; import { useUniqueId } from './useUniqueId'; import { RESULT_FORMATS, DEFAULT_RESULT_FORMAT } from './constants'; type Props = { query: InfluxQuery; onChange: (query: InfluxQuery) => void; onRunQuery: () => void; }; // we handle 3 fields: "query", "alias", "resultFormat" // "resultFormat" changes are applied immediately // "query" and "alias" changes only happen on onblur export const RawInfluxQLEditor = ({ query, onChange, onRunQuery }: Props): JSX.Element => { const [currentQuery, setCurrentQuery] = useShadowedState(query.query); const [currentAlias, setCurrentAlias] = useShadowedState(query.alias); const aliasElementId = useUniqueId(); const selectElementId = useUniqueId(); const resultFormat = query.resultFormat ?? DEFAULT_RESULT_FORMAT; const applyDelayedChangesAndRunQuery = () => { onChange({ ...query, query: currentQuery, alias: currentAlias, resultFormat, }); onRunQuery(); }; return (