{"version":3,"file":"UnitPicker.mjs","sources":["../../../../src/components/UnitPicker/UnitPicker.tsx"],"sourcesContent":["import { PureComponent } from 'react';\n\nimport { getValueFormats, SelectableValue } from '@grafana/data';\n\nimport { t } from '../../utils/i18n';\nimport { Cascader, CascaderOption } from '../Cascader/Cascader';\n\nexport interface UnitPickerProps {\n  onChange: (item?: string) => void;\n  value?: string;\n  width?: number;\n}\n\nfunction formatCreateLabel(input: string) {\n  return `Custom unit: ${input}`;\n}\n\nexport class UnitPicker extends PureComponent<UnitPickerProps> {\n  onChange = (value: SelectableValue<string>) => {\n    this.props.onChange(value.value);\n  };\n\n  render() {\n    const { value, width } = this.props;\n\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        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={this.props.onChange}\n      />\n    );\n  }\n}\n"],"names":[],"mappings":";;;;;;AAaA,SAAS,kBAAkB,KAAe,EAAA;AACxC,EAAA,OAAO,gBAAgB,KAAK,CAAA,CAAA;AAC9B;AAEO,MAAM,mBAAmB,aAA+B,CAAA;AAAA,EAAxD,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AACL,IAAA,IAAA,CAAA,QAAA,GAAW,CAAC,KAAmC,KAAA;AAC7C,MAAK,IAAA,CAAA,KAAA,CAAM,QAAS,CAAA,KAAA,CAAM,KAAK,CAAA;AAAA,KACjC;AAAA;AAAA,EAEA,MAAS,GAAA;AACP,IAAA,MAAM,EAAE,KAAA,EAAO,KAAM,EAAA,GAAI,IAAK,CAAA,KAAA;AAG9B,IAAA,IAAI,OAA+C,GAAA,KAAA,CAAA;AAGnD,IAAA,MAAM,aAAa,eAAgB,EAAA;AAGnC,IAAA,MAAM,YAAiC,GAAA,UAAA,CAAW,GAAI,CAAA,CAAC,KAAU,KAAA;AAC/D,MAAA,MAAM,OAAU,GAAA,KAAA,CAAM,OAAQ,CAAA,GAAA,CAAI,CAAC,IAAS,KAAA;AAC1C,QAAA,MAAM,GAAM,GAAA;AAAA,UACV,OAAO,IAAK,CAAA,IAAA;AAAA,UACZ,OAAO,IAAK,CAAA;AAAA,SACd;AACA,QAAI,IAAA,IAAA,CAAK,UAAU,KAAO,EAAA;AACxB,UAAU,OAAA,GAAA,GAAA;AAAA;AAEZ,QAAO,OAAA,GAAA;AAAA,OACR,CAAA;AAED,MAAO,OAAA;AAAA,QACL,OAAO,KAAM,CAAA,IAAA;AAAA,QACb,OAAO,KAAM,CAAA,IAAA;AAAA,QACb,KAAO,EAAA;AAAA,OACT;AAAA,KACD,CAAA;AAGD,IAAI,IAAA,KAAA,IAAS,CAAC,OAAS,EAAA;AACrB,MAAU,OAAA,GAAA,EAAE,KAAO,EAAA,KAAA,EAAO,KAAM,EAAA;AAAA;AAGlC,IACE,uBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,YAAA,EAAc,WAAW,OAAQ,CAAA,KAAA;AAAA,QACjC,gBAAgB,EAAA,IAAA;AAAA,QAChB,cAAgB,EAAA,KAAA;AAAA,QAChB,iBAAA;AAAA,QACA,OAAS,EAAA,YAAA;AAAA,QACT,WAAA,EAAa,CAAE,CAAA,oCAAA,EAAsC,QAAQ,CAAA;AAAA,QAC7D,WAAW,EAAA,IAAA;AAAA,QACX,QAAA,EAAU,KAAK,KAAM,CAAA;AAAA;AAAA,KACvB;AAAA;AAGN;;;;"}