import PropTypes from "prop-types"; import { PureComponent } from "react"; import ImmutablePropTypes from "react-immutable-proptypes"; import { autoPlayGif } from "flavours/glitch/initial_state"; export default class AvatarComposite extends PureComponent { static propTypes = { accounts: ImmutablePropTypes.list.isRequired, animate: PropTypes.bool, size: PropTypes.number.isRequired, }; static defaultProps = { animate: autoPlayGif, }; renderItem (account, size, index) { const { animate } = this.props; let width = 50; let height = 100; let top = "auto"; let left = "auto"; let bottom = "auto"; let right = "auto"; if (size === 1) { width = 100; } if (size === 4 || (size === 3 && index > 0)) { height = 50; } if (size === 2) { if (index === 0) { right = "1px"; } else { left = "1px"; } } else if (size === 3) { if (index === 0) { right = "1px"; } else if (index > 0) { left = "1px"; } if (index === 1) { bottom = "1px"; } else if (index > 1) { top = "1px"; } } else if (size === 4) { if (index === 0 || index === 2) { right = "1px"; } if (index === 1 || index === 3) { left = "1px"; } if (index < 2) { bottom = "1px"; } else { top = "1px"; } } const style = { left: left, top: top, right: right, bottom: bottom, width: `${width}%`, height: `${height}%`, backgroundSize: "cover", backgroundImage: `url(${account.get(animate ? "avatar" : "avatar_static")})`, }; return (
); } render() { const { accounts, size } = this.props; return (
{accounts.take(4).map((account, i) => this.renderItem(account, Math.min(accounts.size, 4), i))} {accounts.size > 4 && ( +{accounts.size - 4} )}
); } }