{"version":3,"file":"DataLinksListItemBase.mjs","sources":["../../../../../src/components/DataLinks/DataLinksInlineEditor/DataLinksListItemBase.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { Draggable } from '@hello-pangea/dnd';\n\nimport { Action, DataFrame, DataLink, GrafanaTheme2 } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useStyles2 } from '../../../themes/ThemeContext';\nimport { Badge } from '../../Badge/Badge';\nimport { Icon } from '../../Icon/Icon';\nimport { IconButton } from '../../IconButton/IconButton';\n\nexport interface DataLinksListItemBaseProps<T extends DataLink | Action> {\n  index: number;\n  item: T;\n  data: DataFrame[];\n  onChange: (index: number, item: T) => void;\n  onEdit: () => void;\n  onRemove: () => void;\n  isEditing?: boolean;\n  itemKey: string;\n}\n\n/** @internal */\nexport function DataLinksListItemBase<T extends DataLink | Action>({\n  item,\n  onEdit,\n  onRemove,\n  index,\n  itemKey,\n}: DataLinksListItemBaseProps<T>) {\n  const styles = useStyles2(getDataLinkListItemStyles);\n  const { title = '', oneClick = false } = item;\n\n  // @ts-ignore - https://github.com/microsoft/TypeScript/issues/27808\n  const url = item.url ?? item.fetch?.url ?? '';\n\n  const hasTitle = title.trim() !== '';\n  const hasUrl = url.trim() !== '';\n\n  return (\n    <Draggable key={itemKey} draggableId={itemKey} index={index}>\n      {(provided) => (\n        <div\n          className={cx(styles.wrapper, styles.dragRow)}\n          ref={provided.innerRef}\n          {...provided.draggableProps}\n          key={index}\n        >\n          <div className={styles.linkDetails}>\n            <div className={cx(styles.url, !hasTitle && styles.notConfigured)}>\n              {hasTitle ? title : t('grafana-ui.data-links-inline-editor.title-not-provided', 'Title not provided')}\n            </div>\n            <div className={cx(styles.url, !hasUrl && styles.notConfigured)} title={url}>\n              {hasUrl ? url : t('grafana-ui.data-links-inline-editor.url-not-provided', 'Data link url not provided')}\n            </div>\n          </div>\n          <div className={styles.icons}>\n            {oneClick && (\n              <Badge\n                color=\"blue\"\n                text={t('grafana-ui.data-links-inline-editor.one-click', 'One click')}\n                tooltip={t('grafana-ui.data-links-inline-editor.one-click-enabled', 'One click enabled')}\n              />\n            )}\n            <IconButton\n              name=\"pen\"\n              onClick={onEdit}\n              className={styles.icon}\n              tooltip={t('grafana-ui.data-links-inline-editor.tooltip-edit', 'Edit')}\n            />\n            <IconButton\n              name=\"trash-alt\"\n              onClick={onRemove}\n              className={styles.icon}\n              tooltip={t('grafana-ui.data-links-inline-editor.tooltip-remove', 'Remove')}\n            />\n            <div className={styles.dragIcon} {...provided.dragHandleProps}>\n              <Icon name=\"draggabledots\" size=\"lg\" />\n            </div>\n          </div>\n        </div>\n      )}\n    </Draggable>\n  );\n}\n\nconst getDataLinkListItemStyles = (theme: GrafanaTheme2) => {\n  return {\n    wrapper: css({\n      display: 'flex',\n      flexGrow: 1,\n      alignItems: 'center',\n      justifyContent: 'space-between',\n      padding: '5px 0 5px 10px',\n      borderRadius: theme.shape.radius.default,\n      background: theme.colors.background.secondary,\n      gap: 8,\n    }),\n    linkDetails: css({\n      display: 'flex',\n      flexDirection: 'column',\n      flexGrow: 1,\n      maxWidth: `calc(100% - 100px)`,\n    }),\n    errored: css({\n      color: theme.colors.error.text,\n      fontStyle: 'italic',\n    }),\n    notConfigured: css({\n      fontStyle: 'italic',\n    }),\n    title: css({\n      color: theme.colors.text.primary,\n      fontSize: theme.typography.size.sm,\n      fontWeight: theme.typography.fontWeightMedium,\n    }),\n    url: css({\n      color: theme.colors.text.secondary,\n      fontSize: theme.typography.size.sm,\n      whiteSpace: 'nowrap',\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n    }),\n    dragRow: css({\n      position: 'relative',\n      margin: '8px',\n    }),\n    icons: css({\n      display: 'flex',\n      padding: 6,\n      alignItems: 'center',\n      gap: 8,\n    }),\n    dragIcon: css({\n      cursor: 'grab',\n      color: theme.colors.text.secondary,\n      margin: theme.spacing(0, 0.5),\n    }),\n    icon: css({\n      color: theme.colors.text.secondary,\n    }),\n  };\n};\n"],"names":[],"mappings":"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"}