{"version":3,"file":"DataLinksListItemBase.cjs","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  const url = ('type' in item ? item[item.type]?.url : item.url) ?? '';\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":["useStyles2","Draggable","createElement","cx","jsxs","jsx","t","Badge","IconButton","Icon","css"],"mappings":"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"}