@atlaskit/reactions 21.8.0 → 22.0.0

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 (200) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/cjs/MockReactionsClient.js +24 -16
  3. package/dist/cjs/analytics/analytics.js +9 -1
  4. package/dist/cjs/analytics/ufo.js +24 -2
  5. package/dist/cjs/components/Counter/Counter.js +16 -20
  6. package/dist/cjs/components/Reaction/Reaction.js +52 -18
  7. package/dist/cjs/components/Reaction/styles.js +8 -1
  8. package/dist/cjs/components/ReactionDialog/ReactionView.js +121 -0
  9. package/dist/cjs/components/ReactionDialog/ReactionsDialog.js +187 -0
  10. package/dist/cjs/components/ReactionDialog/ReactionsList.js +104 -0
  11. package/dist/cjs/components/ReactionDialog/index.js +13 -0
  12. package/dist/cjs/components/ReactionDialog/styles.js +202 -0
  13. package/dist/cjs/components/ReactionPicker/ReactionPicker.js +15 -20
  14. package/dist/cjs/components/ReactionTooltip/ReactionTooltip.js +26 -12
  15. package/dist/cjs/components/ReactionTooltip/styles.js +11 -2
  16. package/dist/cjs/components/Reactions/Reactions.js +166 -21
  17. package/dist/cjs/components/Reactions/styles.js +11 -6
  18. package/dist/cjs/components/Trigger/Trigger.js +1 -2
  19. package/dist/cjs/components/index.js +9 -1
  20. package/dist/cjs/containers/ConnectedReactionPicker/ConnectedReactionPicker.js +6 -2
  21. package/dist/cjs/containers/ConnectedReactionsView/ConnectedReactionsView.js +9 -4
  22. package/dist/cjs/shared/constants.js +62 -10
  23. package/dist/cjs/shared/i18n.js +40 -0
  24. package/dist/cjs/shared/utils.js +60 -2
  25. package/dist/cjs/types/reaction.js +13 -1
  26. package/dist/cjs/version.json +1 -1
  27. package/dist/es2019/MockReactionsClient.js +22 -14
  28. package/dist/es2019/analytics/analytics.js +3 -0
  29. package/dist/es2019/analytics/ufo.js +19 -0
  30. package/dist/es2019/components/Counter/Counter.js +16 -15
  31. package/dist/es2019/components/Reaction/Reaction.js +43 -18
  32. package/dist/es2019/components/Reaction/styles.js +9 -2
  33. package/dist/es2019/components/ReactionDialog/ReactionView.js +69 -0
  34. package/dist/es2019/components/ReactionDialog/ReactionsDialog.js +145 -0
  35. package/dist/es2019/components/ReactionDialog/ReactionsList.js +69 -0
  36. package/dist/es2019/components/ReactionDialog/index.js +1 -0
  37. package/dist/es2019/components/ReactionDialog/styles.js +169 -0
  38. package/dist/es2019/components/ReactionPicker/ReactionPicker.js +12 -20
  39. package/dist/es2019/components/ReactionTooltip/ReactionTooltip.js +22 -12
  40. package/dist/es2019/components/ReactionTooltip/styles.js +9 -1
  41. package/dist/es2019/components/Reactions/Reactions.js +146 -22
  42. package/dist/es2019/components/Reactions/styles.js +9 -5
  43. package/dist/es2019/components/Trigger/Trigger.js +1 -2
  44. package/dist/es2019/components/index.js +2 -1
  45. package/dist/es2019/containers/ConnectedReactionPicker/ConnectedReactionPicker.js +8 -2
  46. package/dist/es2019/containers/ConnectedReactionsView/ConnectedReactionsView.js +5 -4
  47. package/dist/es2019/shared/constants.js +55 -6
  48. package/dist/es2019/shared/i18n.js +43 -0
  49. package/dist/es2019/shared/utils.js +51 -0
  50. package/dist/es2019/types/reaction.js +13 -1
  51. package/dist/es2019/version.json +1 -1
  52. package/dist/esm/MockReactionsClient.js +24 -13
  53. package/dist/esm/analytics/analytics.js +5 -0
  54. package/dist/esm/analytics/ufo.js +19 -0
  55. package/dist/esm/components/Counter/Counter.js +17 -17
  56. package/dist/esm/components/Reaction/Reaction.js +51 -19
  57. package/dist/esm/components/Reaction/styles.js +9 -2
  58. package/dist/esm/components/ReactionDialog/ReactionView.js +98 -0
  59. package/dist/esm/components/ReactionDialog/ReactionsDialog.js +161 -0
  60. package/dist/esm/components/ReactionDialog/ReactionsList.js +79 -0
  61. package/dist/esm/components/ReactionDialog/index.js +1 -0
  62. package/dist/esm/components/ReactionDialog/styles.js +177 -0
  63. package/dist/esm/components/ReactionPicker/ReactionPicker.js +15 -20
  64. package/dist/esm/components/ReactionTooltip/ReactionTooltip.js +26 -12
  65. package/dist/esm/components/ReactionTooltip/styles.js +9 -1
  66. package/dist/esm/components/Reactions/Reactions.js +158 -22
  67. package/dist/esm/components/Reactions/styles.js +9 -5
  68. package/dist/esm/components/Trigger/Trigger.js +1 -2
  69. package/dist/esm/components/index.js +2 -1
  70. package/dist/esm/containers/ConnectedReactionPicker/ConnectedReactionPicker.js +6 -2
  71. package/dist/esm/containers/ConnectedReactionsView/ConnectedReactionsView.js +8 -4
  72. package/dist/esm/shared/constants.js +57 -6
  73. package/dist/esm/shared/i18n.js +40 -0
  74. package/dist/esm/shared/utils.js +53 -0
  75. package/dist/esm/types/reaction.js +13 -1
  76. package/dist/esm/version.json +1 -1
  77. package/dist/types/MockReactionsClient.d.ts +7 -3
  78. package/dist/types/analytics/analytics.d.ts +10 -0
  79. package/dist/types/analytics/ufo.d.ts +18 -2
  80. package/dist/types/components/Counter/Counter.d.ts +0 -1
  81. package/dist/types/components/Reaction/Reaction.d.ts +11 -1
  82. package/dist/types/components/ReactionDialog/ReactionView.d.ts +19 -0
  83. package/dist/types/components/ReactionDialog/ReactionsDialog.d.ts +32 -0
  84. package/dist/types/components/ReactionDialog/ReactionsList.d.ts +23 -0
  85. package/dist/types/components/ReactionDialog/index.d.ts +1 -0
  86. package/dist/types/components/ReactionDialog/styles.d.ts +11 -0
  87. package/dist/types/components/ReactionPicker/ReactionPicker.d.ts +5 -0
  88. package/dist/types/components/ReactionTooltip/ReactionTooltip.d.ts +12 -0
  89. package/dist/types/components/ReactionTooltip/styles.d.ts +1 -0
  90. package/dist/types/components/Reactions/Reactions.d.ts +45 -6
  91. package/dist/types/components/Reactions/styles.d.ts +1 -0
  92. package/dist/types/components/index.d.ts +1 -0
  93. package/dist/types/containers/ConnectedReactionPicker/ConnectedReactionPicker.d.ts +0 -4
  94. package/dist/types/containers/ConnectedReactionsView/ConnectedReactionsView.d.ts +2 -11
  95. package/dist/types/index.d.ts +1 -1
  96. package/dist/types/shared/constants.d.ts +11 -5
  97. package/dist/types/shared/i18n.d.ts +40 -0
  98. package/dist/types/shared/utils.d.ts +7 -0
  99. package/dist/types/types/User.d.ts +10 -0
  100. package/dist/types/types/index.d.ts +1 -1
  101. package/dist/types/types/reaction.d.ts +15 -2
  102. package/docs/0-intro.tsx +3 -0
  103. package/docs/5-graphql-support.tsx +153 -0
  104. package/package.json +11 -18
  105. package/dist/types-ts4.0/MockReactionsClient.d.ts +0 -23
  106. package/dist/types-ts4.0/analytics/analytics.d.ts +0 -102
  107. package/dist/types-ts4.0/analytics/constants.d.ts +0 -1
  108. package/dist/types-ts4.0/analytics/index.d.ts +0 -2
  109. package/dist/types-ts4.0/analytics/ufo.d.ts +0 -40
  110. package/dist/types-ts4.0/client/ReactionServiceClient.d.ts +0 -35
  111. package/dist/types-ts4.0/client/index.d.ts +0 -1
  112. package/dist/types-ts4.0/components/Counter/Counter.d.ts +0 -45
  113. package/dist/types-ts4.0/components/Counter/index.d.ts +0 -3
  114. package/dist/types-ts4.0/components/Counter/styles.d.ts +0 -3
  115. package/dist/types-ts4.0/components/EmojiButton/EmojiButton.d.ts +0 -22
  116. package/dist/types-ts4.0/components/EmojiButton/index.d.ts +0 -2
  117. package/dist/types-ts4.0/components/EmojiButton/styles.d.ts +0 -1
  118. package/dist/types-ts4.0/components/FlashAnimation/FlashAnimation.d.ts +0 -20
  119. package/dist/types-ts4.0/components/FlashAnimation/index.d.ts +0 -2
  120. package/dist/types-ts4.0/components/FlashAnimation/styles.d.ts +0 -5
  121. package/dist/types-ts4.0/components/Reaction/Reaction.d.ts +0 -38
  122. package/dist/types-ts4.0/components/Reaction/index.d.ts +0 -2
  123. package/dist/types-ts4.0/components/Reaction/styles.d.ts +0 -10
  124. package/dist/types-ts4.0/components/ReactionPicker/ReactionPicker.d.ts +0 -50
  125. package/dist/types-ts4.0/components/ReactionPicker/index.d.ts +0 -2
  126. package/dist/types-ts4.0/components/ReactionPicker/styles.d.ts +0 -3
  127. package/dist/types-ts4.0/components/ReactionTooltip/ReactionTooltip.d.ts +0 -22
  128. package/dist/types-ts4.0/components/ReactionTooltip/index.d.ts +0 -2
  129. package/dist/types-ts4.0/components/ReactionTooltip/styles.d.ts +0 -4
  130. package/dist/types-ts4.0/components/Reactions/Reactions.d.ts +0 -57
  131. package/dist/types-ts4.0/components/Reactions/index.d.ts +0 -2
  132. package/dist/types-ts4.0/components/Reactions/styles.d.ts +0 -2
  133. package/dist/types-ts4.0/components/Selector/Selector.d.ts +0 -34
  134. package/dist/types-ts4.0/components/Selector/index.d.ts +0 -3
  135. package/dist/types-ts4.0/components/Selector/styles.d.ts +0 -12
  136. package/dist/types-ts4.0/components/ShowMore/ShowMore.d.ts +0 -35
  137. package/dist/types-ts4.0/components/ShowMore/index.d.ts +0 -2
  138. package/dist/types-ts4.0/components/ShowMore/styles.d.ts +0 -3
  139. package/dist/types-ts4.0/components/Trigger/Trigger.d.ts +0 -35
  140. package/dist/types-ts4.0/components/Trigger/index.d.ts +0 -2
  141. package/dist/types-ts4.0/components/Trigger/styles.d.ts +0 -5
  142. package/dist/types-ts4.0/components/UfoErrorBoundary/UfoErrorBoundary.d.ts +0 -16
  143. package/dist/types-ts4.0/components/UfoErrorBoundary/index.d.ts +0 -2
  144. package/dist/types-ts4.0/components/index.d.ts +0 -8
  145. package/dist/types-ts4.0/containers/ConnectedReactionPicker/ConnectedReactionPicker.d.ts +0 -27
  146. package/dist/types-ts4.0/containers/ConnectedReactionPicker/index.d.ts +0 -2
  147. package/dist/types-ts4.0/containers/ConnectedReactionsView/ConnectedReactionsView.d.ts +0 -52
  148. package/dist/types-ts4.0/containers/ConnectedReactionsView/index.d.ts +0 -2
  149. package/dist/types-ts4.0/containers/index.d.ts +0 -2
  150. package/dist/types-ts4.0/hooks/index.d.ts +0 -1
  151. package/dist/types-ts4.0/hooks/useClickAway.d.ts +0 -9
  152. package/dist/types-ts4.0/i18n/cs.d.ts +0 -13
  153. package/dist/types-ts4.0/i18n/da.d.ts +0 -13
  154. package/dist/types-ts4.0/i18n/de.d.ts +0 -13
  155. package/dist/types-ts4.0/i18n/en.d.ts +0 -7
  156. package/dist/types-ts4.0/i18n/en_GB.d.ts +0 -7
  157. package/dist/types-ts4.0/i18n/en_ZZ.d.ts +0 -13
  158. package/dist/types-ts4.0/i18n/es.d.ts +0 -13
  159. package/dist/types-ts4.0/i18n/et.d.ts +0 -12
  160. package/dist/types-ts4.0/i18n/fi.d.ts +0 -13
  161. package/dist/types-ts4.0/i18n/fr.d.ts +0 -13
  162. package/dist/types-ts4.0/i18n/hu.d.ts +0 -13
  163. package/dist/types-ts4.0/i18n/index.d.ts +0 -35
  164. package/dist/types-ts4.0/i18n/is.d.ts +0 -6
  165. package/dist/types-ts4.0/i18n/it.d.ts +0 -13
  166. package/dist/types-ts4.0/i18n/ja.d.ts +0 -13
  167. package/dist/types-ts4.0/i18n/ko.d.ts +0 -13
  168. package/dist/types-ts4.0/i18n/languages.d.ts +0 -27
  169. package/dist/types-ts4.0/i18n/nb.d.ts +0 -13
  170. package/dist/types-ts4.0/i18n/nl.d.ts +0 -13
  171. package/dist/types-ts4.0/i18n/pl.d.ts +0 -13
  172. package/dist/types-ts4.0/i18n/pt_BR.d.ts +0 -13
  173. package/dist/types-ts4.0/i18n/pt_PT.d.ts +0 -12
  174. package/dist/types-ts4.0/i18n/ro.d.ts +0 -6
  175. package/dist/types-ts4.0/i18n/ru.d.ts +0 -13
  176. package/dist/types-ts4.0/i18n/sk.d.ts +0 -12
  177. package/dist/types-ts4.0/i18n/sv.d.ts +0 -13
  178. package/dist/types-ts4.0/i18n/th.d.ts +0 -13
  179. package/dist/types-ts4.0/i18n/tr.d.ts +0 -13
  180. package/dist/types-ts4.0/i18n/uk.d.ts +0 -13
  181. package/dist/types-ts4.0/i18n/vi.d.ts +0 -13
  182. package/dist/types-ts4.0/i18n/zh.d.ts +0 -13
  183. package/dist/types-ts4.0/i18n/zh_TW.d.ts +0 -13
  184. package/dist/types-ts4.0/index.d.ts +0 -7
  185. package/dist/types-ts4.0/shared/constants.d.ts +0 -21
  186. package/dist/types-ts4.0/shared/i18n.d.ts +0 -32
  187. package/dist/types-ts4.0/shared/index.d.ts +0 -3
  188. package/dist/types-ts4.0/shared/utils.d.ts +0 -11
  189. package/dist/types-ts4.0/store/MemoryReactionsStore.d.ts +0 -94
  190. package/dist/types-ts4.0/store/ReactionConsumer.d.ts +0 -57
  191. package/dist/types-ts4.0/store/batched.d.ts +0 -2
  192. package/dist/types-ts4.0/store/index.d.ts +0 -3
  193. package/dist/types-ts4.0/store/utils.d.ts +0 -11
  194. package/dist/types-ts4.0/types/Actions.d.ts +0 -27
  195. package/dist/types-ts4.0/types/Updater.d.ts +0 -1
  196. package/dist/types-ts4.0/types/User.d.ts +0 -10
  197. package/dist/types-ts4.0/types/client.d.ts +0 -38
  198. package/dist/types-ts4.0/types/index.d.ts +0 -7
  199. package/dist/types-ts4.0/types/reaction.d.ts +0 -100
  200. package/dist/types-ts4.0/types/store.d.ts +0 -63
package/CHANGELOG.md CHANGED
@@ -1,5 +1,37 @@
1
1
  # @atlaskit/reactions
2
2
 
3
+ ## 22.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - [`0617b7ef2aa`](https://bitbucket.org/atlassian/atlassian-frontend/commits/0617b7ef2aa) - [ux]
8
+ Created a new prop, allowUserDialog, that enables an actionable tooltip link to see
9
+ a detailed breakdown of reacted users. The reactions dialog shows the complete user list for
10
+ the currently selected reaction, as well as, the user list for all other reactions. Can tab or click through the reactions list to see all reactions and user lists.
11
+
12
+ Allow handling of numbers up to 999M and truncate them accordingly.
13
+ 1000 => 1K, 1,500 => 1.5K, 1,000,000 => 1M
14
+
15
+ ### Minor Changes
16
+
17
+ - [`cf558ddee28`](https://bitbucket.org/atlassian/atlassian-frontend/commits/cf558ddee28) - [ux] add see who reacted button to view all reacted users in a modal, and make reactions more friendly to keyboard users
18
+ - [`4f5ecac139f`](https://bitbucket.org/atlassian/atlassian-frontend/commits/4f5ecac139f) - [ux] Provide `emojiPickerSize` option for reaction picker, including `small`, `medium`, and `large`. Emoji picker will be `medium` size by default, which will show more emojis.
19
+
20
+ ### Patch Changes
21
+
22
+ - [`7cfd0383741`](https://bitbucket.org/atlassian/atlassian-frontend/commits/7cfd0383741) - Add UFO metrics for the Reactions Dialog
23
+ - [`ac2824857ec`](https://bitbucket.org/atlassian/atlassian-frontend/commits/ac2824857ec) - Reactionspicker - fix onClose event gets triggered on each click inside document
24
+ - [`f84d560bdbd`](https://bitbucket.org/atlassian/atlassian-frontend/commits/f84d560bdbd) - make onReactionHover depreacted so it's backwards compatible
25
+ - [`99b7758e403`](https://bitbucket.org/atlassian/atlassian-frontend/commits/99b7758e403) - support pluralization for reactions count message in reactions dialog
26
+ - [`b1e9279b174`](https://bitbucket.org/atlassian/atlassian-frontend/commits/b1e9279b174) - Fixing the closing animation for Reactions dialog window
27
+ - Updated dependencies
28
+
29
+ ## 21.8.1
30
+
31
+ ### Patch Changes
32
+
33
+ - Updated dependencies
34
+
3
35
  ## 21.8.0
4
36
 
5
37
  ### Minor Changes
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.mockData = exports.getUser = exports.getReactionSummary = exports.containerAri = exports.ari = exports.MockReactionsClient = void 0;
8
+ exports.simpleMockData = exports.getUser = exports.getReactionSummary = exports.containerAri = exports.ari = exports.MockReactionsClient = void 0;
9
9
 
10
10
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
11
 
@@ -30,11 +30,12 @@ exports.containerAri = containerAri;
30
30
  var ari = 'ari:cloud:owner:demo-cloud-id:item/1';
31
31
  exports.ari = ari;
32
32
 
33
- var getReactionSummary = function getReactionSummary(shortName, count, reacted) {
33
+ var getReactionSummary = function getReactionSummary(shortName, count, reacted, extendedReactions) {
34
+ var getReactionsByShortName = extendedReactions ? _shared.constants.ExtendedReactionsByShortName.get(shortName) : _shared.constants.DefaultReactionsByShortName.get(shortName);
34
35
  return {
35
36
  ari: ari,
36
37
  containerAri: containerAri,
37
- emojiId: _shared.constants.DefaultReactionsByShortName.get(shortName).id,
38
+ emojiId: getReactionsByShortName.id,
38
39
  count: count,
39
40
  reacted: reacted
40
41
  };
@@ -45,7 +46,10 @@ exports.getReactionSummary = getReactionSummary;
45
46
  var getUser = function getUser(id, displayName) {
46
47
  return {
47
48
  id: id,
48
- displayName: displayName
49
+ displayName: displayName,
50
+ profilePicture: {
51
+ path: 'https://pbs.twimg.com/profile_images/803832195970433027/aaoG6PJI_400x400.jpg'
52
+ }
49
53
  };
50
54
  };
51
55
 
@@ -55,19 +59,20 @@ var getReactionKey = function getReactionKey(containerAri, ari) {
55
59
  return "".concat(containerAri, "|").concat(ari);
56
60
  };
57
61
 
58
- var defaultUsers = [getUser('oscar', 'Oscar Wallhult'), getUser('julien', 'Julien Michel Hoarau'), getUser('craig', 'Craig Petchell'), getUser('jerome', 'Jerome Touffe-Blin'), getUser('esoares', 'Eduardo Soares'), getUser('lpereira', 'Luiz Pereira'), getUser('pcurren', 'Paul Curren'), getUser('ttjandra', 'Tara Tjandra'), getUser('severington', 'Ste Everington'), getUser('sguillope', 'Sylvain Guillope'), getUser('alunnon', 'Alex Lunnon')];
59
- var mockData = (0, _defineProperty2.default)({}, getReactionKey(containerAri, ari), [getReactionSummary(':fire:', 1, true), getReactionSummary(':thumbsup:', 999, false), getReactionSummary(':astonished:', 9, false), getReactionSummary(':heart:', 99, false)]);
62
+ var defaultUsers = [getUser('oscar', 'Oscar Wallhult'), getUser('julien', 'Julien Michel Hoarau'), getUser('craig', 'Craig Petchell'), getUser('jerome', 'Jerome Touffe-Blin'), getUser('esoares', 'Eduardo Soares'), getUser('lpereira', 'Luiz Pereira'), getUser('pcurren', 'Paul Curren'), getUser('ttjandra', 'Tara Tjandra'), getUser('severington', 'Ste Everington'), getUser('sguillope', 'Sylvain Guillope'), getUser('alunnon', 'Alex Lunnon'), getUser('bsmith', 'Bob Smith'), getUser('jdoe', 'Jane Doe'), getUser('mhomes', 'Mary Homes'), getUser('ckent', 'Clark Kent')];
63
+ var simpleMockData = (0, _defineProperty2.default)({}, getReactionKey(containerAri, ari), [getReactionSummary(':fire:', 1, true), getReactionSummary(':thumbsup:', 999, false), getReactionSummary(':astonished:', 9, false), getReactionSummary(':heart:', 99, false)]);
64
+ exports.simpleMockData = simpleMockData;
65
+ var extendedMockData = (0, _defineProperty2.default)({}, getReactionKey(containerAri, ari), [getReactionSummary(':fire:', 1, true, true), getReactionSummary(':thumbsup:', 999, false, true), getReactionSummary(':astonished:', 9, false, true), getReactionSummary(':heart:', 99, false, true), getReactionSummary(':thinking:', 10, false, true), getReactionSummary(':clap:', 99, false, true), getReactionSummary(':thumbsdown:', 2, false, true), getReactionSummary(':bulb:', 16, false, true), getReactionSummary(':star:', 9999, false, true), getReactionSummary(':green_heart:', 9, false, true), getReactionSummary(':blue_heart:', 8392, false, true), getReactionSummary(':broken_heart:', 1, false, true), getReactionSummary(':grinning:', 10601, false, true), getReactionSummary(':slight_smile:', 99, false, true)]);
60
66
  /**
61
67
  * Mocked version of the client to fetch user information
62
68
  */
63
69
 
64
- exports.mockData = mockData;
65
-
66
70
  var MockReactionsClient = /*#__PURE__*/function () {
67
71
  function MockReactionsClient() {
68
72
  var _this = this;
69
73
 
70
74
  var delay = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
75
+ var showExtendedReactions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
71
76
  (0, _classCallCheck2.default)(this, MockReactionsClient);
72
77
  (0, _defineProperty2.default)(this, "delayPromise", function () {
73
78
  return new Promise(function (resolve) {
@@ -75,12 +80,15 @@ var MockReactionsClient = /*#__PURE__*/function () {
75
80
  });
76
81
  });
77
82
  this.delay = delay;
83
+ this.mockData = showExtendedReactions ? extendedMockData : simpleMockData;
78
84
  }
79
85
 
80
86
  (0, _createClass2.default)(MockReactionsClient, [{
81
87
  key: "getReactions",
82
88
  value: function () {
83
89
  var _getReactions = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(containerAri, aris) {
90
+ var _this2 = this;
91
+
84
92
  return _regenerator.default.wrap(function _callee$(_context) {
85
93
  while (1) {
86
94
  switch (_context.prev = _context.next) {
@@ -91,7 +99,7 @@ var MockReactionsClient = /*#__PURE__*/function () {
91
99
  case 2:
92
100
  return _context.abrupt("return", aris.reduce(function (results, ari) {
93
101
  var reactionKey = getReactionKey(containerAri, ari);
94
- results[ari] = mockData[reactionKey] || [];
102
+ results[ari] = _this2.mockData[reactionKey] || [];
95
103
  return results;
96
104
  }, {}));
97
105
 
@@ -123,7 +131,7 @@ var MockReactionsClient = /*#__PURE__*/function () {
123
131
 
124
132
  case 2:
125
133
  reactionKey = "".concat(containerAri, "|").concat(ari);
126
- reactionsMockData = mockData[reactionKey];
134
+ reactionsMockData = this.mockData[reactionKey];
127
135
 
128
136
  if (!reactionsMockData) {
129
137
  _context2.next = 9;
@@ -183,10 +191,10 @@ var MockReactionsClient = /*#__PURE__*/function () {
183
191
  case 2:
184
192
  reactionKey = getReactionKey(containerAri, ari);
185
193
  found = false;
186
- reactionsMockData = mockData[reactionKey];
194
+ reactionsMockData = this.mockData[reactionKey];
187
195
 
188
196
  if (reactionsMockData) {
189
- mockData[reactionKey] = reactionsMockData.map(function (reaction) {
197
+ this.mockData[reactionKey] = reactionsMockData.map(function (reaction) {
190
198
  if (reaction.emojiId === emojiId) {
191
199
  found = true;
192
200
  return _objectSpread(_objectSpread({}, reaction), {}, {
@@ -200,7 +208,7 @@ var MockReactionsClient = /*#__PURE__*/function () {
200
208
  }
201
209
 
202
210
  if (!found) {
203
- mockData[reactionKey] = [].concat((0, _toConsumableArray2.default)(reactionsMockData ? reactionsMockData : []), [{
211
+ this.mockData[reactionKey] = [].concat((0, _toConsumableArray2.default)(reactionsMockData ? reactionsMockData : []), [{
204
212
  containerAri: containerAri,
205
213
  ari: ari,
206
214
  emojiId: emojiId,
@@ -209,7 +217,7 @@ var MockReactionsClient = /*#__PURE__*/function () {
209
217
  }]);
210
218
  }
211
219
 
212
- return _context3.abrupt("return", mockData[reactionKey]);
220
+ return _context3.abrupt("return", this.mockData[reactionKey]);
213
221
 
214
222
  case 8:
215
223
  case "end":
@@ -239,7 +247,7 @@ var MockReactionsClient = /*#__PURE__*/function () {
239
247
 
240
248
  case 2:
241
249
  reactionKey = getReactionKey(containerAri, ari);
242
- mockData[reactionKey] = mockData[reactionKey].map(function (reaction) {
250
+ this.mockData[reactionKey] = this.mockData[reactionKey].map(function (reaction) {
243
251
  if (reaction.emojiId === emojiId) {
244
252
  if (reaction.count === 1) {
245
253
  return undefined;
@@ -255,7 +263,7 @@ var MockReactionsClient = /*#__PURE__*/function () {
255
263
  }).filter(function (reaction_1) {
256
264
  return !!reaction_1;
257
265
  });
258
- return _context4.abrupt("return", mockData[reactionKey]);
266
+ return _context4.abrupt("return", this.mockData[reactionKey]);
259
267
 
260
268
  case 5:
261
269
  case "end":
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.extractErrorInfo = exports.createRestSucceededEvent = exports.createRestFailedEvent = exports.createReactionsRenderedEvent = exports.createReactionSelectionEvent = exports.createReactionHoveredEvent = exports.createReactionClickedEvent = exports.createPickerMoreClickedEvent = exports.createPickerCancelledEvent = exports.createPickerButtonClickedEvent = exports.createAndFireSafe = exports.createAndFireEventInElementsChannel = void 0;
8
+ exports.extractErrorInfo = exports.createRestSucceededEvent = exports.createRestFailedEvent = exports.createReactionsRenderedEvent = exports.createReactionSelectionEvent = exports.createReactionHoveredEvent = exports.createReactionFocusedEvent = exports.createReactionClickedEvent = exports.createPickerMoreClickedEvent = exports.createPickerCancelledEvent = exports.createPickerButtonClickedEvent = exports.createAndFireSafe = exports.createAndFireEventInElementsChannel = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
@@ -131,6 +131,14 @@ var createReactionHoveredEvent = function createReactionHoveredEvent(startTime)
131
131
 
132
132
  exports.createReactionHoveredEvent = createReactionHoveredEvent;
133
133
 
134
+ var createReactionFocusedEvent = function createReactionFocusedEvent(startTime) {
135
+ return createPayload('focused', 'existingReaction', _analyticsGasTypes.UI_EVENT_TYPE)({
136
+ duration: calculateDuration(startTime)
137
+ });
138
+ };
139
+
140
+ exports.createReactionFocusedEvent = createReactionFocusedEvent;
141
+
134
142
  var createReactionClickedEvent = function createReactionClickedEvent(added, emojiId) {
135
143
  return createPayload('clicked', 'existingReaction', _analyticsGasTypes.UI_EVENT_TYPE)({
136
144
  added: added,
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.sampledReactionsRendered = exports.ReactionsRendered = exports.ReactionsRemove = exports.ReactionsAdd = exports.ReactionDetailsFetch = exports.PickerRender = exports.ExperienceName = exports.ComponentName = void 0;
6
+ exports.sampledReactionsRendered = exports.ReactionsRendered = exports.ReactionsRemove = exports.ReactionsAdd = exports.ReactionDialogSelectedReactionChanged = exports.ReactionDialogOpened = exports.ReactionDialogClosed = exports.ReactionDetailsFetch = exports.PickerRender = exports.ExperienceName = exports.ComponentName = void 0;
7
7
 
8
8
  var _ufo = require("@atlaskit/ufo");
9
9
 
@@ -40,6 +40,9 @@ exports.ExperienceName = ExperienceName;
40
40
  ExperienceName["REACTION_ADDED"] = "reaction-added";
41
41
  ExperienceName["REACTION_REMOVED"] = "reaction-removed";
42
42
  ExperienceName["REACTION_DETAILS_FETCHED"] = "reaction-details-fetched";
43
+ ExperienceName["REACTION_DIALOG_OPENED"] = "reaction-dialog-opened";
44
+ ExperienceName["REACTION_DIALOG_CLOSED"] = "reaction-dialog-closed";
45
+ ExperienceName["REACTION_DIALOG_SELECTED_REACTION_CHANGED"] = "reaction-dialog-selected-reaction-changed";
43
46
  })(ExperienceName || (exports.ExperienceName = ExperienceName = {}));
44
47
 
45
48
  var ComponentName;
@@ -53,6 +56,7 @@ exports.ComponentName = ComponentName;
53
56
  ComponentName["PICKER_RENDERED"] = "reactions-picker";
54
57
  ComponentName["REACTIONS"] = "reactions-list";
55
58
  ComponentName["REACTION_ITEM"] = "reaction-item";
59
+ ComponentName["REACTION_DIALOG"] = "reaction-dialog";
56
60
  })(ComponentName || (exports.ComponentName = ComponentName = {}));
57
61
 
58
62
  var PickerRender = new _ufo.UFOExperience(ExperienceName.PICKER_OPENED, createExperienceConfig(ComponentName.PICKER_RENDERED, _ufo.ExperienceTypes.Experience, _ufo.ExperiencePerformanceTypes.InlineResult));
@@ -69,10 +73,28 @@ var ReactionsRendered = new _ufo.ConcurrentExperience(ExperienceName.REACTIONS_R
69
73
  exports.ReactionsRendered = ReactionsRendered;
70
74
  var ReactionsAdd = new _ufo.ConcurrentExperience(ExperienceName.REACTION_ADDED, createExperienceConfig(ComponentName.REACTIONS, _ufo.ExperienceTypes.Experience, _ufo.ExperiencePerformanceTypes.InlineResult));
71
75
  /**
72
- * Experience when a reaction details gets fetched
76
+ * Expeirence when a reaction dialog is opened
73
77
  */
74
78
 
75
79
  exports.ReactionsAdd = ReactionsAdd;
80
+ var ReactionDialogOpened = new _ufo.UFOExperience(ExperienceName.REACTION_DIALOG_OPENED, createExperienceConfig(ComponentName.REACTION_DIALOG, _ufo.ExperienceTypes.Experience, _ufo.ExperiencePerformanceTypes.InlineResult));
81
+ /**
82
+ * Experience when a reaction dialog is closed
83
+ */
84
+
85
+ exports.ReactionDialogOpened = ReactionDialogOpened;
86
+ var ReactionDialogClosed = new _ufo.UFOExperience(ExperienceName.REACTION_DIALOG_CLOSED, createExperienceConfig(ComponentName.REACTION_DIALOG, _ufo.ExperienceTypes.Experience, _ufo.ExperiencePerformanceTypes.InlineResult));
87
+ /**
88
+ * Experience when a reaction changed/fetched from inside the modal dialog
89
+ */
90
+
91
+ exports.ReactionDialogClosed = ReactionDialogClosed;
92
+ var ReactionDialogSelectedReactionChanged = new _ufo.UFOExperience(ExperienceName.REACTION_DIALOG_SELECTED_REACTION_CHANGED, createExperienceConfig(ComponentName.REACTION_DIALOG, _ufo.ExperienceTypes.Experience, _ufo.ExperiencePerformanceTypes.InlineResult));
93
+ /**
94
+ * Experience when a reaction details gets fetched
95
+ */
96
+
97
+ exports.ReactionDialogSelectedReactionChanged = ReactionDialogSelectedReactionChanged;
76
98
  var ReactionDetailsFetch = new _ufo.ConcurrentExperience(ExperienceName.REACTION_DETAILS_FETCHED, createExperienceConfig(ComponentName.REACTION_ITEM, _ufo.ExperienceTypes.Experience, _ufo.ExperiencePerformanceTypes.InlineResult));
77
99
  /**
78
100
  * Experience when a reaction emoji gets removed/decrement
@@ -7,7 +7,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.getLabel = exports.RENDER_LABEL_TESTID = exports.RENDER_COUNTER_TESTID = exports.RENDER_COMPONENT_WRAPPER = exports.Counter = void 0;
10
+ exports.RENDER_LABEL_TESTID = exports.RENDER_COUNTER_TESTID = exports.RENDER_COMPONENT_WRAPPER = exports.Counter = void 0;
11
11
 
12
12
  var _react = _interopRequireDefault(require("react"));
13
13
 
@@ -46,36 +46,32 @@ exports.RENDER_COUNTER_TESTID = RENDER_COUNTER_TESTID;
46
46
  var RENDER_LABEL_TESTID = 'counter_label_wrapper';
47
47
  exports.RENDER_LABEL_TESTID = RENDER_LABEL_TESTID;
48
48
 
49
- var getLabel = function getLabel(value, overLimitLabel, limit) {
50
- // Check if reached limit
51
- if (limit && value >= limit) {
52
- return overLimitLabel || '';
53
- } else if (value === 0) {
54
- return '';
55
- } else {
56
- return value.toString();
57
- }
58
- };
59
49
  /**
60
50
  * Display reaction count next to the emoji button
61
51
  */
62
-
63
-
64
- exports.getLabel = getLabel;
65
-
66
52
  var Counter = function Counter(_ref) {
67
53
  var _ref$highlight = _ref.highlight,
68
54
  highlight = _ref$highlight === void 0 ? false : _ref$highlight,
69
- _ref$limit = _ref.limit,
70
- limit = _ref$limit === void 0 ? _shared.constants.DEFAULT_REACTION_TOP_LIMIT : _ref$limit,
71
- _ref$overLimitLabel = _ref.overLimitLabel,
72
- overLimitLabel = _ref$overLimitLabel === void 0 ? _shared.constants.DEFAULT_OVER_THE_LIMIT_REACTION_LABEL : _ref$overLimitLabel,
55
+ limit = _ref.limit,
56
+ overLimitLabel = _ref.overLimitLabel,
73
57
  className = _ref.className,
74
58
  value = _ref.value,
75
59
  _ref$animationDuratio = _ref.animationDuration,
76
60
  animationDuration = _ref$animationDuratio === void 0 ? _motion.mediumDurationMs : _ref$animationDuratio;
61
+
62
+ var getLabel = function getLabel(value) {
63
+ // Check if reached limit
64
+ if (limit && overLimitLabel && value >= limit) {
65
+ return overLimitLabel || '';
66
+ } else if (value === 0) {
67
+ return '';
68
+ } else {
69
+ return _shared.utils.formatLargeNumber(value);
70
+ }
71
+ };
72
+
77
73
  var previousValue = (0, _usePreviousValue.default)(value);
78
- var label = getLabel(value, overLimitLabel, limit);
74
+ var label = getLabel(value);
79
75
  var increase = previousValue ? previousValue < value : false;
80
76
  return (0, _react2.jsx)("div", {
81
77
  className: className,
@@ -56,15 +56,19 @@ var Reaction = function Reaction(_ref) {
56
56
  var emojiProvider = _ref.emojiProvider,
57
57
  onClick = _ref.onClick,
58
58
  reaction = _ref.reaction,
59
- onMouseEnter = _ref.onMouseEnter,
59
+ _ref$onMouseEnter = _ref.onMouseEnter,
60
+ onMouseEnter = _ref$onMouseEnter === void 0 ? function () {} : _ref$onMouseEnter,
61
+ _ref$onFocused = _ref.onFocused,
62
+ onFocused = _ref$onFocused === void 0 ? function () {} : _ref$onFocused,
60
63
  className = _ref.className,
61
64
  _ref$flash = _ref.flash,
62
- flash = _ref$flash === void 0 ? false : _ref$flash;
63
- var emojiId = {
64
- id: reaction.emojiId,
65
- shortName: ''
66
- };
65
+ flash = _ref$flash === void 0 ? false : _ref$flash,
66
+ _ref$handleUserListCl = _ref.handleUserListClick,
67
+ handleUserListClick = _ref$handleUserListCl === void 0 ? function () {} : _ref$handleUserListCl,
68
+ allowUserDialog = _ref.allowUserDialog;
69
+ var intl = (0, _reactIntlNext.useIntl)();
67
70
  var hoverStart = (0, _react.useRef)();
71
+ var focusStart = (0, _react.useRef)();
68
72
 
69
73
  var _useAnalyticsEvents = (0, _analyticsNext.useAnalyticsEvents)(),
70
74
  createAnalyticsEvent = _useAnalyticsEvents.createAnalyticsEvent;
@@ -72,9 +76,18 @@ var Reaction = function Reaction(_ref) {
72
76
  var _useState = (0, _react.useState)(),
73
77
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
74
78
  emojiName = _useState2[0],
75
- setEmojiName = _useState2[1]; // TODO: Extract the flow to a custom hook to retrieve emoji detailed description from an id using a custom hook. This will benefit a better optimization instead of the emojiProvider resolving everytime.
76
- // Also optimize in future version to fetch in batch several emojiIds
79
+ setEmojiName = _useState2[1];
77
80
 
81
+ var _useState3 = (0, _react.useState)(true),
82
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
83
+ isTooltipEnabled = _useState4[0],
84
+ setIsTooltipEnabled = _useState4[1];
85
+
86
+ var emojiId = {
87
+ id: reaction.emojiId,
88
+ shortName: ''
89
+ }; // TODO: Extract the flow to a custom hook to retrieve emoji detailed description from an id using a custom hook. This will benefit a better optimization instead of the emojiProvider resolving everytime.
90
+ // Also optimize in future version to fetch in batch several emojiIds
78
91
 
79
92
  (0, _react.useEffect)(function () {
80
93
  (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
@@ -106,7 +119,7 @@ var Reaction = function Reaction(_ref) {
106
119
  }, _callee);
107
120
  }))();
108
121
  }, [emojiProvider, reaction.emojiId]);
109
- var handleMouseUp = (0, _react.useCallback)(function (event) {
122
+ var handleClick = (0, _react.useCallback)(function (event) {
110
123
  event.preventDefault();
111
124
 
112
125
  if (_shared.utils.isLeftClick(event)) {
@@ -120,21 +133,40 @@ var Reaction = function Reaction(_ref) {
120
133
  }, [createAnalyticsEvent, reaction, onClick]);
121
134
  var handleMouseEnter = (0, _react.useCallback)(function (event) {
122
135
  event.preventDefault();
136
+ setIsTooltipEnabled(true);
123
137
 
124
138
  if (!reaction.users || !reaction.users.length) {
125
- hoverStart.current = Date.now();
139
+ focusStart.current = Date.now();
126
140
  }
127
141
 
128
- _analytics.Analytics.createAndFireSafe(createAnalyticsEvent, _analytics.Analytics.createReactionHoveredEvent, hoverStart.current);
142
+ _analytics.Analytics.createAndFireSafe(createAnalyticsEvent, _analytics.Analytics.createReactionHoveredEvent, focusStart.current);
129
143
 
130
- if (onMouseEnter) {
131
- onMouseEnter(reaction, event);
132
- }
144
+ onMouseEnter(reaction.emojiId, event);
133
145
  }, [createAnalyticsEvent, reaction, onMouseEnter]);
134
- var intl = (0, _reactIntlNext.useIntl)();
146
+ var handleFocused = (0, _react.useCallback)(function (event) {
147
+ event.preventDefault();
148
+ setIsTooltipEnabled(true);
149
+
150
+ if (!reaction.users || !reaction.users.length) {
151
+ hoverStart.current = Date.now();
152
+ }
153
+
154
+ _analytics.Analytics.createAndFireSafe(createAnalyticsEvent, _analytics.Analytics.createReactionFocusedEvent, hoverStart.current);
155
+
156
+ onFocused(reaction.emojiId, event);
157
+ }, [createAnalyticsEvent, reaction, onFocused]);
158
+
159
+ var handleOpenReactionsDialog = function handleOpenReactionsDialog(emojiId) {
160
+ handleUserListClick(emojiId);
161
+ setIsTooltipEnabled(false);
162
+ };
163
+
135
164
  return (0, _react2.jsx)(_ReactionTooltip.ReactionTooltip, {
136
165
  emojiName: emojiName,
137
- reaction: reaction
166
+ reaction: reaction,
167
+ handleUserListClick: handleOpenReactionsDialog,
168
+ allowUserDialog: allowUserDialog,
169
+ isEnabled: isTooltipEnabled
138
170
  }, (0, _react2.jsx)("button", {
139
171
  className: className,
140
172
  css: [styles.reactionStyle, reaction.reacted && styles.reactedStyle],
@@ -144,8 +176,10 @@ var Reaction = function Reaction(_ref) {
144
176
  type: "button",
145
177
  "data-emoji-id": reaction.emojiId,
146
178
  "data-testid": RENDER_REACTION_TESTID,
147
- onMouseUp: handleMouseUp,
148
- onMouseEnter: handleMouseEnter
179
+ onClick: handleClick,
180
+ onMouseEnter: handleMouseEnter,
181
+ onFocus: handleFocused,
182
+ "data-emoji-button-id": reaction.emojiId
149
183
  }, (0, _react2.jsx)(_FlashAnimation.FlashAnimation, {
150
184
  flash: flash,
151
185
  css: styles.flashStyle
@@ -30,7 +30,6 @@ var emojiStyle = (0, _react.css)({
30
30
  });
31
31
  exports.emojiStyle = emojiStyle;
32
32
  var reactionStyle = (0, _react.css)({
33
- outline: 'none',
34
33
  display: 'flex',
35
34
  flexDirection: 'row',
36
35
  alignItems: 'flex-start',
@@ -47,6 +46,13 @@ var reactionStyle = (0, _react.css)({
47
46
  transition: '200ms ease-in-out',
48
47
  '&:hover': {
49
48
  background: "".concat((0, _tokens.token)('color.background.neutral.subtle.hovered', _colors.N20))
49
+ },
50
+ '&:focus': {
51
+ boxShadow: "0 0 0 2px ".concat((0, _tokens.token)('color.border.focused', _colors.B100)),
52
+ // background, box-shadow
53
+ transitionDuration: '0s, 0.2s',
54
+ // disabling browser focus outline
55
+ outline: 'none'
50
56
  }
51
57
  });
52
58
  exports.reactionStyle = reactionStyle;
@@ -64,6 +70,7 @@ exports.flashHeight = flashHeight;
64
70
  var flashStyle = (0, _react.css)({
65
71
  display: 'flex',
66
72
  flexDirection: 'row',
73
+ alignItems: 'center',
67
74
  borderRadius: '10px',
68
75
  height: "".concat(flashHeight, "px")
69
76
  });
@@ -0,0 +1,121 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.ReactionView = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
+
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
18
+ var _react = require("react");
19
+
20
+ var _reactIntlNext = require("react-intl-next");
21
+
22
+ var _react2 = require("@emotion/react");
23
+
24
+ var _element = require("@atlaskit/emoji/element");
25
+
26
+ var _Avatar = _interopRequireDefault(require("@atlaskit/avatar/Avatar"));
27
+
28
+ var _spinner = _interopRequireDefault(require("@atlaskit/spinner"));
29
+
30
+ var _tabs = require("@atlaskit/tabs");
31
+
32
+ var _shared = require("../../shared");
33
+
34
+ var _styles = require("./styles");
35
+
36
+ /** @jsx jsx */
37
+ var ReactionView = function ReactionView(_ref) {
38
+ var selectedEmojiId = _ref.selectedEmojiId,
39
+ emojiProvider = _ref.emojiProvider,
40
+ reaction = _ref.reaction;
41
+ var intl = (0, _reactIntlNext.useIntl)();
42
+
43
+ var _useState = (0, _react.useState)(''),
44
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
45
+ emojiName = _useState2[0],
46
+ setEmojiName = _useState2[1];
47
+
48
+ (0, _react.useEffect)(function () {
49
+ (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
50
+ var provider, emoji;
51
+ return _regenerator.default.wrap(function _callee$(_context) {
52
+ while (1) {
53
+ switch (_context.prev = _context.next) {
54
+ case 0:
55
+ _context.next = 2;
56
+ return emojiProvider;
57
+
58
+ case 2:
59
+ provider = _context.sent;
60
+ _context.next = 5;
61
+ return provider.findByEmojiId({
62
+ shortName: '',
63
+ id: selectedEmojiId
64
+ });
65
+
66
+ case 5:
67
+ emoji = _context.sent;
68
+
69
+ if (emoji && emoji.name) {
70
+ setEmojiName(emoji.name);
71
+ }
72
+
73
+ case 7:
74
+ case "end":
75
+ return _context.stop();
76
+ }
77
+ }
78
+ }, _callee);
79
+ }))();
80
+ }, [emojiProvider, selectedEmojiId]);
81
+ var alphabeticalNames = (0, _react.useMemo)(function () {
82
+ var _reactionObj$users;
83
+
84
+ var reactionObj = reaction;
85
+ return ((_reactionObj$users = reactionObj.users) === null || _reactionObj$users === void 0 ? void 0 : _reactionObj$users.sort(function (a, b) {
86
+ return a.displayName.localeCompare(b.displayName);
87
+ })) || [];
88
+ }, [reaction]);
89
+ var tabPanelAttributes = (0, _tabs.useTabPanel)();
90
+ return (0, _react2.jsx)("div", (0, _extends2.default)({
91
+ css: _styles.reactionViewStyle
92
+ }, tabPanelAttributes), (0, _react2.jsx)("p", null, (0, _react2.jsx)(_element.ResourcedEmoji, {
93
+ emojiProvider: emojiProvider,
94
+ emojiId: {
95
+ id: selectedEmojiId,
96
+ shortName: ''
97
+ },
98
+ fitToHeight: 24
99
+ }), intl.formatMessage(_shared.i18n.messages.emojiName, {
100
+ emojiName: emojiName
101
+ })), alphabeticalNames.length === 0 ? (0, _react2.jsx)("div", {
102
+ css: _styles.centerSpinner
103
+ }, (0, _react2.jsx)(_spinner.default, {
104
+ size: "large"
105
+ })) : (0, _react2.jsx)("ul", {
106
+ css: _styles.userListStyle
107
+ }, alphabeticalNames.map(function (user) {
108
+ var _user$profilePicture;
109
+
110
+ var profile = (_user$profilePicture = user.profilePicture) === null || _user$profilePicture === void 0 ? void 0 : _user$profilePicture.path;
111
+ return (0, _react2.jsx)("li", {
112
+ css: _styles.userStyle,
113
+ key: user.id
114
+ }, (0, _react2.jsx)(_Avatar.default, {
115
+ size: "large",
116
+ src: profile
117
+ }), (0, _react2.jsx)("span", null, user.displayName));
118
+ })));
119
+ };
120
+
121
+ exports.ReactionView = ReactionView;