You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			40 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
| 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);
 | |
| }
 |