{"version":3,"file":"utils.cjs","sources":["../../../../src/components/MatchersUI/utils.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { DataFrame, Field, getFieldDisplayName, SelectableValue, FieldNamePickerBaseNameMode } from '@grafana/data';\n\nimport { getFieldTypeIcon } from '../../types/icon';\n\n/**\n * @internal\n */\nexport interface FrameFieldsDisplayNames {\n  // The display names\n  display: Set<string>;\n\n  // raw field names (that are explicitly not visible)\n  raw: Set<string>;\n\n  // Field mappings (duplicates are not supported)\n  fields: Map<string, Field>;\n}\n\n/**\n * @internal\n */\nexport function frameHasName(name: string | undefined, names: FrameFieldsDisplayNames) {\n  if (!name) {\n    return false;\n  }\n  return names.display.has(name) || names.raw.has(name);\n}\n\n/**\n * Returns the distinct names in a set of frames\n */\nexport function getFrameFieldsDisplayNames(\n  data: DataFrame[],\n  filter?: (field: Field) => boolean\n): FrameFieldsDisplayNames {\n  const names: FrameFieldsDisplayNames = {\n    display: new Set<string>(),\n    raw: new Set<string>(),\n    fields: new Map<string, Field>(),\n  };\n\n  for (const frame of data) {\n    for (const field of frame.fields) {\n      if (filter && !filter(field)) {\n        continue;\n      }\n      const disp = getFieldDisplayName(field, frame, data);\n      names.display.add(disp);\n      names.fields.set(disp, field);\n      if (field.name && disp !== field.name) {\n        names.raw.add(field.name);\n        names.fields.set(field.name, field);\n      }\n    }\n  }\n  return names;\n}\n\n/**\n * @internal\n */\nexport function useFieldDisplayNames(data: DataFrame[], filter?: (field: Field) => boolean): FrameFieldsDisplayNames {\n  return useMemo(() => {\n    return getFrameFieldsDisplayNames(data, filter);\n  }, [data, filter]);\n}\n\n/**\n * @internal\n */\nexport function useSelectOptions(\n  displayNames: FrameFieldsDisplayNames,\n  currentName?: string,\n  firstItem?: SelectableValue<string>,\n  fieldType?: string,\n  baseNameMode?: FieldNamePickerBaseNameMode\n): Array<SelectableValue<string>> {\n  return useMemo(() => {\n    let found = false;\n    const options: Array<SelectableValue<string>> = [];\n    if (firstItem) {\n      options.push(firstItem);\n    }\n    if (baseNameMode === FieldNamePickerBaseNameMode.OnlyBaseNames) {\n      for (const name of displayNames.raw) {\n        if (!found && name === currentName) {\n          found = true;\n        }\n        options.push({\n          value: name,\n          label: `${name} (base field name)`,\n        });\n      }\n    } else {\n      for (const name of displayNames.display) {\n        if (!found && name === currentName) {\n          found = true;\n        }\n        const field = displayNames.fields.get(name);\n        if (!fieldType || fieldType === field?.type) {\n          options.push({\n            value: name,\n            label: name,\n            icon: field ? getFieldTypeIcon(field) : undefined,\n          });\n        }\n      }\n\n      if (baseNameMode !== FieldNamePickerBaseNameMode.ExcludeBaseNames) {\n        for (const name of displayNames.raw) {\n          if (!displayNames.display.has(name)) {\n            if (!found && name === currentName) {\n              found = true;\n            }\n            options.push({\n              value: name,\n              label: `${name} (base field name)`,\n            });\n          }\n        }\n      }\n    }\n\n    if (currentName && !found) {\n      options.push({\n        value: currentName,\n        label: `${currentName} (not found)`,\n      });\n    }\n    return options;\n  }, [displayNames, currentName, firstItem, fieldType, baseNameMode]);\n}\n"],"names":["data","getFieldDisplayName","useMemo","FieldNamePickerBaseNameMode","getFieldTypeIcon"],"mappings":"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"}