@fluentui/react-avatar 9.2.10 → 9.2.11

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.
Files changed (115) hide show
  1. package/CHANGELOG.json +72 -1
  2. package/CHANGELOG.md +18 -2
  3. package/lib/components/Avatar/Avatar.js.map +1 -1
  4. package/lib/components/Avatar/renderAvatar.js +10 -5
  5. package/lib/components/Avatar/renderAvatar.js.map +1 -1
  6. package/lib/components/Avatar/useAvatar.js +17 -32
  7. package/lib/components/Avatar/useAvatar.js.map +1 -1
  8. package/lib/components/Avatar/useAvatarStyles.js +405 -424
  9. package/lib/components/Avatar/useAvatarStyles.js.map +1 -1
  10. package/lib/components/AvatarGroup/AvatarGroup.js +0 -1
  11. package/lib/components/AvatarGroup/AvatarGroup.js.map +1 -1
  12. package/lib/components/AvatarGroup/renderAvatarGroup.js +2 -2
  13. package/lib/components/AvatarGroup/renderAvatarGroup.js.map +1 -1
  14. package/lib/components/AvatarGroup/useAvatarGroup.js +0 -1
  15. package/lib/components/AvatarGroup/useAvatarGroup.js.map +1 -1
  16. package/lib/components/AvatarGroup/useAvatarGroupContextValues.js.map +1 -1
  17. package/lib/components/AvatarGroup/useAvatarGroupStyles.js +10 -13
  18. package/lib/components/AvatarGroup/useAvatarGroupStyles.js.map +1 -1
  19. package/lib/components/AvatarGroupItem/AvatarGroupItem.js +0 -1
  20. package/lib/components/AvatarGroupItem/AvatarGroupItem.js.map +1 -1
  21. package/lib/components/AvatarGroupItem/renderAvatarGroupItem.js +6 -4
  22. package/lib/components/AvatarGroupItem/renderAvatarGroupItem.js.map +1 -1
  23. package/lib/components/AvatarGroupItem/useAvatarGroupItem.js +2 -5
  24. package/lib/components/AvatarGroupItem/useAvatarGroupItem.js.map +1 -1
  25. package/lib/components/AvatarGroupItem/useAvatarGroupItemStyles.js +99 -124
  26. package/lib/components/AvatarGroupItem/useAvatarGroupItemStyles.js.map +1 -1
  27. package/lib/components/AvatarGroupPopover/AvatarGroupPopover.js +0 -1
  28. package/lib/components/AvatarGroupPopover/AvatarGroupPopover.js.map +1 -1
  29. package/lib/components/AvatarGroupPopover/renderAvatarGroupPopover.js +10 -6
  30. package/lib/components/AvatarGroupPopover/renderAvatarGroupPopover.js.map +1 -1
  31. package/lib/components/AvatarGroupPopover/useAvatarGroupPopover.js +0 -7
  32. package/lib/components/AvatarGroupPopover/useAvatarGroupPopover.js.map +1 -1
  33. package/lib/components/AvatarGroupPopover/useAvatarGroupPopoverContextValues.js.map +1 -1
  34. package/lib/components/AvatarGroupPopover/useAvatarGroupPopoverStyles.js +166 -176
  35. package/lib/components/AvatarGroupPopover/useAvatarGroupPopoverStyles.js.map +1 -1
  36. package/lib/contexts/AvatarContext.js +0 -3
  37. package/lib/contexts/AvatarContext.js.map +1 -1
  38. package/lib/contexts/AvatarGroupContext.js +0 -1
  39. package/lib/contexts/AvatarGroupContext.js.map +1 -1
  40. package/lib/index.js.map +1 -1
  41. package/lib/utils/getInitials.js +2 -17
  42. package/lib/utils/getInitials.js.map +1 -1
  43. package/lib/utils/partitionAvatarGroupItems.js +0 -3
  44. package/lib/utils/partitionAvatarGroupItems.js.map +1 -1
  45. package/lib-commonjs/Avatar.js +0 -2
  46. package/lib-commonjs/Avatar.js.map +1 -1
  47. package/lib-commonjs/AvatarGroup.js +0 -2
  48. package/lib-commonjs/AvatarGroup.js.map +1 -1
  49. package/lib-commonjs/AvatarGroupItem.js +0 -2
  50. package/lib-commonjs/AvatarGroupItem.js.map +1 -1
  51. package/lib-commonjs/AvatarGroupPopover.js +0 -2
  52. package/lib-commonjs/AvatarGroupPopover.js.map +1 -1
  53. package/lib-commonjs/components/Avatar/Avatar.js +0 -5
  54. package/lib-commonjs/components/Avatar/Avatar.js.map +1 -1
  55. package/lib-commonjs/components/Avatar/Avatar.types.js.map +1 -1
  56. package/lib-commonjs/components/Avatar/index.js +0 -6
  57. package/lib-commonjs/components/Avatar/index.js.map +1 -1
  58. package/lib-commonjs/components/Avatar/renderAvatar.js +10 -9
  59. package/lib-commonjs/components/Avatar/renderAvatar.js.map +1 -1
  60. package/lib-commonjs/components/Avatar/useAvatar.js +17 -42
  61. package/lib-commonjs/components/Avatar/useAvatar.js.map +1 -1
  62. package/lib-commonjs/components/Avatar/useAvatarStyles.js +405 -428
  63. package/lib-commonjs/components/Avatar/useAvatarStyles.js.map +1 -1
  64. package/lib-commonjs/components/AvatarGroup/AvatarGroup.js +0 -7
  65. package/lib-commonjs/components/AvatarGroup/AvatarGroup.js.map +1 -1
  66. package/lib-commonjs/components/AvatarGroup/AvatarGroup.types.js.map +1 -1
  67. package/lib-commonjs/components/AvatarGroup/index.js +0 -7
  68. package/lib-commonjs/components/AvatarGroup/index.js.map +1 -1
  69. package/lib-commonjs/components/AvatarGroup/renderAvatarGroup.js +2 -7
  70. package/lib-commonjs/components/AvatarGroup/renderAvatarGroup.js.map +1 -1
  71. package/lib-commonjs/components/AvatarGroup/useAvatarGroup.js +0 -4
  72. package/lib-commonjs/components/AvatarGroup/useAvatarGroup.js.map +1 -1
  73. package/lib-commonjs/components/AvatarGroup/useAvatarGroupContextValues.js +0 -2
  74. package/lib-commonjs/components/AvatarGroup/useAvatarGroupContextValues.js.map +1 -1
  75. package/lib-commonjs/components/AvatarGroup/useAvatarGroupStyles.js +10 -18
  76. package/lib-commonjs/components/AvatarGroup/useAvatarGroupStyles.js.map +1 -1
  77. package/lib-commonjs/components/AvatarGroupItem/AvatarGroupItem.js +0 -6
  78. package/lib-commonjs/components/AvatarGroupItem/AvatarGroupItem.js.map +1 -1
  79. package/lib-commonjs/components/AvatarGroupItem/AvatarGroupItem.types.js.map +1 -1
  80. package/lib-commonjs/components/AvatarGroupItem/index.js +0 -6
  81. package/lib-commonjs/components/AvatarGroupItem/index.js.map +1 -1
  82. package/lib-commonjs/components/AvatarGroupItem/renderAvatarGroupItem.js +6 -8
  83. package/lib-commonjs/components/AvatarGroupItem/renderAvatarGroupItem.js.map +1 -1
  84. package/lib-commonjs/components/AvatarGroupItem/useAvatarGroupItem.js +2 -12
  85. package/lib-commonjs/components/AvatarGroupItem/useAvatarGroupItem.js.map +1 -1
  86. package/lib-commonjs/components/AvatarGroupItem/useAvatarGroupItemStyles.js +91 -123
  87. package/lib-commonjs/components/AvatarGroupItem/useAvatarGroupItemStyles.js.map +1 -1
  88. package/lib-commonjs/components/AvatarGroupPopover/AvatarGroupPopover.js +0 -7
  89. package/lib-commonjs/components/AvatarGroupPopover/AvatarGroupPopover.js.map +1 -1
  90. package/lib-commonjs/components/AvatarGroupPopover/AvatarGroupPopover.types.js.map +1 -1
  91. package/lib-commonjs/components/AvatarGroupPopover/index.js +0 -6
  92. package/lib-commonjs/components/AvatarGroupPopover/index.js.map +1 -1
  93. package/lib-commonjs/components/AvatarGroupPopover/renderAvatarGroupPopover.js +10 -12
  94. package/lib-commonjs/components/AvatarGroupPopover/renderAvatarGroupPopover.js.map +1 -1
  95. package/lib-commonjs/components/AvatarGroupPopover/useAvatarGroupPopover.js +0 -16
  96. package/lib-commonjs/components/AvatarGroupPopover/useAvatarGroupPopover.js.map +1 -1
  97. package/lib-commonjs/components/AvatarGroupPopover/useAvatarGroupPopoverContextValues.js +0 -2
  98. package/lib-commonjs/components/AvatarGroupPopover/useAvatarGroupPopoverContextValues.js.map +1 -1
  99. package/lib-commonjs/components/AvatarGroupPopover/useAvatarGroupPopoverStyles.js +166 -183
  100. package/lib-commonjs/components/AvatarGroupPopover/useAvatarGroupPopoverStyles.js.map +1 -1
  101. package/lib-commonjs/contexts/AvatarContext.js +0 -6
  102. package/lib-commonjs/contexts/AvatarContext.js.map +1 -1
  103. package/lib-commonjs/contexts/AvatarGroupContext.js +0 -5
  104. package/lib-commonjs/contexts/AvatarGroupContext.js.map +1 -1
  105. package/lib-commonjs/contexts/index.js +0 -3
  106. package/lib-commonjs/contexts/index.js.map +1 -1
  107. package/lib-commonjs/index.js +0 -12
  108. package/lib-commonjs/index.js.map +1 -1
  109. package/lib-commonjs/utils/getInitials.js +3 -19
  110. package/lib-commonjs/utils/getInitials.js.map +1 -1
  111. package/lib-commonjs/utils/index.js +0 -4
  112. package/lib-commonjs/utils/index.js.map +1 -1
  113. package/lib-commonjs/utils/partitionAvatarGroupItems.js +0 -5
  114. package/lib-commonjs/utils/partitionAvatarGroupItems.js.map +1 -1
  115. package/package.json +10 -10
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * Regular expressions matching characters to ignore when calculating the initials.
3
3
  */
4
-
5
4
  /**
6
5
  * Regular expression matching characters within various types of enclosures, including the enclosures themselves
7
6
  * so for example, (xyz) [xyz] {xyz} all would be ignored
@@ -11,16 +10,13 @@ const UNWANTED_ENCLOSURES_REGEX = /[\(\[\{][^\)\]\}]*[\)\]\}]/g;
11
10
  * Regular expression matching special ASCII characters except space, plus some unicode special characters.
12
11
  * Applies after unwanted enclosures have been removed
13
12
  */
14
-
15
13
  const UNWANTED_CHARS_REGEX = /[\0-\u001F\!-/:-@\[-`\{-\u00BF\u0250-\u036F\uD800-\uFFFF]/g;
16
14
  /**
17
15
  * Regular expression matching phone numbers. Applied after chars matching UNWANTED_CHARS_REGEX have been removed
18
16
  * and number has been trimmed for whitespaces
19
17
  */
20
-
21
18
  const PHONENUMBER_REGEX = /^\d+[\d\s]*(:?ext|x|)\s*\d+$/i;
22
19
  /** Regular expression matching one or more spaces. */
23
-
24
20
  const MULTIPLE_WHITESPACES_REGEX = /\s+/g;
25
21
  /**
26
22
  * Regular expression matching languages for which we currently don't support initials.
@@ -31,17 +27,13 @@ const MULTIPLE_WHITESPACES_REGEX = /\s+/g;
31
27
  * CJK Unified Ideographs Extension B
32
28
  */
33
29
  // eslint-disable-next-line @fluentui/max-len
34
-
35
30
  const 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]/;
36
-
37
31
  function getInitialsLatin(displayName, isRtl, firstInitialOnly) {
38
32
  let initials = '';
39
33
  const splits = displayName.split(' ');
40
-
41
34
  if (splits.length !== 0) {
42
35
  initials += splits[0].charAt(0).toUpperCase();
43
36
  }
44
-
45
37
  if (!firstInitialOnly) {
46
38
  if (splits.length === 2) {
47
39
  initials += splits[1].charAt(0).toUpperCase();
@@ -49,14 +41,11 @@ function getInitialsLatin(displayName, isRtl, firstInitialOnly) {
49
41
  initials += splits[2].charAt(0).toUpperCase();
50
42
  }
51
43
  }
52
-
53
44
  if (isRtl && initials.length > 1) {
54
45
  return initials.charAt(1) + initials.charAt(0);
55
46
  }
56
-
57
47
  return initials;
58
48
  }
59
-
60
49
  function cleanupDisplayName(displayName) {
61
50
  displayName = displayName.replace(UNWANTED_ENCLOSURES_REGEX, '');
62
51
  displayName = displayName.replace(UNWANTED_CHARS_REGEX, '');
@@ -76,19 +65,15 @@ function cleanupDisplayName(displayName) {
76
65
  *
77
66
  * @internal
78
67
  */
79
-
80
-
81
68
  export function getInitials(displayName, isRtl, options) {
82
69
  if (!displayName) {
83
70
  return '';
84
71
  }
85
-
86
- displayName = cleanupDisplayName(displayName); // For names containing CJK characters, and phone numbers, we don't display initials
87
-
72
+ displayName = cleanupDisplayName(displayName);
73
+ // For names containing CJK characters, and phone numbers, we don't display initials
88
74
  if (UNSUPPORTED_TEXT_REGEX.test(displayName) || !(options === null || options === void 0 ? void 0 : options.allowPhoneInitials) && PHONENUMBER_REGEX.test(displayName)) {
89
75
  return '';
90
76
  }
91
-
92
77
  return getInitialsLatin(displayName, isRtl, options === null || options === void 0 ? void 0 : options.firstInitialOnly);
93
78
  }
94
79
  //# sourceMappingURL=getInitials.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["packages/react-components/react-avatar/src/utils/getInitials.ts"],"names":[],"mappings":"AAAA;;AAEG;;AAEH;;;AAGG;AACH,MAAM,yBAAyB,GAAW,6BAA1C;AAEA;;;AAGG;;AACH,MAAM,oBAAoB,GAAW,4DAArC;AAEA;;;AAGG;;AACH,MAAM,iBAAiB,GAAW,+BAAlC;AAEA;;AACA,MAAM,0BAA0B,GAAW,MAA3C;AAEA;;;;;;;AAOG;AACH;;AACA,MAAM,sBAAsB,GAAW,4MAAvC;;AAEA,SAAS,gBAAT,CAA0B,WAA1B,EAA+C,KAA/C,EAA+D,gBAA/D,EAAyF;EACvF,IAAI,QAAQ,GAAG,EAAf;EAEA,MAAM,MAAM,GAAa,WAAW,CAAC,KAAZ,CAAkB,GAAlB,CAAzB;;EACA,IAAI,MAAM,CAAC,MAAP,KAAkB,CAAtB,EAAyB;IACvB,QAAQ,IAAI,MAAM,CAAC,CAAD,CAAN,CAAU,MAAV,CAAiB,CAAjB,EAAoB,WAApB,EAAZ;EACD;;EAED,IAAI,CAAC,gBAAL,EAAuB;IACrB,IAAI,MAAM,CAAC,MAAP,KAAkB,CAAtB,EAAyB;MACvB,QAAQ,IAAI,MAAM,CAAC,CAAD,CAAN,CAAU,MAAV,CAAiB,CAAjB,EAAoB,WAApB,EAAZ;IACD,CAFD,MAEO,IAAI,MAAM,CAAC,MAAP,KAAkB,CAAtB,EAAyB;MAC9B,QAAQ,IAAI,MAAM,CAAC,CAAD,CAAN,CAAU,MAAV,CAAiB,CAAjB,EAAoB,WAApB,EAAZ;IACD;EACF;;EAED,IAAI,KAAK,IAAI,QAAQ,CAAC,MAAT,GAAkB,CAA/B,EAAkC;IAChC,OAAO,QAAQ,CAAC,MAAT,CAAgB,CAAhB,IAAqB,QAAQ,CAAC,MAAT,CAAgB,CAAhB,CAA5B;EACD;;EAED,OAAO,QAAP;AACD;;AAED,SAAS,kBAAT,CAA4B,WAA5B,EAA+C;EAC7C,WAAW,GAAG,WAAW,CAAC,OAAZ,CAAoB,yBAApB,EAA+C,EAA/C,CAAd;EACA,WAAW,GAAG,WAAW,CAAC,OAAZ,CAAoB,oBAApB,EAA0C,EAA1C,CAAd;EACA,WAAW,GAAG,WAAW,CAAC,OAAZ,CAAoB,0BAApB,EAAgD,GAAhD,CAAd;EACA,WAAW,GAAG,WAAW,CAAC,IAAZ,EAAd;EAEA,OAAO,WAAP;AACD;AAED;;;;;;;;;;;AAWG;;;AACH,OAAM,SAAU,WAAV,CACJ,WADI,EAEJ,KAFI,EAGJ,OAHI,EASH;EAED,IAAI,CAAC,WAAL,EAAkB;IAChB,OAAO,EAAP;EACD;;EAED,WAAW,GAAG,kBAAkB,CAAC,WAAD,CAAhC,CANC,CAQD;;EACA,IACE,sBAAsB,CAAC,IAAvB,CAA4B,WAA5B,KACC,EAAC,OAAO,KAAA,IAAP,IAAA,OAAO,KAAA,KAAA,CAAP,GAAO,KAAA,CAAP,GAAA,OAAO,CAAE,kBAAV,KAAgC,iBAAiB,CAAC,IAAlB,CAAuB,WAAvB,CAFnC,EAGE;IACA,OAAO,EAAP;EACD;;EAED,OAAO,gBAAgB,CAAC,WAAD,EAAc,KAAd,EAAqB,OAAO,KAAA,IAAP,IAAA,OAAO,KAAA,KAAA,CAAP,GAAO,KAAA,CAAP,GAAA,OAAO,CAAE,gBAA9B,CAAvB;AACD","sourcesContent":["/**\n * Regular expressions matching characters to ignore when calculating the initials.\n */\n\n/**\n * Regular expression matching characters within various types of enclosures, including the enclosures themselves\n * so for example, (xyz) [xyz] {xyz} all would be ignored\n */\nconst UNWANTED_ENCLOSURES_REGEX: RegExp = /[\\(\\[\\{][^\\)\\]\\}]*[\\)\\]\\}]/g;\n\n/**\n * Regular expression matching special ASCII characters except space, plus some unicode special characters.\n * Applies after unwanted enclosures have been removed\n */\nconst UNWANTED_CHARS_REGEX: RegExp = /[\\0-\\u001F\\!-/:-@\\[-`\\{-\\u00BF\\u0250-\\u036F\\uD800-\\uFFFF]/g;\n\n/**\n * Regular expression matching phone numbers. Applied after chars matching UNWANTED_CHARS_REGEX have been removed\n * and number has been trimmed for whitespaces\n */\nconst PHONENUMBER_REGEX: RegExp = /^\\d+[\\d\\s]*(:?ext|x|)\\s*\\d+$/i;\n\n/** Regular expression matching one or more spaces. */\nconst MULTIPLE_WHITESPACES_REGEX: RegExp = /\\s+/g;\n\n/**\n * Regular expression matching languages for which we currently don't support initials.\n * Arabic: Arabic, Arabic Supplement, Arabic Extended-A.\n * Korean: Hangul Jamo, Hangul Compatibility Jamo, Hangul Jamo Extended-A, Hangul Syllables, Hangul Jamo Extended-B.\n * Japanese: Hiragana, Katakana.\n * CJK: CJK Unified Ideographs Extension A, CJK Unified Ideographs, CJK Compatibility Ideographs,\n * CJK Unified Ideographs Extension B\n */\n// eslint-disable-next-line @fluentui/max-len\nconst UNSUPPORTED_TEXT_REGEX: RegExp = /[\\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]/;\n\nfunction getInitialsLatin(displayName: string, isRtl: boolean, firstInitialOnly?: boolean): string {\n let initials = '';\n\n const splits: string[] = displayName.split(' ');\n if (splits.length !== 0) {\n initials += splits[0].charAt(0).toUpperCase();\n }\n\n if (!firstInitialOnly) {\n if (splits.length === 2) {\n initials += splits[1].charAt(0).toUpperCase();\n } else if (splits.length === 3) {\n initials += splits[2].charAt(0).toUpperCase();\n }\n }\n\n if (isRtl && initials.length > 1) {\n return initials.charAt(1) + initials.charAt(0);\n }\n\n return initials;\n}\n\nfunction cleanupDisplayName(displayName: string): string {\n displayName = displayName.replace(UNWANTED_ENCLOSURES_REGEX, '');\n displayName = displayName.replace(UNWANTED_CHARS_REGEX, '');\n displayName = displayName.replace(MULTIPLE_WHITESPACES_REGEX, ' ');\n displayName = displayName.trim();\n\n return displayName;\n}\n\n/**\n * Get (up to 2 characters) initials based on display name of the persona.\n *\n * @param displayName - The full name of the person or entity\n * @param isRtl - Whether the display is in RTL\n * @param options - Extra options to control the behavior of getInitials\n *\n * @returns The 1 or 2 character initials based on the name. Or an empty string if no initials\n * could be derived from the name.\n *\n * @internal\n */\nexport function getInitials(\n displayName: string | undefined | null,\n isRtl: boolean,\n options?: {\n /** Should initials be generated from phone numbers (default false) */\n allowPhoneInitials?: boolean;\n\n /** Returns only the first initial */\n firstInitialOnly?: boolean;\n },\n): string {\n if (!displayName) {\n return '';\n }\n\n displayName = cleanupDisplayName(displayName);\n\n // For names containing CJK characters, and phone numbers, we don't display initials\n if (\n UNSUPPORTED_TEXT_REGEX.test(displayName) ||\n (!options?.allowPhoneInitials && PHONENUMBER_REGEX.test(displayName))\n ) {\n return '';\n }\n\n return getInitialsLatin(displayName, isRtl, options?.firstInitialOnly);\n}\n"],"sourceRoot":"../src/"}
1
+ {"version":3,"mappings":"AAAA;;;AAIA;;;;AAIA,MAAMA,yBAAyB,GAAW,6BAA6B;AAEvE;;;;AAIA,MAAMC,oBAAoB,GAAW,4DAA4D;AAEjG;;;;AAIA,MAAMC,iBAAiB,GAAW,+BAA+B;AAEjE;AACA,MAAMC,0BAA0B,GAAW,MAAM;AAEjD;;;;;;;;AAQA;AACA,MAAMC,sBAAsB,GAAW,4MAA4M;AAEnP,SAASC,gBAAgB,CAACC,WAAmB,EAAEC,KAAc,EAAEC,gBAA0B;EACvF,IAAIC,QAAQ,GAAG,EAAE;EAEjB,MAAMC,MAAM,GAAaJ,WAAW,CAACK,KAAK,CAAC,GAAG,CAAC;EAC/C,IAAID,MAAM,CAACE,MAAM,KAAK,CAAC,EAAE;IACvBH,QAAQ,IAAIC,MAAM,CAAC,CAAC,CAAC,CAACG,MAAM,CAAC,CAAC,CAAC,CAACC,WAAW,EAAE;;EAG/C,IAAI,CAACN,gBAAgB,EAAE;IACrB,IAAIE,MAAM,CAACE,MAAM,KAAK,CAAC,EAAE;MACvBH,QAAQ,IAAIC,MAAM,CAAC,CAAC,CAAC,CAACG,MAAM,CAAC,CAAC,CAAC,CAACC,WAAW,EAAE;KAC9C,MAAM,IAAIJ,MAAM,CAACE,MAAM,KAAK,CAAC,EAAE;MAC9BH,QAAQ,IAAIC,MAAM,CAAC,CAAC,CAAC,CAACG,MAAM,CAAC,CAAC,CAAC,CAACC,WAAW,EAAE;;;EAIjD,IAAIP,KAAK,IAAIE,QAAQ,CAACG,MAAM,GAAG,CAAC,EAAE;IAChC,OAAOH,QAAQ,CAACI,MAAM,CAAC,CAAC,CAAC,GAAGJ,QAAQ,CAACI,MAAM,CAAC,CAAC,CAAC;;EAGhD,OAAOJ,QAAQ;AACjB;AAEA,SAASM,kBAAkB,CAACT,WAAmB;EAC7CA,WAAW,GAAGA,WAAW,CAACU,OAAO,CAAChB,yBAAyB,EAAE,EAAE,CAAC;EAChEM,WAAW,GAAGA,WAAW,CAACU,OAAO,CAACf,oBAAoB,EAAE,EAAE,CAAC;EAC3DK,WAAW,GAAGA,WAAW,CAACU,OAAO,CAACb,0BAA0B,EAAE,GAAG,CAAC;EAClEG,WAAW,GAAGA,WAAW,CAACW,IAAI,EAAE;EAEhC,OAAOX,WAAW;AACpB;AAEA;;;;;;;;;;;;AAYA,OAAM,SAAUY,WAAW,CACzBZ,WAAsC,EACtCC,KAAc,EACdY,OAMC;EAED,IAAI,CAACb,WAAW,EAAE;IAChB,OAAO,EAAE;;EAGXA,WAAW,GAAGS,kBAAkB,CAACT,WAAW,CAAC;EAE7C;EACA,IACEF,sBAAsB,CAACgB,IAAI,CAACd,WAAW,CAAC,IACvC,EAACa,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEE,kBAAkB,KAAInB,iBAAiB,CAACkB,IAAI,CAACd,WAAW,CAAE,EACrE;IACA,OAAO,EAAE;;EAGX,OAAOD,gBAAgB,CAACC,WAAW,EAAEC,KAAK,EAAEY,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEX,gBAAgB,CAAC;AACxE","names":["UNWANTED_ENCLOSURES_REGEX","UNWANTED_CHARS_REGEX","PHONENUMBER_REGEX","MULTIPLE_WHITESPACES_REGEX","UNSUPPORTED_TEXT_REGEX","getInitialsLatin","displayName","isRtl","firstInitialOnly","initials","splits","split","length","charAt","toUpperCase","cleanupDisplayName","replace","trim","getInitials","options","test","allowPhoneInitials"],"sourceRoot":"../src/","sources":["packages/react-components/react-avatar/src/utils/getInitials.ts"],"sourcesContent":["/**\n * Regular expressions matching characters to ignore when calculating the initials.\n */\n\n/**\n * Regular expression matching characters within various types of enclosures, including the enclosures themselves\n * so for example, (xyz) [xyz] {xyz} all would be ignored\n */\nconst UNWANTED_ENCLOSURES_REGEX: RegExp = /[\\(\\[\\{][^\\)\\]\\}]*[\\)\\]\\}]/g;\n\n/**\n * Regular expression matching special ASCII characters except space, plus some unicode special characters.\n * Applies after unwanted enclosures have been removed\n */\nconst UNWANTED_CHARS_REGEX: RegExp = /[\\0-\\u001F\\!-/:-@\\[-`\\{-\\u00BF\\u0250-\\u036F\\uD800-\\uFFFF]/g;\n\n/**\n * Regular expression matching phone numbers. Applied after chars matching UNWANTED_CHARS_REGEX have been removed\n * and number has been trimmed for whitespaces\n */\nconst PHONENUMBER_REGEX: RegExp = /^\\d+[\\d\\s]*(:?ext|x|)\\s*\\d+$/i;\n\n/** Regular expression matching one or more spaces. */\nconst MULTIPLE_WHITESPACES_REGEX: RegExp = /\\s+/g;\n\n/**\n * Regular expression matching languages for which we currently don't support initials.\n * Arabic: Arabic, Arabic Supplement, Arabic Extended-A.\n * Korean: Hangul Jamo, Hangul Compatibility Jamo, Hangul Jamo Extended-A, Hangul Syllables, Hangul Jamo Extended-B.\n * Japanese: Hiragana, Katakana.\n * CJK: CJK Unified Ideographs Extension A, CJK Unified Ideographs, CJK Compatibility Ideographs,\n * CJK Unified Ideographs Extension B\n */\n// eslint-disable-next-line @fluentui/max-len\nconst UNSUPPORTED_TEXT_REGEX: RegExp = /[\\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]/;\n\nfunction getInitialsLatin(displayName: string, isRtl: boolean, firstInitialOnly?: boolean): string {\n let initials = '';\n\n const splits: string[] = displayName.split(' ');\n if (splits.length !== 0) {\n initials += splits[0].charAt(0).toUpperCase();\n }\n\n if (!firstInitialOnly) {\n if (splits.length === 2) {\n initials += splits[1].charAt(0).toUpperCase();\n } else if (splits.length === 3) {\n initials += splits[2].charAt(0).toUpperCase();\n }\n }\n\n if (isRtl && initials.length > 1) {\n return initials.charAt(1) + initials.charAt(0);\n }\n\n return initials;\n}\n\nfunction cleanupDisplayName(displayName: string): string {\n displayName = displayName.replace(UNWANTED_ENCLOSURES_REGEX, '');\n displayName = displayName.replace(UNWANTED_CHARS_REGEX, '');\n displayName = displayName.replace(MULTIPLE_WHITESPACES_REGEX, ' ');\n displayName = displayName.trim();\n\n return displayName;\n}\n\n/**\n * Get (up to 2 characters) initials based on display name of the persona.\n *\n * @param displayName - The full name of the person or entity\n * @param isRtl - Whether the display is in RTL\n * @param options - Extra options to control the behavior of getInitials\n *\n * @returns The 1 or 2 character initials based on the name. Or an empty string if no initials\n * could be derived from the name.\n *\n * @internal\n */\nexport function getInitials(\n displayName: string | undefined | null,\n isRtl: boolean,\n options?: {\n /** Should initials be generated from phone numbers (default false) */\n allowPhoneInitials?: boolean;\n\n /** Returns only the first initial */\n firstInitialOnly?: boolean;\n },\n): string {\n if (!displayName) {\n return '';\n }\n\n displayName = cleanupDisplayName(displayName);\n\n // For names containing CJK characters, and phone numbers, we don't display initials\n if (\n UNSUPPORTED_TEXT_REGEX.test(displayName) ||\n (!options?.allowPhoneInitials && PHONENUMBER_REGEX.test(displayName))\n ) {\n return '';\n }\n\n return getInitialsLatin(displayName, isRtl, options?.firstInitialOnly);\n}\n"]}
@@ -7,19 +7,16 @@
7
7
  */
8
8
  export const partitionAvatarGroupItems = options => {
9
9
  var _a;
10
-
11
10
  const {
12
11
  items
13
12
  } = options;
14
13
  const isPie = options.layout === 'pie';
15
-
16
14
  if (isPie) {
17
15
  return {
18
16
  inlineItems: items.slice(0, 3),
19
17
  overflowItems: items.length > 0 ? items : undefined
20
18
  };
21
19
  }
22
-
23
20
  const maxInlineItems = (_a = options.maxInlineItems) !== null && _a !== void 0 ? _a : 5;
24
21
  const inlineCount = -(maxInlineItems - (items.length > maxInlineItems ? 1 : 0));
25
22
  const overflowItems = items.slice(0, inlineCount);
@@ -1 +1 @@
1
- {"version":3,"sources":["packages/react-components/react-avatar/src/utils/partitionAvatarGroupItems.ts"],"names":[],"mappings":"AAWA;;;;;;AAMG;AACH,OAAO,MAAM,yBAAyB,GACpC,OADuC,IAEP;;;EAChC,MAAM;IAAE;EAAF,IAAY,OAAlB;EACA,MAAM,KAAK,GAAG,OAAO,CAAC,MAAR,KAAmB,KAAjC;;EAEA,IAAI,KAAJ,EAAW;IACT,OAAO;MACL,WAAW,EAAE,KAAK,CAAC,KAAN,CAAY,CAAZ,EAAe,CAAf,CADR;MAEL,aAAa,EAAE,KAAK,CAAC,MAAN,GAAe,CAAf,GAAmB,KAAnB,GAA2B;IAFrC,CAAP;EAID;;EAED,MAAM,cAAc,GAAG,CAAA,EAAA,GAAA,OAAO,CAAC,cAAR,MAAsB,IAAtB,IAAsB,EAAA,KAAA,KAAA,CAAtB,GAAsB,EAAtB,GAA0B,CAAjD;EACA,MAAM,WAAW,GAAG,EAAE,cAAc,IAAI,KAAK,CAAC,MAAN,GAAe,cAAf,GAAgC,CAAhC,GAAoC,CAAxC,CAAhB,CAApB;EACA,MAAM,aAAa,GAAG,KAAK,CAAC,KAAN,CAAY,CAAZ,EAAe,WAAf,CAAtB;EAEA,OAAO;IACL,WAAW,EAAE,KAAK,CAAC,KAAN,CAAY,WAAZ,CADR;IAEL,aAAa,EAAE,aAAa,CAAC,MAAd,GAAuB,CAAvB,GAA2B,aAA3B,GAA2C;EAFrD,CAAP;AAID,CArBM","sourcesContent":["export type PartitionAvatarGroupItemsOptions<T> = {\n items: readonly T[];\n layout?: 'spread' | 'stack' | 'pie';\n maxInlineItems?: number;\n};\n\nexport type PartitionAvatarGroupItems<T> = {\n inlineItems: readonly T[];\n overflowItems?: readonly T[];\n};\n\n/**\n * Get the inline items and overflowing items based on the array of AvatarGroupItems needed for AvatarGroup.\n *\n * @param options - Configure the partition options\n *\n * @returns Two arrays split into inline items and overflow items based on maxInlineItems.\n */\nexport const partitionAvatarGroupItems = <T>(\n options: PartitionAvatarGroupItemsOptions<T>,\n): PartitionAvatarGroupItems<T> => {\n const { items } = options;\n const isPie = options.layout === 'pie';\n\n if (isPie) {\n return {\n inlineItems: items.slice(0, 3),\n overflowItems: items.length > 0 ? items : undefined,\n };\n }\n\n const maxInlineItems = options.maxInlineItems ?? 5;\n const inlineCount = -(maxInlineItems - (items.length > maxInlineItems ? 1 : 0));\n const overflowItems = items.slice(0, inlineCount);\n\n return {\n inlineItems: items.slice(inlineCount),\n overflowItems: overflowItems.length > 0 ? overflowItems : undefined,\n };\n};\n"],"sourceRoot":"../src/"}
1
+ {"version":3,"mappings":"AAWA;;;;;;;AAOA,OAAO,MAAMA,yBAAyB,GACpCC,OAA4C,IACZ;;EAChC,MAAM;IAAEC;EAAK,CAAE,GAAGD,OAAO;EACzB,MAAME,KAAK,GAAGF,OAAO,CAACG,MAAM,KAAK,KAAK;EAEtC,IAAID,KAAK,EAAE;IACT,OAAO;MACLE,WAAW,EAAEH,KAAK,CAACI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;MAC9BC,aAAa,EAAEL,KAAK,CAACM,MAAM,GAAG,CAAC,GAAGN,KAAK,GAAGO;KAC3C;;EAGH,MAAMC,cAAc,GAAG,aAAO,CAACA,cAAc,mCAAI,CAAC;EAClD,MAAMC,WAAW,GAAG,EAAED,cAAc,IAAIR,KAAK,CAACM,MAAM,GAAGE,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;EAC/E,MAAMH,aAAa,GAAGL,KAAK,CAACI,KAAK,CAAC,CAAC,EAAEK,WAAW,CAAC;EAEjD,OAAO;IACLN,WAAW,EAAEH,KAAK,CAACI,KAAK,CAACK,WAAW,CAAC;IACrCJ,aAAa,EAAEA,aAAa,CAACC,MAAM,GAAG,CAAC,GAAGD,aAAa,GAAGE;GAC3D;AACH,CAAC","names":["partitionAvatarGroupItems","options","items","isPie","layout","inlineItems","slice","overflowItems","length","undefined","maxInlineItems","inlineCount"],"sourceRoot":"../src/","sources":["packages/react-components/react-avatar/src/utils/partitionAvatarGroupItems.ts"],"sourcesContent":["export type PartitionAvatarGroupItemsOptions<T> = {\n items: readonly T[];\n layout?: 'spread' | 'stack' | 'pie';\n maxInlineItems?: number;\n};\n\nexport type PartitionAvatarGroupItems<T> = {\n inlineItems: readonly T[];\n overflowItems?: readonly T[];\n};\n\n/**\n * Get the inline items and overflowing items based on the array of AvatarGroupItems needed for AvatarGroup.\n *\n * @param options - Configure the partition options\n *\n * @returns Two arrays split into inline items and overflow items based on maxInlineItems.\n */\nexport const partitionAvatarGroupItems = <T>(\n options: PartitionAvatarGroupItemsOptions<T>,\n): PartitionAvatarGroupItems<T> => {\n const { items } = options;\n const isPie = options.layout === 'pie';\n\n if (isPie) {\n return {\n inlineItems: items.slice(0, 3),\n overflowItems: items.length > 0 ? items : undefined,\n };\n }\n\n const maxInlineItems = options.maxInlineItems ?? 5;\n const inlineCount = -(maxInlineItems - (items.length > maxInlineItems ? 1 : 0));\n const overflowItems = items.slice(0, inlineCount);\n\n return {\n inlineItems: items.slice(inlineCount),\n overflowItems: overflowItems.length > 0 ? overflowItems : undefined,\n };\n};\n"]}
@@ -3,8 +3,6 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
-
7
6
  const tslib_1 = /*#__PURE__*/require("tslib");
8
-
9
7
  tslib_1.__exportStar(require("./components/Avatar/index"), exports);
10
8
  //# sourceMappingURL=Avatar.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["packages/react-components/react-avatar/src/Avatar.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,2BAAA,CAAA,EAAA,OAAA","sourcesContent":["export * from './components/Avatar/index';\n"],"sourceRoot":"../src/"}
1
+ {"version":3,"mappings":";;;;;;AAAAA","names":["tslib_1"],"sourceRoot":"../src/","sources":["packages/react-components/react-avatar/src/Avatar.ts"],"sourcesContent":["export * from './components/Avatar/index';\n"]}
@@ -3,8 +3,6 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
-
7
6
  const tslib_1 = /*#__PURE__*/require("tslib");
8
-
9
7
  tslib_1.__exportStar(require("./components/AvatarGroup/index"), exports);
10
8
  //# sourceMappingURL=AvatarGroup.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["packages/react-components/react-avatar/src/AvatarGroup.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,gCAAA,CAAA,EAAA,OAAA","sourcesContent":["export * from './components/AvatarGroup/index';\n"],"sourceRoot":"../src/"}
1
+ {"version":3,"mappings":";;;;;;AAAAA","names":["tslib_1"],"sourceRoot":"../src/","sources":["packages/react-components/react-avatar/src/AvatarGroup.ts"],"sourcesContent":["export * from './components/AvatarGroup/index';\n"]}
@@ -3,8 +3,6 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
-
7
6
  const tslib_1 = /*#__PURE__*/require("tslib");
8
-
9
7
  tslib_1.__exportStar(require("./components/AvatarGroupItem/index"), exports);
10
8
  //# sourceMappingURL=AvatarGroupItem.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["packages/react-components/react-avatar/src/AvatarGroupItem.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,oCAAA,CAAA,EAAA,OAAA","sourcesContent":["export * from './components/AvatarGroupItem/index';\n"],"sourceRoot":"../src/"}
1
+ {"version":3,"mappings":";;;;;;AAAAA","names":["tslib_1"],"sourceRoot":"../src/","sources":["packages/react-components/react-avatar/src/AvatarGroupItem.ts"],"sourcesContent":["export * from './components/AvatarGroupItem/index';\n"]}
@@ -3,8 +3,6 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
-
7
6
  const tslib_1 = /*#__PURE__*/require("tslib");
8
-
9
7
  tslib_1.__exportStar(require("./components/AvatarGroupPopover/index"), exports);
10
8
  //# sourceMappingURL=AvatarGroupPopover.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["packages/react-components/react-avatar/src/AvatarGroupPopover.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,uCAAA,CAAA,EAAA,OAAA","sourcesContent":["export * from './components/AvatarGroupPopover/index';\n"],"sourceRoot":"../src/"}
1
+ {"version":3,"mappings":";;;;;;AAAAA","names":["tslib_1"],"sourceRoot":"../src/","sources":["packages/react-components/react-avatar/src/AvatarGroupPopover.ts"],"sourcesContent":["export * from './components/AvatarGroupPopover/index';\n"]}
@@ -4,15 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Avatar = void 0;
7
-
8
7
  const React = /*#__PURE__*/require("react");
9
-
10
8
  const renderAvatar_1 = /*#__PURE__*/require("./renderAvatar");
11
-
12
9
  const useAvatar_1 = /*#__PURE__*/require("./useAvatar");
13
-
14
10
  const useAvatarStyles_1 = /*#__PURE__*/require("./useAvatarStyles");
15
-
16
11
  exports.Avatar = /*#__PURE__*/React.forwardRef((props, ref) => {
17
12
  const state = useAvatar_1.useAvatar_unstable(props, ref);
18
13
  useAvatarStyles_1.useAvatarStyles_unstable(state);
@@ -1 +1 @@
1
- {"version":3,"sources":["packages/react-components/react-avatar/src/components/Avatar/Avatar.tsx"],"names":[],"mappings":";;;;;;;AAAA,MAAA,KAAA,gBAAA,OAAA,CAAA,OAAA,CAAA;;AACA,MAAA,cAAA,gBAAA,OAAA,CAAA,gBAAA,CAAA;;AACA,MAAA,WAAA,gBAAA,OAAA,CAAA,aAAA,CAAA;;AACA,MAAA,iBAAA,gBAAA,OAAA,CAAA,mBAAA,CAAA;;AAIa,OAAA,CAAA,MAAA,gBAA2C,KAAK,CAAC,UAAN,CAAiB,CAAC,KAAD,EAAQ,GAAR,KAAe;EACtF,MAAM,KAAK,GAAG,WAAA,CAAA,kBAAA,CAAmB,KAAnB,EAA0B,GAA1B,CAAd;EAEA,iBAAA,CAAA,wBAAA,CAAyB,KAAzB;EAEA,OAAO,cAAA,CAAA,qBAAA,CAAsB,KAAtB,CAAP;AACD,CANuD,CAA3C;AAQb,OAAA,CAAA,MAAA,CAAO,WAAP,GAAqB,QAArB","sourcesContent":["import * as React from 'react';\nimport { renderAvatar_unstable } from './renderAvatar';\nimport { useAvatar_unstable } from './useAvatar';\nimport { useAvatarStyles_unstable } from './useAvatarStyles';\nimport type { AvatarProps } from './Avatar.types';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\n\nexport const Avatar: ForwardRefComponent<AvatarProps> = React.forwardRef((props, ref) => {\n const state = useAvatar_unstable(props, ref);\n\n useAvatarStyles_unstable(state);\n\n return renderAvatar_unstable(state);\n});\n\nAvatar.displayName = 'Avatar';\n"],"sourceRoot":"../src/"}
1
+ {"version":3,"mappings":";;;;;;AAAA;AACA;AACA;AACA;AAIaA,cAAM,gBAAqCC,KAAK,CAACC,UAAU,CAAC,CAACC,KAAK,EAAEC,GAAG,KAAI;EACtF,MAAMC,KAAK,GAAGC,8BAAkB,CAACH,KAAK,EAAEC,GAAG,CAAC;EAE5CG,0CAAwB,CAACF,KAAK,CAAC;EAE/B,OAAOG,oCAAqB,CAACH,KAAK,CAAC;AACrC,CAAC,CAAC;AAEFL,cAAM,CAACS,WAAW,GAAG,QAAQ","names":["exports","React","forwardRef","props","ref","state","useAvatar_1","useAvatarStyles_1","renderAvatar_1","displayName"],"sourceRoot":"../src/","sources":["packages/react-components/react-avatar/src/components/Avatar/Avatar.tsx"],"sourcesContent":["import * as React from 'react';\nimport { renderAvatar_unstable } from './renderAvatar';\nimport { useAvatar_unstable } from './useAvatar';\nimport { useAvatarStyles_unstable } from './useAvatarStyles';\nimport type { AvatarProps } from './Avatar.types';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\n\nexport const Avatar: ForwardRefComponent<AvatarProps> = React.forwardRef((props, ref) => {\n const state = useAvatar_unstable(props, ref);\n\n useAvatarStyles_unstable(state);\n\n return renderAvatar_unstable(state);\n});\n\nAvatar.displayName = 'Avatar';\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourceRoot":"../src/"}
1
+ {"version":3,"mappings":"","names":[],"sourceRoot":"../src/","sources":[],"sourcesContent":[]}
@@ -3,16 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
-
7
6
  const tslib_1 = /*#__PURE__*/require("tslib");
8
-
9
7
  tslib_1.__exportStar(require("./Avatar.types"), exports);
10
-
11
8
  tslib_1.__exportStar(require("./Avatar"), exports);
12
-
13
9
  tslib_1.__exportStar(require("./renderAvatar"), exports);
14
-
15
10
  tslib_1.__exportStar(require("./useAvatar"), exports);
16
-
17
11
  tslib_1.__exportStar(require("./useAvatarStyles"), exports);
18
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["packages/react-components/react-avatar/src/components/Avatar/index.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,gBAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,UAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,gBAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,aAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,mBAAA,CAAA,EAAA,OAAA","sourcesContent":["export * from './Avatar.types';\nexport * from './Avatar';\nexport * from './renderAvatar';\nexport * from './useAvatar';\nexport * from './useAvatarStyles';\n"],"sourceRoot":"../src/"}
1
+ {"version":3,"mappings":";;;;;;AAAAA;AACAA;AACAA;AACAA;AACAA","names":["tslib_1"],"sourceRoot":"../src/","sources":["packages/react-components/react-avatar/src/components/Avatar/index.ts"],"sourcesContent":["export * from './Avatar.types';\nexport * from './Avatar';\nexport * from './renderAvatar';\nexport * from './useAvatar';\nexport * from './useAvatarStyles';\n"]}
@@ -4,23 +4,24 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.renderAvatar_unstable = void 0;
7
-
8
7
  const React = /*#__PURE__*/require("react");
9
-
10
8
  const react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
11
-
12
9
  const renderAvatar_unstable = state => {
13
10
  const {
14
11
  slots,
15
12
  slotProps
16
13
  } = react_utilities_1.getSlots(state);
17
- return React.createElement(slots.root, { ...slotProps.root
18
- }, slots.initials && React.createElement(slots.initials, { ...slotProps.initials
19
- }), slots.icon && React.createElement(slots.icon, { ...slotProps.icon
20
- }), slots.image && React.createElement(slots.image, { ...slotProps.image
21
- }), slots.badge && React.createElement(slots.badge, { ...slotProps.badge
14
+ return React.createElement(slots.root, {
15
+ ...slotProps.root
16
+ }, slots.initials && React.createElement(slots.initials, {
17
+ ...slotProps.initials
18
+ }), slots.icon && React.createElement(slots.icon, {
19
+ ...slotProps.icon
20
+ }), slots.image && React.createElement(slots.image, {
21
+ ...slotProps.image
22
+ }), slots.badge && React.createElement(slots.badge, {
23
+ ...slotProps.badge
22
24
  }), state.activeAriaLabelElement);
23
25
  };
24
-
25
26
  exports.renderAvatar_unstable = renderAvatar_unstable;
26
27
  //# sourceMappingURL=renderAvatar.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["packages/react-components/react-avatar/src/components/Avatar/renderAvatar.tsx"],"names":[],"mappings":";;;;;;;AAAA,MAAA,KAAA,gBAAA,OAAA,CAAA,OAAA,CAAA;;AACA,MAAA,iBAAA,gBAAA,OAAA,CAAA,2BAAA,CAAA;;AAGO,MAAM,qBAAqB,GAAI,KAAD,IAAuB;EAC1D,MAAM;IAAE,KAAF;IAAS;EAAT,IAAuB,iBAAA,CAAA,QAAA,CAAsB,KAAtB,CAA7B;EAEA,OACE,KAAA,CAAA,aAAA,CAAC,KAAK,CAAC,IAAP,EAAW,EAAA,GAAK,SAAS,CAAC;EAAf,CAAX,EACG,KAAK,CAAC,QAAN,IAAkB,KAAA,CAAA,aAAA,CAAC,KAAK,CAAC,QAAP,EAAe,EAAA,GAAK,SAAS,CAAC;EAAf,CAAf,CADrB,EAEG,KAAK,CAAC,IAAN,IAAc,KAAA,CAAA,aAAA,CAAC,KAAK,CAAC,IAAP,EAAW,EAAA,GAAK,SAAS,CAAC;EAAf,CAAX,CAFjB,EAGG,KAAK,CAAC,KAAN,IAAe,KAAA,CAAA,aAAA,CAAC,KAAK,CAAC,KAAP,EAAY,EAAA,GAAK,SAAS,CAAC;EAAf,CAAZ,CAHlB,EAIG,KAAK,CAAC,KAAN,IAAe,KAAA,CAAA,aAAA,CAAC,KAAK,CAAC,KAAP,EAAY,EAAA,GAAK,SAAS,CAAC;EAAf,CAAZ,CAJlB,EAKG,KAAK,CAAC,sBALT,CADF;AASD,CAZM;;AAAM,OAAA,CAAA,qBAAA,GAAqB,qBAArB","sourcesContent":["import * as React from 'react';\nimport { getSlots } from '@fluentui/react-utilities';\nimport type { AvatarSlots, AvatarState } from './Avatar.types';\n\nexport const renderAvatar_unstable = (state: AvatarState) => {\n const { slots, slotProps } = getSlots<AvatarSlots>(state);\n\n return (\n <slots.root {...slotProps.root}>\n {slots.initials && <slots.initials {...slotProps.initials} />}\n {slots.icon && <slots.icon {...slotProps.icon} />}\n {slots.image && <slots.image {...slotProps.image} />}\n {slots.badge && <slots.badge {...slotProps.badge} />}\n {state.activeAriaLabelElement}\n </slots.root>\n );\n};\n"],"sourceRoot":"../src/"}
1
+ {"version":3,"mappings":";;;;;;AAAA;AACA;AAGO,MAAMA,qBAAqB,GAAIC,KAAkB,IAAI;EAC1D,MAAM;IAAEC,KAAK;IAAEC;EAAS,CAAE,GAAGC,0BAAQ,CAAcH,KAAK,CAAC;EAEzD,OACEI,oBAACH,KAAK,CAACI,IAAI;IAAA,GAAKH,SAAS,CAACG;EAAI,GAC3BJ,KAAK,CAACK,QAAQ,IAAIF,oBAACH,KAAK,CAACK,QAAQ;IAAA,GAAKJ,SAAS,CAACI;EAAQ,EAAI,EAC5DL,KAAK,CAACM,IAAI,IAAIH,oBAACH,KAAK,CAACM,IAAI;IAAA,GAAKL,SAAS,CAACK;EAAI,EAAI,EAChDN,KAAK,CAACO,KAAK,IAAIJ,oBAACH,KAAK,CAACO,KAAK;IAAA,GAAKN,SAAS,CAACM;EAAK,EAAI,EACnDP,KAAK,CAACQ,KAAK,IAAIL,oBAACH,KAAK,CAACQ,KAAK;IAAA,GAAKP,SAAS,CAACO;EAAK,EAAI,EACnDT,KAAK,CAACU,sBAAsB,CAClB;AAEjB,CAAC;AAZYC,6BAAqB","names":["renderAvatar_unstable","state","slots","slotProps","react_utilities_1","React","root","initials","icon","image","badge","activeAriaLabelElement","exports"],"sourceRoot":"../src/","sources":["packages/react-components/react-avatar/src/components/Avatar/renderAvatar.tsx"],"sourcesContent":["import * as React from 'react';\nimport { getSlots } from '@fluentui/react-utilities';\nimport type { AvatarSlots, AvatarState } from './Avatar.types';\n\nexport const renderAvatar_unstable = (state: AvatarState) => {\n const { slots, slotProps } = getSlots<AvatarSlots>(state);\n\n return (\n <slots.root {...slotProps.root}>\n {slots.initials && <slots.initials {...slotProps.initials} />}\n {slots.icon && <slots.icon {...slotProps.icon} />}\n {slots.image && <slots.image {...slotProps.image} />}\n {slots.badge && <slots.badge {...slotProps.badge} />}\n {state.activeAriaLabelElement}\n </slots.root>\n );\n};\n"]}
@@ -4,29 +4,19 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useAvatar_unstable = exports.DEFAULT_STRINGS = void 0;
7
-
8
7
  const React = /*#__PURE__*/require("react");
9
-
10
8
  const react_utilities_1 = /*#__PURE__*/require("@fluentui/react-utilities");
11
-
12
9
  const index_1 = /*#__PURE__*/require("../../utils/index");
13
-
14
10
  const react_icons_1 = /*#__PURE__*/require("@fluentui/react-icons");
15
-
16
11
  const react_badge_1 = /*#__PURE__*/require("@fluentui/react-badge");
17
-
18
12
  const react_shared_contexts_1 = /*#__PURE__*/require("@fluentui/react-shared-contexts");
19
-
20
13
  const AvatarContext_1 = /*#__PURE__*/require("../../contexts/AvatarContext");
21
-
22
14
  exports.DEFAULT_STRINGS = {
23
15
  active: 'active',
24
16
  inactive: 'inactive'
25
17
  };
26
-
27
18
  const useAvatar_unstable = (props, ref) => {
28
19
  var _a;
29
-
30
20
  const {
31
21
  dir
32
22
  } = react_shared_contexts_1.useFluent_unstable();
@@ -43,12 +33,11 @@ const useAvatar_unstable = (props, ref) => {
43
33
  } = props;
44
34
  let {
45
35
  color = 'neutral'
46
- } = props; // Resolve 'colorful' to a specific color name
47
-
36
+ } = props;
37
+ // Resolve 'colorful' to a specific color name
48
38
  if (color === 'colorful') {
49
39
  color = avatarColors[getHashCode((_a = idForColor !== null && idForColor !== void 0 ? idForColor : name) !== null && _a !== void 0 ? _a : '') % avatarColors.length];
50
40
  }
51
-
52
41
  const baseId = react_utilities_1.useId('avatar-');
53
42
  const root = react_utilities_1.getNativeElementProps('span', {
54
43
  role: 'img',
@@ -56,9 +45,7 @@ const useAvatar_unstable = (props, ref) => {
56
45
  // aria-label and/or aria-labelledby are resolved below
57
46
  ...props,
58
47
  ref
59
- },
60
- /* excludedPropNames: */
61
- ['name']);
48
+ }, /* excludedPropNames: */['name']);
62
49
  const [imageHidden, setImageHidden] = React.useState(undefined);
63
50
  const image = react_utilities_1.resolveShorthand(props.image, {
64
51
  defaultProps: {
@@ -67,14 +54,13 @@ const useAvatar_unstable = (props, ref) => {
67
54
  'aria-hidden': true,
68
55
  hidden: imageHidden
69
56
  }
70
- }); // Hide the image if it fails to load and restore it on a successful load
71
-
57
+ });
58
+ // Hide the image if it fails to load and restore it on a successful load
72
59
  if (image) {
73
60
  image.onError = react_utilities_1.mergeCallbacks(image.onError, () => setImageHidden(true));
74
61
  image.onLoad = react_utilities_1.mergeCallbacks(image.onLoad, () => setImageHidden(undefined));
75
- } // Resolve the initials slot, defaulted to getInitials.
76
-
77
-
62
+ }
63
+ // Resolve the initials slot, defaulted to getInitials.
78
64
  let initials = react_utilities_1.resolveShorthand(props.initials, {
79
65
  required: true,
80
66
  defaultProps: {
@@ -83,15 +69,13 @@ const useAvatar_unstable = (props, ref) => {
83
69
  }),
84
70
  id: baseId + '__initials'
85
71
  }
86
- }); // Don't render the initials slot if it's empty
87
-
72
+ });
73
+ // Don't render the initials slot if it's empty
88
74
  if (!(initials === null || initials === void 0 ? void 0 : initials.children)) {
89
75
  initials = undefined;
90
- } // Render the icon slot *only if* there aren't any initials or image to display
91
-
92
-
76
+ }
77
+ // Render the icon slot *only if* there aren't any initials or image to display
93
78
  let icon = undefined;
94
-
95
79
  if (!initials && (!image || imageHidden)) {
96
80
  icon = react_utilities_1.resolveShorthand(props.icon, {
97
81
  required: true,
@@ -101,31 +85,28 @@ const useAvatar_unstable = (props, ref) => {
101
85
  }
102
86
  });
103
87
  }
104
-
105
88
  const badge = react_utilities_1.resolveShorthand(props.badge, {
106
89
  defaultProps: {
107
90
  size: getBadgeSize(size),
108
91
  id: baseId + '__badge'
109
92
  }
110
93
  });
111
- let activeAriaLabelElement; // Resolve aria-label and/or aria-labelledby if not provided by the user
112
-
94
+ let activeAriaLabelElement;
95
+ // Resolve aria-label and/or aria-labelledby if not provided by the user
113
96
  if (!root['aria-label'] && !root['aria-labelledby']) {
114
97
  if (name) {
115
- root['aria-label'] = name; // Include the badge in labelledby if it exists
116
-
98
+ root['aria-label'] = name;
99
+ // Include the badge in labelledby if it exists
117
100
  if (badge) {
118
101
  root['aria-labelledby'] = root.id + ' ' + badge.id;
119
102
  }
120
103
  } else if (initials) {
121
104
  // root's aria-label should be the name, but fall back to being labelledby the initials if name is missing
122
105
  root['aria-labelledby'] = initials.id + (badge ? ' ' + badge.id : '');
123
- } // Add the active state to the aria label
124
-
125
-
106
+ }
107
+ // Add the active state to the aria label
126
108
  if (active === 'active' || active === 'inactive') {
127
109
  const activeText = exports.DEFAULT_STRINGS[active];
128
-
129
110
  if (root['aria-labelledby']) {
130
111
  // If using aria-labelledby, render a hidden span and append it to the labelledby
131
112
  const activeId = baseId + '__active';
@@ -140,7 +121,6 @@ const useAvatar_unstable = (props, ref) => {
140
121
  }
141
122
  }
142
123
  }
143
-
144
124
  return {
145
125
  size,
146
126
  shape,
@@ -162,9 +142,7 @@ const useAvatar_unstable = (props, ref) => {
162
142
  badge
163
143
  };
164
144
  };
165
-
166
145
  exports.useAvatar_unstable = useAvatar_unstable;
167
-
168
146
  const getBadgeSize = size => {
169
147
  if (size >= 96) {
170
148
  return 'extra-large';
@@ -180,12 +158,9 @@ const getBadgeSize = size => {
180
158
  return 'tiny';
181
159
  }
182
160
  };
183
-
184
161
  const avatarColors = ['dark-red', 'cranberry', 'red', 'pumpkin', 'peach', 'marigold', 'gold', 'brass', 'brown', 'forest', 'seafoam', 'dark-green', 'light-teal', 'teal', 'steel', 'blue', 'royal-blue', 'cornflower', 'navy', 'lavender', 'purple', 'grape', 'lilac', 'pink', 'magenta', 'plum', 'beige', 'mink', 'platinum', 'anchor'];
185
-
186
162
  const getHashCode = str => {
187
163
  let hashCode = 0;
188
-
189
164
  for (let len = str.length - 1; len >= 0; len--) {
190
165
  const ch = str.charCodeAt(len);
191
166
  const shift = len % 8;
@@ -1 +1 @@
1
- {"version":3,"sources":["packages/react-components/react-avatar/src/components/Avatar/useAvatar.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { getNativeElementProps, mergeCallbacks, resolveShorthand, useId } from '@fluentui/react-utilities';\nimport { getInitials } from '../../utils/index';\nimport type { AvatarNamedColor, AvatarProps, AvatarState } from './Avatar.types';\nimport { PersonRegular } from '@fluentui/react-icons';\nimport { PresenceBadge } from '@fluentui/react-badge';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport { useAvatarContext } from '../../contexts/AvatarContext';\n\nexport const DEFAULT_STRINGS = {\n active: 'active',\n inactive: 'inactive',\n};\n\nexport const useAvatar_unstable = (props: AvatarProps, ref: React.Ref<HTMLElement>): AvatarState => {\n const { dir } = useFluent();\n const { size: contextSize } = useAvatarContext();\n const {\n name,\n size = contextSize ?? (32 as const),\n shape = 'circular',\n active = 'unset',\n activeAppearance = 'ring',\n idForColor,\n } = props;\n let { color = 'neutral' } = props;\n\n // Resolve 'colorful' to a specific color name\n if (color === 'colorful') {\n color = avatarColors[getHashCode(idForColor ?? name ?? '') % avatarColors.length];\n }\n\n const baseId = useId('avatar-');\n\n const root: AvatarState['root'] = getNativeElementProps(\n 'span',\n {\n role: 'img',\n id: baseId,\n // aria-label and/or aria-labelledby are resolved below\n ...props,\n ref,\n },\n /* excludedPropNames: */ ['name'],\n );\n\n const [imageHidden, setImageHidden] = React.useState<true | undefined>(undefined);\n const image: AvatarState['image'] = resolveShorthand(props.image, {\n defaultProps: {\n alt: '',\n role: 'presentation',\n 'aria-hidden': true,\n hidden: imageHidden,\n },\n });\n\n // Hide the image if it fails to load and restore it on a successful load\n if (image) {\n image.onError = mergeCallbacks(image.onError, () => setImageHidden(true));\n image.onLoad = mergeCallbacks(image.onLoad, () => setImageHidden(undefined));\n }\n\n // Resolve the initials slot, defaulted to getInitials.\n let initials: AvatarState['initials'] = resolveShorthand(props.initials, {\n required: true,\n defaultProps: {\n children: getInitials(name, dir === 'rtl', { firstInitialOnly: size <= 16 }),\n id: baseId + '__initials',\n },\n });\n\n // Don't render the initials slot if it's empty\n if (!initials?.children) {\n initials = undefined;\n }\n\n // Render the icon slot *only if* there aren't any initials or image to display\n let icon: AvatarState['icon'] = undefined;\n if (!initials && (!image || imageHidden)) {\n icon = resolveShorthand(props.icon, {\n required: true,\n defaultProps: {\n children: <PersonRegular />,\n 'aria-hidden': true,\n },\n });\n }\n\n const badge: AvatarState['badge'] = resolveShorthand(props.badge, {\n defaultProps: {\n size: getBadgeSize(size),\n id: baseId + '__badge',\n },\n });\n\n let activeAriaLabelElement: AvatarState['activeAriaLabelElement'];\n\n // Resolve aria-label and/or aria-labelledby if not provided by the user\n if (!root['aria-label'] && !root['aria-labelledby']) {\n if (name) {\n root['aria-label'] = name;\n\n // Include the badge in labelledby if it exists\n if (badge) {\n root['aria-labelledby'] = root.id + ' ' + badge.id;\n }\n } else if (initials) {\n // root's aria-label should be the name, but fall back to being labelledby the initials if name is missing\n root['aria-labelledby'] = initials.id + (badge ? ' ' + badge.id : '');\n }\n\n // Add the active state to the aria label\n if (active === 'active' || active === 'inactive') {\n const activeText = DEFAULT_STRINGS[active];\n if (root['aria-labelledby']) {\n // If using aria-labelledby, render a hidden span and append it to the labelledby\n const activeId = baseId + '__active';\n root['aria-labelledby'] += ' ' + activeId;\n activeAriaLabelElement = (\n <span hidden id={activeId}>\n {activeText}\n </span>\n );\n } else if (root['aria-label']) {\n // Otherwise, just append it to the aria-label\n root['aria-label'] += ' ' + activeText;\n }\n }\n }\n\n return {\n size,\n shape,\n active,\n activeAppearance,\n activeAriaLabelElement,\n color,\n\n components: {\n root: 'span',\n initials: 'span',\n icon: 'span',\n image: 'img',\n badge: PresenceBadge,\n },\n\n root,\n initials,\n icon,\n image,\n badge,\n };\n};\n\nconst getBadgeSize = (size: AvatarState['size']) => {\n if (size >= 96) {\n return 'extra-large';\n } else if (size >= 64) {\n return 'large';\n } else if (size >= 56) {\n return 'medium';\n } else if (size >= 40) {\n return 'small';\n } else if (size >= 28) {\n return 'extra-small';\n } else {\n return 'tiny';\n }\n};\n\nconst avatarColors: AvatarNamedColor[] = [\n 'dark-red',\n 'cranberry',\n 'red',\n 'pumpkin',\n 'peach',\n 'marigold',\n 'gold',\n 'brass',\n 'brown',\n 'forest',\n 'seafoam',\n 'dark-green',\n 'light-teal',\n 'teal',\n 'steel',\n 'blue',\n 'royal-blue',\n 'cornflower',\n 'navy',\n 'lavender',\n 'purple',\n 'grape',\n 'lilac',\n 'pink',\n 'magenta',\n 'plum',\n 'beige',\n 'mink',\n 'platinum',\n 'anchor',\n];\n\nconst getHashCode = (str: string): number => {\n let hashCode = 0;\n for (let len: number = str.length - 1; len >= 0; len--) {\n const ch = str.charCodeAt(len);\n const shift = len % 8;\n hashCode ^= (ch << shift) + (ch >> (8 - shift)); // eslint-disable-line no-bitwise\n }\n\n return hashCode;\n};\n"],"sourceRoot":"../src/"}
1
+ {"version":3,"mappings":"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","names":["exports","active","inactive","useAvatar_unstable","props","ref","dir","react_shared_contexts_1","size","contextSize","AvatarContext_1","name","shape","activeAppearance","idForColor","color","avatarColors","getHashCode","length","baseId","react_utilities_1","root","role","id","imageHidden","setImageHidden","React","useState","undefined","image","defaultProps","alt","hidden","onError","onLoad","initials","required","children","index_1","firstInitialOnly","icon","react_icons_1","badge","getBadgeSize","activeAriaLabelElement","activeText","activeId","components","react_badge_1","str","hashCode","len","ch","charCodeAt","shift"],"sourceRoot":"../src/","sources":["packages/react-components/react-avatar/src/components/Avatar/useAvatar.tsx"],"sourcesContent":["import * as React from 'react';\nimport { getNativeElementProps, mergeCallbacks, resolveShorthand, useId } from '@fluentui/react-utilities';\nimport { getInitials } from '../../utils/index';\nimport type { AvatarNamedColor, AvatarProps, AvatarState } from './Avatar.types';\nimport { PersonRegular } from '@fluentui/react-icons';\nimport { PresenceBadge } from '@fluentui/react-badge';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\nimport { useAvatarContext } from '../../contexts/AvatarContext';\n\nexport const DEFAULT_STRINGS = {\n active: 'active',\n inactive: 'inactive',\n};\n\nexport const useAvatar_unstable = (props: AvatarProps, ref: React.Ref<HTMLElement>): AvatarState => {\n const { dir } = useFluent();\n const { size: contextSize } = useAvatarContext();\n const {\n name,\n size = contextSize ?? (32 as const),\n shape = 'circular',\n active = 'unset',\n activeAppearance = 'ring',\n idForColor,\n } = props;\n let { color = 'neutral' } = props;\n\n // Resolve 'colorful' to a specific color name\n if (color === 'colorful') {\n color = avatarColors[getHashCode(idForColor ?? name ?? '') % avatarColors.length];\n }\n\n const baseId = useId('avatar-');\n\n const root: AvatarState['root'] = getNativeElementProps(\n 'span',\n {\n role: 'img',\n id: baseId,\n // aria-label and/or aria-labelledby are resolved below\n ...props,\n ref,\n },\n /* excludedPropNames: */ ['name'],\n );\n\n const [imageHidden, setImageHidden] = React.useState<true | undefined>(undefined);\n const image: AvatarState['image'] = resolveShorthand(props.image, {\n defaultProps: {\n alt: '',\n role: 'presentation',\n 'aria-hidden': true,\n hidden: imageHidden,\n },\n });\n\n // Hide the image if it fails to load and restore it on a successful load\n if (image) {\n image.onError = mergeCallbacks(image.onError, () => setImageHidden(true));\n image.onLoad = mergeCallbacks(image.onLoad, () => setImageHidden(undefined));\n }\n\n // Resolve the initials slot, defaulted to getInitials.\n let initials: AvatarState['initials'] = resolveShorthand(props.initials, {\n required: true,\n defaultProps: {\n children: getInitials(name, dir === 'rtl', { firstInitialOnly: size <= 16 }),\n id: baseId + '__initials',\n },\n });\n\n // Don't render the initials slot if it's empty\n if (!initials?.children) {\n initials = undefined;\n }\n\n // Render the icon slot *only if* there aren't any initials or image to display\n let icon: AvatarState['icon'] = undefined;\n if (!initials && (!image || imageHidden)) {\n icon = resolveShorthand(props.icon, {\n required: true,\n defaultProps: {\n children: <PersonRegular />,\n 'aria-hidden': true,\n },\n });\n }\n\n const badge: AvatarState['badge'] = resolveShorthand(props.badge, {\n defaultProps: {\n size: getBadgeSize(size),\n id: baseId + '__badge',\n },\n });\n\n let activeAriaLabelElement: AvatarState['activeAriaLabelElement'];\n\n // Resolve aria-label and/or aria-labelledby if not provided by the user\n if (!root['aria-label'] && !root['aria-labelledby']) {\n if (name) {\n root['aria-label'] = name;\n\n // Include the badge in labelledby if it exists\n if (badge) {\n root['aria-labelledby'] = root.id + ' ' + badge.id;\n }\n } else if (initials) {\n // root's aria-label should be the name, but fall back to being labelledby the initials if name is missing\n root['aria-labelledby'] = initials.id + (badge ? ' ' + badge.id : '');\n }\n\n // Add the active state to the aria label\n if (active === 'active' || active === 'inactive') {\n const activeText = DEFAULT_STRINGS[active];\n if (root['aria-labelledby']) {\n // If using aria-labelledby, render a hidden span and append it to the labelledby\n const activeId = baseId + '__active';\n root['aria-labelledby'] += ' ' + activeId;\n activeAriaLabelElement = (\n <span hidden id={activeId}>\n {activeText}\n </span>\n );\n } else if (root['aria-label']) {\n // Otherwise, just append it to the aria-label\n root['aria-label'] += ' ' + activeText;\n }\n }\n }\n\n return {\n size,\n shape,\n active,\n activeAppearance,\n activeAriaLabelElement,\n color,\n\n components: {\n root: 'span',\n initials: 'span',\n icon: 'span',\n image: 'img',\n badge: PresenceBadge,\n },\n\n root,\n initials,\n icon,\n image,\n badge,\n };\n};\n\nconst getBadgeSize = (size: AvatarState['size']) => {\n if (size >= 96) {\n return 'extra-large';\n } else if (size >= 64) {\n return 'large';\n } else if (size >= 56) {\n return 'medium';\n } else if (size >= 40) {\n return 'small';\n } else if (size >= 28) {\n return 'extra-small';\n } else {\n return 'tiny';\n }\n};\n\nconst avatarColors: AvatarNamedColor[] = [\n 'dark-red',\n 'cranberry',\n 'red',\n 'pumpkin',\n 'peach',\n 'marigold',\n 'gold',\n 'brass',\n 'brown',\n 'forest',\n 'seafoam',\n 'dark-green',\n 'light-teal',\n 'teal',\n 'steel',\n 'blue',\n 'royal-blue',\n 'cornflower',\n 'navy',\n 'lavender',\n 'purple',\n 'grape',\n 'lilac',\n 'pink',\n 'magenta',\n 'plum',\n 'beige',\n 'mink',\n 'platinum',\n 'anchor',\n];\n\nconst getHashCode = (str: string): number => {\n let hashCode = 0;\n for (let len: number = str.length - 1; len >= 0; len--) {\n const ch = str.charCodeAt(len);\n const shift = len % 8;\n hashCode ^= (ch << shift) + (ch >> (8 - shift)); // eslint-disable-line no-bitwise\n }\n\n return hashCode;\n};\n"]}