{"version":3,"file":"axis.cjs","sources":["../../../../src/options/builder/axis.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport {\n  FieldConfigEditorBuilder,\n  FieldType,\n  identityOverrideProcessor,\n  SelectableValue,\n  StandardEditorProps,\n} from '@grafana/data';\nimport { t } from '@grafana/i18n';\nimport { AxisColorMode, AxisConfig, AxisPlacement, ScaleDistribution, ScaleDistributionConfig } from '@grafana/schema';\n\nimport { Field } from '../../components/Forms/Field';\nimport { RadioButtonGroup } from '../../components/Forms/RadioButtonGroup/RadioButtonGroup';\nimport { Input } from '../../components/Input/Input';\nimport { Stack } from '../../components/Layout/Stack/Stack';\nimport { Select } from '../../components/Select/Select';\nimport { getGraphFieldOptions } from '../../components/uPlot/config';\n\n/**\n * @alpha\n */\nexport function addAxisConfig(builder: FieldConfigEditorBuilder<AxisConfig>, defaultConfig: AxisConfig) {\n  // options for axis appearance\n  addAxisPlacement(builder);\n  const category = [t('grafana-ui.builder.axis.category-axis', 'Axis')];\n\n  builder.addTextInput({\n    path: 'axisLabel',\n    name: t('grafana-ui.builder.axis.name-label', 'Label'),\n    category,\n    defaultValue: '',\n    settings: {\n      placeholder: t('grafana-ui.builder.axis.placeholder-label', 'Optional text'),\n      expandTemplateVars: true,\n    },\n    showIf: (c) => c.axisPlacement !== AxisPlacement.Hidden,\n    // Do not apply default settings to time and string fields which are used as x-axis fields in Time series and Bar chart panels\n    shouldApply: (f) => f.type !== FieldType.time && f.type !== FieldType.string,\n  });\n\n  addAxisWidth(builder);\n\n  builder\n    .addRadio({\n      path: 'axisGridShow',\n      name: t('grafana-ui.builder.axis.name-grid-lines', 'Show grid lines'),\n      category,\n      defaultValue: undefined,\n      settings: {\n        options: [\n          { value: undefined, label: t('grafana-ui.builder.axis.grid-line-options.label-auto', 'Auto') },\n          { value: true, label: t('grafana-ui.builder.axis.grid-line-options.label-on', 'On') },\n          { value: false, label: t('grafana-ui.builder.axis.grid-line-options.label-off', 'Off') },\n        ],\n      },\n      showIf: (c) => c.axisPlacement !== AxisPlacement.Hidden,\n    })\n    .addRadio({\n      path: 'axisColorMode',\n      name: t('grafana-ui.builder.axis.color-label', 'Color'),\n      category,\n      defaultValue: AxisColorMode.Text,\n      settings: {\n        options: [\n          { value: AxisColorMode.Text, label: t('grafana-ui.builder.axis.color-options.label-text', 'Text') },\n          { value: AxisColorMode.Series, label: t('grafana-ui.builder.axis.color-options.label-series', 'Series') },\n        ],\n      },\n      showIf: (c) => c.axisPlacement !== AxisPlacement.Hidden,\n    })\n    .addBooleanSwitch({\n      path: 'axisBorderShow',\n      name: t('grafana-ui.builder.axis.name-show-border', 'Show border'),\n      category,\n      defaultValue: false,\n      showIf: (c) => c.axisPlacement !== AxisPlacement.Hidden,\n    });\n\n  // options for scale range\n  builder\n    .addCustomEditor<void, ScaleDistributionConfig>({\n      id: 'scaleDistribution',\n      path: 'scaleDistribution',\n      name: t('grafana-ui.builder.axis.name-scale', 'Scale'),\n      category,\n      editor: ScaleDistributionEditor,\n      override: ScaleDistributionEditor,\n      defaultValue: { type: ScaleDistribution.Linear },\n      shouldApply: (f) => f.type === FieldType.number,\n      process: identityOverrideProcessor,\n    })\n    .addBooleanSwitch({\n      path: 'axisCenteredZero',\n      name: t('grafana-ui.builder.axis.name-centered-zero', 'Centered zero'),\n      category,\n      defaultValue: false,\n      showIf: (c) => c.scaleDistribution?.type !== ScaleDistribution.Log,\n    })\n    .addNumberInput({\n      path: 'axisSoftMin',\n      name: t('grafana-ui.builder.axis.name-soft-min', 'Soft min'),\n      defaultValue: defaultConfig.axisSoftMin,\n      category,\n      settings: {\n        placeholder: t('grafana-ui.builder.axis.placeholder-soft-min', 'See: Standard options > Min'),\n      },\n    })\n    .addNumberInput({\n      path: 'axisSoftMax',\n      name: t('grafana-ui.builder.axis.name-soft-max', 'Soft max'),\n      defaultValue: defaultConfig.axisSoftMax,\n      category,\n      settings: {\n        placeholder: t('grafana-ui.builder.axis.placeholder-soft-max', 'See: Standard options > Max'),\n      },\n    });\n}\n\nconst LOG_DISTRIBUTION_OPTIONS: Array<SelectableValue<number>> = [\n  {\n    label: '2',\n    value: 2,\n  },\n  {\n    label: '10',\n    value: 10,\n  },\n];\n\nconst isValidLinearThreshold = (value: number): string | undefined => {\n  if (Number.isNaN(value)) {\n    return t('grafana-ui.axis-builder.linear-threshold.warning.nan', 'Linear threshold must be a number');\n  }\n  if (value === 0) {\n    return t('grafana-ui.axis-builder.linear-threshold.warning.zero', 'Linear threshold cannot be zero');\n  }\n  return;\n};\n\n/**\n * @internal\n */\nexport const ScaleDistributionEditor = ({\n  value,\n  onChange,\n}: Pick<StandardEditorProps<ScaleDistributionConfig>, 'value' | 'onChange'>) => {\n  const type = value?.type ?? ScaleDistribution.Linear;\n  const log = value?.log ?? 2;\n\n  const [localLinearThreshold, setLocalLinearThreshold] = useState<string>(\n    value?.linearThreshold != null ? String(value.linearThreshold) : ''\n  );\n  const [linearThresholdWarning, setLinearThresholdWarning] = useState<string | undefined>();\n\n  const DISTRIBUTION_OPTIONS: Array<SelectableValue<ScaleDistribution>> = [\n    {\n      label: t('grafana-ui.builder.axis.scale-distribution-editor.distribution-options.label-linear', 'Linear'),\n      value: ScaleDistribution.Linear,\n    },\n    {\n      label: t('grafana-ui.builder.axis.scale-distribution-editor.distribution-options.label-log', 'Logarithmic'),\n      value: ScaleDistribution.Log,\n    },\n    {\n      label: t('grafana-ui.builder.axis.scale-distribution-editor.distribution-options.label-symlog', 'Symlog'),\n      value: ScaleDistribution.Symlog,\n    },\n  ];\n\n  return (\n    <Stack direction=\"column\" gap={2}>\n      <RadioButtonGroup\n        value={type}\n        options={DISTRIBUTION_OPTIONS}\n        onChange={(v) => {\n          onChange({\n            ...value,\n            type: v!,\n            log: v === ScaleDistribution.Linear ? undefined : log,\n          });\n        }}\n      />\n      {(type === ScaleDistribution.Log || type === ScaleDistribution.Symlog) && (\n        <Field label={t('grafana-ui.axis-builder.log-base', 'Log base')} noMargin>\n          <Select\n            options={LOG_DISTRIBUTION_OPTIONS}\n            value={log}\n            onChange={(v) => {\n              onChange({\n                ...value,\n                log: v.value!,\n              });\n            }}\n          />\n        </Field>\n      )}\n      {type === ScaleDistribution.Symlog && (\n        // ADD error and invalid to field when needed\n        <Field\n          label={t('grafana-ui.axis-builder.linear-threshold.label', 'Linear threshold')}\n          invalid={!!linearThresholdWarning}\n          error={linearThresholdWarning}\n          style={{ marginBottom: 0 }}\n          noMargin\n        >\n          <Input\n            // eslint-disable-next-line @grafana/i18n/no-untranslated-strings\n            placeholder=\"1\"\n            value={localLinearThreshold}\n            invalid={!!linearThresholdWarning}\n            type=\"number\"\n            onBlur={(ev) => {\n              if (ev.currentTarget.value) {\n                setLinearThresholdWarning(isValidLinearThreshold(Number(ev.currentTarget.value)));\n              }\n            }}\n            onChange={(v) => {\n              setLocalLinearThreshold(v.currentTarget.value);\n              if (v.currentTarget.value === '') {\n                const newValue = { ...value };\n                delete newValue.linearThreshold;\n                onChange(newValue);\n                setLinearThresholdWarning(undefined);\n                return;\n              }\n\n              const asNumber = Number(v.currentTarget.value);\n              if (isValidLinearThreshold(asNumber) == null) {\n                setLinearThresholdWarning(undefined);\n                onChange({\n                  ...value,\n                  linearThreshold: asNumber,\n                });\n              }\n            }}\n          />\n        </Field>\n      )}\n    </Stack>\n  );\n};\n\n/** @internal */\nexport function addAxisWidth(builder: FieldConfigEditorBuilder<AxisConfig>) {\n  builder.addNumberInput({\n    path: 'axisWidth',\n    name: t('grafana-ui.builder.axis.name-width', 'Width'),\n    category: [t('grafana-ui.builder.axis.category-axis', 'Axis')],\n    settings: {\n      placeholder: t('grafana-ui.builder.axis.placeholder-width', 'Auto'),\n    },\n    showIf: (c) => c.axisPlacement !== AxisPlacement.Hidden,\n  });\n}\n\n/** @internal */\nexport function addAxisPlacement(\n  builder: FieldConfigEditorBuilder<AxisConfig>,\n  optionsFilter = (placement: AxisPlacement) => true\n) {\n  const graphFieldOptions = getGraphFieldOptions();\n  builder.addRadio({\n    path: 'axisPlacement',\n    name: t('grafana-ui.builder.axis.name-placement', 'Placement'),\n    category: [t('grafana-ui.builder.axis.category-axis', 'Axis')],\n    defaultValue: graphFieldOptions.axisPlacement[0].value,\n    settings: {\n      options: graphFieldOptions.axisPlacement.filter((placement) => optionsFilter(placement.value!)),\n    },\n  });\n}\n"],"names":["t","AxisPlacement","FieldType","AxisColorMode","ScaleDistribution","identityOverrideProcessor","useState","jsxs","Stack","jsx","RadioButtonGroup","Field","Select","Input","getGraphFieldOptions"],"mappings":"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"}