{"version":3,"file":"LabelSelector.cjs","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":["styles","useStyles2","getStylesLabelSelector","getStylesMetricsBrowser","useState","useMetricsBrowser","useMemo","METRIC_LABEL","jsxs","jsx","Label","t","Trans","Input","selectors","Spinner","PromLabel"],"mappings":";;;;;;;;;;;;;;AAWO,SAAS,aAAA,GAAgB;AAC9B,EAAA,MAAMA,QAAA,GAASC,cAAWC,6BAAsB,CAAA;AAChD,EAAA,MAAM,YAAA,GAAeD,cAAWE,8BAAuB,CAAA;AACvD,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAIC,eAAS,EAAE,CAAA;AACzD,EAAA,MAAM,EAAE,SAAA,EAAW,kBAAA,EAAoB,iBAAA,EAAmB,eAAA,KAAoBC,uCAAA,EAAkB;AAEhG,EAAA,MAAM,iBAAA,GAAoBC,cAAQ,MAAM;AACtC,IAAA,OAAO,SAAA,CAAU,MAAA;AAAA,MACf,CAAC,EAAA,KAAO,EAAA,KAAOC,sBAAA,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,uBACEC,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAWR,QAAA,CAAO,OAAA,EACrB,QAAA,EAAA;AAAA,oBAAAS,cAAA;AAAA,MAACC,QAAA;AAAA,MAAA;AAAA,QACC,WAAA,EAAaC,MAAA;AAAA,UACX,wEAAA;AAAA,UACA;AAAA,SACF;AAAA,QAEA,QAAA,kBAAAF,cAAA,CAACG,UAAA,EAAA,EAAM,OAAA,EAAQ,yEAAA,EAA0E,QAAA,EAAA,+BAAA,EAEzF;AAAA;AAAA,KACF;AAAA,mCACC,KAAA,EAAA,EACC,QAAA,kBAAAH,cAAA;AAAA,MAACI,QAAA;AAAA,MAAA;AAAA,QACC,UAAU,CAAC,CAAA,KAAM,kBAAA,CAAmB,CAAA,CAAE,cAAc,KAAK,CAAA;AAAA,QACzD,YAAA,EAAYF,MAAA;AAAA,UACV,qFAAA;AAAA,UACA;AAAA,SACF;AAAA,QACA,KAAA,EAAO,eAAA;AAAA,QACP,eAAaG,sBAAA,CAAU,UAAA,CAAW,WAAW,UAAA,CAAW,WAAA,CAAY,KAAK,cAAA,CAAe;AAAA;AAAA,KAC1F,EACF,CAAA;AAAA,IAEC,kBAAA,mBACCL,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,YAAA,CAAa,SAC3B,QAAA,kBAAAA,cAAA,CAACM,UAAA,EAAA,EAAQ,IAAA,EAAK,IAAA,EAAK,CAAA,EACrB,CAAA,kCAEC,KAAA,EAAA,EAAI,SAAA,EAAWf,QAAA,CAAO,IAAA,EAAM,KAAA,EAAO,EAAE,MAAA,EAAQ,GAAA,EAAI,EAC/C,QAAA,EAAA,iBAAA,CAAkB,GAAA,CAAI,CAAC,KAAA,qBACtBS,cAAA;AAAA,MAACO,eAAA;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;;;;"}