{"version":3,"file":"CustomizedAvatar.jsx","sourceRoot":"","sources":["CustomizedAvatar.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Avatar, Spin, Tooltip } from 'antd';\nimport _ from 'lodash';\nimport React, { useMemo } from 'react';\n\nimport { qiniuImageView } from '../utils/utils';\nimport styles from './index.module.css';\n\ntype PropType = {\n  name?: string;\n  src?: string;\n  size?: string | number;\n  loading?: boolean;\n  alt?: string;\n  icon?: any;\n  width?: number;\n  className?: string;\n  onClick?: (e: any) => void;\n  online?: boolean;\n  group?: boolean;\n};\n\nconst calSize = (size: string | undefined | number, width: number | undefined) => {\n  let sizeNumber = 32;\n  if (typeof size === 'number') {\n    sizeNumber = size;\n  } else if (size !== 'auto') {\n    switch (size) {\n      case 'small':\n        sizeNumber = 24;\n        break;\n      case 'large':\n        sizeNumber = 40;\n        break;\n      default:\n    }\n  } else if (width) {\n    sizeNumber = Math.floor(width * 0.8);\n  }\n  return sizeNumber;\n};\n\nconst formatURL = (src: string | undefined, size: number) => {\n  let formatedURL = src;\n  if (src) {\n    formatedURL = qiniuImageView(src, 5, size * 2);\n  }\n  return formatedURL;\n};\n\nconst CustomizedAvatar: React.FC<PropType> = ({\n  name,\n  src,\n  size,\n  loading,\n  alt,\n  icon,\n  width,\n  online,\n  group,\n  ...props\n}) => {\n  const sizeNumber = useMemo(() => calSize(size, width), [size, width]);\n  const formatedURL = src?.startsWith('http') ? formatURL(src, sizeNumber) : src;\n  const getImageAvatar = () => {\n    return (\n      <Tooltip title={name ?? ''}>\n        {group ? (\n          <Avatar src={formatedURL} size={sizeNumber} icon={icon} alt={alt} {...props} />\n        ) : (\n          <span className=\"relative\">\n            <Avatar src={formatedURL} size={sizeNumber} icon={icon} alt={alt} {...props} />\n            {loading && (\n              <div className=\"absolute\" style={{ top: 0, left: 0, right: 0 }}>\n                <Spin />\n              </div>\n            )}\n            <div className={online ? styles.avatarOnline : ''} />\n          </span>\n        )}\n      </Tooltip>\n    );\n  };\n\n  const getColorTextAvatar = (color: string, text: string, otherProps?: any) => (\n    <Avatar style={{ backgroundColor: color }} size={sizeNumber} alt={alt} {...props}>\n      <div\n        style={{\n          fontSize: sizeNumber / 2,\n          fontWeight: 'bold',\n          textTransform: 'uppercase',\n          ...otherProps,\n        }}\n      >\n        {text}\n      </div>\n    </Avatar>\n  );\n\n  const getColorAvatar = (color: string, text: string) => {\n    return (\n      <Tooltip title={name ?? ''}>\n        {group ? (\n          getColorTextAvatar(color, text, size === 'auto' ? {} : { 'line-height': sizeNumber - 2 })\n        ) : (\n          <div className=\"relative\">\n            {getColorTextAvatar(color, text)}\n            <div className={online ? styles.avatarOnline : ''} />\n          </div>\n        )}\n      </Tooltip>\n    );\n  };\n\n  const split = (s: string | undefined) => _.filter(s?.split(/(#)(?!.*\\1)/), (l: string) => l !== '#');\n\n  const getAvatarView = () => {\n    if (size === 'auto') {\n      if (formatedURL?.startsWith('http') || !formatedURL) {\n        return group ? getImageAvatar() : <div className=\"w-full\">{getImageAvatar()}</div>;\n      }\n      const data = split(formatedURL);\n      if (data && data.length === 2) {\n        return group ? (\n          getColorAvatar(data[0], ` ${data[1]} `)\n        ) : (\n          <div className=\"w-full\">{getColorAvatar(data[0], ` ${data[1]} `)}</div>\n        );\n      }\n      return (\n        // eslint-disable-next-line react/jsx-no-useless-fragment\n        <>\n          {group ? (\n            <Avatar size={sizeNumber} />\n          ) : (\n            <div className=\"relative\">\n              <Avatar size={sizeNumber} />\n              <div className={online ? styles.avatarOnline : ''} />\n            </div>\n          )}\n        </>\n      );\n    }\n    if (formatedURL?.startsWith('http') || !formatedURL) {\n      return getImageAvatar();\n    }\n    const data = split(formatedURL);\n    if (data && data.length === 2) {\n      return getColorAvatar(data[0], data[1]);\n    }\n    return (\n      // eslint-disable-next-line react/jsx-no-useless-fragment\n      <>\n        {group ? (\n          <Avatar size={sizeNumber} icon={icon} />\n        ) : (\n          <div className=\"relative\">\n            <Avatar size={sizeNumber} icon={icon} />\n            <div className={online ? styles.avatarOnline : ''} />\n          </div>\n        )}\n      </>\n    );\n  };\n\n  return getAvatarView();\n};\n\nexport default CustomizedAvatar;\n"]}