{"version":3,"file":"PromQueryBuilderContainer.mjs","sources":["../../../../src/querybuilder/components/PromQueryBuilderContainer.tsx"],"sourcesContent":["// Core Grafana history https://github.com/grafana/grafana/blob/v11.0.0-preview/public/app/plugins/datasource/prometheus/querybuilder/components/PromQueryBuilderContainer.tsx\nimport { useEffect, useState } from 'react';\n\nimport { type PanelData } from '@grafana/data';\n\nimport { type PrometheusDatasource } from '../../datasource';\nimport { type PromQuery } from '../../types';\nimport { buildVisualQueryFromString } from '../parsing';\nimport { promQueryModeller } from '../shared/modeller_instance';\nimport { type PromVisualQuery } from '../types';\n\nimport { PromQueryBuilder } from './PromQueryBuilder';\nimport { QueryPreview } from './QueryPreview';\n\ninterface PromQueryBuilderContainerProps {\n  query: PromQuery;\n  datasource: PrometheusDatasource;\n  onChange: (update: PromQuery) => void;\n  onRunQuery: () => void;\n  data?: PanelData;\n  showExplain: boolean;\n}\n\ninterface RenderedQuery {\n  visQuery?: PromVisualQuery;\n  expr: string;\n}\n\n/**\n * This component is here just to contain the translation logic between string query and the visual query builder model.\n */\nexport function PromQueryBuilderContainer(props: PromQueryBuilderContainerProps) {\n  const { query, onChange, onRunQuery, datasource, data, showExplain } = props;\n  const [rendered, setRendered] = useState<RenderedQuery>({ expr: query.expr });\n\n  useEffect(() => {\n    // Only rebuild visual query if expr changes from outside\n    if (!rendered.visQuery || rendered.expr !== query.expr) {\n      const parseResult = buildVisualQueryFromString(query.expr ?? '');\n\n      setRendered({ expr: query.expr, visQuery: parseResult.query });\n    }\n  }, [query, rendered]);\n\n  const onVisQueryChange = (visQuery: PromVisualQuery) => {\n    const expr = promQueryModeller.renderQuery(visQuery);\n    setRendered({ expr, visQuery });\n    onChange({ ...props.query, expr });\n  };\n\n  if (!rendered.visQuery) {\n    return null;\n  }\n\n  return (\n    <>\n      <PromQueryBuilder\n        data={data}\n        datasource={datasource}\n        showExplain={showExplain}\n        query={rendered.visQuery}\n        onRunQuery={onRunQuery}\n        onChange={onVisQueryChange}\n      />\n      <QueryPreview query={query.expr} />\n    </>\n  );\n}\n"],"names":[],"mappings":";;;;;;;;AA+BO,SAAS,0BAA0B,KAAA,EAAuC;AAC/E,EAAA,MAAM,EAAE,KAAA,EAAO,QAAA,EAAU,YAAY,UAAA,EAAY,IAAA,EAAM,aAAY,GAAI,KAAA;AACvE,EAAA,MAAM,CAAC,UAAU,WAAW,CAAA,GAAI,SAAwB,EAAE,IAAA,EAAM,KAAA,CAAM,IAAA,EAAM,CAAA;AAE5E,EAAA,SAAA,CAAU,MAAM;AAnClB,IAAA,IAAA,EAAA;AAqCI,IAAA,IAAI,CAAC,QAAA,CAAS,QAAA,IAAY,QAAA,CAAS,IAAA,KAAS,MAAM,IAAA,EAAM;AACtD,MAAA,MAAM,WAAA,GAAc,0BAAA,CAAA,CAA2B,EAAA,GAAA,KAAA,CAAM,IAAA,KAAN,YAAc,EAAE,CAAA;AAE/D,MAAA,WAAA,CAAY,EAAE,IAAA,EAAM,KAAA,CAAM,MAAM,QAAA,EAAU,WAAA,CAAY,OAAO,CAAA;AAAA,IAC/D;AAAA,EACF,CAAA,EAAG,CAAC,KAAA,EAAO,QAAQ,CAAC,CAAA;AAEpB,EAAA,MAAM,gBAAA,GAAmB,CAAC,QAAA,KAA8B;AACtD,IAAA,MAAM,IAAA,GAAO,iBAAA,CAAkB,WAAA,CAAY,QAAQ,CAAA;AACnD,IAAA,WAAA,CAAY,EAAE,IAAA,EAAM,QAAA,EAAU,CAAA;AAC9B,IAAA,QAAA,CAAS,EAAE,GAAG,KAAA,CAAM,KAAA,EAAO,MAAM,CAAA;AAAA,EACnC,CAAA;AAEA,EAAA,IAAI,CAAC,SAAS,QAAA,EAAU;AACtB,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,gBAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,UAAA;AAAA,QACA,WAAA;AAAA,QACA,OAAO,QAAA,CAAS,QAAA;AAAA,QAChB,UAAA;AAAA,QACA,QAAA,EAAU;AAAA;AAAA,KACZ;AAAA,oBACA,GAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAO,KAAA,CAAM,IAAA,EAAM;AAAA,GAAA,EACnC,CAAA;AAEJ;;;;"}