export function getInitials(name?: string): string { if (!name || !name.length) { return '0'; } if (name.length > 2 && name.startsWith('05')) { // Just the third char of the pubkey when the name is a pubkey return upperAndShorten(name[2]); } if (name.split(/[-\s]/).length === 1) { // there is one word, so just return the first 2 alphanumeric chars of the name if (name.length > 1) { const alphanum = name.match(/[\p{L}\p{N}]+/u); if (alphanum) { return upperAndShorten(alphanum[0].slice(0, 2)); } } return upperAndShorten(name[0]); } // name has a space, just extract the first char of each words return upperAndShorten( name .split(/[-\s]/) .slice(0, 2) .map(n => // Allow a letter or a digit from any alphabet. n.match(/^[\p{L}\p{N}]/u) ) .join('') ); } function upperAndShorten(str: string) { // believe it or not, some chars put in uppercase can be more than one char. (ß for instance) return str.toLocaleUpperCase().slice(0, 2); }