{"version":3,"file":"PromExemplarField.cjs","sources":["../../../src/components/PromExemplarField.tsx"],"sourcesContent":["// Core Grafana history https://github.com/grafana/grafana/blob/v11.0.0-preview/public/app/plugins/datasource/prometheus/components/PromExemplarField.tsx\nimport { css, cx } from '@emotion/css';\nimport { useEffect, useState } from 'react';\nimport { usePrevious } from 'react-use';\n\nimport { type GrafanaTheme2 } from '@grafana/data';\nimport { Trans, t } from '@grafana/i18n';\nimport { IconButton, InlineLabel, Tooltip, useStyles2 } from '@grafana/ui';\n\nimport { type PrometheusDatasource } from '../datasource';\nimport { type PromQuery } from '../types';\n\ninterface Props {\n  onChange: (exemplar: boolean) => void;\n  datasource: PrometheusDatasource;\n  query: PromQuery;\n  'data-testid'?: string;\n}\n\nexport function PromExemplarField({ datasource, onChange, query, ...rest }: Props) {\n  const [error, setError] = useState<string | null>(null);\n  const styles = useStyles2(getStyles);\n  const prevError = usePrevious(error);\n\n  useEffect(() => {\n    if (!datasource.exemplarsAvailable) {\n      setError('Exemplars for this query are not available');\n      onChange(false);\n    } else if (query.instant && !query.range) {\n      setError('Exemplars are not available for instant queries');\n      onChange(false);\n    } else {\n      setError(null);\n      // If error is cleared, we want to change exemplar to true\n      if (prevError && !error) {\n        onChange(true);\n      }\n    }\n  }, [datasource.exemplarsAvailable, query.instant, query.range, onChange, prevError, error]);\n\n  const iconButtonStyles = cx(\n    {\n      [styles.activeIcon]: !!query.exemplar,\n    },\n    styles.eyeIcon\n  );\n\n  return (\n    <InlineLabel width=\"auto\" data-testid={rest['data-testid']}>\n      <Tooltip content={error ?? ''}>\n        <div className={styles.iconWrapper}>\n          <Trans i18nKey=\"grafana-prometheus.components.prom-exemplar-field.exemplars\">Exemplars</Trans>\n          <IconButton\n            name=\"eye\"\n            tooltip={\n              !!query.exemplar\n                ? t(\n                    'grafana-prometheus.components.prom-exemplar-field.tooltip-disable-query',\n                    'Disable query with exemplars'\n                  )\n                : t(\n                    'grafana-prometheus.components.prom-exemplar-field.tooltip-enable-query',\n                    'Enable query with exemplars'\n                  )\n            }\n            disabled={!!error}\n            className={iconButtonStyles}\n            onClick={() => {\n              onChange(!query.exemplar);\n            }}\n          />\n        </div>\n      </Tooltip>\n    </InlineLabel>\n  );\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n  return {\n    eyeIcon: css({\n      marginLeft: theme.spacing(2),\n    }),\n    activeIcon: css({\n      color: theme.colors.primary.main,\n    }),\n    iconWrapper: css({\n      display: 'flex',\n      alignItems: 'center',\n    }),\n  };\n}\n"],"names":["useState","useStyles2","usePrevious","useEffect","cx","InlineLabel","jsx","Tooltip","Trans","IconButton","t","css"],"mappings":";;;;;;;;;;;;AAmBO,SAAS,kBAAkB,EAAE,UAAA,EAAY,UAAU,KAAA,EAAO,GAAG,MAAK,EAAU;AACjF,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAAwB,IAAI,CAAA;AACtD,EAAA,MAAM,MAAA,GAASC,cAAW,SAAS,CAAA;AACnC,EAAA,MAAM,SAAA,GAAYC,qBAAY,KAAK,CAAA;AAEnC,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,CAAC,WAAW,kBAAA,EAAoB;AAClC,MAAA,QAAA,CAAS,4CAA4C,CAAA;AACrD,MAAA,QAAA,CAAS,KAAK,CAAA;AAAA,IAChB,CAAA,MAAA,IAAW,KAAA,CAAM,OAAA,IAAW,CAAC,MAAM,KAAA,EAAO;AACxC,MAAA,QAAA,CAAS,iDAAiD,CAAA;AAC1D,MAAA,QAAA,CAAS,KAAK,CAAA;AAAA,IAChB,CAAA,MAAO;AACL,MAAA,QAAA,CAAS,IAAI,CAAA;AAEb,MAAA,IAAI,SAAA,IAAa,CAAC,KAAA,EAAO;AACvB,QAAA,QAAA,CAAS,IAAI,CAAA;AAAA,MACf;AAAA,IACF;AAAA,EACF,CAAA,EAAG,CAAC,UAAA,CAAW,kBAAA,EAAoB,KAAA,CAAM,OAAA,EAAS,KAAA,CAAM,KAAA,EAAO,QAAA,EAAU,SAAA,EAAW,KAAK,CAAC,CAAA;AAE1F,EAAA,MAAM,gBAAA,GAAmBC,MAAA;AAAA,IACvB;AAAA,MACE,CAAC,MAAA,CAAO,UAAU,GAAG,CAAC,CAAC,KAAA,CAAM;AAAA,KAC/B;AAAA,IACA,MAAA,CAAO;AAAA,GACT;AAEA,EAAA,sCACGC,cAAA,EAAA,EAAY,KAAA,EAAM,MAAA,EAAO,aAAA,EAAa,KAAK,aAAa,CAAA,EACvD,QAAA,kBAAAC,cAAA,CAACC,UAAA,EAAA,EAAQ,SAAS,KAAA,IAAA,IAAA,GAAA,KAAA,GAAS,EAAA,EACzB,0CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,OAAO,WAAA,EACrB,QAAA,EAAA;AAAA,oBAAAD,cAAA,CAACE,UAAA,EAAA,EAAM,OAAA,EAAQ,6DAAA,EAA8D,QAAA,EAAA,WAAA,EAAS,CAAA;AAAA,oBACtFF,cAAA;AAAA,MAACG,aAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,KAAA;AAAA,QACL,OAAA,EACE,CAAC,CAAC,KAAA,CAAM,QAAA,GACJC,MAAA;AAAA,UACE,yEAAA;AAAA,UACA;AAAA,SACF,GACAA,MAAA;AAAA,UACE,wEAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEN,QAAA,EAAU,CAAC,CAAC,KAAA;AAAA,QACZ,SAAA,EAAW,gBAAA;AAAA,QACX,SAAS,MAAM;AACb,UAAA,QAAA,CAAS,CAAC,MAAM,QAAQ,CAAA;AAAA,QAC1B;AAAA;AAAA;AACF,GAAA,EACF,GACF,CAAA,EACF,CAAA;AAEJ;AAEA,SAAS,UAAU,KAAA,EAAsB;AACvC,EAAA,OAAO;AAAA,IACL,SAASC,OAAA,CAAI;AAAA,MACX,UAAA,EAAY,KAAA,CAAM,OAAA,CAAQ,CAAC;AAAA,KAC5B,CAAA;AAAA,IACD,YAAYA,OAAA,CAAI;AAAA,MACd,KAAA,EAAO,KAAA,CAAM,MAAA,CAAO,OAAA,CAAQ;AAAA,KAC7B,CAAA;AAAA,IACD,aAAaA,OAAA,CAAI;AAAA,MACf,OAAA,EAAS,MAAA;AAAA,MACT,UAAA,EAAY;AAAA,KACb;AAAA,GACH;AACF;;;;"}