| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 | // @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) {
    // We don't want to use the domain part of an email address, if it is one
    const initialsBasis = _.split(s, '@')[0];
    const words = _.words(initialsBasis);
    let initials = '';
    for (const w of words) {
        (initials.length < 2) && (initials += w.substr(0, 1).toUpperCase());
    }
    return initials;
}
 |