{"version":3,"file":"UnitPicker.mjs","sources":["../../../../src/components/UnitPicker/UnitPicker.tsx"],"sourcesContent":["import { memo } from 'react';\n\nimport { getValueFormats, SelectableValue } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { Cascader, CascaderOption } from '../Cascader/Cascader';\n\nexport interface UnitPickerProps {\n  onChange: (item?: string) => void;\n  value?: string;\n  width?: number;\n  id?: string;\n}\n\nfunction formatCreateLabel(input: string) {\n  return `Custom unit: ${input}`;\n}\n\n/**\n * https://developers.grafana.com/ui/latest/index.html?path=/docs/pickers-unitpicker--docs\n */\nexport const UnitPicker = memo<UnitPickerProps>(({ onChange, value, width, id }) => {\n  // Set the current selection\n  let current: SelectableValue<string> | undefined = undefined;\n\n  // All units\n  const unitGroups = getValueFormats();\n\n  // Need to transform the data structure to work well with Select\n  const groupOptions: CascaderOption[] = unitGroups.map((group) => {\n    const options = group.submenu.map((unit) => {\n      const sel = {\n        label: unit.text,\n        value: unit.value,\n      };\n      if (unit.value === value) {\n        current = sel;\n      }\n      return sel;\n    });\n\n    return {\n      label: group.text,\n      value: group.text,\n      items: options,\n    };\n  });\n\n  // Show the custom unit\n  if (value && !current) {\n    current = { value, label: value };\n  }\n\n  return (\n    <Cascader\n      id={id}\n      width={width}\n      initialValue={current && current.label}\n      allowCustomValue\n      changeOnSelect={false}\n      formatCreateLabel={formatCreateLabel}\n      options={groupOptions}\n      placeholder={t('grafana-ui.unit-picker.placeholder', 'Choose')}\n      isClearable\n      onSelect={onChange}\n    />\n  );\n});\n\nUnitPicker.displayName = 'UnitPicker';\n"],"names":[],"mappings":";;;;;;;AAcA,SAAS,kBAAkB,KAAA,EAAe;AACxC,EAAA,OAAO,gBAAgB,KAAK,CAAA,CAAA;AAC9B;AAKO,MAAM,UAAA,GAAa,KAAsB,CAAC,EAAE,UAAU,KAAA,EAAO,KAAA,EAAO,IAAG,KAAM;AAElF,EAAA,IAAI,OAAA,GAA+C,KAAA,CAAA;AAGnD,EAAA,MAAM,aAAa,eAAA,EAAgB;AAGnC,EAAA,MAAM,YAAA,GAAiC,UAAA,CAAW,GAAA,CAAI,CAAC,KAAA,KAAU;AAC/D,IAAA,MAAM,OAAA,GAAU,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,KAAS;AAC1C,MAAA,MAAM,GAAA,GAAM;AAAA,QACV,OAAO,IAAA,CAAK,IAAA;AAAA,QACZ,OAAO,IAAA,CAAK;AAAA,OACd;AACA,MAAA,IAAI,IAAA,CAAK,UAAU,KAAA,EAAO;AACxB,QAAA,OAAA,GAAU,GAAA;AAAA,MACZ;AACA,MAAA,OAAO,GAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,OAAO;AAAA,MACL,OAAO,KAAA,CAAM,IAAA;AAAA,MACb,OAAO,KAAA,CAAM,IAAA;AAAA,MACb,KAAA,EAAO;AAAA,KACT;AAAA,EACF,CAAC,CAAA;AAGD,EAAA,IAAI,KAAA,IAAS,CAAC,OAAA,EAAS;AACrB,IAAA,OAAA,GAAU,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAM;AAAA,EAClC;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,KAAA;AAAA,MACA,YAAA,EAAc,WAAW,OAAA,CAAQ,KAAA;AAAA,MACjC,gBAAA,EAAgB,IAAA;AAAA,MAChB,cAAA,EAAgB,KAAA;AAAA,MAChB,iBAAA;AAAA,MACA,OAAA,EAAS,YAAA;AAAA,MACT,WAAA,EAAa,CAAA,CAAE,oCAAA,EAAsC,QAAQ,CAAA;AAAA,MAC7D,WAAA,EAAW,IAAA;AAAA,MACX,QAAA,EAAU;AAAA;AAAA,GACZ;AAEJ,CAAC;AAED,UAAA,CAAW,WAAA,GAAc,YAAA;;;;"}