{"version":3,"file":"FieldNamesMatcherEditor.cjs","sources":["../../../../src/components/MatchersUI/FieldNamesMatcherEditor.tsx"],"sourcesContent":["import { memo, useCallback } from 'react';\n\nimport { FieldMatcherID, fieldMatchers, SelectableValue, ByNamesMatcherOptions } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { Input } from '../Input/Input';\nimport { MultiSelect } from '../Select/Select';\n\nimport { MatcherUIProps, FieldMatcherUIRegistryItem } from './types';\nimport { useFieldDisplayNames, useSelectOptions, frameHasName } from './utils';\n\nexport const FieldNamesMatcherEditor = memo<MatcherUIProps<ByNamesMatcherOptions>>((props) => {\n  const { data, options, onChange: onChangeFromProps } = props;\n  const { readOnly, prefix } = options;\n  const names = useFieldDisplayNames(data);\n  const selectOptions = useSelectOptions(names, undefined);\n\n  const onChange = useCallback(\n    (selections: Array<SelectableValue<string>>) => {\n      if (!Array.isArray(selections)) {\n        return;\n      }\n\n      return onChangeFromProps({\n        ...options,\n        names: selections.reduce((all: string[], current) => {\n          if (!frameHasName(current.value, names)) {\n            return all;\n          }\n          all.push(current.value!);\n          return all;\n        }, []),\n      });\n    },\n    [names, onChangeFromProps, options]\n  );\n\n  if (readOnly) {\n    const displayNames = (options.names ?? []).join(', ');\n    return <Input value={displayNames} readOnly={true} disabled={true} prefix={prefix} />;\n  }\n\n  return <MultiSelect value={options.names} options={selectOptions} onChange={onChange} />;\n});\nFieldNamesMatcherEditor.displayName = 'FieldNameMatcherEditor';\n\nexport const getFieldNamesMatcherItem: () => FieldMatcherUIRegistryItem<ByNamesMatcherOptions> = () => ({\n  id: FieldMatcherID.byNames,\n  component: FieldNamesMatcherEditor,\n  matcher: fieldMatchers.get(FieldMatcherID.byNames),\n  name: t('grafana-ui.matchers-ui.name-fields-with-name', 'Fields with name'),\n  description: t('grafana-ui.matchers-ui.description-fields-with-name', 'Set properties for a specific field'),\n  optionsToLabel: (options) => (options.names ?? []).join(', '),\n  excludeFromPicker: true,\n});\n"],"names":["memo","useFieldDisplayNames","useSelectOptions","useCallback","frameHasName","jsx","Input","MultiSelect","FieldMatcherID","fieldMatchers","t"],"mappings":";;;;;;;;;;;;;AAWO,MAAM,uBAAA,GAA0BA,UAAA,CAA4C,CAAC,KAAA,KAAU;AAX9F,EAAA,IAAA,EAAA;AAYE,EAAA,MAAM,EAAE,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,mBAAkB,GAAI,KAAA;AACvD,EAAA,MAAM,EAAE,QAAA,EAAU,MAAA,EAAO,GAAI,OAAA;AAC7B,EAAA,MAAM,KAAA,GAAQC,2BAAqB,IAAI,CAAA;AACvC,EAAA,MAAM,aAAA,GAAgBC,sBAAA,CAAiB,KAAA,EAAO,KAAA,CAAS,CAAA;AAEvD,EAAA,MAAM,QAAA,GAAWC,iBAAA;AAAA,IACf,CAAC,UAAA,KAA+C;AAC9C,MAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,UAAU,CAAA,EAAG;AAC9B,QAAA;AAAA,MACF;AAEA,MAAA,OAAO,iBAAA,CAAkB;AAAA,QACvB,GAAG,OAAA;AAAA,QACH,KAAA,EAAO,UAAA,CAAW,MAAA,CAAO,CAAC,KAAe,OAAA,KAAY;AACnD,UAAA,IAAI,CAACC,kBAAA,CAAa,OAAA,CAAQ,KAAA,EAAO,KAAK,CAAA,EAAG;AACvC,YAAA,OAAO,GAAA;AAAA,UACT;AACA,UAAA,GAAA,CAAI,IAAA,CAAK,QAAQ,KAAM,CAAA;AACvB,UAAA,OAAO,GAAA;AAAA,QACT,CAAA,EAAG,EAAE;AAAA,OACN,CAAA;AAAA,IACH,CAAA;AAAA,IACA,CAAC,KAAA,EAAO,iBAAA,EAAmB,OAAO;AAAA,GACpC;AAEA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,MAAM,iBAAgB,EAAA,GAAA,OAAA,CAAQ,KAAA,KAAR,YAAiB,EAAC,EAAG,KAAK,IAAI,CAAA;AACpD,IAAA,uBAAOC,cAAA,CAACC,eAAM,KAAA,EAAO,YAAA,EAAc,UAAU,IAAA,EAAM,QAAA,EAAU,MAAM,MAAA,EAAgB,CAAA;AAAA,EACrF;AAEA,EAAA,sCAAQC,kBAAA,EAAA,EAAY,KAAA,EAAO,QAAQ,KAAA,EAAO,OAAA,EAAS,eAAe,QAAA,EAAoB,CAAA;AACxF,CAAC;AACD,uBAAA,CAAwB,WAAA,GAAc,wBAAA;AAE/B,MAAM,2BAAoF,OAAO;AAAA,EACtG,IAAIC,mBAAA,CAAe,OAAA;AAAA,EACnB,SAAA,EAAW,uBAAA;AAAA,EACX,OAAA,EAASC,kBAAA,CAAc,GAAA,CAAID,mBAAA,CAAe,OAAO,CAAA;AAAA,EACjD,IAAA,EAAME,MAAA,CAAE,8CAAA,EAAgD,kBAAkB,CAAA;AAAA,EAC1E,WAAA,EAAaA,MAAA,CAAE,qDAAA,EAAuD,qCAAqC,CAAA;AAAA,EAC3G,cAAA,EAAgB,CAAC,OAAA,KAAS;AApD5B,IAAA,IAAA,EAAA;AAoDgC,IAAA,OAAA,CAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,KAAA,KAAR,IAAA,GAAA,EAAA,GAAiB,EAAC,EAAG,KAAK,IAAI,CAAA;AAAA,EAAA,CAAA;AAAA,EAC5D,iBAAA,EAAmB;AACrB,CAAA;;;;;"}