{"version":3,"file":"SQLVariableEditor.cjs","sources":["../../src/SQLVariableEditor.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from 'react';\n\nimport { type DataQueryRequest, type Field } from '@grafana/data';\nimport { t } from '@grafana/i18n';\nimport { EditorRows, EditorRow, EditorField } from '@grafana/plugin-ui';\nimport { Combobox, type ComboboxOption } from '@grafana/ui';\n\nimport { migrateVariableQuery } from './SQLVariableUtils';\nimport { type SqlQueryEditorProps } from './components/QueryEditor';\nimport { SqlQueryEditorLazy } from './components/QueryEditorLazy';\nimport { type SQLQuery, type SQLQueryMeta, type SQLDialect } from './types';\n\ntype SQLVariableQueryEditorProps = SqlQueryEditorProps;\n\nexport const SQLVariablesQueryEditor = <T extends SQLDialect>(props: SQLVariableQueryEditorProps) => {\n  const query = useMemo(() => migrateVariableQuery(props.query), [props.query]);\n  const dialect = props.queryHeaderProps?.dialect ?? props.datasource.dialect ?? 'other';\n  return (\n    <>\n      <SqlQueryEditorLazy\n        {...props}\n        query={query}\n        queryHeaderProps={{ hideFormatSelector: true, hideRunButton: true, dialect }}\n      />\n      <FieldMapping {...props} query={query} />\n    </>\n  );\n};\n\nconst FieldMapping = (props: SQLVariableQueryEditorProps) => {\n  const { query, datasource, onChange } = props;\n  const [choices, setChoices] = useState<ComboboxOption[]>([]);\n\n  // Track the actual SQL content to avoid re-querying when only meta changes\n  const queryRef = useRef(query);\n  queryRef.current = query;\n\n  // Only re-run the query when the SQL content changes, not when meta (valueField/textField) changes\n  const queryKey = useMemo(() => JSON.stringify({ rawSql: query.rawSql, sql: query.sql }), [query.rawSql, query.sql]);\n\n  useEffect(() => {\n    let isActive = true;\n    // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n    const subscription = datasource.query({ targets: [queryRef.current] } as DataQueryRequest<SQLQuery>).subscribe({\n      next: (response) => {\n        if (!isActive) {\n          return;\n        }\n        const fieldNames = (response.data[0] || { fields: [] }).fields.map((f: Field) => f.name);\n        setChoices(fieldNames.map((f: Field) => ({ value: f, label: f })));\n      },\n      error: () => {\n        if (isActive) {\n          setChoices([]);\n        }\n      },\n    });\n    return () => {\n      isActive = false;\n      subscription.unsubscribe();\n    };\n  }, [datasource, queryKey]);\n  const onMetaPropChange = <Key extends keyof SQLQueryMeta, Value extends SQLQueryMeta[Key]>(\n    key: Key,\n    value: Value,\n    meta = query.meta || {}\n  ) => {\n    onChange({ ...query, meta: { ...meta, [key]: value } });\n  };\n  return (\n    <EditorRows>\n      <EditorRow>\n        <EditorField label={t('grafana-sql.components.query-meta.variables.valueField', 'Value Field')}>\n          <Combobox\n            isClearable\n            value={query.meta?.valueField}\n            onChange={(e) => onMetaPropChange('valueField', e?.value)}\n            width={40}\n            options={choices}\n          />\n        </EditorField>\n        <EditorField label={t('grafana-sql.components.query-meta.variables.textField', 'Text Field')}>\n          <Combobox\n            isClearable\n            value={query.meta?.textField}\n            onChange={(e) => onMetaPropChange('textField', e?.value)}\n            width={40}\n            options={choices}\n          />\n        </EditorField>\n      </EditorRow>\n    </EditorRows>\n  );\n};\n"],"names":["useMemo","migrateVariableQuery","jsxs","Fragment","jsx","SqlQueryEditorLazy","useState","useRef","useEffect","EditorRows","EditorRow","EditorField","t","Combobox"],"mappings":"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"}