text: // @flow
  
  import _ from 'lodash';
  
  const AVATAR_COLORS = [
      '232, 105, 156',
      '255, 198, 115',
      '128, 128, 255',
      '105, 232, 194',
      '234, 255, 128'
  ];
  
  const AVATAR_OPACITY = 0.4;
  
  /**
   * Generates the background color of an initials based avatar.
   *
   * @param {string?} initials - The initials of the avatar.
   * @returns {string}
   */
  export function getAvatarColor(initials: ?string) {
      let colorIndex = 0;
  
      if (initials) {
          let nameHash = 0;
  
          for (const s of initials) {
              nameHash += s.codePointAt(0);
          }
  
          colorIndex = nameHash % AVATAR_COLORS.length;
      }
  
      return `rgba(${AVATAR_COLORS[colorIndex]}, ${AVATAR_OPACITY})`;
  }
  
  /**
   * Generates initials for a simple string.
   *
   * @param {string?} s - The string to generate initials for.
   * @returns {string?}
   */
  export function getInitials(s: ?string) {
      const words = _.words(s);
      let initials = '';
  
      for (const w of words) {
          initials.length < 2 && (initials += w.substr(0, 1).toUpperCase());
      }
  
      return initials || '?';
  }
  