@fluentui-react-native/experimental-avatar 0.14.40 → 0.14.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.json +58 -1
- package/CHANGELOG.md +28 -2
- package/FRNAvatar.podspec +0 -2
- package/lib/JSAvatar.js +1 -1
- package/lib/JSAvatar.js.map +1 -1
- package/lib/JSAvatarTokens.win32.d.ts.map +1 -1
- package/lib/JSAvatarTokens.win32.js +1 -0
- package/lib/JSAvatarTokens.win32.js.map +1 -1
- package/lib/useAvatar.d.ts +3 -5
- package/lib/useAvatar.d.ts.map +1 -1
- package/lib/useAvatar.js +22 -13
- package/lib/useAvatar.js.map +1 -1
- package/lib-commonjs/JSAvatar.js +1 -1
- package/lib-commonjs/JSAvatar.js.map +1 -1
- package/lib-commonjs/JSAvatarTokens.win32.d.ts.map +1 -1
- package/lib-commonjs/JSAvatarTokens.win32.js +1 -0
- package/lib-commonjs/JSAvatarTokens.win32.js.map +1 -1
- package/lib-commonjs/useAvatar.d.ts +3 -5
- package/lib-commonjs/useAvatar.d.ts.map +1 -1
- package/lib-commonjs/useAvatar.js +24 -15
- package/lib-commonjs/useAvatar.js.map +1 -1
- package/package.json +2 -2
- package/src/JSAvatar.tsx +1 -1
- package/src/JSAvatarTokens.win32.ts +1 -0
- package/src/__tests__/JSAvatar.test.jsx +48 -77
- package/src/useAvatar.ts +25 -13
- package/lib/utils/getInitials.d.ts +0 -15
- package/lib/utils/getInitials.d.ts.map +0 -1
- package/lib/utils/getInitials.js +0 -78
- package/lib/utils/getInitials.js.map +0 -1
- package/lib/utils/getInitials.test.d.ts +0 -2
- package/lib/utils/getInitials.test.d.ts.map +0 -1
- package/lib/utils/getInitials.test.js +0 -116
- package/lib/utils/getInitials.test.js.map +0 -1
- package/lib/utils/index.d.ts +0 -2
- package/lib/utils/index.d.ts.map +0 -1
- package/lib/utils/index.js +0 -2
- package/lib/utils/index.js.map +0 -1
- package/lib-commonjs/utils/getInitials.d.ts +0 -15
- package/lib-commonjs/utils/getInitials.d.ts.map +0 -1
- package/lib-commonjs/utils/getInitials.js +0 -82
- package/lib-commonjs/utils/getInitials.js.map +0 -1
- package/lib-commonjs/utils/getInitials.test.d.ts +0 -2
- package/lib-commonjs/utils/getInitials.test.d.ts.map +0 -1
- package/lib-commonjs/utils/getInitials.test.js +0 -118
- package/lib-commonjs/utils/getInitials.test.js.map +0 -1
- package/lib-commonjs/utils/index.d.ts +0 -2
- package/lib-commonjs/utils/index.d.ts.map +0 -1
- package/lib-commonjs/utils/index.js +0 -6
- package/lib-commonjs/utils/index.js.map +0 -1
- package/src/utils/getInitials.test.ts +0 -154
- package/src/utils/getInitials.ts +0 -92
- package/src/utils/index.ts +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { JSAvatar } from '..';
|
|
3
|
-
import { getInitials
|
|
3
|
+
import { getInitials } from '../useAvatar';
|
|
4
4
|
import * as renderer from 'react-test-renderer';
|
|
5
5
|
|
|
6
6
|
const alphabeticalTestNames = [
|
|
@@ -18,7 +18,6 @@ const alphabeticalTestNames = [
|
|
|
18
18
|
'Richard Feynman {Teams}',
|
|
19
19
|
];
|
|
20
20
|
const alphabeticalInitials = ['M', 'AK', 'MB', 'AK', 'AK', 'WL', 'WL', 'AK', 'RF', 'R', 'RF', 'RF'];
|
|
21
|
-
const otherTestNames = ['(206) 123-4567', '耿盈盈']; // will return this case after bug bash - '耿 James'
|
|
22
21
|
const namesWithTitles = ['Mr Feynman', 'Dr Richard Feynman'];
|
|
23
22
|
const initialsForNameWithTitles = ['F', 'RF'];
|
|
24
23
|
|
|
@@ -29,130 +28,102 @@ describe('Avatar rendering', () => {
|
|
|
29
28
|
});
|
|
30
29
|
});
|
|
31
30
|
|
|
32
|
-
describe('
|
|
33
|
-
it('
|
|
34
|
-
|
|
35
|
-
expect(validateAlphabeticalCharacters(alphabeticalTestNames[i])).toBeTruthy();
|
|
36
|
-
}
|
|
37
|
-
for (let i = 0; i < otherTestNames.length; i++) {
|
|
38
|
-
expect(validateAlphabeticalCharacters(otherTestNames[i])).toBeFalsy();
|
|
39
|
-
}
|
|
31
|
+
describe('getInitials - names with titles', () => {
|
|
32
|
+
it('returns initials without title', () => {
|
|
33
|
+
expect(getInitials('Mr Faynman')).toBe('F');
|
|
40
34
|
});
|
|
35
|
+
it('returns initials for names with multi-word titles', () => {
|
|
36
|
+
expect(getInitials('Consul General Richard Faynman')).toBe('RF');
|
|
37
|
+
expect(getInitials('Major General Victor')).toBe('V');
|
|
38
|
+
});
|
|
39
|
+
});
|
|
41
40
|
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
describe('getInitials method - language support', () => {
|
|
42
|
+
it('returns correct initials cyrillic language', () => {
|
|
43
|
+
const test = getInitials('Илон Маск');
|
|
44
|
+
expect(test).toBe('ИМ');
|
|
44
45
|
});
|
|
45
|
-
it(
|
|
46
|
-
|
|
46
|
+
it('calculates correct initials for non-ASCII characters', () => {
|
|
47
|
+
const test = getInitials('Írissa Þórðardóttir');
|
|
48
|
+
expect(test).toBe('ÍÞ');
|
|
47
49
|
});
|
|
48
|
-
it(
|
|
49
|
-
|
|
50
|
+
it('returns correct initials for non-ASCII characters', () => {
|
|
51
|
+
const test = getInitials('Øyvind Åsen');
|
|
52
|
+
expect(test).toBe('ØÅ');
|
|
50
53
|
});
|
|
51
54
|
});
|
|
52
55
|
|
|
53
|
-
describe('removeTitlesFromName method', () => {
|
|
54
|
-
it('removes titles from the name', () => {
|
|
55
|
-
const words = ['Mr', 'Faynman'];
|
|
56
|
-
expect(removeTitlesFromName(words)).toStrictEqual(['Faynman']);
|
|
57
|
-
});
|
|
58
|
-
// it('removes multiword titles from the name', () => {
|
|
59
|
-
// const name = 'Consul General Richard Faynman';
|
|
60
|
-
// expect(removeTitlesFromName(name)).toStrictEqual(['Richard Faynman']);
|
|
61
|
-
// });
|
|
62
|
-
});
|
|
63
|
-
|
|
64
56
|
describe('getInitials method', () => {
|
|
65
57
|
it('returns correct initials', () => {
|
|
66
58
|
const test = getInitials('-Test str with *spaces');
|
|
67
59
|
expect(test).toBe('TS');
|
|
68
60
|
});
|
|
69
|
-
|
|
70
61
|
it('returns an empty string if name is undefined', () => {
|
|
71
62
|
expect(getInitials(undefined)).toBe('');
|
|
72
63
|
});
|
|
73
|
-
|
|
74
64
|
it('return initials for alphabetical words', () => {
|
|
75
65
|
for (let i = 0; i < alphabeticalTestNames.length; i++) {
|
|
76
66
|
expect(getInitials(alphabeticalTestNames[i])).toBe(alphabeticalInitials[i]);
|
|
77
67
|
}
|
|
78
68
|
});
|
|
79
|
-
|
|
80
69
|
it('return initials for words with titles', () => {
|
|
81
70
|
for (let i = 0; i < namesWithTitles.length; i++) {
|
|
82
71
|
expect(getInitials(namesWithTitles[i])).toBe(initialsForNameWithTitles[i]);
|
|
83
72
|
}
|
|
84
73
|
});
|
|
85
|
-
|
|
86
74
|
it("returns initials when there's a coma", () => {
|
|
87
75
|
expect(getInitials('Second, First')).toEqual('SF');
|
|
88
76
|
});
|
|
89
|
-
|
|
90
77
|
// Unit tests from Web
|
|
91
78
|
it('handles null inputs', () => {
|
|
92
79
|
expect(getInitials(null)).toEqual('');
|
|
93
80
|
expect(getInitials(undefined)).toEqual('');
|
|
94
81
|
});
|
|
95
|
-
|
|
96
|
-
// it('calculates an expected initials in LTR for non-ASCII characters', () => {
|
|
97
|
-
// expect(getInitials('Írissa Þórðardóttir')).toEqual('ÍÞ');
|
|
98
|
-
// expect(getInitials('Øyvind Åsen')).toEqual('ØÅ');
|
|
99
|
-
// });
|
|
100
|
-
|
|
101
82
|
it('calculates an expected initials in LTR with a hypen', () => {
|
|
102
83
|
expect(getInitials('David Zearing-Goff')).toEqual('DZ');
|
|
103
84
|
});
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
// });
|
|
85
|
+
it('calculates an expected initials in LTR with numbers', () => {
|
|
86
|
+
expect(getInitials('4lex 5loo')).toEqual('LL');
|
|
87
|
+
});
|
|
108
88
|
it('calculates an expected initials in LTR with multiple parentheses, extra spaces, and unwanted characters', () => {
|
|
109
89
|
const result = getInitials(' !@#$%^&*()=+ (Alpha) David (The man) `~<>,./?[]{}| Goff (Gamma) ');
|
|
110
90
|
expect(result).toEqual('DG');
|
|
111
91
|
});
|
|
112
|
-
|
|
113
92
|
it('calculates an expected initials in LTR with multiple types of unwanted text', () => {
|
|
114
|
-
const result = getInitials(
|
|
93
|
+
const result = getInitials(" !@#$%^&*()=+ (Alpha) /David (The man) `~<>,./?[]{}| 'Goff (Gamma) [Beta] ");
|
|
115
94
|
expect(result).toEqual('DG');
|
|
116
95
|
});
|
|
117
|
-
|
|
118
96
|
it('calculates an expected initials for Arabic names', () => {
|
|
119
|
-
expect(getInitials('خسرو رحیمی')).toEqual('');
|
|
97
|
+
expect(getInitials('خسرو رحیمی')).toEqual('خ');
|
|
120
98
|
});
|
|
121
|
-
|
|
122
99
|
it('calculates an expected initials for Chinese names', () => {
|
|
123
|
-
expect(getInitials('桂英')).toEqual('');
|
|
124
|
-
expect(getInitials('佳')).toEqual('');
|
|
125
|
-
expect(getInitials('宋智洋')).toEqual('');
|
|
100
|
+
expect(getInitials('桂英')).toEqual('桂');
|
|
101
|
+
expect(getInitials('佳')).toEqual('佳');
|
|
102
|
+
expect(getInitials('宋智洋')).toEqual('宋');
|
|
126
103
|
});
|
|
127
|
-
|
|
128
104
|
it('calculates an expected initials for Korean names', () => {
|
|
129
|
-
expect(getInitials('강현')).toEqual('');
|
|
130
|
-
expect(getInitials('최종래')).toEqual('');
|
|
131
|
-
expect(getInitials('남궁 성종')).toEqual('');
|
|
105
|
+
expect(getInitials('강현')).toEqual('강');
|
|
106
|
+
expect(getInitials('최종래')).toEqual('최');
|
|
107
|
+
expect(getInitials('남궁 성종')).toEqual('남');
|
|
132
108
|
});
|
|
133
|
-
|
|
134
109
|
it('calculates an expected initials for Japanese names', () => {
|
|
135
|
-
expect(getInitials('松田')).toEqual('');
|
|
136
|
-
expect(getInitials('海野')).toEqual('');
|
|
137
|
-
expect(getInitials('かり')).toEqual('');
|
|
110
|
+
expect(getInitials('松田')).toEqual('松');
|
|
111
|
+
expect(getInitials('海野')).toEqual('海');
|
|
112
|
+
expect(getInitials('かり')).toEqual('か');
|
|
113
|
+
});
|
|
114
|
+
it('validates phone numbers', () => {
|
|
115
|
+
expect(getInitials('12345678')).toEqual('');
|
|
116
|
+
// expect(getInitials('+1 (555) 123-4567 ext.4567')).toEqual('');
|
|
117
|
+
expect(getInitials('+47 12 34 56 78 (X 5678)')).toEqual('');
|
|
118
|
+
expect(getInitials('47 12 34')).toEqual('');
|
|
119
|
+
expect(getInitials('47 12')).toEqual('');
|
|
120
|
+
|
|
121
|
+
expect(getInitials('James Ext 2')).toEqual('JE');
|
|
122
|
+
// expect(getInitials('1 Ext 2')).toEqual('');
|
|
123
|
+
// expect(getInitials('1x1')).toEqual('');
|
|
124
|
+
result = getInitials('1');
|
|
125
|
+
expect(result).toEqual('');
|
|
126
|
+
result = getInitials('A 2');
|
|
127
|
+
expect(result).toEqual('A');
|
|
138
128
|
});
|
|
139
|
-
|
|
140
|
-
// it('validates phone numbers', () => {
|
|
141
|
-
// expect(getInitials('12345678')).toEqual('');
|
|
142
|
-
// expect(getInitials('+1 (555) 123-4567 ext.4567')).toEqual('');
|
|
143
|
-
// expect(getInitials('+47 12 34 56 78 (X 5678)')).toEqual('4');
|
|
144
|
-
// expect(getInitials('47 12 34')).toEqual('');
|
|
145
|
-
// expect(getInitials('47 12')).toEqual('');
|
|
146
|
-
// expect(getInitials('1 Ext 2')).toEqual('');
|
|
147
|
-
// result = getInitials('James Ext 2');
|
|
148
|
-
// expect(result).toEqual('JE');
|
|
149
|
-
// result = getInitials('1x1');
|
|
150
|
-
// expect(result).toEqual('');
|
|
151
|
-
// result = getInitials('1y1');
|
|
152
|
-
// expect(result).toEqual('');
|
|
153
|
-
// result = getInitials('1');
|
|
154
|
-
// expect(result).toEqual('');
|
|
155
|
-
// result = getInitials('A 2');
|
|
156
|
-
// expect(result).toEqual('A');
|
|
157
|
-
// });
|
|
158
129
|
});
|
package/src/useAvatar.ts
CHANGED
|
@@ -73,30 +73,42 @@ export const useAvatar = (props: JSAvatarProps): AvatarInfo => {
|
|
|
73
73
|
* Words in braces, titles, special characters, parantheses and dashes should be ignored.
|
|
74
74
|
*/
|
|
75
75
|
export const getInitials = (name: string): string => {
|
|
76
|
-
if (!name
|
|
76
|
+
if (!name) {
|
|
77
77
|
return '';
|
|
78
78
|
}
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
79
|
+
const ARABIC_ASIAN_REGEXP = new RegExp(
|
|
80
|
+
'[\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]',
|
|
81
|
+
'g',
|
|
82
|
+
);
|
|
83
|
+
const words = removeRedundantCharacters(name);
|
|
83
84
|
const wordsLength = words.length;
|
|
84
85
|
const lastWordIdx = wordsLength - 1;
|
|
85
|
-
const
|
|
86
|
+
const firstLetter = words[0].charAt(0).toUpperCase();
|
|
87
|
+
const lastLetter = wordsLength > 1 ? words[lastWordIdx].charAt(0).toUpperCase() : '';
|
|
88
|
+
const initials = `${firstLetter}${ARABIC_ASIAN_REGEXP.test(name) ? '' : lastLetter}`;
|
|
86
89
|
return initials;
|
|
87
90
|
};
|
|
88
91
|
|
|
89
92
|
/**
|
|
90
|
-
* A function which
|
|
93
|
+
* A function which takes a name and returns array of valid words
|
|
91
94
|
*
|
|
92
95
|
* @param name
|
|
93
|
-
* @returns
|
|
94
|
-
* numeric values or the first character is non-alphabetical. In this case avatar should
|
|
95
|
-
* fall back to icon.
|
|
96
|
+
* @returns array of words without phone numbers and special characters.
|
|
96
97
|
*/
|
|
97
|
-
export const
|
|
98
|
-
|
|
99
|
-
|
|
98
|
+
export const removeRedundantCharacters = (name: string): string[] => {
|
|
99
|
+
if (!name) {
|
|
100
|
+
return [];
|
|
101
|
+
}
|
|
102
|
+
const WORDS_IN_BRACES_REGEXP = new RegExp('[(\\[\\{][^\\)\\]\\}]*[\\)\\]\\}]', 'g');
|
|
103
|
+
const PHONE_NUMBER_REGEXP = new RegExp('(\\+|(\\d|\\s))', 'g');
|
|
104
|
+
const SPECIAL_CHARACTERS_REGEXP = new RegExp('[!"#\'$%&*+,-./:;>=<?@^_`|~¡¢£¤¥¦§¨©ª«¬®ˉ°±²¼½¾¿×÷]', 'g');
|
|
105
|
+
const words = name
|
|
106
|
+
.replace(WORDS_IN_BRACES_REGEXP, '')
|
|
107
|
+
.replace(PHONE_NUMBER_REGEXP, ' ')
|
|
108
|
+
.replace(SPECIAL_CHARACTERS_REGEXP, '')
|
|
109
|
+
.trim()
|
|
110
|
+
.split(' ');
|
|
111
|
+
return removeTitlesFromName(words);
|
|
100
112
|
};
|
|
101
113
|
|
|
102
114
|
/**
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Regular expressions matching characters to ignore when calculating the initials.
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Get (up to 2 characters) initials based on display name of the persona.
|
|
6
|
-
*
|
|
7
|
-
* @param displayName - The full name of the person or entity
|
|
8
|
-
* @param isRtl - Whether the display is in RTL
|
|
9
|
-
* @param allowPhoneInitials - Should initials be generated from phone numbers (default false)
|
|
10
|
-
*
|
|
11
|
-
* @returns The 1 or 2 character initials based on the name. Or an empty string if no initials
|
|
12
|
-
* could be derived from the name.
|
|
13
|
-
*/
|
|
14
|
-
export declare function getInitials(displayName: string | undefined | null, isRtl: boolean, allowPhoneInitials?: boolean): string;
|
|
15
|
-
//# sourceMappingURL=getInitials.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getInitials.d.ts","sourceRoot":"","sources":["../../src/utils/getInitials.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkEH;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,CAAC,EAAE,OAAO,GAAG,MAAM,CAaxH"}
|
package/lib/utils/getInitials.js
DELETED
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Regular expressions matching characters to ignore when calculating the initials.
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Regular expression matching characters within various types of enclosures, including the enclosures themselves
|
|
6
|
-
* so for example, (xyz) [xyz] {xyz} all would be ignored
|
|
7
|
-
*/
|
|
8
|
-
var UNWANTED_ENCLOSURES_REGEX = /[\(\[\{][^\)\]\}]*[\)\]\}]/g;
|
|
9
|
-
/**
|
|
10
|
-
* Regular expression matching special ASCII characters except space, plus some unicode special characters.
|
|
11
|
-
* Applies after unwanted enclosures have been removed
|
|
12
|
-
*/
|
|
13
|
-
var UNWANTED_CHARS_REGEX = /[\0-\u001F\!-/:-@\[-`\{-\u00BF\u0250-\u036F\uD800-\uFFFF]/g;
|
|
14
|
-
/**
|
|
15
|
-
* Regular expression matching phone numbers. Applied after chars matching UNWANTED_CHARS_REGEX have been removed
|
|
16
|
-
* and number has been trimmed for whitespaces
|
|
17
|
-
*/
|
|
18
|
-
var PHONENUMBER_REGEX = /^\d+[\d\s]*(:?ext|x|)\s*\d+$/i;
|
|
19
|
-
/** Regular expression matching one or more spaces. */
|
|
20
|
-
var MULTIPLE_WHITESPACES_REGEX = /\s+/g;
|
|
21
|
-
/**
|
|
22
|
-
* Regular expression matching languages for which we currently don't support initials.
|
|
23
|
-
* Arabic: Arabic, Arabic Supplement, Arabic Extended-A.
|
|
24
|
-
* Korean: Hangul Jamo, Hangul Compatibility Jamo, Hangul Jamo Extended-A, Hangul Syllables, Hangul Jamo Extended-B.
|
|
25
|
-
* Japanese: Hiragana, Katakana.
|
|
26
|
-
* CJK: CJK Unified Ideographs Extension A, CJK Unified Ideographs, CJK Compatibility Ideographs,
|
|
27
|
-
* CJK Unified Ideographs Extension B
|
|
28
|
-
*/
|
|
29
|
-
// eslint-disable-next-line @fluentui/max-len
|
|
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
|
-
* Get (up to 2 characters) initials based on display name of the persona.
|
|
59
|
-
*
|
|
60
|
-
* @param displayName - The full name of the person or entity
|
|
61
|
-
* @param isRtl - Whether the display is in RTL
|
|
62
|
-
* @param allowPhoneInitials - Should initials be generated from phone numbers (default false)
|
|
63
|
-
*
|
|
64
|
-
* @returns The 1 or 2 character initials based on the name. Or an empty string if no initials
|
|
65
|
-
* could be derived from the name.
|
|
66
|
-
*/
|
|
67
|
-
export function getInitials(displayName, isRtl, allowPhoneInitials) {
|
|
68
|
-
if (!displayName) {
|
|
69
|
-
return '';
|
|
70
|
-
}
|
|
71
|
-
displayName = cleanupDisplayName(displayName);
|
|
72
|
-
// For names containing CJK characters, and phone numbers, we don't display initials
|
|
73
|
-
if (UNSUPPORTED_TEXT_REGEX.test(displayName) || (!allowPhoneInitials && PHONENUMBER_REGEX.test(displayName))) {
|
|
74
|
-
return '';
|
|
75
|
-
}
|
|
76
|
-
return getInitialsLatin(displayName, isRtl);
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=getInitials.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getInitials.js","sourceRoot":"","sources":["../../src/utils/getInitials.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,IAAM,yBAAyB,GAAW,6BAA6B,CAAC;AAExE;;;GAGG;AACH,IAAM,oBAAoB,GAAW,4DAA4D,CAAC;AAElG;;;GAGG;AACH,IAAM,iBAAiB,GAAW,+BAA+B,CAAC;AAElE,sDAAsD;AACtD,IAAM,0BAA0B,GAAW,MAAM,CAAC;AAElD;;;;;;;GAOG;AACH,6CAA6C;AAC7C,IAAM,sBAAsB,GAC1B,4MAA4M,CAAC;AAE/M,SAAS,gBAAgB,CAAC,WAAmB,EAAE,KAAc;IAC3D,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,IAAM,MAAM,GAAa,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEhD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9C,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;KAC/C;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9B,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9C,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;KAC/C;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9B,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;KAC/C;IAED,IAAI,KAAK,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QAChC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAChD;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAmB;IAC7C,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;IACjE,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IAC5D,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;IACnE,WAAW,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IAEjC,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,WAAsC,EAAE,KAAc,EAAE,kBAA4B;IAC9G,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,EAAE,CAAC;KACX;IAED,WAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAE9C,oFAAoF;IACpF,IAAI,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,kBAAkB,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE;QAC5G,OAAO,EAAE,CAAC;KACX;IAED,OAAO,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getInitials.test.d.ts","sourceRoot":"","sources":["../../src/utils/getInitials.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import { getInitials } from './getInitials';
|
|
2
|
-
describe('getInitials', function () {
|
|
3
|
-
it('handles null inputs', function () {
|
|
4
|
-
var result = getInitials(null, false);
|
|
5
|
-
expect(result).toEqual('');
|
|
6
|
-
result = getInitials(undefined, false);
|
|
7
|
-
expect(result).toEqual('');
|
|
8
|
-
});
|
|
9
|
-
it('calculates an expected initials in LTR', function () {
|
|
10
|
-
var result = getInitials('Kat Larrson', false);
|
|
11
|
-
expect(result).toEqual('KL');
|
|
12
|
-
});
|
|
13
|
-
it('calculates an expected initials in LTR for non-ASCII characters', function () {
|
|
14
|
-
var result = getInitials('Írissa Þórðardóttir', false);
|
|
15
|
-
expect(result).toEqual('ÍÞ');
|
|
16
|
-
result = getInitials('Øyvind Åsen', false);
|
|
17
|
-
expect(result).toEqual('ØÅ');
|
|
18
|
-
});
|
|
19
|
-
it('calculates an expected initials in LTR with a hypen', function () {
|
|
20
|
-
var result = getInitials('David Zearing-Goff', false);
|
|
21
|
-
expect(result).toEqual('DZ');
|
|
22
|
-
});
|
|
23
|
-
it('calculates an expected initials in LTR with numbers', function () {
|
|
24
|
-
var result = getInitials('4lex 5loo', false);
|
|
25
|
-
expect(result).toEqual('45');
|
|
26
|
-
});
|
|
27
|
-
it('calculates an expected initials in LTR with parentheses', function () {
|
|
28
|
-
var result = getInitials('David (The man) Goff', false);
|
|
29
|
-
expect(result).toEqual('DG');
|
|
30
|
-
});
|
|
31
|
-
it('calculates an expected initials in LTR with brackets', function () {
|
|
32
|
-
var result = getInitials('David Goff [The man]', false);
|
|
33
|
-
expect(result).toEqual('DG');
|
|
34
|
-
});
|
|
35
|
-
it('calculates an expected initials in LTR with curly braces', function () {
|
|
36
|
-
var result = getInitials('David {The man} Goff', false);
|
|
37
|
-
expect(result).toEqual('DG');
|
|
38
|
-
});
|
|
39
|
-
it('calculates an expected initials in LTR with multiple parentheses, extra spaces, and unwanted characters', function () {
|
|
40
|
-
var result = getInitials(' !@#$%^&*()=+ (Alpha) David (The man) `~<>,./?[]{}| Goff (Gamma) ', false);
|
|
41
|
-
expect(result).toEqual('DG');
|
|
42
|
-
});
|
|
43
|
-
it('calculates an expected initials in LTR with multiple types of unwanted text', function () {
|
|
44
|
-
var result = getInitials(' !@#$%^&*()=+ (Alpha) David (The man) `~<>,./?[]{}| Goff (Gamma) [Beta] ', false);
|
|
45
|
-
expect(result).toEqual('DG');
|
|
46
|
-
});
|
|
47
|
-
it('calculates an expected initials in RTL if one was not specified', function () {
|
|
48
|
-
var result = getInitials('Kat Larrson', true);
|
|
49
|
-
expect(result).toEqual('LK');
|
|
50
|
-
});
|
|
51
|
-
it('calculates an expected initials in LTR for names with multiple components', function () {
|
|
52
|
-
var result = getInitials('A', false);
|
|
53
|
-
expect(result).toEqual('A');
|
|
54
|
-
result = getInitials('A B', false);
|
|
55
|
-
expect(result).toEqual('AB');
|
|
56
|
-
result = getInitials('A B C', false);
|
|
57
|
-
expect(result).toEqual('AC');
|
|
58
|
-
result = getInitials('A B C D', false);
|
|
59
|
-
expect(result).toEqual('A');
|
|
60
|
-
});
|
|
61
|
-
it('calculates an expected initials for Arabic names', function () {
|
|
62
|
-
var result = getInitials('خسرو رحیمی', true);
|
|
63
|
-
expect(result).toEqual('');
|
|
64
|
-
});
|
|
65
|
-
it('calculates an expected initials for Chinese names', function () {
|
|
66
|
-
var result = getInitials('桂英', false);
|
|
67
|
-
expect(result).toEqual('');
|
|
68
|
-
result = getInitials('佳', false);
|
|
69
|
-
expect(result).toEqual('');
|
|
70
|
-
result = getInitials('宋智洋', false);
|
|
71
|
-
expect(result).toEqual('');
|
|
72
|
-
});
|
|
73
|
-
it('calculates an expected initials for Korean names', function () {
|
|
74
|
-
var result = getInitials('강현', false);
|
|
75
|
-
expect(result).toEqual('');
|
|
76
|
-
result = getInitials('최종래', false);
|
|
77
|
-
expect(result).toEqual('');
|
|
78
|
-
result = getInitials('남궁 성종', false);
|
|
79
|
-
expect(result).toEqual('');
|
|
80
|
-
});
|
|
81
|
-
it('calculates an expected initials for Japanese names', function () {
|
|
82
|
-
var result = getInitials('松田', false);
|
|
83
|
-
expect(result).toEqual('');
|
|
84
|
-
result = getInitials('海野', false);
|
|
85
|
-
expect(result).toEqual('');
|
|
86
|
-
result = getInitials('かり', false);
|
|
87
|
-
expect(result).toEqual('');
|
|
88
|
-
});
|
|
89
|
-
it('calculates expected initials for phone numbers', function () {
|
|
90
|
-
var result = getInitials('12345678', false);
|
|
91
|
-
expect(result).toEqual('');
|
|
92
|
-
result = getInitials('+1 (555) 123-4567 ext.4567', false);
|
|
93
|
-
expect(result).toEqual('');
|
|
94
|
-
result = getInitials('+47 12 34 56 78 (X 5678)', false);
|
|
95
|
-
expect(result).toEqual('');
|
|
96
|
-
result = getInitials('+47 12 34 56 78 (X 5678)', false, true);
|
|
97
|
-
expect(result).toEqual('4');
|
|
98
|
-
result = getInitials('47 12 34', false, true);
|
|
99
|
-
expect(result).toEqual('43');
|
|
100
|
-
result = getInitials('47 12', false, true);
|
|
101
|
-
expect(result).toEqual('41');
|
|
102
|
-
result = getInitials('1 Ext 2', false);
|
|
103
|
-
expect(result).toEqual('');
|
|
104
|
-
result = getInitials('James Ext 2', false);
|
|
105
|
-
expect(result).toEqual('J2');
|
|
106
|
-
result = getInitials('1x1', false);
|
|
107
|
-
expect(result).toEqual('');
|
|
108
|
-
result = getInitials('1y1', false);
|
|
109
|
-
expect(result).toEqual('1');
|
|
110
|
-
result = getInitials('1', false);
|
|
111
|
-
expect(result).toEqual('1');
|
|
112
|
-
result = getInitials('A 2', false);
|
|
113
|
-
expect(result).toEqual('A2');
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
//# sourceMappingURL=getInitials.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getInitials.test.js","sourceRoot":"","sources":["../../src/utils/getInitials.test.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/index.d.ts
DELETED
package/lib/utils/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
package/lib/utils/index.js
DELETED
package/lib/utils/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Regular expressions matching characters to ignore when calculating the initials.
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Get (up to 2 characters) initials based on display name of the persona.
|
|
6
|
-
*
|
|
7
|
-
* @param displayName - The full name of the person or entity
|
|
8
|
-
* @param isRtl - Whether the display is in RTL
|
|
9
|
-
* @param allowPhoneInitials - Should initials be generated from phone numbers (default false)
|
|
10
|
-
*
|
|
11
|
-
* @returns The 1 or 2 character initials based on the name. Or an empty string if no initials
|
|
12
|
-
* could be derived from the name.
|
|
13
|
-
*/
|
|
14
|
-
export declare function getInitials(displayName: string | undefined | null, isRtl: boolean, allowPhoneInitials?: boolean): string;
|
|
15
|
-
//# sourceMappingURL=getInitials.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getInitials.d.ts","sourceRoot":"","sources":["../../src/utils/getInitials.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkEH;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,CAAC,EAAE,OAAO,GAAG,MAAM,CAaxH"}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Regular expressions matching characters to ignore when calculating the initials.
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getInitials = void 0;
|
|
7
|
-
/**
|
|
8
|
-
* Regular expression matching characters within various types of enclosures, including the enclosures themselves
|
|
9
|
-
* so for example, (xyz) [xyz] {xyz} all would be ignored
|
|
10
|
-
*/
|
|
11
|
-
var UNWANTED_ENCLOSURES_REGEX = /[\(\[\{][^\)\]\}]*[\)\]\}]/g;
|
|
12
|
-
/**
|
|
13
|
-
* Regular expression matching special ASCII characters except space, plus some unicode special characters.
|
|
14
|
-
* Applies after unwanted enclosures have been removed
|
|
15
|
-
*/
|
|
16
|
-
var UNWANTED_CHARS_REGEX = /[\0-\u001F\!-/:-@\[-`\{-\u00BF\u0250-\u036F\uD800-\uFFFF]/g;
|
|
17
|
-
/**
|
|
18
|
-
* Regular expression matching phone numbers. Applied after chars matching UNWANTED_CHARS_REGEX have been removed
|
|
19
|
-
* and number has been trimmed for whitespaces
|
|
20
|
-
*/
|
|
21
|
-
var PHONENUMBER_REGEX = /^\d+[\d\s]*(:?ext|x|)\s*\d+$/i;
|
|
22
|
-
/** Regular expression matching one or more spaces. */
|
|
23
|
-
var MULTIPLE_WHITESPACES_REGEX = /\s+/g;
|
|
24
|
-
/**
|
|
25
|
-
* Regular expression matching languages for which we currently don't support initials.
|
|
26
|
-
* Arabic: Arabic, Arabic Supplement, Arabic Extended-A.
|
|
27
|
-
* Korean: Hangul Jamo, Hangul Compatibility Jamo, Hangul Jamo Extended-A, Hangul Syllables, Hangul Jamo Extended-B.
|
|
28
|
-
* Japanese: Hiragana, Katakana.
|
|
29
|
-
* CJK: CJK Unified Ideographs Extension A, CJK Unified Ideographs, CJK Compatibility Ideographs,
|
|
30
|
-
* CJK Unified Ideographs Extension B
|
|
31
|
-
*/
|
|
32
|
-
// eslint-disable-next-line @fluentui/max-len
|
|
33
|
-
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]/;
|
|
34
|
-
function getInitialsLatin(displayName, isRtl) {
|
|
35
|
-
var initials = '';
|
|
36
|
-
var splits = displayName.split(' ');
|
|
37
|
-
if (splits.length === 2) {
|
|
38
|
-
initials += splits[0].charAt(0).toUpperCase();
|
|
39
|
-
initials += splits[1].charAt(0).toUpperCase();
|
|
40
|
-
}
|
|
41
|
-
else if (splits.length === 3) {
|
|
42
|
-
initials += splits[0].charAt(0).toUpperCase();
|
|
43
|
-
initials += splits[2].charAt(0).toUpperCase();
|
|
44
|
-
}
|
|
45
|
-
else if (splits.length !== 0) {
|
|
46
|
-
initials += splits[0].charAt(0).toUpperCase();
|
|
47
|
-
}
|
|
48
|
-
if (isRtl && initials.length > 1) {
|
|
49
|
-
return initials.charAt(1) + initials.charAt(0);
|
|
50
|
-
}
|
|
51
|
-
return initials;
|
|
52
|
-
}
|
|
53
|
-
function cleanupDisplayName(displayName) {
|
|
54
|
-
displayName = displayName.replace(UNWANTED_ENCLOSURES_REGEX, '');
|
|
55
|
-
displayName = displayName.replace(UNWANTED_CHARS_REGEX, '');
|
|
56
|
-
displayName = displayName.replace(MULTIPLE_WHITESPACES_REGEX, ' ');
|
|
57
|
-
displayName = displayName.trim();
|
|
58
|
-
return displayName;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Get (up to 2 characters) initials based on display name of the persona.
|
|
62
|
-
*
|
|
63
|
-
* @param displayName - The full name of the person or entity
|
|
64
|
-
* @param isRtl - Whether the display is in RTL
|
|
65
|
-
* @param allowPhoneInitials - Should initials be generated from phone numbers (default false)
|
|
66
|
-
*
|
|
67
|
-
* @returns The 1 or 2 character initials based on the name. Or an empty string if no initials
|
|
68
|
-
* could be derived from the name.
|
|
69
|
-
*/
|
|
70
|
-
function getInitials(displayName, isRtl, allowPhoneInitials) {
|
|
71
|
-
if (!displayName) {
|
|
72
|
-
return '';
|
|
73
|
-
}
|
|
74
|
-
displayName = cleanupDisplayName(displayName);
|
|
75
|
-
// For names containing CJK characters, and phone numbers, we don't display initials
|
|
76
|
-
if (UNSUPPORTED_TEXT_REGEX.test(displayName) || (!allowPhoneInitials && PHONENUMBER_REGEX.test(displayName))) {
|
|
77
|
-
return '';
|
|
78
|
-
}
|
|
79
|
-
return getInitialsLatin(displayName, isRtl);
|
|
80
|
-
}
|
|
81
|
-
exports.getInitials = getInitials;
|
|
82
|
-
//# sourceMappingURL=getInitials.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getInitials.js","sourceRoot":"","sources":["../../src/utils/getInitials.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH;;;GAGG;AACH,IAAM,yBAAyB,GAAW,6BAA6B,CAAC;AAExE;;;GAGG;AACH,IAAM,oBAAoB,GAAW,4DAA4D,CAAC;AAElG;;;GAGG;AACH,IAAM,iBAAiB,GAAW,+BAA+B,CAAC;AAElE,sDAAsD;AACtD,IAAM,0BAA0B,GAAW,MAAM,CAAC;AAElD;;;;;;;GAOG;AACH,6CAA6C;AAC7C,IAAM,sBAAsB,GAC1B,4MAA4M,CAAC;AAE/M,SAAS,gBAAgB,CAAC,WAAmB,EAAE,KAAc;IAC3D,IAAI,QAAQ,GAAG,EAAE,CAAC;IAElB,IAAM,MAAM,GAAa,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEhD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9C,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;KAC/C;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9B,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9C,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;KAC/C;SAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9B,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;KAC/C;IAED,IAAI,KAAK,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;QAChC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KAChD;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAmB;IAC7C,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;IACjE,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IAC5D,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;IACnE,WAAW,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;IAEjC,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,WAAW,CAAC,WAAsC,EAAE,KAAc,EAAE,kBAA4B;IAC9G,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,EAAE,CAAC;KACX;IAED,WAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAE9C,oFAAoF;IACpF,IAAI,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,kBAAkB,IAAI,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE;QAC5G,OAAO,EAAE,CAAC;KACX;IAED,OAAO,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC;AAbD,kCAaC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getInitials.test.d.ts","sourceRoot":"","sources":["../../src/utils/getInitials.test.ts"],"names":[],"mappings":""}
|