{"version":3,"file":"DataLinkEditor.mjs","sources":["../../../../src/components/DataLinks/DataLinkEditor.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { memo, ChangeEvent } from 'react';\n\nimport { VariableSuggestion, GrafanaTheme2, DataLink } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/index';\nimport { t, Trans } from '../../utils/i18n';\nimport { Field } from '../Forms/Field';\nimport { Input } from '../Input/Input';\nimport { Switch } from '../Switch/Switch';\n\nimport { DataLinkInput } from './DataLinkInput';\n\ninterface DataLinkEditorProps {\n  index: number;\n  isLast: boolean;\n  value: DataLink;\n  suggestions: VariableSuggestion[];\n  onChange: (index: number, link: DataLink, callback?: () => void) => void;\n  showOneClick?: boolean;\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n  listItem: css({\n    marginBottom: theme.spacing(),\n  }),\n  infoText: css({\n    paddingBottom: theme.spacing(2),\n    marginLeft: '66px',\n    color: theme.colors.text.secondary,\n  }),\n});\n\nexport const DataLinkEditor = memo(\n  ({ index, value, onChange, suggestions, isLast, showOneClick = false }: DataLinkEditorProps) => {\n    const styles = useStyles2(getStyles);\n\n    const onUrlChange = (url: string, callback?: () => void) => {\n      onChange(index, { ...value, url }, callback);\n    };\n\n    const onTitleChange = (event: ChangeEvent<HTMLInputElement>) => {\n      onChange(index, { ...value, title: event.target.value });\n    };\n\n    const onOpenInNewTabChanged = () => {\n      onChange(index, { ...value, targetBlank: !value.targetBlank });\n    };\n\n    const onOneClickChanged = () => {\n      onChange(index, { ...value, oneClick: !value.oneClick });\n    };\n\n    return (\n      <div className={styles.listItem}>\n        <Field label={t('grafana-ui.data-link-editor.title-label', 'Title')}>\n          <Input\n            value={value.title}\n            onChange={onTitleChange}\n            placeholder={t('grafana-ui.data-link-editor.title-placeholder', 'Show details')}\n          />\n        </Field>\n\n        <Field label={t('grafana-ui.data-link-editor.url-label', 'URL')}>\n          <DataLinkInput value={value.url} onChange={onUrlChange} suggestions={suggestions} />\n        </Field>\n\n        <Field label={t('grafana-ui.data-link-editor.new-tab-label', 'Open in new tab')}>\n          <Switch value={value.targetBlank || false} onChange={onOpenInNewTabChanged} />\n        </Field>\n\n        {showOneClick && (\n          <Field\n            label={t('grafana-ui.data-link-inline-editor.one-click', 'One click')}\n            description={t(\n              'grafana-ui.data-link-editor-modal.one-click-description',\n              'Only one link can have one click enabled at a time'\n            )}\n          >\n            <Switch value={value.oneClick || false} onChange={onOneClickChanged} />\n          </Field>\n        )}\n\n        {isLast && (\n          <div className={styles.infoText}>\n            <Trans i18nKey=\"grafana-ui.data-link-editor.info\">\n              With data links you can reference data variables like series name, labels and values. Type CMD+Space,\n              CTRL+Space, or $ to open variable suggestions.\n            </Trans>\n          </div>\n        )}\n      </div>\n    );\n  }\n);\n\nDataLinkEditor.displayName = 'DataLinkEditor';\n"],"names":[],"mappings":"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"}