{"version":3,"file":"PromSettings.cjs","sources":["../../../src/configuration/PromSettings.tsx"],"sourcesContent":["// Core Grafana history https://github.com/grafana/grafana/blob/v11.0.0-preview/public/app/plugins/datasource/prometheus/configuration/PromSettings.tsx\nimport { type SyntheticEvent, useState } from 'react';\n\nimport {\n  type DataSourcePluginOptionsEditorProps,\n  type DataSourceSettings,\n  onUpdateDatasourceJsonDataOptionChecked,\n  type SelectableValue,\n  updateDatasourcePluginJsonDataOption,\n} from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { Trans, t } from '@grafana/i18n';\nimport { ConfigSubSection } from '@grafana/plugin-ui';\nimport { Box, InlineField, Input, Select, Stack, Switch, TextLink, useTheme2 } from '@grafana/ui';\n\nimport {\n  DEFAULT_SERIES_LIMIT,\n  DURATION_REGEX,\n  durationError,\n  MULTIPLE_DURATION_REGEX,\n  NON_NEGATIVE_INTEGER_REGEX,\n  PROM_CONFIG_LABEL_WIDTH,\n  seriesLimitError,\n} from '../constants';\nimport { QueryEditorMode } from '../querybuilder/shared/types';\nimport { defaultPrometheusQueryOverlapWindow } from '../querycache/QueryCache';\nimport { PromApplication, PrometheusCacheLevel, type PromOptions } from '../types';\n\nimport { ExemplarsSettings } from './ExemplarsSettings';\nimport { PromFlavorVersions } from './PromFlavorVersions';\nimport { docsTip, overhaulStyles, validateInput } from './shared/utils';\n\ntype Props = Pick<DataSourcePluginOptionsEditorProps<PromOptions>, 'options' | 'onOptionsChange'> & {\n  /** Hide the Prometheus type and version dropdowns */\n  hidePrometheusTypeVersion?: boolean;\n  /** Hide the Exemplars settings section */\n  hideExemplars?: boolean;\n};\n\nconst httpOptions = [\n  { value: 'POST', label: 'POST' },\n  { value: 'GET', label: 'GET' },\n];\n\nconst cacheValueOptions = [\n  { value: PrometheusCacheLevel.Low, label: 'Low' },\n  { value: PrometheusCacheLevel.Medium, label: 'Medium' },\n  { value: PrometheusCacheLevel.High, label: 'High' },\n  { value: PrometheusCacheLevel.None, label: 'None' },\n];\n\ntype PrometheusSelectItemsType = Array<{ value: PromApplication; label: PromApplication }>;\n\ntype ValidDuration = {\n  timeInterval: string;\n  queryTimeout: string;\n  incrementalQueryOverlapWindow: string;\n};\n\nconst prometheusFlavorSelectItems: PrometheusSelectItemsType = [\n  { value: PromApplication.Prometheus, label: PromApplication.Prometheus },\n  { value: PromApplication.Cortex, label: PromApplication.Cortex },\n  { value: PromApplication.Mimir, label: PromApplication.Mimir },\n  { value: PromApplication.Thanos, label: PromApplication.Thanos },\n];\n\nconst getOptionsWithDefaults = (options: DataSourceSettings<PromOptions>) => {\n  if (options.jsonData.httpMethod) {\n    return options;\n  }\n\n  // We are explicitly adding httpMethod so, it is correctly displayed in dropdown.\n  // This way, it is more predictable for users.\n  return { ...options, jsonData: { ...options.jsonData, httpMethod: 'POST' } };\n};\n\nexport const PromSettings = (props: Props) => {\n  const theme = useTheme2();\n  const styles = overhaulStyles(theme);\n  const { onOptionsChange, hidePrometheusTypeVersion, hideExemplars } = props;\n\n  const editorOptions = [\n    {\n      value: QueryEditorMode.Builder,\n      label: t('grafana-prometheus.configuration.prom-settings.editor-options.label-builder', 'Builder'),\n    },\n    {\n      value: QueryEditorMode.Code,\n      label: t('grafana-prometheus.configuration.prom-settings.editor-options.label-code', 'Code'),\n    },\n  ];\n\n  const optionsWithDefaults = getOptionsWithDefaults(props.options);\n  const [validDuration, updateValidDuration] = useState<ValidDuration>({\n    timeInterval: '',\n    queryTimeout: '',\n    incrementalQueryOverlapWindow: '',\n  });\n\n  const [seriesLimit, setSeriesLimit] = useState<string>(\n    optionsWithDefaults.jsonData.seriesLimit?.toString() || `${DEFAULT_SERIES_LIMIT}`\n  );\n\n  return (\n    <>\n      <ConfigSubSection\n        title={t('grafana-prometheus.configuration.prom-settings.title-interval-behaviour', 'Interval behaviour')}\n        className={styles.container}\n      >\n        <Box marginBottom={5}>\n          <Stack direction=\"column\" gap={0.5}>\n            {/* Scrape interval */}\n            <InlineField\n              label={t('grafana-prometheus.configuration.prom-settings.label-scrape-interval', 'Scrape interval')}\n              labelWidth={PROM_CONFIG_LABEL_WIDTH}\n              tooltip={\n                <>\n                  <Trans\n                    i18nKey=\"grafana-prometheus.configuration.prom-settings.tooltip-scrape-interval\"\n                    values={{ default: '15s' }}\n                  >\n                    This interval is how frequently Prometheus scrapes targets. Set this to the typical scrape and\n                    evaluation interval configured in your Prometheus config file. If you set this to a greater value\n                    than your Prometheus config file interval, Grafana will evaluate the data according to this interval\n                    and you will see less data points. Defaults to {'{{default}}'}.\n                  </Trans>{' '}\n                  {docsTip()}\n                </>\n              }\n              interactive={true}\n              disabled={optionsWithDefaults.readOnly}\n            >\n              <>\n                <Input\n                  className=\"width-20\"\n                  value={optionsWithDefaults.jsonData.timeInterval}\n                  spellCheck={false}\n                  // eslint-disable-next-line @grafana/i18n/no-untranslated-strings\n                  placeholder=\"15s\"\n                  onChange={onChangeHandler('timeInterval', optionsWithDefaults, onOptionsChange)}\n                  onBlur={(e) =>\n                    updateValidDuration({\n                      ...validDuration,\n                      timeInterval: e.currentTarget.value,\n                    })\n                  }\n                  data-testid={selectors.components.DataSource.Prometheus.configPage.scrapeInterval}\n                />\n                {validateInput(validDuration.timeInterval, DURATION_REGEX, durationError)}\n              </>\n            </InlineField>\n            {/* Query Timeout */}\n            <InlineField\n              label={t('grafana-prometheus.configuration.prom-settings.label-query-timeout', 'Query timeout')}\n              labelWidth={PROM_CONFIG_LABEL_WIDTH}\n              tooltip={\n                <>\n                  <Trans i18nKey=\"grafana-prometheus.configuration.prom-settings.tooltip-query-timeout\">\n                    Set the Prometheus query timeout.\n                  </Trans>{' '}\n                  {docsTip()}\n                </>\n              }\n              interactive={true}\n              disabled={optionsWithDefaults.readOnly}\n            >\n              <>\n                <Input\n                  className=\"width-20\"\n                  value={optionsWithDefaults.jsonData.queryTimeout}\n                  onChange={onChangeHandler('queryTimeout', optionsWithDefaults, onOptionsChange)}\n                  spellCheck={false}\n                  // eslint-disable-next-line @grafana/i18n/no-untranslated-strings\n                  placeholder=\"60s\"\n                  onBlur={(e) =>\n                    updateValidDuration({\n                      ...validDuration,\n                      queryTimeout: e.currentTarget.value,\n                    })\n                  }\n                  data-testid={selectors.components.DataSource.Prometheus.configPage.queryTimeout}\n                />\n                {validateInput(validDuration.queryTimeout, DURATION_REGEX, durationError)}\n              </>\n            </InlineField>\n          </Stack>\n        </Box>\n      </ConfigSubSection>\n\n      <ConfigSubSection\n        title={t('grafana-prometheus.configuration.prom-settings.title-query-editor', 'Query editor')}\n        className={styles.container}\n      >\n        <Box marginBottom={5}>\n          <Stack direction=\"column\" gap={0.5}>\n            <InlineField\n              label={t('grafana-prometheus.configuration.prom-settings.label-default-editor', 'Default editor')}\n              labelWidth={PROM_CONFIG_LABEL_WIDTH}\n              tooltip={\n                <>\n                  <Trans i18nKey=\"grafana-prometheus.configuration.prom-settings.tooltip-default-editor\">\n                    Set default editor option for all users of this data source.\n                  </Trans>{' '}\n                  {docsTip()}\n                </>\n              }\n              interactive={true}\n              disabled={optionsWithDefaults.readOnly}\n            >\n              <Select\n                aria-label={t(\n                  'grafana-prometheus.configuration.prom-settings.aria-label-default-editor',\n                  'Default Editor (Code or Builder)'\n                )}\n                options={editorOptions}\n                value={\n                  editorOptions.find((o) => o.value === optionsWithDefaults.jsonData.defaultEditor) ??\n                  editorOptions.find((o) => o.value === QueryEditorMode.Builder)\n                }\n                onChange={onChangeHandler('defaultEditor', optionsWithDefaults, onOptionsChange)}\n                width={40}\n                data-testid={selectors.components.DataSource.Prometheus.configPage.defaultEditor}\n              />\n            </InlineField>\n            <InlineField\n              labelWidth={PROM_CONFIG_LABEL_WIDTH}\n              label={t(\n                'grafana-prometheus.configuration.prom-settings.label-disable-metrics-lookup',\n                'Disable metrics lookup'\n              )}\n              tooltip={\n                <>\n                  <Trans i18nKey=\"grafana-prometheus.configuration.prom-settings.tooltip-disable-metrics-lookup\">\n                    Checking this option will disable the metrics chooser and metric/label support in the query\n                    field&apos;s autocomplete. This helps if you have performance issues with bigger Prometheus\n                    instances.{' '}\n                  </Trans>\n                  {docsTip()}\n                </>\n              }\n              interactive={true}\n              disabled={optionsWithDefaults.readOnly}\n              className={styles.switchField}\n            >\n              <Switch\n                value={optionsWithDefaults.jsonData.disableMetricsLookup ?? false}\n                onChange={onUpdateDatasourceJsonDataOptionChecked(props, 'disableMetricsLookup')}\n                id={selectors.components.DataSource.Prometheus.configPage.disableMetricLookup}\n              />\n            </InlineField>\n          </Stack>\n        </Box>\n      </ConfigSubSection>\n\n      <ConfigSubSection\n        title={t('grafana-prometheus.configuration.prom-settings.title-performance', 'Performance')}\n        className={styles.container}\n      >\n        {!hidePrometheusTypeVersion &&\n          !optionsWithDefaults.jsonData.prometheusType &&\n          !optionsWithDefaults.jsonData.prometheusVersion &&\n          optionsWithDefaults.readOnly && (\n            <div className={styles.versionMargin}>\n              <Trans i18nKey=\"grafana-prometheus.configuration.prom-settings.more-info\">\n                For more information on configuring prometheus type and version in data sources, see the{' '}\n                <TextLink external href=\"https://grafana.com/docs/grafana/latest/administration/provisioning/\">\n                  provisioning documentation\n                </TextLink>\n                .\n              </Trans>\n            </div>\n          )}\n        <Box marginBottom={5}>\n          <Stack direction=\"column\" gap={0.5}>\n            {!hidePrometheusTypeVersion && (\n              <>\n                <InlineField\n                  label={t('grafana-prometheus.configuration.prom-settings.label-prometheus-type', 'Prometheus type')}\n                  labelWidth={PROM_CONFIG_LABEL_WIDTH}\n                  tooltip={\n                    <>\n                      {/* , and attempt to detect the version */}\n                      <Trans i18nKey=\"grafana-prometheus.configuration.prom-settings.tooltip-prometheus-type\">\n                        Set this to the type of your prometheus database, e.g. Prometheus, Cortex, Mimir or Thanos.\n                        Changing this field will save your current settings. Certain types of Prometheus supports or\n                        does not support various APIs. For example, some types support regex matching for label queries\n                        to improve performance. Some types have an API for metadata. If you set this incorrectly you may\n                        experience odd behavior when querying metrics and labels. Please check your Prometheus\n                        documentation to ensure you enter the correct type.\n                      </Trans>{' '}\n                      {docsTip()}\n                    </>\n                  }\n                  interactive={true}\n                  disabled={optionsWithDefaults.readOnly}\n                >\n                  <Select\n                    aria-label={t(\n                      'grafana-prometheus.configuration.prom-settings.aria-label-prometheus-type',\n                      'Prometheus type'\n                    )}\n                    options={prometheusFlavorSelectItems}\n                    value={prometheusFlavorSelectItems.find(\n                      (o) => o.value === optionsWithDefaults.jsonData.prometheusType\n                    )}\n                    onChange={onChangeHandler('prometheusType', optionsWithDefaults, onOptionsChange)}\n                    width={40}\n                    data-testid={selectors.components.DataSource.Prometheus.configPage.prometheusType}\n                  />\n                </InlineField>\n                {optionsWithDefaults.jsonData.prometheusType && (\n                  <InlineField\n                    label={t(\n                      'grafana-prometheus.configuration.prom-settings.label-prom-type-version',\n                      '{{promType}} version',\n                      {\n                        promType: optionsWithDefaults.jsonData.prometheusType,\n                      }\n                    )}\n                    labelWidth={PROM_CONFIG_LABEL_WIDTH}\n                    tooltip={\n                      <>\n                        <Trans\n                          i18nKey=\"grafana-prometheus.configuration.prom-settings.tooltip-prom-type-version\"\n                          values={{ promType: optionsWithDefaults.jsonData.prometheusType }}\n                        >\n                          Use this to set the version of your {'{{promType}}'} instance if it is not automatically\n                          configured.\n                        </Trans>{' '}\n                        {docsTip()}\n                      </>\n                    }\n                    interactive={true}\n                    disabled={optionsWithDefaults.readOnly}\n                  >\n                    <Select\n                      aria-label={t(\n                        'grafana-prometheus.configuration.prom-settings.aria-label-prom-type-type',\n                        '{{promType}} type',\n                        {\n                          promType: optionsWithDefaults.jsonData.prometheusType,\n                        }\n                      )}\n                      options={PromFlavorVersions[optionsWithDefaults.jsonData.prometheusType]}\n                      value={PromFlavorVersions[optionsWithDefaults.jsonData.prometheusType]?.find(\n                        (o) => o.value === optionsWithDefaults.jsonData.prometheusVersion\n                      )}\n                      onChange={onChangeHandler('prometheusVersion', optionsWithDefaults, onOptionsChange)}\n                      width={40}\n                      data-testid={selectors.components.DataSource.Prometheus.configPage.prometheusVersion}\n                    />\n                  </InlineField>\n                )}\n              </>\n            )}\n            <InlineField\n              label={t('grafana-prometheus.configuration.prom-settings.label-cache-level', 'Cache level')}\n              labelWidth={PROM_CONFIG_LABEL_WIDTH}\n              tooltip={\n                <>\n                  <Trans i18nKey=\"grafana-prometheus.configuration.prom-settings.tooltip-cache-level\">\n                    Sets the browser caching level for editor queries. Higher cache settings are recommended for high\n                    cardinality data sources.\n                  </Trans>\n                </>\n              }\n              interactive={true}\n              disabled={optionsWithDefaults.readOnly}\n            >\n              <Select\n                width={40}\n                onChange={onChangeHandler('cacheLevel', optionsWithDefaults, onOptionsChange)}\n                options={cacheValueOptions}\n                value={\n                  cacheValueOptions.find((o) => o.value === optionsWithDefaults.jsonData.cacheLevel) ??\n                  PrometheusCacheLevel.Low\n                }\n                data-testid={selectors.components.DataSource.Prometheus.configPage.cacheLevel}\n              />\n            </InlineField>\n\n            <InlineField\n              label={t(\n                'grafana-prometheus.configuration.prom-settings.label-incremental-querying-beta',\n                'Incremental querying (beta)'\n              )}\n              labelWidth={PROM_CONFIG_LABEL_WIDTH}\n              tooltip={\n                <>\n                  <Trans i18nKey=\"grafana-prometheus.configuration.prom-settings.tooltip-incremental-querying-beta\">\n                    This feature will change the default behavior of relative queries to always request fresh data from\n                    the prometheus instance, instead query results will be cached, and only new records are requested.\n                    Turn this on to decrease database and network load.\n                  </Trans>\n                </>\n              }\n              interactive={true}\n              className={styles.switchField}\n              disabled={optionsWithDefaults.readOnly}\n            >\n              <Switch\n                value={optionsWithDefaults.jsonData.incrementalQuerying ?? false}\n                onChange={onUpdateDatasourceJsonDataOptionChecked(props, 'incrementalQuerying')}\n                id={selectors.components.DataSource.Prometheus.configPage.incrementalQuerying}\n              />\n            </InlineField>\n\n            {optionsWithDefaults.jsonData.incrementalQuerying && (\n              <InlineField\n                label={t(\n                  'grafana-prometheus.configuration.prom-settings.label-query-overlap-window',\n                  'Query overlap window'\n                )}\n                labelWidth={PROM_CONFIG_LABEL_WIDTH}\n                tooltip={\n                  <>\n                    <Trans\n                      i18nKey=\"grafana-prometheus.configuration.prom-settings.tooltip-query-overlap-window\"\n                      values={{\n                        example1: '10m',\n                        example2: '120s',\n                        example3: '0s',\n                        default: '10m',\n                      }}\n                    >\n                      Set a duration like {'{{example1}}'} or {'{{example2}}'} or {'{{example3}}'}. Default of{' '}\n                      {'{{default}}'}. This duration will be added to the duration of each incremental request.\n                    </Trans>\n                  </>\n                }\n                interactive={true}\n                disabled={optionsWithDefaults.readOnly}\n              >\n                <>\n                  <Input\n                    onBlur={(e) =>\n                      updateValidDuration({\n                        ...validDuration,\n                        incrementalQueryOverlapWindow: e.currentTarget.value,\n                      })\n                    }\n                    className=\"width-20\"\n                    value={\n                      optionsWithDefaults.jsonData.incrementalQueryOverlapWindow ?? defaultPrometheusQueryOverlapWindow\n                    }\n                    onChange={onChangeHandler('incrementalQueryOverlapWindow', optionsWithDefaults, onOptionsChange)}\n                    spellCheck={false}\n                    data-testid={selectors.components.DataSource.Prometheus.configPage.queryOverlapWindow}\n                  />\n                  {validateInput(validDuration.incrementalQueryOverlapWindow, MULTIPLE_DURATION_REGEX, durationError)}\n                </>\n              </InlineField>\n            )}\n\n            <InlineField\n              label={t(\n                'grafana-prometheus.configuration.prom-settings.label-disable-recording-rules-beta',\n                'Disable recording rules (beta)'\n              )}\n              labelWidth={PROM_CONFIG_LABEL_WIDTH}\n              tooltip={\n                <>\n                  <Trans i18nKey=\"grafana-prometheus.configuration.prom-settings.tooltip-disable-recording-rules-beta\">\n                    This feature will disable recording rules. Turn this on to improve dashboard performance\n                  </Trans>\n                </>\n              }\n              interactive={true}\n              className={styles.switchField}\n              disabled={optionsWithDefaults.readOnly}\n            >\n              <Switch\n                value={optionsWithDefaults.jsonData.disableRecordingRules ?? false}\n                onChange={onUpdateDatasourceJsonDataOptionChecked(props, 'disableRecordingRules')}\n                id={selectors.components.DataSource.Prometheus.configPage.disableRecordingRules}\n              />\n            </InlineField>\n          </Stack>\n        </Box>\n      </ConfigSubSection>\n\n      <ConfigSubSection\n        title={t('grafana-prometheus.configuration.prom-settings.title-other', 'Other')}\n        className={styles.container}\n      >\n        <Box marginBottom={5}>\n          <Stack direction=\"column\" gap={0.5}>\n            <InlineField\n              label={t(\n                'grafana-prometheus.configuration.prom-settings.label-custom-query-parameters',\n                'Custom query parameters'\n              )}\n              labelWidth={PROM_CONFIG_LABEL_WIDTH}\n              tooltip={\n                <>\n                  <Trans\n                    i18nKey=\"grafana-prometheus.configuration.prom-settings.tooltip-custom-query-parameters\"\n                    values={{\n                      example1: 'timeout',\n                      example2: 'partial_response',\n                      example3: 'dedup',\n                      example4: 'max_source_resolution',\n                      concatenationChar: '‘&’',\n                    }}\n                  >\n                    Add custom parameters to the Prometheus query URL. For example {'{{example1}}'}, {'{{example2}}'},{' '}\n                    {'{{example3}}'}, or\n                    {'{{example4}}'}. Multiple parameters should be concatenated together with {'{{concatenationChar}}'}\n                    .\n                  </Trans>{' '}\n                  {docsTip()}\n                </>\n              }\n              interactive={true}\n              disabled={optionsWithDefaults.readOnly}\n            >\n              <Input\n                className=\"width-20\"\n                value={optionsWithDefaults.jsonData.customQueryParameters}\n                onChange={onChangeHandler('customQueryParameters', optionsWithDefaults, onOptionsChange)}\n                spellCheck={false}\n                placeholder={t(\n                  'grafana-prometheus.configuration.prom-settings.placeholder-example-maxsourceresolutionmtimeout',\n                  'Example: {{example}}',\n                  { example: 'max_source_resolution=5m&timeout=10' }\n                )}\n                data-testid={selectors.components.DataSource.Prometheus.configPage.customQueryParameters}\n              />\n            </InlineField>\n            {/* HTTP Method */}\n            <InlineField\n              labelWidth={PROM_CONFIG_LABEL_WIDTH}\n              tooltip={\n                <>\n                  <Trans i18nKey=\"grafana-prometheus.configuration.prom-settings.tooltip-http-method\">\n                    You can use either POST or GET HTTP method to query your Prometheus data source. POST is the\n                    recommended method as it allows bigger queries. Change this to GET if you have a Prometheus version\n                    older than 2.1 or if POST requests are restricted in your network.\n                  </Trans>{' '}\n                  {docsTip()}\n                </>\n              }\n              interactive={true}\n              label={t('grafana-prometheus.configuration.prom-settings.label-http-method', 'HTTP method')}\n              disabled={optionsWithDefaults.readOnly}\n            >\n              <Select\n                width={40}\n                aria-label={t(\n                  'grafana-prometheus.configuration.prom-settings.aria-label-select-http-method',\n                  'Select HTTP method'\n                )}\n                options={httpOptions}\n                value={httpOptions.find((o) => o.value === optionsWithDefaults.jsonData.httpMethod)}\n                onChange={onChangeHandler('httpMethod', optionsWithDefaults, onOptionsChange)}\n                data-testid={selectors.components.DataSource.Prometheus.configPage.httpMethod}\n              />\n            </InlineField>\n            <InlineField\n              labelWidth={PROM_CONFIG_LABEL_WIDTH}\n              label={t('grafana-prometheus.configuration.prom-settings.label-series-limit', 'Series limit')}\n              tooltip={\n                <>\n                  <Trans i18nKey=\"grafana-prometheus.configuration.prom-settings.tooltip-series-limit\">\n                    The limit applies to all resources (metrics, labels, and values) for both endpoints (series and\n                    labels). Leave the field empty to use the default limit (40000). Set to 0 to disable the limit and\n                    fetch everything — this may cause performance issues. Default limit is 40000.\n                  </Trans>\n                  {docsTip()}\n                </>\n              }\n              interactive={true}\n              disabled={optionsWithDefaults.readOnly}\n            >\n              <>\n                <Input\n                  className=\"width-20\"\n                  value={seriesLimit}\n                  spellCheck={false}\n                  // eslint-disable-next-line @grafana/i18n/no-untranslated-strings\n                  placeholder=\"40000\"\n                  onChange={(event: { currentTarget: { value: string } }) => {\n                    setSeriesLimit(event.currentTarget.value);\n                    onOptionsChange({\n                      ...optionsWithDefaults,\n                      jsonData: {\n                        ...optionsWithDefaults.jsonData,\n                        seriesLimit: parseInt(event.currentTarget.value, 10),\n                      },\n                    });\n                  }}\n                  onBlur={(e) => validateInput(e.currentTarget.value, NON_NEGATIVE_INTEGER_REGEX, seriesLimitError)}\n                  data-testid={selectors.components.DataSource.Prometheus.configPage.seriesLimit}\n                />\n                {validateInput(seriesLimit, NON_NEGATIVE_INTEGER_REGEX, seriesLimitError)}\n              </>\n            </InlineField>\n            <InlineField\n              labelWidth={PROM_CONFIG_LABEL_WIDTH}\n              label={t(\n                'grafana-prometheus.configuration.prom-settings.label-use-series-endpoint',\n                'Use series endpoint'\n              )}\n              tooltip={\n                <>\n                  <Trans\n                    i18nKey=\"grafana-prometheus.configuration.prom-settings.tooltip-use-series-endpoint\"\n                    values={{ exampleParameter: 'match[]' }}\n                  >\n                    Checking this option will favor the series endpoint with {'{{exampleParameter}}'} parameter over the\n                    label values endpoint with {'{{exampleParameter}}'} parameter. While the label values endpoint is\n                    considered more performant, some users may prefer the series because it has a POST method while the\n                    label values endpoint only has a GET method.\n                  </Trans>{' '}\n                  {docsTip()}\n                </>\n              }\n              interactive={true}\n              disabled={optionsWithDefaults.readOnly}\n              className={styles.switchField}\n            >\n              <Switch\n                value={optionsWithDefaults.jsonData.seriesEndpoint ?? false}\n                onChange={onUpdateDatasourceJsonDataOptionChecked(props, 'seriesEndpoint')}\n              />\n            </InlineField>\n          </Stack>\n        </Box>\n      </ConfigSubSection>\n\n      {!hideExemplars && (\n        <ExemplarsSettings\n          options={optionsWithDefaults.jsonData.exemplarTraceIdDestinations}\n          onChange={(exemplarOptions) =>\n            updateDatasourcePluginJsonDataOption(\n              { onOptionsChange, options: optionsWithDefaults },\n              'exemplarTraceIdDestinations',\n              exemplarOptions\n            )\n          }\n          disabled={optionsWithDefaults.readOnly}\n        />\n      )}\n    </>\n  );\n};\n\nexport const getValueFromEventItem = (eventItem: SyntheticEvent<HTMLInputElement> | SelectableValue<string>) => {\n  if (!eventItem) {\n    return '';\n  }\n\n  if ('currentTarget' in eventItem) {\n    return eventItem.currentTarget.value;\n  }\n\n  return eventItem.value;\n};\n\nconst onChangeHandler =\n  (key: keyof PromOptions, options: Props['options'], onOptionsChange: Props['onOptionsChange']) =>\n  (eventItem: SyntheticEvent<HTMLInputElement> | SelectableValue<string>) => {\n    onOptionsChange({\n      ...options,\n      jsonData: {\n        ...options.jsonData,\n        [key]: getValueFromEventItem(eventItem),\n      },\n    });\n  };\n"],"names":["PrometheusCacheLevel","PromApplication","useTheme2","overhaulStyles","QueryEditorMode","t","useState","DEFAULT_SERIES_LIMIT","jsxs","Fragment","jsx","ConfigSubSection","Box","Stack","InlineField","PROM_CONFIG_LABEL_WIDTH","Trans","docsTip","Input","selectors","validateInput","DURATION_REGEX","durationError","Select","Switch","onUpdateDatasourceJsonDataOptionChecked","TextLink","PromFlavorVersions","defaultPrometheusQueryOverlapWindow","MULTIPLE_DURATION_REGEX","NON_NEGATIVE_INTEGER_REGEX","seriesLimitError","ExemplarsSettings","updateDatasourcePluginJsonDataOption"],"mappings":"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"}