{"version":3,"file":"FilterInput.mjs","sources":["../../../../src/components/FilterInput/FilterInput.tsx"],"sourcesContent":["import { forwardRef, useRef, HTMLProps } from 'react';\n\nimport { escapeStringForRegex, unEscapeStringFromRegex } from '@grafana/data';\nimport { Trans } from '@grafana/i18n';\n\nimport { useCombinedRefs } from '../../utils/useCombinedRefs';\nimport { Button } from '../Button/Button';\nimport { Icon } from '../Icon/Icon';\nimport { Input, Props as InputProps } from '../Input/Input';\n\nexport interface Props extends Omit<HTMLProps<HTMLInputElement>, 'onChange'> {\n  value: string | undefined;\n  width?: number;\n  onChange: (value: string) => void;\n  escapeRegex?: boolean;\n  suffix?: InputProps['suffix'];\n}\n\nexport const FilterInput = forwardRef<HTMLInputElement, Props>(\n  ({ value, width, onChange, escapeRegex = true, suffix: _suffix, ...restProps }, ref) => {\n    const innerRef = useRef<HTMLInputElement | null>(null);\n    const combinedRef = useCombinedRefs<HTMLInputElement>(ref, innerRef);\n\n    const suffix = (\n      <>\n        {value !== '' && (\n          <Button\n            icon=\"times\"\n            fill=\"text\"\n            size=\"sm\"\n            onClick={(e) => {\n              innerRef.current?.focus();\n              onChange('');\n              e.stopPropagation();\n            }}\n          >\n            <Trans i18nKey=\"grafana-ui.filter-input.clear\">Clear</Trans>\n          </Button>\n        )}\n        {_suffix}\n      </>\n    );\n\n    return (\n      <Input\n        prefix={<Icon name=\"search\" />}\n        suffix={suffix}\n        width={width}\n        type=\"text\"\n        value={escapeRegex ? unEscapeStringFromRegex(value ?? '') : value}\n        onChange={(event) =>\n          onChange(escapeRegex ? escapeStringForRegex(event.currentTarget.value) : event.currentTarget.value)\n        }\n        {...restProps}\n        ref={combinedRef}\n      />\n    );\n  }\n);\n\nFilterInput.displayName = 'FilterInput';\n"],"names":[],"mappings":";;;;;;;;;;AAkBO,MAAM,WAAA,GAAc,UAAA;AAAA,EACzB,CAAC,EAAE,KAAA,EAAO,KAAA,EAAO,QAAA,EAAU,WAAA,GAAc,IAAA,EAAM,MAAA,EAAQ,OAAA,EAAS,GAAG,SAAA,EAAU,EAAG,GAAA,KAAQ;AACtF,IAAA,MAAM,QAAA,GAAW,OAAgC,IAAI,CAAA;AACrD,IAAA,MAAM,WAAA,GAAc,eAAA,CAAkC,GAAA,EAAK,QAAQ,CAAA;AAEnE,IAAA,MAAM,yBACJ,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,MAAA,KAAA,KAAU,EAAA,oBACT,GAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,OAAA;AAAA,UACL,IAAA,EAAK,MAAA;AAAA,UACL,IAAA,EAAK,IAAA;AAAA,UACL,OAAA,EAAS,CAAC,CAAA,KAAM;AA9B5B,YAAA,IAAA,EAAA;AA+Bc,YAAA,CAAA,EAAA,GAAA,QAAA,CAAS,YAAT,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAkB,KAAA,EAAA;AAClB,YAAA,QAAA,CAAS,EAAE,CAAA;AACX,YAAA,CAAA,CAAE,eAAA,EAAgB;AAAA,UACpB,CAAA;AAAA,UAEA,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAM,OAAA,EAAQ,+BAAA,EAAgC,QAAA,EAAA,OAAA,EAAK;AAAA;AAAA,OACtD;AAAA,MAED;AAAA,KAAA,EACH,CAAA;AAGF,IAAA,uBACE,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,MAAA,kBAAQ,GAAA,CAAC,IAAA,EAAA,EAAK,IAAA,EAAK,QAAA,EAAS,CAAA;AAAA,QAC5B,MAAA;AAAA,QACA,KAAA;AAAA,QACA,IAAA,EAAK,MAAA;AAAA,QACL,KAAA,EAAO,WAAA,GAAc,uBAAA,CAAwB,KAAA,IAAA,IAAA,GAAA,KAAA,GAAS,EAAE,CAAA,GAAI,KAAA;AAAA,QAC5D,QAAA,EAAU,CAAC,KAAA,KACT,QAAA,CAAS,WAAA,GAAc,oBAAA,CAAqB,KAAA,CAAM,aAAA,CAAc,KAAK,CAAA,GAAI,KAAA,CAAM,aAAA,CAAc,KAAK,CAAA;AAAA,QAEnG,GAAG,SAAA;AAAA,QACJ,GAAA,EAAK;AAAA;AAAA,KACP;AAAA,EAEJ;AACF;AAEA,WAAA,CAAY,WAAA,GAAc,aAAA;;;;"}