{"version":3,"file":"LabelSelector.mjs","sources":["../../../../src/components/metrics-browser/LabelSelector.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\n\nimport { selectors } from '@grafana/e2e-selectors';\nimport { Trans, t } from '@grafana/i18n';\nimport { BrowserLabel as PromLabel, Input, Label, useStyles2, Spinner } from '@grafana/ui';\n\nimport { METRIC_LABEL } from '../../constants';\n\nimport { useMetricsBrowser } from './MetricsBrowserContext';\nimport { getStylesLabelSelector, getStylesMetricsBrowser } from './styles';\n\nexport function LabelSelector() {\n  const styles = useStyles2(getStylesLabelSelector);\n  const sharedStyles = useStyles2(getStylesMetricsBrowser);\n  const [labelSearchTerm, setLabelSearchTerm] = useState('');\n  const { labelKeys, isLoadingLabelKeys, selectedLabelKeys, onLabelKeyClick } = useMetricsBrowser();\n\n  const filteredLabelKeys = useMemo(() => {\n    return labelKeys.filter(\n      (lk) => lk !== METRIC_LABEL && (selectedLabelKeys.includes(lk) || lk.includes(labelSearchTerm))\n    );\n  }, [labelKeys, labelSearchTerm, selectedLabelKeys]);\n\n  return (\n    <div className={styles.section}>\n      <Label\n        description={t(\n          'grafana-prometheus.components.label-selector.description-select-labels',\n          'Once label values are selected, only possible label combinations are shown.'\n        )}\n      >\n        <Trans i18nKey=\"grafana-prometheus.components.label-selector.select-labels-to-search-in\">\n          2. Select labels to search in\n        </Trans>\n      </Label>\n      <div>\n        <Input\n          onChange={(e) => setLabelSearchTerm(e.currentTarget.value)}\n          aria-label={t(\n            'grafana-prometheus.components.label-selector.aria-label-filter-expression-for-label',\n            'Filter expression for label'\n          )}\n          value={labelSearchTerm}\n          data-testid={selectors.components.DataSource.Prometheus.queryEditor.code.metricsBrowser.labelNamesFilter}\n        />\n      </div>\n      {/* Using fixed height here to prevent jumpy layout */}\n      {isLoadingLabelKeys ? (\n        <div className={sharedStyles.spinner}>\n          <Spinner size=\"xl\" />\n        </div>\n      ) : (\n        <div className={styles.list} style={{ height: 120 }}>\n          {filteredLabelKeys.map((label) => (\n            <PromLabel\n              key={label}\n              name={label}\n              active={selectedLabelKeys.includes(label)}\n              hidden={false}\n              facets={undefined}\n              onClick={(name: string) => {\n                // Resetting search to prevent empty results\n                setLabelSearchTerm('');\n                onLabelKeyClick(name);\n              }}\n              searchTerm={labelSearchTerm}\n            />\n          ))}\n        </div>\n      )}\n    </div>\n  );\n}\n"],"names":["PromLabel"],"mappings":";;;;;;;;;;AAWO,SAAS,aAAA,GAAgB;AAC9B,EAAA,MAAM,MAAA,GAAS,WAAW,sBAAsB,CAAA;AAChD,EAAA,MAAM,YAAA,GAAe,WAAW,uBAAuB,CAAA;AACvD,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,SAAS,EAAE,CAAA;AACzD,EAAA,MAAM,EAAE,SAAA,EAAW,kBAAA,EAAoB,iBAAA,EAAmB,eAAA,KAAoB,iBAAA,EAAkB;AAEhG,EAAA,MAAM,iBAAA,GAAoB,QAAQ,MAAM;AACtC,IAAA,OAAO,SAAA,CAAU,MAAA;AAAA,MACf,CAAC,EAAA,KAAO,EAAA,KAAO,YAAA,KAAiB,iBAAA,CAAkB,SAAS,EAAE,CAAA,IAAK,EAAA,CAAG,QAAA,CAAS,eAAe,CAAA;AAAA,KAC/F;AAAA,EACF,CAAA,EAAG,CAAC,SAAA,EAAW,eAAA,EAAiB,iBAAiB,CAAC,CAAA;AAElD,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,OAAA,EACrB,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,WAAA,EAAa,CAAA;AAAA,UACX,wEAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAM,OAAA,EAAQ,yEAAA,EAA0E,QAAA,EAAA,+BAAA,EAEzF;AAAA;AAAA,KACF;AAAA,wBACC,KAAA,EAAA,EACC,QAAA,kBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,UAAU,CAAC,CAAA,KAAM,kBAAA,CAAmB,CAAA,CAAE,cAAc,KAAK,CAAA;AAAA,QACzD,YAAA,EAAY,CAAA;AAAA,UACV,qFAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,KAAA,EAAO,eAAA;AAAA,QACP,eAAa,SAAA,CAAU,UAAA,CAAW,WAAW,UAAA,CAAW,WAAA,CAAY,KAAK,cAAA,CAAe;AAAA;AAAA,KAC1F,EACF,CAAA;AAAA,IAEC,kBAAA,mBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,YAAA,CAAa,SAC3B,QAAA,kBAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,IAAA,EAAK,IAAA,EAAK,CAAA,EACrB,CAAA,uBAEC,KAAA,EAAA,EAAI,SAAA,EAAW,MAAA,CAAO,IAAA,EAAM,KAAA,EAAO,EAAE,MAAA,EAAQ,GAAA,EAAI,EAC/C,QAAA,EAAA,iBAAA,CAAkB,GAAA,CAAI,CAAC,KAAA,qBACtB,GAAA;AAAA,MAACA,YAAA;AAAA,MAAA;AAAA,QAEC,IAAA,EAAM,KAAA;AAAA,QACN,MAAA,EAAQ,iBAAA,CAAkB,QAAA,CAAS,KAAK,CAAA;AAAA,QACxC,MAAA,EAAQ,KAAA;AAAA,QACR,MAAA,EAAQ,KAAA,CAAA;AAAA,QACR,OAAA,EAAS,CAAC,IAAA,KAAiB;AAEzB,UAAA,kBAAA,CAAmB,EAAE,CAAA;AACrB,UAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,QACtB,CAAA;AAAA,QACA,UAAA,EAAY;AAAA,OAAA;AAAA,MAVP;AAAA,KAYR,CAAA,EACH;AAAA,GAAA,EAEJ,CAAA;AAEJ;;;;"}