{"version":3,"file":"FieldNamesMatcherEditor.mjs","sources":["../../../../src/components/MatchersUI/FieldNamesMatcherEditor.tsx"],"sourcesContent":["import { memo, useCallback } from 'react';\n\nimport { FieldMatcherID, fieldMatchers, SelectableValue, ByNamesMatcherOptions } from '@grafana/data';\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 fieldNamesMatcherItem: FieldMatcherUIRegistryItem<ByNamesMatcherOptions> = {\n  id: FieldMatcherID.byNames,\n  component: FieldNamesMatcherEditor,\n  matcher: fieldMatchers.get(FieldMatcherID.byNames),\n  name: 'Fields with name',\n  description: 'Set properties for a specific field',\n  optionsToLabel: (options) => (options.names ?? []).join(', '),\n  excludeFromPicker: true,\n};\n"],"names":[],"mappings":";;;;;;;AAUa,MAAA,uBAAA,GAA0B,IAA4C,CAAA,CAAC,KAAU,KAAA;AAV9F,EAAA,IAAA,EAAA;AAWE,EAAA,MAAM,EAAE,IAAA,EAAM,OAAS,EAAA,QAAA,EAAU,mBAAsB,GAAA,KAAA;AACvD,EAAM,MAAA,EAAE,QAAU,EAAA,MAAA,EAAW,GAAA,OAAA;AAC7B,EAAM,MAAA,KAAA,GAAQ,qBAAqB,IAAI,CAAA;AACvC,EAAM,MAAA,aAAA,GAAgB,gBAAiB,CAAA,KAAA,EAAO,KAAS,CAAA,CAAA;AAEvD,EAAA,MAAM,QAAW,GAAA,WAAA;AAAA,IACf,CAAC,UAA+C,KAAA;AAC9C,MAAA,IAAI,CAAC,KAAA,CAAM,OAAQ,CAAA,UAAU,CAAG,EAAA;AAC9B,QAAA;AAAA;AAGF,MAAA,OAAO,iBAAkB,CAAA;AAAA,QACvB,GAAG,OAAA;AAAA,QACH,KAAO,EAAA,UAAA,CAAW,MAAO,CAAA,CAAC,KAAe,OAAY,KAAA;AACnD,UAAA,IAAI,CAAC,YAAA,CAAa,OAAQ,CAAA,KAAA,EAAO,KAAK,CAAG,EAAA;AACvC,YAAO,OAAA,GAAA;AAAA;AAET,UAAI,GAAA,CAAA,IAAA,CAAK,QAAQ,KAAM,CAAA;AACvB,UAAO,OAAA,GAAA;AAAA,SACT,EAAG,EAAE;AAAA,OACN,CAAA;AAAA,KACH;AAAA,IACA,CAAC,KAAO,EAAA,iBAAA,EAAmB,OAAO;AAAA,GACpC;AAEA,EAAA,IAAI,QAAU,EAAA;AACZ,IAAA,MAAM,iBAAgB,EAAQ,GAAA,OAAA,CAAA,KAAA,KAAR,YAAiB,EAAC,EAAG,KAAK,IAAI,CAAA;AACpD,IAAO,uBAAA,GAAA,CAAC,SAAM,KAAO,EAAA,YAAA,EAAc,UAAU,IAAM,EAAA,QAAA,EAAU,MAAM,MAAgB,EAAA,CAAA;AAAA;AAGrF,EAAA,2BAAQ,WAAY,EAAA,EAAA,KAAA,EAAO,QAAQ,KAAO,EAAA,OAAA,EAAS,eAAe,QAAoB,EAAA,CAAA;AACxF,CAAC;AACD,uBAAA,CAAwB,WAAc,GAAA,wBAAA;AAE/B,MAAM,qBAA2E,GAAA;AAAA,EACtF,IAAI,cAAe,CAAA,OAAA;AAAA,EACnB,SAAW,EAAA,uBAAA;AAAA,EACX,OAAS,EAAA,aAAA,CAAc,GAAI,CAAA,cAAA,CAAe,OAAO,CAAA;AAAA,EACjD,IAAM,EAAA,kBAAA;AAAA,EACN,WAAa,EAAA,qCAAA;AAAA,EACb,cAAA,EAAgB,CAAC,OAAS,KAAA;AAnD5B,IAAA,IAAA,EAAA;AAmDgC,IAAA,OAAA,CAAA,CAAA,EAAA,GAAA,OAAA,CAAQ,KAAR,KAAA,IAAA,GAAA,EAAA,GAAiB,EAAC,EAAG,KAAK,IAAI,CAAA;AAAA,GAAA;AAAA,EAC5D,iBAAmB,EAAA;AACrB;;;;"}