{"version":3,"file":"FieldValueMatcher.cjs","sources":["../../../../src/components/MatchersUI/FieldValueMatcher.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { useMemo, useCallback } from 'react';\nimport * as React from 'react';\n\nimport {\n  FieldMatcherID,\n  fieldMatchers,\n  FieldValueMatcherConfig,\n  fieldReducers,\n  ReducerID,\n  SelectableValue,\n  GrafanaTheme2,\n} from '@grafana/data';\nimport { t } from '@grafana/i18n';\nimport { ComparisonOperation } from '@grafana/schema';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { Input } from '../Input/Input';\nimport { Select } from '../Select/Select';\n\nimport { MatcherUIProps, FieldMatcherUIRegistryItem } from './types';\n\ntype Props = MatcherUIProps<FieldValueMatcherConfig>;\n\nexport const comparisonOperationOptions = [\n  { label: '==', value: ComparisonOperation.EQ },\n  { label: '!=', value: ComparisonOperation.NEQ },\n  { label: '>', value: ComparisonOperation.GT },\n  { label: '>=', value: ComparisonOperation.GTE },\n  { label: '<', value: ComparisonOperation.LT },\n  { label: '<=', value: ComparisonOperation.LTE },\n];\n\n// This should move to a utility function on the reducer registry\nfunction isBooleanReducer(r: ReducerID) {\n  return r === ReducerID.allIsNull || r === ReducerID.allIsZero;\n}\n\nexport const FieldValueMatcherEditor = ({ options, onChange }: Props) => {\n  const styles = useStyles2(getStyles);\n  const reducer = useMemo(() => fieldReducers.selectOptions([options?.reducer]), [options?.reducer]);\n\n  const onSetReducer = useCallback(\n    (selection: SelectableValue<string>) => {\n      return onChange({ ...options, reducer: selection.value! as ReducerID });\n    },\n    [options, onChange]\n  );\n\n  const onChangeOp = useCallback(\n    (v: SelectableValue<ComparisonOperation>) => {\n      return onChange({ ...options, op: v.value! });\n    },\n    [options, onChange]\n  );\n\n  const onChangeValue = useCallback(\n    (e: React.FormEvent<HTMLInputElement>) => {\n      const value = e.currentTarget.valueAsNumber;\n      return onChange({ ...options, value });\n    },\n    [options, onChange]\n  );\n\n  const opts = options ?? {};\n  const isBool = isBooleanReducer(opts.reducer);\n\n  return (\n    <div className={styles.spot}>\n      <Select\n        value={reducer.current}\n        options={reducer.options}\n        onChange={onSetReducer}\n        placeholder={t('grafana-ui.field-value-matcher.select-field-placeholder', 'Select field reducer')}\n      />\n      {opts.reducer && !isBool && (\n        <>\n          <Select\n            value={comparisonOperationOptions.find((v) => v.value === opts.op)}\n            options={comparisonOperationOptions}\n            onChange={onChangeOp}\n            aria-label={t('grafana-ui.field-value-matcher.operator-label', 'Comparison operator')}\n            width={19}\n          />\n\n          <Input type=\"number\" value={opts.value} onChange={onChangeValue} />\n        </>\n      )}\n    </div>\n  );\n};\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    spot: css({\n      display: 'flex',\n      flexDirection: 'row',\n      alignItems: 'center',\n      alignContent: 'flex-end',\n      gap: '4px',\n    }),\n  };\n};\n\nexport const getFieldValueMatcherItem: () => FieldMatcherUIRegistryItem<FieldValueMatcherConfig> = () => ({\n  id: FieldMatcherID.byValue,\n  component: FieldValueMatcherEditor,\n  matcher: fieldMatchers.get(FieldMatcherID.byValue),\n  name: t('grafana-ui.matchers-ui.name-fields-with-value', 'Fields with values'),\n  description: t(\n    'grafana-ui.matchers-ui.description-fields-with-value',\n    'Set properties for fields with reducer condition'\n  ),\n  optionsToLabel: (options) => `${options?.reducer} ${options?.op} ${options?.value}`,\n});\n"],"names":["ComparisonOperation","ReducerID","useStyles2","useMemo","fieldReducers","useCallback","jsxs","jsx","Select","t","Fragment","Input","css","FieldMatcherID","fieldMatchers"],"mappings":"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"}