{"version":3,"file":"AvatarWrapper.mjs","sources":["../../src/avatarWrapper/AvatarWrapper.tsx"],"sourcesContent":["import { Person as ProfileIcon, Briefcase as BriefcaseIcon } from '@transferwise/icons';\nimport { useState, useEffect } from 'react';\n\nimport Avatar, { AvatarProps, AvatarType } from '../avatar';\nimport Badge, { BadgeProps } from '../badge';\nimport {\n  ProfileType,\n  ProfileTypePersonal,\n  ProfileTypeBusiness,\n  Size,\n  Sentiment,\n  getInitials,\n  Status,\n} from '../common';\nimport StatusIcon from '../statusIcon/StatusIcon';\n\ninterface OptionalBadgeProps extends Omit<BadgeProps, 'badge'> {\n  url?: string;\n  ariaLabel?: string;\n  altText?: string;\n  statusIcon?: Sentiment | Status.PENDING;\n}\n\nconst OptionalBadge = ({\n  url,\n  altText,\n  statusIcon,\n  children,\n  ariaLabel,\n  ...rest\n}: OptionalBadgeProps) => {\n  if (url) {\n    return (\n      <Badge aria-label={ariaLabel} badge={<img src={url} alt={altText} />} {...rest}>\n        {children}\n      </Badge>\n    );\n  }\n  if (statusIcon) {\n    return (\n      <Badge\n        aria-label={ariaLabel}\n        badge={<StatusIcon sentiment={statusIcon} size={Size.SMALL} />}\n        {...rest}\n      >\n        {children}\n      </Badge>\n    );\n  }\n  return <>{children}</>;\n};\n\nexport type AvatarWrapperProps = {\n  url?: string;\n  'aria-label'?: string;\n  profileType?: ProfileTypeBusiness | ProfileTypePersonal;\n  profileId?: string;\n  name?: string;\n  avatarProps?: AvatarProps;\n  badgeProps?: BadgeProps;\n} & (\n  | {\n      badgeUrl: string;\n      badgeAltText: string;\n      badgeStatusIcon?: never;\n    }\n  | {\n      badgeUrl?: never;\n      badgeAltText?: never;\n      badgeStatusIcon: Sentiment | Status.PENDING;\n    }\n  | {\n      badgeUrl?: never;\n      badgeAltText?: never;\n      badgeStatusIcon?: never;\n    }\n);\n\n/**\n * @deprecated Use `AvatarView` component instead\n */\nconst AvatarWrapper = ({\n  url,\n  'aria-label': ariaLabel,\n  profileType,\n  profileId,\n  badgeUrl,\n  badgeAltText,\n  badgeStatusIcon,\n  name,\n  avatarProps,\n  badgeProps,\n}: AvatarWrapperProps) => {\n  const [hasImageLoadError, setImageLoadError] = useState(false);\n  const isBusinessProfile = profileType === ProfileType.BUSINESS;\n\n  // Reset the errored state when url changes\n  useEffect(() => setImageLoadError(false), [url]);\n\n  const getAvatarProps = () => {\n    let updatedAvatarProps = avatarProps;\n    if (!badgeUrl && !badgeStatusIcon && ariaLabel) {\n      updatedAvatarProps = { ...updatedAvatarProps, 'aria-label': ariaLabel };\n    }\n    if (url && !hasImageLoadError) {\n      return {\n        type: AvatarType.THUMBNAIL,\n        children: <img src={url} alt=\"\" onError={() => setImageLoadError(true)} />,\n        ...updatedAvatarProps,\n      };\n    }\n    if (profileType) {\n      return {\n        type: AvatarType.ICON,\n        children: isBusinessProfile ? <BriefcaseIcon size=\"24\" /> : <ProfileIcon size=\"24\" />,\n        ...updatedAvatarProps,\n      };\n    }\n    if (name) {\n      return {\n        type: AvatarType.INITIALS,\n        children: <>{getInitials(name)}</>,\n        backgroundColorSeed: profileId?.toString(),\n        ...updatedAvatarProps,\n      };\n    }\n    return {\n      type: AvatarType.ICON,\n      children: <ProfileIcon size=\"24\" />,\n      ...updatedAvatarProps,\n    };\n  };\n\n  return (\n    <OptionalBadge\n      url={badgeUrl}\n      ariaLabel={ariaLabel}\n      altText={badgeAltText}\n      statusIcon={badgeStatusIcon}\n      {...badgeProps}\n    >\n      <Avatar size={Size.MEDIUM} {...getAvatarProps()} />\n    </OptionalBadge>\n  );\n};\n\nexport default AvatarWrapper;\n"],"names":["OptionalBadge","url","altText","statusIcon","children","ariaLabel","rest","_jsx","Badge","badge","src","alt","StatusIcon","sentiment","size","Size","SMALL","_Fragment","AvatarWrapper","profileType","profileId","badgeUrl","badgeAltText","badgeStatusIcon","name","avatarProps","badgeProps","hasImageLoadError","setImageLoadError","useState","isBusinessProfile","ProfileType","BUSINESS","useEffect","getAvatarProps","updatedAvatarProps","type","AvatarType","THUMBNAIL","onError","ICON","BriefcaseIcon","ProfileIcon","INITIALS","getInitials","backgroundColorSeed","toString","Avatar","MEDIUM"],"mappings":"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"}