@atlaskit/emoji 67.0.3 → 67.0.5

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 (280) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/cjs/admin.js +0 -2
  3. package/dist/cjs/api/EmojiLoader.js +1 -8
  4. package/dist/cjs/api/EmojiRepository.js +16 -80
  5. package/dist/cjs/api/EmojiRepositoryRegex.js +2 -0
  6. package/dist/cjs/api/EmojiResource.js +20 -170
  7. package/dist/cjs/api/EmojiUtils.js +27 -67
  8. package/dist/cjs/api/internal/Comparators.js +8 -62
  9. package/dist/cjs/api/internal/UsageFrequencyTracker.js +4 -34
  10. package/dist/cjs/api/media/MediaEmojiCache.js +8 -58
  11. package/dist/cjs/api/media/MediaImageLoader.js +4 -28
  12. package/dist/cjs/api/media/SiteEmojiResource.js +14 -55
  13. package/dist/cjs/api/media/TokenManager.js +4 -18
  14. package/dist/cjs/components/common/CachingEmoji.js +18 -52
  15. package/dist/cjs/components/common/DeleteButton.js +0 -10
  16. package/dist/cjs/components/common/Emoji.js +44 -102
  17. package/dist/cjs/components/common/EmojiActions.js +25 -61
  18. package/dist/cjs/components/common/EmojiButton.js +5 -18
  19. package/dist/cjs/components/common/EmojiDeletePreview.js +7 -38
  20. package/dist/cjs/components/common/EmojiErrorMessage.js +3 -9
  21. package/dist/cjs/components/common/EmojiPlaceholder.js +7 -16
  22. package/dist/cjs/components/common/EmojiPreviewComponent.js +1 -6
  23. package/dist/cjs/components/common/EmojiUploadPicker.js +31 -86
  24. package/dist/cjs/components/common/EmojiUploadPreview.js +7 -36
  25. package/dist/cjs/components/common/FileChooser.js +5 -18
  26. package/dist/cjs/components/common/LoadingEmojiComponent.js +5 -24
  27. package/dist/cjs/components/common/Popup.js +16 -44
  28. package/dist/cjs/components/common/RecordSelectionDefault.js +0 -7
  29. package/dist/cjs/components/common/ResourcedEmoji.js +0 -15
  30. package/dist/cjs/components/common/ResourcedEmojiComponent.js +29 -69
  31. package/dist/cjs/components/common/RetryableButton.js +4 -19
  32. package/dist/cjs/components/common/Scrollable.js +6 -36
  33. package/dist/cjs/components/common/ToneSelector.js +3 -24
  34. package/dist/cjs/components/common/UfoErrorBoundary.js +1 -19
  35. package/dist/cjs/components/common/UploadEmoji.js +2 -13
  36. package/dist/cjs/components/common/internal-types.js +0 -1
  37. package/dist/cjs/components/common/setSkinToneAriaLabelText.js +0 -6
  38. package/dist/cjs/components/common/styles.js +9 -17
  39. package/dist/cjs/components/hooks.js +0 -2
  40. package/dist/cjs/components/i18n.js +0 -2
  41. package/dist/cjs/components/picker/CategorySelector.js +4 -50
  42. package/dist/cjs/components/picker/CategoryTracker.js +3 -14
  43. package/dist/cjs/components/picker/EmojiPicker.js +3 -42
  44. package/dist/cjs/components/picker/EmojiPickerCategoryHeading.js +2 -10
  45. package/dist/cjs/components/picker/EmojiPickerComponent.js +59 -140
  46. package/dist/cjs/components/picker/EmojiPickerEmojiRow.js +7 -14
  47. package/dist/cjs/components/picker/EmojiPickerFooter.js +1 -8
  48. package/dist/cjs/components/picker/EmojiPickerList.js +32 -83
  49. package/dist/cjs/components/picker/EmojiPickerListSearch.js +11 -48
  50. package/dist/cjs/components/picker/EmojiPickerSizes.js +1 -2
  51. package/dist/cjs/components/picker/EmojiPickerVirtualItems.js +1 -38
  52. package/dist/cjs/components/picker/VirtualList.js +11 -41
  53. package/dist/cjs/components/picker/categories.js +0 -14
  54. package/dist/cjs/components/picker/styles.js +15 -20
  55. package/dist/cjs/components/picker/utils.js +0 -4
  56. package/dist/cjs/components/typeahead/EmojiTypeAhead.js +10 -45
  57. package/dist/cjs/components/typeahead/EmojiTypeAheadComponent.js +11 -74
  58. package/dist/cjs/components/typeahead/EmojiTypeAheadItem.js +7 -37
  59. package/dist/cjs/components/typeahead/EmojiTypeAheadList.js +10 -63
  60. package/dist/cjs/components/typeahead/styles.js +2 -4
  61. package/dist/cjs/components/uploader/EmojiUploadComponent.js +6 -42
  62. package/dist/cjs/components/uploader/EmojiUploader.js +3 -31
  63. package/dist/cjs/components/uploader/styles.js +3 -4
  64. package/dist/cjs/context/EmojiCommonProvider.js +0 -6
  65. package/dist/cjs/context/EmojiContext.js +0 -2
  66. package/dist/cjs/context/EmojiContextProvider.js +1 -17
  67. package/dist/cjs/element.js +0 -4
  68. package/dist/cjs/hooks/useEmoji.js +5 -20
  69. package/dist/cjs/hooks/useEmojiContext.js +0 -4
  70. package/dist/cjs/hooks/usePrevious.js +0 -2
  71. package/dist/cjs/i18n/cs.js +0 -1
  72. package/dist/cjs/i18n/da.js +0 -1
  73. package/dist/cjs/i18n/de.js +0 -1
  74. package/dist/cjs/i18n/en.js +0 -1
  75. package/dist/cjs/i18n/en_GB.js +0 -1
  76. package/dist/cjs/i18n/en_ZZ.js +0 -1
  77. package/dist/cjs/i18n/es.js +0 -1
  78. package/dist/cjs/i18n/et.js +0 -1
  79. package/dist/cjs/i18n/fi.js +0 -1
  80. package/dist/cjs/i18n/fr.js +0 -1
  81. package/dist/cjs/i18n/hu.js +0 -1
  82. package/dist/cjs/i18n/index.js +0 -30
  83. package/dist/cjs/i18n/it.js +0 -1
  84. package/dist/cjs/i18n/ja.js +0 -1
  85. package/dist/cjs/i18n/ko.js +0 -1
  86. package/dist/cjs/i18n/nb.js +0 -1
  87. package/dist/cjs/i18n/nl.js +0 -1
  88. package/dist/cjs/i18n/pl.js +0 -1
  89. package/dist/cjs/i18n/pt_BR.js +0 -1
  90. package/dist/cjs/i18n/pt_PT.js +0 -1
  91. package/dist/cjs/i18n/ru.js +0 -1
  92. package/dist/cjs/i18n/sk.js +0 -1
  93. package/dist/cjs/i18n/sv.js +0 -1
  94. package/dist/cjs/i18n/th.js +0 -1
  95. package/dist/cjs/i18n/tr.js +0 -1
  96. package/dist/cjs/i18n/uk.js +0 -1
  97. package/dist/cjs/i18n/vi.js +0 -1
  98. package/dist/cjs/i18n/zh.js +0 -1
  99. package/dist/cjs/i18n/zh_TW.js +0 -1
  100. package/dist/cjs/index.js +0 -24
  101. package/dist/cjs/picker.js +0 -2
  102. package/dist/cjs/resource.js +0 -5
  103. package/dist/cjs/typeahead.js +0 -3
  104. package/dist/cjs/types.js +0 -17
  105. package/dist/cjs/util/DuplicateLimitedQueue.js +13 -31
  106. package/dist/cjs/util/StoredDuplicateLimitedQueue.js +4 -26
  107. package/dist/cjs/util/analytics/analytics.js +14 -97
  108. package/dist/cjs/util/analytics/index.js +0 -4
  109. package/dist/cjs/util/analytics/samplingUfo.js +3 -59
  110. package/dist/cjs/util/analytics/ufoExperiences.js +0 -12
  111. package/dist/cjs/util/analytics/useSampledUFOComponentExperience.js +3 -10
  112. package/dist/cjs/util/constants.js +5 -5
  113. package/dist/cjs/util/filters.js +0 -4
  114. package/dist/cjs/util/image.js +3 -18
  115. package/dist/cjs/util/logger.js +0 -6
  116. package/dist/cjs/util/mouse.js +3 -6
  117. package/dist/cjs/util/shared-styles.js +0 -4
  118. package/dist/cjs/util/storage-available.js +10 -8
  119. package/dist/cjs/util/type-helpers.js +2 -57
  120. package/dist/cjs/util/useInView.js +0 -6
  121. package/dist/cjs/utils.js +0 -3
  122. package/dist/cjs/version.json +1 -1
  123. package/dist/es2019/api/EmojiLoader.js +2 -4
  124. package/dist/es2019/api/EmojiRepository.js +15 -82
  125. package/dist/es2019/api/EmojiRepositoryRegex.js +2 -0
  126. package/dist/es2019/api/EmojiResource.js +21 -114
  127. package/dist/es2019/api/EmojiUtils.js +11 -18
  128. package/dist/es2019/api/internal/Comparators.js +12 -48
  129. package/dist/es2019/api/internal/UsageFrequencyTracker.js +7 -24
  130. package/dist/es2019/api/media/MediaEmojiCache.js +9 -52
  131. package/dist/es2019/api/media/MediaImageLoader.js +2 -16
  132. package/dist/es2019/api/media/SiteEmojiResource.js +11 -31
  133. package/dist/es2019/api/media/TokenManager.js +4 -14
  134. package/dist/es2019/components/common/CachingEmoji.js +5 -12
  135. package/dist/es2019/components/common/DeleteButton.js +2 -3
  136. package/dist/es2019/components/common/Emoji.js +19 -47
  137. package/dist/es2019/components/common/EmojiActions.js +3 -16
  138. package/dist/es2019/components/common/EmojiButton.js +0 -5
  139. package/dist/es2019/components/common/EmojiDeletePreview.js +0 -11
  140. package/dist/es2019/components/common/EmojiErrorMessage.js +1 -2
  141. package/dist/es2019/components/common/EmojiPlaceholder.js +0 -5
  142. package/dist/es2019/components/common/EmojiPreviewComponent.js +1 -0
  143. package/dist/es2019/components/common/EmojiUploadPicker.js +2 -25
  144. package/dist/es2019/components/common/EmojiUploadPreview.js +0 -6
  145. package/dist/es2019/components/common/FileChooser.js +0 -6
  146. package/dist/es2019/components/common/LoadingEmojiComponent.js +2 -14
  147. package/dist/es2019/components/common/Popup.js +4 -22
  148. package/dist/es2019/components/common/RecordSelectionDefault.js +1 -1
  149. package/dist/es2019/components/common/ResourcedEmoji.js +1 -6
  150. package/dist/es2019/components/common/ResourcedEmojiComponent.js +2 -13
  151. package/dist/es2019/components/common/RetryableButton.js +1 -8
  152. package/dist/es2019/components/common/Scrollable.js +2 -12
  153. package/dist/es2019/components/common/ToneSelector.js +2 -8
  154. package/dist/es2019/components/common/UfoErrorBoundary.js +0 -2
  155. package/dist/es2019/components/common/UploadEmoji.js +2 -3
  156. package/dist/es2019/components/common/internal-types.js +0 -1
  157. package/dist/es2019/components/common/styles.js +12 -8
  158. package/dist/es2019/components/picker/CategorySelector.js +0 -22
  159. package/dist/es2019/components/picker/CategoryTracker.js +3 -13
  160. package/dist/es2019/components/picker/EmojiPicker.js +3 -17
  161. package/dist/es2019/components/picker/EmojiPickerCategoryHeading.js +2 -3
  162. package/dist/es2019/components/picker/EmojiPickerComponent.js +10 -43
  163. package/dist/es2019/components/picker/EmojiPickerEmojiRow.js +0 -2
  164. package/dist/es2019/components/picker/EmojiPickerFooter.js +0 -2
  165. package/dist/es2019/components/picker/EmojiPickerList.js +10 -45
  166. package/dist/es2019/components/picker/EmojiPickerListSearch.js +2 -19
  167. package/dist/es2019/components/picker/EmojiPickerSizes.js +1 -0
  168. package/dist/es2019/components/picker/EmojiPickerVirtualItems.js +1 -8
  169. package/dist/es2019/components/picker/VirtualList.js +3 -24
  170. package/dist/es2019/components/picker/styles.js +22 -10
  171. package/dist/es2019/components/picker/utils.js +0 -1
  172. package/dist/es2019/components/typeahead/EmojiTypeAhead.js +4 -21
  173. package/dist/es2019/components/typeahead/EmojiTypeAheadComponent.js +0 -42
  174. package/dist/es2019/components/typeahead/EmojiTypeAheadItem.js +0 -7
  175. package/dist/es2019/components/typeahead/EmojiTypeAheadList.js +4 -45
  176. package/dist/es2019/components/typeahead/styles.js +2 -1
  177. package/dist/es2019/components/uploader/EmojiUploadComponent.js +2 -15
  178. package/dist/es2019/components/uploader/EmojiUploader.js +2 -10
  179. package/dist/es2019/components/uploader/styles.js +5 -2
  180. package/dist/es2019/context/EmojiCommonProvider.js +0 -2
  181. package/dist/es2019/context/EmojiContextProvider.js +0 -1
  182. package/dist/es2019/hooks/useEmoji.js +2 -6
  183. package/dist/es2019/hooks/useEmojiContext.js +1 -1
  184. package/dist/es2019/index.js +12 -6
  185. package/dist/es2019/types.js +1 -11
  186. package/dist/es2019/util/DuplicateLimitedQueue.js +13 -35
  187. package/dist/es2019/util/StoredDuplicateLimitedQueue.js +5 -12
  188. package/dist/es2019/util/analytics/analytics.js +7 -23
  189. package/dist/es2019/util/analytics/samplingUfo.js +6 -32
  190. package/dist/es2019/util/analytics/ufoExperiences.js +0 -3
  191. package/dist/es2019/util/analytics/useSampledUFOComponentExperience.js +3 -7
  192. package/dist/es2019/util/constants.js +5 -4
  193. package/dist/es2019/util/filters.js +0 -3
  194. package/dist/es2019/util/image.js +3 -8
  195. package/dist/es2019/util/mouse.js +3 -3
  196. package/dist/es2019/util/storage-available.js +10 -7
  197. package/dist/es2019/util/type-helpers.js +6 -9
  198. package/dist/es2019/util/useInView.js +0 -2
  199. package/dist/es2019/version.json +1 -1
  200. package/dist/esm/api/EmojiLoader.js +2 -6
  201. package/dist/esm/api/EmojiRepository.js +16 -71
  202. package/dist/esm/api/EmojiRepositoryRegex.js +2 -0
  203. package/dist/esm/api/EmojiResource.js +20 -158
  204. package/dist/esm/api/EmojiUtils.js +27 -47
  205. package/dist/esm/api/internal/Comparators.js +12 -53
  206. package/dist/esm/api/internal/UsageFrequencyTracker.js +5 -29
  207. package/dist/esm/api/media/MediaEmojiCache.js +9 -55
  208. package/dist/esm/api/media/MediaImageLoader.js +4 -27
  209. package/dist/esm/api/media/SiteEmojiResource.js +14 -43
  210. package/dist/esm/api/media/TokenManager.js +6 -16
  211. package/dist/esm/components/common/CachingEmoji.js +18 -30
  212. package/dist/esm/components/common/DeleteButton.js +2 -3
  213. package/dist/esm/components/common/Emoji.js +44 -78
  214. package/dist/esm/components/common/EmojiActions.js +25 -40
  215. package/dist/esm/components/common/EmojiButton.js +4 -9
  216. package/dist/esm/components/common/EmojiDeletePreview.js +7 -24
  217. package/dist/esm/components/common/EmojiErrorMessage.js +3 -4
  218. package/dist/esm/components/common/EmojiPlaceholder.js +6 -11
  219. package/dist/esm/components/common/EmojiPreviewComponent.js +1 -0
  220. package/dist/esm/components/common/EmojiUploadPicker.js +30 -64
  221. package/dist/esm/components/common/EmojiUploadPreview.js +7 -19
  222. package/dist/esm/components/common/FileChooser.js +5 -11
  223. package/dist/esm/components/common/LoadingEmojiComponent.js +4 -20
  224. package/dist/esm/components/common/Popup.js +16 -36
  225. package/dist/esm/components/common/RecordSelectionDefault.js +1 -1
  226. package/dist/esm/components/common/ResourcedEmoji.js +1 -6
  227. package/dist/esm/components/common/ResourcedEmojiComponent.js +29 -51
  228. package/dist/esm/components/common/RetryableButton.js +4 -11
  229. package/dist/esm/components/common/Scrollable.js +6 -29
  230. package/dist/esm/components/common/ToneSelector.js +3 -13
  231. package/dist/esm/components/common/UfoErrorBoundary.js +1 -13
  232. package/dist/esm/components/common/UploadEmoji.js +2 -3
  233. package/dist/esm/components/common/internal-types.js +0 -1
  234. package/dist/esm/components/common/setSkinToneAriaLabelText.js +0 -2
  235. package/dist/esm/components/common/styles.js +12 -9
  236. package/dist/esm/components/picker/CategorySelector.js +4 -32
  237. package/dist/esm/components/picker/CategoryTracker.js +3 -13
  238. package/dist/esm/components/picker/EmojiPicker.js +5 -27
  239. package/dist/esm/components/picker/EmojiPickerCategoryHeading.js +4 -5
  240. package/dist/esm/components/picker/EmojiPickerComponent.js +60 -114
  241. package/dist/esm/components/picker/EmojiPickerEmojiRow.js +6 -8
  242. package/dist/esm/components/picker/EmojiPickerFooter.js +0 -2
  243. package/dist/esm/components/picker/EmojiPickerList.js +32 -77
  244. package/dist/esm/components/picker/EmojiPickerListSearch.js +11 -35
  245. package/dist/esm/components/picker/EmojiPickerSizes.js +1 -0
  246. package/dist/esm/components/picker/EmojiPickerVirtualItems.js +2 -26
  247. package/dist/esm/components/picker/VirtualList.js +11 -28
  248. package/dist/esm/components/picker/styles.js +22 -11
  249. package/dist/esm/components/picker/utils.js +0 -1
  250. package/dist/esm/components/typeahead/EmojiTypeAhead.js +11 -39
  251. package/dist/esm/components/typeahead/EmojiTypeAheadComponent.js +11 -65
  252. package/dist/esm/components/typeahead/EmojiTypeAheadItem.js +7 -24
  253. package/dist/esm/components/typeahead/EmojiTypeAheadList.js +10 -53
  254. package/dist/esm/components/typeahead/styles.js +2 -1
  255. package/dist/esm/components/uploader/EmojiUploadComponent.js +5 -25
  256. package/dist/esm/components/uploader/EmojiUploader.js +4 -22
  257. package/dist/esm/components/uploader/styles.js +5 -2
  258. package/dist/esm/context/EmojiCommonProvider.js +0 -2
  259. package/dist/esm/context/EmojiContextProvider.js +1 -6
  260. package/dist/esm/hooks/useEmoji.js +5 -13
  261. package/dist/esm/hooks/useEmojiContext.js +1 -1
  262. package/dist/esm/index.js +12 -6
  263. package/dist/esm/types.js +1 -11
  264. package/dist/esm/util/DuplicateLimitedQueue.js +13 -29
  265. package/dist/esm/util/StoredDuplicateLimitedQueue.js +5 -22
  266. package/dist/esm/util/analytics/analytics.js +14 -50
  267. package/dist/esm/util/analytics/samplingUfo.js +3 -51
  268. package/dist/esm/util/analytics/ufoExperiences.js +0 -3
  269. package/dist/esm/util/analytics/useSampledUFOComponentExperience.js +3 -7
  270. package/dist/esm/util/constants.js +5 -4
  271. package/dist/esm/util/filters.js +0 -3
  272. package/dist/esm/util/image.js +3 -8
  273. package/dist/esm/util/logger.js +0 -2
  274. package/dist/esm/util/mouse.js +3 -3
  275. package/dist/esm/util/storage-available.js +10 -7
  276. package/dist/esm/util/type-helpers.js +2 -12
  277. package/dist/esm/util/useInView.js +0 -2
  278. package/dist/esm/version.json +1 -1
  279. package/dist/types/types.d.ts +1 -1
  280. package/package.json +2 -2
@@ -15,15 +15,14 @@ import { hasUfoMarked } from '../../util/analytics/ufoExperiences';
15
15
  import { useEmoji } from '../../hooks/useEmoji';
16
16
  import { useCallback } from 'react';
17
17
  import { extractErrorInfo } from '../../util/analytics/analytics';
18
-
19
18
  /**
20
19
  * Renders an emoji from a cached image, if required.
21
20
  */
22
21
  export var CachingEmoji = function CachingEmoji(props) {
23
22
  // Optimisation to only render CachingMediaEmoji if necessary
24
23
  // slight performance hit, which accumulates for a large number of emoji.
25
- var emoji = props.emoji; // start emoji rendered experience, it may have already started earlier in ResourcedEmoji
26
-
24
+ var emoji = props.emoji;
25
+ // start emoji rendered experience, it may have already started earlier in ResourcedEmoji
27
26
  useSampledUFOComponentExperience(ufoExperiences['emoji-rendered'].getInstance(emoji.id || emoji.shortName), SAMPLING_RATE_EMOJI_RENDERED_EXP, {
28
27
  source: 'CachingEmoji',
29
28
  emojiId: emoji.id
@@ -31,51 +30,43 @@ export var CachingEmoji = function CachingEmoji(props) {
31
30
  useEffect(function () {
32
31
  if (!hasUfoMarked(sampledUfoRenderedEmoji(emoji), 'fmp')) {
33
32
  sampledUfoRenderedEmoji(emoji).markFMP();
34
- } // eslint-disable-next-line react-hooks/exhaustive-deps
35
-
33
+ }
34
+ // eslint-disable-next-line react-hooks/exhaustive-deps
36
35
  }, []);
37
-
38
36
  var emojiNode = function emojiNode() {
39
37
  if (isMediaEmoji(emoji)) {
40
38
  return /*#__PURE__*/React.createElement(CachingMediaEmoji, props);
41
39
  }
42
-
43
40
  return /*#__PURE__*/React.createElement(Emoji, props);
44
41
  };
45
-
46
42
  return /*#__PURE__*/React.createElement(UfoErrorBoundary, {
47
43
  experiences: [ufoExperiences['emoji-rendered'].getInstance(props.emoji.id || props.emoji.shortName)]
48
44
  }, emojiNode());
49
45
  };
46
+
50
47
  /**
51
48
  * Rendering a media emoji image from a cache for media emoji, with different
52
49
  * rendering paths depending on caching strategy.
53
50
  */
54
-
55
51
  export var CachingMediaEmoji = function CachingMediaEmoji(props) {
56
52
  var emoji = props.emoji,
57
- placeholderSize = props.placeholderSize,
58
- showTooltip = props.showTooltip,
59
- fitToHeight = props.fitToHeight,
60
- children = props.children,
61
- restProps = _objectWithoutProperties(props, _excluded);
62
-
53
+ placeholderSize = props.placeholderSize,
54
+ showTooltip = props.showTooltip,
55
+ fitToHeight = props.fitToHeight,
56
+ children = props.children,
57
+ restProps = _objectWithoutProperties(props, _excluded);
63
58
  var shortName = emoji.shortName,
64
- representation = emoji.representation;
65
-
59
+ representation = emoji.representation;
66
60
  var _useState = useState(),
67
- _useState2 = _slicedToArray(_useState, 2),
68
- cachedEmoji = _useState2[0],
69
- setCachedEmoji = _useState2[1];
70
-
61
+ _useState2 = _slicedToArray(_useState, 2),
62
+ cachedEmoji = _useState2[0],
63
+ setCachedEmoji = _useState2[1];
71
64
  var _useState3 = useState(false),
72
- _useState4 = _slicedToArray(_useState3, 2),
73
- inValidImage = _useState4[0],
74
- setInvalidImage = _useState4[1];
75
-
65
+ _useState4 = _slicedToArray(_useState3, 2),
66
+ inValidImage = _useState4[0],
67
+ setInvalidImage = _useState4[1];
76
68
  var _useEmoji = useEmoji(),
77
- emojiProvider = _useEmoji.emojiProvider;
78
-
69
+ emojiProvider = _useEmoji.emojiProvider;
79
70
  var loadEmoji = useCallback(function (emojiProvider) {
80
71
  debug('Loading image via media cache', emoji.shortName);
81
72
  sampledUfoRenderedEmoji(emoji).mark(UfoEmojiTimings.MEDIA_START);
@@ -101,7 +92,6 @@ export var CachingMediaEmoji = function CachingMediaEmoji(props) {
101
92
  loadEmoji(emojiProvider);
102
93
  }
103
94
  }, [emojiProvider, loadEmoji]);
104
-
105
95
  var handleLoadError = function handleLoadError(_emojiId) {
106
96
  sampledUfoRenderedEmoji(_emojiId).failure({
107
97
  metadata: {
@@ -112,7 +102,6 @@ export var CachingMediaEmoji = function CachingMediaEmoji(props) {
112
102
  });
113
103
  setInvalidImage(true);
114
104
  };
115
-
116
105
  if (cachedEmoji && !inValidImage) {
117
106
  return /*#__PURE__*/React.createElement(Emoji, _extends({}, restProps, {
118
107
  showTooltip: showTooltip,
@@ -121,7 +110,6 @@ export var CachingMediaEmoji = function CachingMediaEmoji(props) {
121
110
  onLoadError: handleLoadError
122
111
  }));
123
112
  }
124
-
125
113
  return /*#__PURE__*/React.createElement(EmojiPlaceholder, {
126
114
  size: fitToHeight || placeholderSize,
127
115
  shortName: shortName,
@@ -1,16 +1,16 @@
1
1
  /** @jsx jsx */
2
+
2
3
  import { jsx } from '@emotion/react';
3
4
  import Button from '@atlaskit/button/custom-theme-button';
4
5
  import CrossCircleIcon from '@atlaskit/icon/glyph/cross-circle';
5
6
  import { N500 } from '@atlaskit/theme/colors';
6
7
  import { deleteEmojiLabel } from '../../util/constants';
7
8
  import { emojiDeleteButton, deleteButton } from './styles';
9
+
8
10
  /**
9
11
  * Test id for wrapper Emoji delete button
10
12
  */
11
-
12
13
  export var RENDER_EMOJI_DELETE_BUTTON_TESTID = 'render-emoji-delete-button';
13
-
14
14
  var DeleteButton = function DeleteButton(props) {
15
15
  return jsx("span", {
16
16
  css: deleteButton,
@@ -28,5 +28,4 @@ var DeleteButton = function DeleteButton(props) {
28
28
  testId: "emoji-delete-button"
29
29
  }));
30
30
  };
31
-
32
31
  export default DeleteButton;
@@ -1,11 +1,8 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
-
5
4
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6
-
7
5
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
8
-
9
6
  /** @jsx jsx */
10
7
  import React, { useEffect, useCallback } from 'react';
11
8
  import { jsx } from '@emotion/react';
@@ -20,85 +17,73 @@ import { sampledUfoRenderedEmoji, ufoExperiences, useSampledUFOComponentExperien
20
17
  import { isIntersectionObserverSupported } from '../../util/browser-support';
21
18
  import { useInView } from '../../util/useInView';
22
19
  import { hasUfoMarked } from '../../util/analytics/ufoExperiences';
23
-
24
20
  var handleMouseDown = function handleMouseDown(props, event) {
25
21
  // Clicked emoji delete button
26
22
  if (event.target instanceof Element && event.target.getAttribute('aria-label') === deleteEmojiLabel) {
27
23
  return;
28
24
  }
29
-
30
25
  var emoji = props.emoji,
31
- onSelected = props.onSelected;
26
+ onSelected = props.onSelected;
32
27
  event.preventDefault();
33
-
34
28
  if (onSelected && leftClick(event)) {
35
29
  onSelected(toEmojiId(emoji), emoji, event);
36
30
  }
37
31
  };
38
-
39
32
  var handleKeyPress = function handleKeyPress(props, event) {
40
33
  // Clicked emoji delete button
41
34
  if (event.target instanceof Element && event.target.getAttribute('aria-label') === deleteEmojiLabel) {
42
35
  return;
43
36
  }
44
-
45
37
  var emoji = props.emoji,
46
- onSelected = props.onSelected;
38
+ onSelected = props.onSelected;
47
39
  event.preventDefault();
48
-
49
40
  if (onSelected && (event.key === 'Enter' || event.key === ' ')) {
50
41
  onSelected(toEmojiId(emoji), emoji, event);
51
42
  }
52
43
  };
53
-
54
44
  var handleMouseMove = function handleMouseMove(props, event) {
55
45
  var emoji = props.emoji,
56
- onMouseMove = props.onMouseMove;
57
-
46
+ onMouseMove = props.onMouseMove;
58
47
  if (onMouseMove) {
59
48
  onMouseMove(toEmojiId(emoji), emoji, event);
60
49
  }
61
50
  };
62
-
63
51
  var handleDelete = function handleDelete(props, event) {
64
52
  var emoji = props.emoji,
65
- onDelete = props.onDelete;
66
-
53
+ onDelete = props.onDelete;
67
54
  if (onDelete) {
68
55
  onDelete(toEmojiId(emoji), emoji, event);
69
56
  }
70
57
  };
71
-
72
58
  var handleImageError = function handleImageError(props, event) {
73
59
  var emoji = props.emoji,
74
- onLoadError = props.onLoadError; // Hide error state (but keep space for it)
60
+ onLoadError = props.onLoadError;
75
61
 
62
+ // Hide error state (but keep space for it)
76
63
  if (event.target) {
77
64
  var target = event.target;
78
65
  target.style.visibility = 'hidden';
79
66
  }
80
-
81
67
  if (onLoadError) {
82
68
  onLoadError(toEmojiId(emoji), emoji, event);
83
69
  }
84
- }; // Pure functional components are used in favour of class based components, due to the performance!
70
+ };
71
+
72
+ // Pure functional components are used in favour of class based components, due to the performance!
85
73
  // When rendering 1500+ emoji using class based components had a significant impact.
86
74
  // TODO: add UFO tracking for sprite emoji
87
-
88
-
89
75
  export var SpriteEmoji = function SpriteEmoji(props) {
90
76
  var emoji = props.emoji,
91
- fitToHeight = props.fitToHeight,
92
- selected = props.selected,
93
- selectOnHover = props.selectOnHover,
94
- className = props.className,
95
- showTooltip = props.showTooltip,
96
- shouldBeInteractive = props.shouldBeInteractive;
77
+ fitToHeight = props.fitToHeight,
78
+ selected = props.selected,
79
+ selectOnHover = props.selectOnHover,
80
+ className = props.className,
81
+ showTooltip = props.showTooltip,
82
+ shouldBeInteractive = props.shouldBeInteractive;
97
83
  var representation = emoji.representation;
98
84
  var sprite = representation.sprite;
99
85
  var classes = "".concat(emojiNodeStyles, " ").concat(selected ? commonSelectedStyles : '', " ").concat(selectOnHover ? selectOnHoverStyles : '', " ").concat(className ? className : '');
100
86
  var sizing = {};
101
-
102
87
  if (fitToHeight) {
103
88
  sizing = {
104
89
  width: "".concat(fitToHeight, "px"),
@@ -107,16 +92,13 @@ export var SpriteEmoji = function SpriteEmoji(props) {
107
92
  minWidth: "".concat(fitToHeight, "px")
108
93
  };
109
94
  }
110
-
111
95
  var xPositionInPercent = 100 / (sprite.column - 1) * (representation.xIndex - 0);
112
96
  var yPositionInPercent = 100 / (sprite.row - 1) * (representation.yIndex - 0);
113
-
114
97
  var style = _objectSpread({
115
98
  backgroundImage: "url(".concat(sprite.url, ")"),
116
99
  backgroundPosition: "".concat(xPositionInPercent, "% ").concat(yPositionInPercent, "%"),
117
100
  backgroundSize: "".concat(sprite.column * 100, "% ").concat(sprite.row * 100, "%")
118
101
  }, sizing);
119
-
120
102
  return jsx("span", {
121
103
  "data-testid": "sprite-emoji-".concat(emoji.shortName),
122
104
  "data-emoji-type": "sprite",
@@ -139,35 +121,33 @@ export var SpriteEmoji = function SpriteEmoji(props) {
139
121
  className: emojiSprite,
140
122
  style: style
141
123
  }, "\xA0"));
142
- }; // Keep as pure functional component, see renderAsSprite.
124
+ };
143
125
 
126
+ // Keep as pure functional component, see renderAsSprite.
144
127
  export var ImageEmoji = function ImageEmoji(props) {
145
128
  var emoji = props.emoji,
146
- fitToHeight = props.fitToHeight,
147
- selected = props.selected,
148
- selectOnHover = props.selectOnHover,
149
- className = props.className,
150
- showTooltip = props.showTooltip,
151
- showDelete = props.showDelete,
152
- shouldBeInteractive = props.shouldBeInteractive,
153
- onLoadSuccess = props.onLoadSuccess,
154
- disableLazyLoad = props.disableLazyLoad,
155
- autoWidth = props.autoWidth;
156
-
129
+ fitToHeight = props.fitToHeight,
130
+ selected = props.selected,
131
+ selectOnHover = props.selectOnHover,
132
+ className = props.className,
133
+ showTooltip = props.showTooltip,
134
+ showDelete = props.showDelete,
135
+ shouldBeInteractive = props.shouldBeInteractive,
136
+ onLoadSuccess = props.onLoadSuccess,
137
+ disableLazyLoad = props.disableLazyLoad,
138
+ autoWidth = props.autoWidth;
157
139
  var _useInView = useInView({
158
- triggerOnce: true
159
- }),
160
- _useInView2 = _slicedToArray(_useInView, 2),
161
- ref = _useInView2[0],
162
- inView = _useInView2[1];
163
-
140
+ triggerOnce: true
141
+ }),
142
+ _useInView2 = _slicedToArray(_useInView, 2),
143
+ ref = _useInView2[0],
144
+ inView = _useInView2[1];
164
145
  var ufoExp = sampledUfoRenderedEmoji(emoji);
165
146
  var classes = "".concat(emojiMainStyle, " ").concat(emojiNodeStyles, " ").concat(selected ? commonSelectedStyles : '', " ").concat(selectOnHover ? selectOnHoverStyles : '', " ").concat(emojiImage, " ").concat(className ? className : '');
166
147
  var width;
167
148
  var height;
168
149
  var src;
169
150
  var representation = shouldUseAltRepresentation(emoji, fitToHeight) ? emoji.altRepresentation : emoji.representation;
170
-
171
151
  if (isImageRepresentation(representation)) {
172
152
  src = representation.imagePath;
173
153
  width = representation.width;
@@ -177,9 +157,7 @@ export var ImageEmoji = function ImageEmoji(props) {
177
157
  width = representation.width;
178
158
  height = representation.height;
179
159
  }
180
-
181
160
  var deleteButton;
182
-
183
161
  if (showDelete) {
184
162
  deleteButton = jsx(DeleteButton, {
185
163
  onClick: function onClick(event) {
@@ -187,9 +165,7 @@ export var ImageEmoji = function ImageEmoji(props) {
187
165
  }
188
166
  });
189
167
  }
190
-
191
168
  var sizing = {};
192
-
193
169
  if (fitToHeight && width && height) {
194
170
  // Presize image, to prevent reflow due to size changes after loading
195
171
  sizing = {
@@ -197,52 +173,45 @@ export var ImageEmoji = function ImageEmoji(props) {
197
173
  height: fitToHeight
198
174
  };
199
175
  }
200
-
201
176
  var onError = function onError(event) {
202
177
  handleImageError(props, event);
203
178
  };
204
-
205
179
  var onLoad = function onLoad() {
206
180
  var mountedMark = ufoExp.metrics.marks.find(function (mark) {
207
181
  return mark.name === UfoEmojiTimings.MOUNTED_END;
208
- }); // onload could trigger before onBeforeLoad when emojis in viewport at start, so we need to mark onload start manually.
209
-
182
+ });
183
+ // onload could trigger before onBeforeLoad when emojis in viewport at start, so we need to mark onload start manually.
210
184
  if (!hasUfoMarked(ufoExp, UfoEmojiTimings.ONLOAD_START)) {
211
185
  ufoExp.mark(UfoEmojiTimings.ONLOAD_START, mountedMark === null || mountedMark === void 0 ? void 0 : mountedMark.time);
212
186
  }
213
-
214
187
  var loadedStartMark = ufoExp.metrics.marks.find(function (mark) {
215
188
  return mark.name === UfoEmojiTimings.ONLOAD_START;
216
189
  });
217
-
218
190
  if (mountedMark && loadedStartMark) {
219
191
  ufoExp.addMetadata({
220
192
  lazyLoad: loadedStartMark.time > mountedMark.time
221
193
  });
222
- } // onload_start
223
-
224
-
194
+ }
195
+ // onload_start
225
196
  if (!hasUfoMarked(ufoExp, UfoEmojiTimings.ONLOAD_END)) {
226
197
  ufoExp.mark(UfoEmojiTimings.ONLOAD_END);
227
198
  }
228
-
229
199
  ufoExp.success({
230
200
  metadata: {
231
201
  IBSupported: isIntersectionObserverSupported
232
202
  }
233
203
  });
234
-
235
204
  if (onLoadSuccess) {
236
205
  onLoadSuccess(emoji);
237
206
  }
238
207
  };
239
-
240
208
  var onBeforeLoad = useCallback(function () {
241
209
  if (!hasUfoMarked(ufoExp, UfoEmojiTimings.ONLOAD_START)) {
242
210
  ufoExp.mark(UfoEmojiTimings.ONLOAD_START);
243
211
  }
244
- }, [ufoExp]); // because of the lack of browser support of on before load natively, used IntersectionObserver helper hook to mimic the before load time mark for UFO.
212
+ }, [ufoExp]);
245
213
 
214
+ // because of the lack of browser support of on before load natively, used IntersectionObserver helper hook to mimic the before load time mark for UFO.
246
215
  useEffect(function () {
247
216
  if (inView) {
248
217
  onBeforeLoad();
@@ -286,29 +255,26 @@ export var ImageEmoji = function ImageEmoji(props) {
286
255
  }, deleteButton, emojiNode);
287
256
  };
288
257
  export var Emoji = function Emoji(props) {
289
- var emoji = props.emoji; // start emoji rendered experience, it may have already started earlier in ResourcedEmoji or CachingEmoji
290
-
258
+ var emoji = props.emoji;
259
+ // start emoji rendered experience, it may have already started earlier in ResourcedEmoji or CachingEmoji
291
260
  useSampledUFOComponentExperience(ufoExperiences['emoji-rendered'].getInstance(emoji.id || emoji.shortName), SAMPLING_RATE_EMOJI_RENDERED_EXP, {
292
261
  source: 'Emoji',
293
262
  emojiId: emoji.id
294
263
  });
295
264
  useEffect(function () {
296
265
  var ufoExp = sampledUfoRenderedEmoji(emoji);
297
-
298
266
  if (!hasUfoMarked(ufoExp, 'fmp')) {
299
267
  ufoExp.markFMP();
300
268
  }
301
-
302
269
  if (!hasUfoMarked(ufoExp, UfoEmojiTimings.MOUNTED_END)) {
303
270
  ufoExp.mark(UfoEmojiTimings.MOUNTED_END);
304
- } // eslint-disable-next-line react-hooks/exhaustive-deps
305
-
306
- }, []); // TODO: We always prefer render as image as having accessibility issues with sprite representation
307
-
271
+ }
272
+ // eslint-disable-next-line react-hooks/exhaustive-deps
273
+ }, []);
274
+ // TODO: We always prefer render as image as having accessibility issues with sprite representation
308
275
  if (isSpriteRepresentation(emoji.representation)) {
309
276
  return jsx(SpriteEmoji, props);
310
277
  }
311
-
312
278
  return jsx(ImageEmoji, props);
313
279
  };
314
280
  export default Emoji;
@@ -1,6 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
-
4
3
  /** @jsx jsx */
5
4
  import { Fragment, useState } from 'react';
6
5
  import { jsx } from '@emotion/react';
@@ -17,12 +16,14 @@ import { setSkinToneAriaLabelText } from './setSkinToneAriaLabelText';
17
16
  import { addCustomEmoji, addCustomEmojiButton, emojiActionsWrapper, emojiPickerAddEmoji, emojiToneSelectorContainer } from './styles';
18
17
  import { emojiActionsContainerWithBottomShadow, emojiPickerFooter } from '../picker/styles';
19
18
  export var emojiActionsTestId = 'emoji-actions';
20
- export var uploadEmojiTestId = 'upload-emoji'; // Generic Type for the wrapped functional component
19
+ export var uploadEmojiTestId = 'upload-emoji';
20
+
21
+ // Generic Type for the wrapped functional component
21
22
 
22
23
  var AddOwnEmoji = function AddOwnEmoji(props) {
23
24
  var onOpenUpload = props.onOpenUpload,
24
- uploadEnabled = props.uploadEnabled,
25
- formatMessage = props.intl.formatMessage;
25
+ uploadEnabled = props.uploadEnabled,
26
+ formatMessage = props.intl.formatMessage;
26
27
  return jsx(Fragment, null, uploadEnabled && jsx("div", {
27
28
  css: addCustomEmoji,
28
29
  "data-testid": uploadEmojiTestId
@@ -39,26 +40,21 @@ var AddOwnEmoji = function AddOwnEmoji(props) {
39
40
  }, label);
40
41
  })));
41
42
  };
42
-
43
43
  var TonesWrapper = function TonesWrapper(props) {
44
44
  var toneEmoji = props.toneEmoji,
45
- selectedTone = props.selectedTone,
46
- intl = props.intl,
47
- onToneSelected = props.onToneSelected,
48
- onToneOpen = props.onToneOpen,
49
- showToneSelector = props.showToneSelector;
45
+ selectedTone = props.selectedTone,
46
+ intl = props.intl,
47
+ onToneSelected = props.onToneSelected,
48
+ onToneOpen = props.onToneOpen,
49
+ showToneSelector = props.showToneSelector;
50
50
  var formatMessage = intl.formatMessage;
51
-
52
51
  if (!toneEmoji) {
53
52
  return null;
54
53
  }
55
-
56
54
  var previewEmoji = toneEmoji;
57
-
58
55
  if (selectedTone && previewEmoji.skinVariations) {
59
56
  previewEmoji = previewEmoji.skinVariations[(selectedTone || 1) - 1];
60
57
  }
61
-
62
58
  return jsx("div", {
63
59
  css: emojiToneSelectorContainer
64
60
  }, showToneSelector && jsx(ToneSelector, {
@@ -75,49 +71,40 @@ var TonesWrapper = function TonesWrapper(props) {
75
71
  })
76
72
  }));
77
73
  };
78
-
79
74
  export var EmojiActions = function EmojiActions(props) {
80
75
  var onToneSelected = props.onToneSelected,
81
- onToneSelectorCancelled = props.onToneSelectorCancelled,
82
- initialUploadName = props.initialUploadName,
83
- onUploadCancelled = props.onUploadCancelled,
84
- onCloseDelete = props.onCloseDelete,
85
- onDeleteEmoji = props.onDeleteEmoji,
86
- onUploadEmoji = props.onUploadEmoji,
87
- uploadErrorMessage = props.uploadErrorMessage,
88
- uploading = props.uploading,
89
- onFileChooserClicked = props.onFileChooserClicked,
90
- emojiToDelete = props.emojiToDelete,
91
- onChange = props.onChange,
92
- query = props.query;
93
-
76
+ onToneSelectorCancelled = props.onToneSelectorCancelled,
77
+ initialUploadName = props.initialUploadName,
78
+ onUploadCancelled = props.onUploadCancelled,
79
+ onCloseDelete = props.onCloseDelete,
80
+ onDeleteEmoji = props.onDeleteEmoji,
81
+ onUploadEmoji = props.onUploadEmoji,
82
+ uploadErrorMessage = props.uploadErrorMessage,
83
+ uploading = props.uploading,
84
+ onFileChooserClicked = props.onFileChooserClicked,
85
+ emojiToDelete = props.emojiToDelete,
86
+ onChange = props.onChange,
87
+ query = props.query;
94
88
  var _useState = useState(false),
95
- _useState2 = _slicedToArray(_useState, 2),
96
- showToneSelector = _useState2[0],
97
- setShowToneSelector = _useState2[1];
98
-
89
+ _useState2 = _slicedToArray(_useState, 2),
90
+ showToneSelector = _useState2[0],
91
+ setShowToneSelector = _useState2[1];
99
92
  var previewFooterClassnames = [emojiPickerFooter, emojiActionsContainerWithBottomShadow];
100
-
101
93
  var onToneOpenHandler = function onToneOpenHandler() {
102
94
  return setShowToneSelector(true);
103
95
  };
104
-
105
96
  var onToneSelectedHandler = function onToneSelectedHandler(toneValue) {
106
97
  setShowToneSelector(false);
107
-
108
98
  if (onToneSelected) {
109
99
  onToneSelected(toneValue);
110
100
  }
111
101
  };
112
-
113
102
  var onMouseLeaveHandler = function onMouseLeaveHandler() {
114
103
  if (showToneSelector && onToneSelectorCancelled) {
115
104
  onToneSelectorCancelled();
116
105
  }
117
-
118
106
  setShowToneSelector(false);
119
107
  };
120
-
121
108
  if (uploading) {
122
109
  return jsx("div", {
123
110
  css: previewFooterClassnames
@@ -129,7 +116,6 @@ export var EmojiActions = function EmojiActions(props) {
129
116
  initialUploadName: initialUploadName
130
117
  }));
131
118
  }
132
-
133
119
  if (emojiToDelete) {
134
120
  return jsx("div", {
135
121
  css: previewFooterClassnames
@@ -139,7 +125,6 @@ export var EmojiActions = function EmojiActions(props) {
139
125
  onCloseDelete: onCloseDelete
140
126
  }));
141
127
  }
142
-
143
128
  return jsx("div", {
144
129
  "data-testid": emojiActionsTestId,
145
130
  css: previewFooterClassnames,
@@ -4,31 +4,26 @@ import { jsx } from '@emotion/react';
4
4
  import { leftClick } from '../../util/mouse';
5
5
  import { emojiButton, hiddenToneButton } from './styles';
6
6
  import Emoji from './Emoji';
7
-
8
7
  var handleMouseDown = function handleMouseDown(props, event) {
9
8
  var onSelected = props.onSelected;
10
9
  event.preventDefault();
11
-
12
10
  if (onSelected && leftClick(event)) {
13
11
  onSelected();
14
12
  }
15
13
  };
16
-
17
14
  var handleKeyPress = function handleKeyPress(props, event) {
18
15
  var onSelected = props.onSelected;
19
-
20
16
  if (onSelected && (event.key === 'Enter' || event.key === ' ')) {
21
17
  event.preventDefault();
22
18
  onSelected();
23
19
  }
24
20
  };
25
-
26
21
  export var EmojiButton = /*#__PURE__*/forwardRef(function (props, ref) {
27
22
  var emoji = props.emoji,
28
- selectOnHover = props.selectOnHover,
29
- ariaLabelText = props.ariaLabelText,
30
- ariaExpanded = props.ariaExpanded,
31
- shouldHideButton = props.shouldHideButton;
23
+ selectOnHover = props.selectOnHover,
24
+ ariaLabelText = props.ariaLabelText,
25
+ ariaExpanded = props.ariaExpanded,
26
+ shouldHideButton = props.shouldHideButton;
32
27
  return jsx("button", {
33
28
  ref: ref,
34
29
  "aria-expanded": ariaExpanded,