{"version":3,"file":"SingleValue.cjs","sources":["../../../../src/components/Select/SingleValue.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { components, GroupBase, SingleValueProps } from 'react-select';\n\nimport { GrafanaTheme2, SelectableValue, toIconName } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { useDelayedSwitch } from '../../utils/useDelayedSwitch';\nimport { Icon } from '../Icon/Icon';\nimport { Spinner } from '../Spinner/Spinner';\nimport { FadeTransition } from '../transitions/FadeTransition';\nimport { SlideOutTransition } from '../transitions/SlideOutTransition';\n\nconst getStyles = (theme: GrafanaTheme2) => {\n  return {\n    singleValue: css({\n      label: 'singleValue',\n      whiteSpace: 'nowrap',\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n      boxSizing: 'border-box',\n      maxWidth: '100%',\n      gridArea: '1 / 1 / 2 / 3',\n    }),\n    spinnerWrapper: css({\n      width: '16px',\n      height: '16px',\n      display: 'inline-block',\n      marginRight: '10px',\n      position: 'relative',\n      verticalAlign: 'middle',\n      overflow: 'hidden',\n    }),\n    spinnerIcon: css({\n      width: '100%',\n      height: '100%',\n      position: 'absolute',\n    }),\n    optionIcon: css({\n      marginRight: theme.spacing(1),\n      color: theme.colors.text.secondary,\n    }),\n    disabled: css({\n      color: theme.colors.text.disabled,\n    }),\n    isOpen: css({\n      color: theme.colors.text.disabled,\n    }),\n  };\n};\n\ntype StylesType = ReturnType<typeof getStyles>;\n\nexport type Props<T> = SingleValueProps<SelectableValue<T>, boolean, GroupBase<SelectableValue<T>>>;\n\nexport const SingleValue = <T extends unknown>(props: Props<T>) => {\n  const { children, data, isDisabled } = props;\n  const styles = useStyles2(getStyles);\n  const loading = useDelayedSwitch(data.loading || false, { delay: 250, duration: 750 });\n  const icon = data.icon ? toIconName(data.icon) : undefined;\n\n  return (\n    <components.SingleValue\n      {...props}\n      className={cx(styles.singleValue, isDisabled && styles.disabled, props.selectProps.menuIsOpen && styles.isOpen)}\n    >\n      {data.imgUrl ? (\n        <FadeWithImage loading={loading} imgUrl={data.imgUrl} styles={styles} alt={String(data.label ?? data.value)} />\n      ) : (\n        <>\n          <SlideOutTransition horizontal size={16} visible={loading} duration={150}>\n            <div className={styles.spinnerWrapper}>\n              <Spinner className={styles.spinnerIcon} inline />\n            </div>\n          </SlideOutTransition>\n          {icon && <Icon name={icon} role=\"img\" className={styles.optionIcon} />}\n        </>\n      )}\n\n      {!data.hideText && children}\n    </components.SingleValue>\n  );\n};\n\nconst FadeWithImage = (props: { loading: boolean; imgUrl: string; styles: StylesType; alt?: string }) => {\n  return (\n    <div className={props.styles.spinnerWrapper}>\n      <FadeTransition duration={150} visible={props.loading}>\n        <Spinner className={props.styles.spinnerIcon} inline />\n      </FadeTransition>\n      <FadeTransition duration={150} visible={!props.loading}>\n        <img className={props.styles.spinnerIcon} src={props.imgUrl} alt={props.alt} />\n      </FadeTransition>\n    </div>\n  );\n};\n"],"names":["css","data","useStyles2","useDelayedSwitch","toIconName","jsxs","components","cx","jsx","Fragment","SlideOutTransition","Spinner","Icon","FadeTransition"],"mappings":"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"}