{"version":3,"file":"QueryBuilderContent.cjs","sources":["../../../../src/querybuilder/components/QueryBuilderContent.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { memo, useState } from 'react';\n\nimport { type DataSourceApi, getDefaultTimeRange, type PanelData } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { EditorRow } from '@grafana/plugin-ui';\n\nimport { type PrometheusDatasource } from '../../datasource';\nimport { promqlGrammar } from '../../promql';\nimport { getInitHints } from '../../query_hints';\nimport { buildVisualQueryFromString } from '../parsing';\nimport { OperationExplainedBox } from '../shared/OperationExplainedBox';\nimport { OperationList } from '../shared/OperationList';\nimport { OperationListExplained } from '../shared/OperationListExplained';\nimport { OperationsEditorRow } from '../shared/OperationsEditorRow';\nimport { QueryBuilderHints } from '../shared/QueryBuilderHints';\nimport { RawQuery } from '../shared/RawQuery';\nimport { promQueryModeller } from '../shared/modeller_instance';\nimport { type QueryBuilderOperation } from '../shared/types';\nimport { type PromVisualQuery } from '../types';\n\nimport { MetricsLabelsSection } from './MetricsLabelsSection';\nimport { EXPLAIN_LABEL_FILTER_CONTENT } from './PromQueryBuilderExplained';\n\ninterface QueryBuilderContentProps {\n  query: PromVisualQuery;\n  datasource: PrometheusDatasource;\n  onChange: (update: PromVisualQuery) => void;\n  onRunQuery: () => void;\n  data?: PanelData;\n  showExplain: boolean;\n}\n\nexport const QueryBuilderContent = memo<QueryBuilderContentProps>((props) => {\n  const { datasource, query, onChange, onRunQuery, data, showExplain } = props;\n  const [highlightedOp, setHighlightedOp] = useState<QueryBuilderOperation | undefined>();\n\n  const lang = { grammar: promqlGrammar, name: 'promql' };\n  const initHints = getInitHints(datasource);\n\n  return (\n    <>\n      <EditorRow>\n        <MetricsLabelsSection\n          query={query}\n          onChange={onChange}\n          datasource={datasource}\n          timeRange={data?.timeRange ?? getDefaultTimeRange()}\n        />\n      </EditorRow>\n      {initHints.length ? (\n        <div\n          className={css({\n            flexBasis: '100%',\n          })}\n        >\n          <div className=\"text-warning\">\n            {initHints[0].label}{' '}\n            {initHints[0].fix ? (\n              <button type=\"button\" className={'text-warning'}>\n                {initHints[0].fix.label}\n              </button>\n            ) : null}\n          </div>\n        </div>\n      ) : null}\n      {showExplain && (\n        <OperationExplainedBox\n          stepNumber={1}\n          title={<RawQuery query={`${promQueryModeller.renderQuery(query)}`} lang={lang} />}\n        >\n          {EXPLAIN_LABEL_FILTER_CONTENT}\n        </OperationExplainedBox>\n      )}\n      <OperationsEditorRow operationsLength={query.operations.length}>\n        <OperationList<PromVisualQuery>\n          queryModeller={promQueryModeller}\n          // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n          datasource={datasource as DataSourceApi}\n          query={query}\n          onChange={onChange}\n          onRunQuery={onRunQuery}\n          highlightedOp={highlightedOp}\n          timeRange={data?.timeRange ?? getDefaultTimeRange()}\n        />\n        <div data-testid={selectors.components.DataSource.Prometheus.queryEditor.builder.hints}>\n          <QueryBuilderHints\n            datasource={datasource}\n            query={query}\n            onChange={onChange}\n            data={data}\n            queryModeller={promQueryModeller}\n            buildVisualQueryFromString={buildVisualQueryFromString}\n          />\n        </div>\n      </OperationsEditorRow>\n      {showExplain && (\n        <OperationListExplained<PromVisualQuery>\n          lang={lang}\n          query={query}\n          stepNumber={2}\n          queryModeller={promQueryModeller}\n          onMouseEnter={(op: QueryBuilderOperation) => setHighlightedOp(op)}\n          onMouseLeave={() => setHighlightedOp(undefined)}\n        />\n      )}\n    </>\n  );\n});\n\nQueryBuilderContent.displayName = 'QueryBuilderContent';\n"],"names":["memo","data","useState","promqlGrammar","getInitHints","jsxs","Fragment","jsx","EditorRow","MetricsLabelsSection","getDefaultTimeRange","css","OperationExplainedBox","RawQuery","promQueryModeller","EXPLAIN_LABEL_FILTER_CONTENT","OperationsEditorRow","OperationList","selectors","QueryBuilderHints","buildVisualQueryFromString","OperationListExplained"],"mappings":"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"}