1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 | var UNWANTED_ENCLOSURES_REGEX = /[\(\[\{][^\)\]\}]*[\)\]\}]/g;
|
9 |
|
10 |
|
11 |
|
12 |
|
13 | var UNWANTED_CHARS_REGEX = /[\0-\u001F\!-/:-@\[-`\{-\u00BF\u0250-\u036F\uD800-\uFFFF]/g;
|
14 |
|
15 |
|
16 |
|
17 |
|
18 | var PHONENUMBER_REGEX = /^\d+[\d\s]*(:?ext|x|)\s*\d+$/i;
|
19 |
|
20 | var MULTIPLE_WHITESPACES_REGEX = /\s+/g;
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 | var UNSUPPORTED_TEXT_REGEX = /[\u0600-\u06FF\u0750-\u077F\u08A0-\u08FF\u1100-\u11FF\u3130-\u318F\uA960-\uA97F\uAC00-\uD7AF\uD7B0-\uD7FF\u3040-\u309F\u30A0-\u30FF\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF]|[\uD840-\uD869][\uDC00-\uDED6]/;
|
31 | function getInitialsLatin(displayName, isRtl) {
|
32 | var initials = '';
|
33 | var splits = displayName.split(' ');
|
34 | if (splits.length === 2) {
|
35 | initials += splits[0].charAt(0).toUpperCase();
|
36 | initials += splits[1].charAt(0).toUpperCase();
|
37 | }
|
38 | else if (splits.length === 3) {
|
39 | initials += splits[0].charAt(0).toUpperCase();
|
40 | initials += splits[2].charAt(0).toUpperCase();
|
41 | }
|
42 | else if (splits.length !== 0) {
|
43 | initials += splits[0].charAt(0).toUpperCase();
|
44 | }
|
45 | if (isRtl && initials.length > 1) {
|
46 | return initials.charAt(1) + initials.charAt(0);
|
47 | }
|
48 | return initials;
|
49 | }
|
50 | function cleanupDisplayName(displayName) {
|
51 | displayName = displayName.replace(UNWANTED_ENCLOSURES_REGEX, '');
|
52 | displayName = displayName.replace(UNWANTED_CHARS_REGEX, '');
|
53 | displayName = displayName.replace(MULTIPLE_WHITESPACES_REGEX, ' ');
|
54 | displayName = displayName.trim();
|
55 | return displayName;
|
56 | }
|
57 |
|
58 |
|
59 |
|
60 |
|
61 |
|
62 | export function getInitials(displayName, isRtl, allowPhoneInitials) {
|
63 | if (!displayName) {
|
64 | return '';
|
65 | }
|
66 | displayName = cleanupDisplayName(displayName);
|
67 |
|
68 | if (UNSUPPORTED_TEXT_REGEX.test(displayName) || (!allowPhoneInitials && PHONENUMBER_REGEX.test(displayName))) {
|
69 | return '';
|
70 | }
|
71 | return getInitialsLatin(displayName, isRtl);
|
72 | }
|
73 |
|
\ | No newline at end of file |