UNPKG

12.8 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../src/Avatar.jsx"],"names":["textSizeRatio","textSizePercent","hashCode","str","hash","i","chr","length","charCodeAt","Math","abs","Avatar","num","index","floor","random","defaultColors","props","size","textScale","shape","backgroundColor","innerStyle","textColor","title","id","src","color","getColorByHash","width","height","lineHeight","fontSize","min","borderRadius","boxSizing","maxWidth","objectFit","display","justifyContent","alignItems","textAlign","fontFamily","name","avatar","defaultAvatar","constructor","getInnerStyle","placeholder","placeholderLimit","split","map","s","charAt","join","substr","style","className","children","componentClass","wrapperStyle","position","link","href","Component","Link","renderAsImage","renderAsText","PureComponent","Badge","Wrap","left","top","right","bottom","props2","offset","forEach","dir","defaultProps","propTypes","PropTypes","string","number","any","object"],"mappings":"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","sourcesContent":["import React, { PureComponent } from 'react';\nimport PropTypes from 'prop-types';\nimport isNull from 'lodash/isNull';\nimport isString from 'lodash/isString';\nimport ReactImageFallback from 'react-image-fallback';\n// import PureComponent from 'lsk-general/General/PureComponent';\nimport Link from '@lskjs/link';\n\n// import gifSpinner from './img/loading.gif';\nconst textSizeRatio = 3;\nconst textSizePercent = 30;\n\nconst hashCode = str => {\n if (isNull(str)) return null;\n if (!isString(str)) str += '';\n let hash = 0;\n let i;\n let chr;\n if (str.length === 0) return hash;\n for (i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i);\n hash = (hash << 5) - hash + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return Math.abs(hash);\n};\n\nclass Avatar extends PureComponent {\n getColorByHash(num) {\n if (isNull(num)) {\n const index = Math.floor(Math.random() * Avatar.defaultColors.length);\n return Avatar.defaultColors[index];\n }\n num %= Avatar.defaultColors.length;\n return Avatar.defaultColors[num - 1] || Avatar.defaultColors[0];\n }\n\n getInnerStyle() {\n const { size, textScale, shape, backgroundColor, innerStyle, textColor, title, id, src } = this.props;\n const str = id || title || null;\n const color = backgroundColor || this.getColorByHash(hashCode(str));\n\n const width = this.props.width || size;\n const height = this.props.height || size;\n\n const lineHeight = size;\n const fontSize = Math.min(\n // Math.floor(size / textSizeRatio * textScale),\n Math.floor((size * textSizePercent) / 100),\n lineHeight,\n );\n\n let borderRadius = 'none';\n if (shape === 'circle') {\n borderRadius = '50%';\n } else if (shape === 'rounded') {\n borderRadius = 6;\n }\n\n return {\n boxSizing: 'border-box',\n maxWidth: '100%',\n objectFit: 'cover',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n // overflow: 'hidden',\n width,\n height,\n textAlign: 'center',\n fontFamily: 'Helvetica, Arial, sans-serif',\n borderRadius,\n fontSize: `${fontSize}px`,\n lineHeight: `${lineHeight}px`,\n backgroundColor: src ? 'rgba(0, 0, 0, 0)' : color,\n color: textColor,\n ...innerStyle,\n };\n }\n\n renderAsImage() {\n const title = this.props.title || this.props.name;\n const src = this.props.src || this.props.avatar;\n return (\n <ReactImageFallback\n src={src}\n fallbackImage={this.props.defaultAvatar || this.constructor.defaultAvatar}\n initialImage={this.props.defaultAvatar || this.constructor.defaultAvatar}\n style={this.getInnerStyle()}\n alt={title}\n title={title}\n />\n );\n }\n\n renderAsText() {\n let { placeholder, placeholderLimit } = this.props;\n const title = this.props.title || this.props.name || placeholder || '';\n if (!placeholder) {\n placeholder = title\n .split(' ')\n .map(s => s.charAt(0))\n .join('')\n .substr(0, placeholderLimit);\n }\n return <div style={this.getInnerStyle()}>{placeholder}</div>;\n }\n\n render() {\n const { size, style, className, children, componentClass } = this.props;\n\n const src = this.props.src || this.props.avatar;\n const width = this.props.width || size;\n const height = this.props.height || size;\n\n const wrapperStyle = { display: 'block', position: 'relative', width, height, ...style };\n\n const link = this.props.link || this.props.href;\n const Component = componentClass || (link ? Link : 'div');\n\n return (\n <Component href={link} className={className} style={wrapperStyle}>\n {src != null ? this.renderAsImage() : this.renderAsText()}\n {children}\n </Component>\n );\n }\n}\n\nAvatar.Badge = props => {\n const { componentClass: Wrap, left, top, right, bottom, ...props2 } = props;\n const offset = '7%';\n const style = {\n position: 'absolute',\n };\n\n ['left', 'top', 'right', 'bottom'].forEach(dir => {\n if (!props[dir]) return;\n if (typeof props[dir] === 'string') {\n style[dir] = props[dir];\n } else if (typeof props[dir] === 'number') {\n style[dir] = `${props[dir]}%`;\n } else {\n style[dir] = offset;\n }\n });\n\n return (\n <div style={style} {...props2}>\n {props.children}\n </div>\n );\n};\n\nAvatar.defaultColors = ['#F8B195', '#F67280', '#C06C84', '#6C5B7B', '#355C7D'];\nAvatar.defaultAvatar = '//cdn.mgbeta.ru/lsk/no-avatar.png';\nAvatar.defaultProps = {\n title: '',\n name: '',\n src: null,\n\n size: 64,\n width: null,\n height: null,\n\n // backgroundColor: '#838383',\n textColor: '#d9d9d9',\n textScale: 1,\n\n placeholder: null,\n placeholderLimit: 3,\n\n shape: 'circle',\n\n style: {},\n innerStyle: {},\n};\n\nAvatar.propTypes = {\n title: PropTypes.string,\n src: PropTypes.string,\n\n size: PropTypes.number,\n width: PropTypes.any, // eslint-disable-line react/forbid-prop-types\n height: PropTypes.any, // eslint-disable-line react/forbid-prop-types\n\n color: PropTypes.string,\n textColor: PropTypes.string,\n textScale: PropTypes.number,\n\n shape: PropTypes.string,\n\n placeholder: PropTypes.string,\n placeholderLimit: PropTypes.number,\n // shape: PropTypes.oneOfType(['circle', 'square', 'rounded']),\n\n style: PropTypes.object,\n innerStyle: PropTypes.object,\n};\n\nexport default Avatar;\n"],"file":"Avatar.js"}
\No newline at end of file