{"version":3,"file":"QueryPattern.cjs","sources":["../../../src/querybuilder/QueryPattern.tsx"],"sourcesContent":["// Core Grafana history https://github.com/grafana/grafana/blob/v11.0.0-preview/public/app/plugins/datasource/prometheus/querybuilder/QueryPattern.tsx\nimport { css } from '@emotion/css';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { t, Trans } from '@grafana/i18n';\nimport { Button, Card, useStyles2 } from '@grafana/ui';\n\nimport { promqlGrammar } from '../promql';\n\nimport { RawQuery } from './shared/RawQuery';\nimport { promQueryModeller } from './shared/modeller_instance';\nimport { type PromQueryPattern } from './types';\n\ntype Props = {\n  pattern: PromQueryPattern;\n  hasNewQueryOption: boolean;\n  hasPreviousQuery: boolean | string;\n  selectedPatternName: string | null;\n  setSelectedPatternName: (name: string | null) => void;\n  onPatternSelect: (pattern: PromQueryPattern, selectAsNewQuery?: boolean) => void;\n};\n\nexport const QueryPattern = (props: Props) => {\n  const { pattern, onPatternSelect, hasNewQueryOption, hasPreviousQuery, selectedPatternName, setSelectedPatternName } =\n    props;\n\n  const styles = useStyles2(getStyles);\n  const lang = { grammar: promqlGrammar, name: 'promql' };\n\n  return (\n    <Card noMargin className={styles.card}>\n      <Card.Heading>{pattern.name}</Card.Heading>\n      <div className={styles.rawQueryContainer}>\n        <RawQuery\n          aria-label={t(\n            'grafana-prometheus.querybuilder.query-pattern.aria-label-raw-query',\n            '{{patternName}} raw query',\n            {\n              patternName: pattern.name,\n            }\n          )}\n          query={promQueryModeller.renderQuery({\n            metric: '',\n            labels: [],\n            operations: pattern.operations,\n            binaryQueries: pattern.binaryQueries,\n          })}\n          lang={lang}\n          className={styles.rawQuery}\n        />\n      </div>\n      <Card.Actions>\n        {selectedPatternName !== pattern.name ? (\n          <Button\n            size=\"sm\"\n            aria-label={t(\n              'grafana-prometheus.querybuilder.query-pattern.aria-label-use-this-query-button',\n              'use this query button'\n            )}\n            onClick={() => {\n              if (hasPreviousQuery) {\n                // If user has previous query, we need to confirm that they want to apply this query pattern\n                setSelectedPatternName(pattern.name);\n              } else {\n                onPatternSelect(pattern);\n              }\n            }}\n          >\n            <Trans i18nKey=\"grafana-prometheus.querybuilder.query-pattern.use-this-query\">Use this query</Trans>\n          </Button>\n        ) : (\n          <>\n            <div className={styles.spacing}>\n              {`If you would like to use this query, ${\n                hasNewQueryOption\n                  ? 'you can either apply this query pattern or create a new query'\n                  : 'this query pattern will be applied to your current query'\n              }.`}\n            </div>\n            <Button\n              size=\"sm\"\n              aria-label={t('grafana-prometheus.querybuilder.query-pattern.aria-label-back-button', 'back button')}\n              fill=\"outline\"\n              onClick={() => setSelectedPatternName(null)}\n            >\n              <Trans i18nKey=\"grafana-prometheus.querybuilder.query-pattern.back\">Back</Trans>\n            </Button>\n            <Button\n              size=\"sm\"\n              aria-label={t(\n                'grafana-prometheus.querybuilder.query-pattern.aria-label-apply-query-starter-button',\n                'apply query starter button'\n              )}\n              onClick={() => {\n                onPatternSelect(pattern);\n              }}\n            >\n              <Trans i18nKey=\"grafana-prometheus.querybuilder.query-pattern.apply-query\">Apply query</Trans>\n            </Button>\n            {hasNewQueryOption && (\n              <Button\n                size=\"sm\"\n                aria-label={t(\n                  'grafana-prometheus.querybuilder.query-pattern.aria-label-create-new-query-button',\n                  'create new query button'\n                )}\n                onClick={() => {\n                  onPatternSelect(pattern, true);\n                }}\n              >\n                <Trans i18nKey=\"grafana-prometheus.querybuilder.query-pattern.create-new-query\">Create new query</Trans>\n              </Button>\n            )}\n          </>\n        )}\n      </Card.Actions>\n    </Card>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    card: css({\n      width: '49.5%',\n      display: 'flex',\n      flexDirection: 'column',\n    }),\n    rawQueryContainer: css({\n      flexGrow: 1,\n    }),\n    rawQuery: css({\n      backgroundColor: theme.colors.background.primary,\n      padding: theme.spacing(1),\n      marginTop: theme.spacing(1),\n    }),\n    spacing: css({\n      marginBottom: theme.spacing(1),\n    }),\n  };\n};\n"],"names":["useStyles2","promqlGrammar","Card","jsx","RawQuery","t","promQueryModeller","Button","Trans","jsxs","Fragment","css"],"mappings":"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"}