@atlaskit/emoji 67.0.7 → 67.2.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 (238) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/cjs/api/EmojiResource.js +41 -25
  3. package/dist/cjs/api/media/TokenManager.js +4 -4
  4. package/dist/cjs/components/common/CachingEmoji.js +14 -6
  5. package/dist/cjs/components/common/Emoji.js +48 -12
  6. package/dist/cjs/components/common/EmojiActions.js +62 -26
  7. package/dist/cjs/components/common/EmojiErrorMessage.js +12 -7
  8. package/dist/cjs/components/common/EmojiPlaceholder.js +1 -0
  9. package/dist/cjs/components/common/{EmojiButton.js → EmojiRadioButton.js} +28 -19
  10. package/dist/cjs/components/common/EmojiUploadPicker.js +80 -37
  11. package/dist/cjs/components/common/EmojiUploadPreview.js +11 -2
  12. package/dist/cjs/components/common/FileChooser.js +2 -2
  13. package/dist/cjs/components/common/ResourcedEmojiComponent.js +4 -0
  14. package/dist/cjs/components/common/RetryableButton.js +7 -3
  15. package/dist/cjs/components/common/TonePreviewButton.js +44 -0
  16. package/dist/cjs/components/common/ToneSelector.js +53 -25
  17. package/dist/cjs/components/common/styles.js +45 -16
  18. package/dist/cjs/components/i18n.js +44 -4
  19. package/dist/cjs/components/picker/CategorySelector.js +112 -90
  20. package/dist/cjs/components/picker/CategoryTracker.js +0 -28
  21. package/dist/cjs/components/picker/EmojiPickerCategoryHeading.js +2 -1
  22. package/dist/cjs/components/picker/EmojiPickerComponent.js +33 -44
  23. package/dist/cjs/components/picker/EmojiPickerEmojiRow.js +32 -4
  24. package/dist/cjs/components/picker/EmojiPickerList.js +154 -88
  25. package/dist/cjs/components/picker/EmojiPickerListSearch.js +66 -117
  26. package/dist/cjs/components/picker/EmojiPickerVirtualItems.js +5 -2
  27. package/dist/cjs/components/picker/VirtualList.js +273 -171
  28. package/dist/cjs/components/picker/styles.js +43 -51
  29. package/dist/cjs/components/typeahead/EmojiTypeAheadComponent.js +0 -10
  30. package/dist/cjs/context/EmojiPickerListContext.js +33 -0
  31. package/dist/cjs/hooks/useEmojiPickerListContext.js +12 -0
  32. package/dist/cjs/hooks/useIsMounted.js +17 -0
  33. package/dist/cjs/i18n/cs.js +35 -34
  34. package/dist/cjs/i18n/da.js +35 -34
  35. package/dist/cjs/i18n/de.js +35 -34
  36. package/dist/cjs/i18n/en.js +35 -34
  37. package/dist/cjs/i18n/en_GB.js +35 -34
  38. package/dist/cjs/i18n/es.js +35 -34
  39. package/dist/cjs/i18n/fi.js +35 -34
  40. package/dist/cjs/i18n/fr.js +35 -34
  41. package/dist/cjs/i18n/hu.js +35 -34
  42. package/dist/cjs/i18n/it.js +35 -34
  43. package/dist/cjs/i18n/ja.js +35 -34
  44. package/dist/cjs/i18n/ko.js +35 -34
  45. package/dist/cjs/i18n/nb.js +35 -34
  46. package/dist/cjs/i18n/nl.js +35 -34
  47. package/dist/cjs/i18n/pl.js +35 -34
  48. package/dist/cjs/i18n/pt_BR.js +35 -34
  49. package/dist/cjs/i18n/ru.js +35 -34
  50. package/dist/cjs/i18n/sv.js +35 -34
  51. package/dist/cjs/i18n/th.js +35 -34
  52. package/dist/cjs/i18n/tr.js +35 -34
  53. package/dist/cjs/i18n/uk.js +35 -34
  54. package/dist/cjs/i18n/vi.js +35 -34
  55. package/dist/cjs/i18n/zh.js +35 -34
  56. package/dist/cjs/i18n/zh_TW.js +35 -34
  57. package/dist/cjs/types.js +7 -1
  58. package/dist/cjs/util/constants.js +43 -2
  59. package/dist/cjs/util/shared-styles.js +3 -4
  60. package/dist/cjs/version.json +1 -1
  61. package/dist/es2019/api/EmojiResource.js +42 -26
  62. package/dist/es2019/api/media/TokenManager.js +4 -4
  63. package/dist/es2019/components/common/CachingEmoji.js +10 -3
  64. package/dist/es2019/components/common/Emoji.js +44 -11
  65. package/dist/es2019/components/common/EmojiActions.js +55 -24
  66. package/dist/es2019/components/common/EmojiErrorMessage.js +7 -3
  67. package/dist/es2019/components/common/EmojiPlaceholder.js +1 -0
  68. package/dist/es2019/components/common/EmojiRadioButton.js +54 -0
  69. package/dist/es2019/components/common/EmojiUploadPicker.js +75 -36
  70. package/dist/es2019/components/common/EmojiUploadPreview.js +11 -2
  71. package/dist/es2019/components/common/FileChooser.js +1 -1
  72. package/dist/es2019/components/common/ResourcedEmojiComponent.js +4 -0
  73. package/dist/es2019/components/common/RetryableButton.js +7 -3
  74. package/dist/es2019/components/common/TonePreviewButton.js +34 -0
  75. package/dist/es2019/components/common/ToneSelector.js +55 -21
  76. package/dist/es2019/components/common/styles.js +41 -10
  77. package/dist/es2019/components/i18n.js +44 -4
  78. package/dist/es2019/components/picker/CategorySelector.js +114 -89
  79. package/dist/es2019/components/picker/CategoryTracker.js +0 -24
  80. package/dist/es2019/components/picker/EmojiPickerCategoryHeading.js +2 -2
  81. package/dist/es2019/components/picker/EmojiPickerComponent.js +36 -46
  82. package/dist/es2019/components/picker/EmojiPickerEmojiRow.js +51 -21
  83. package/dist/es2019/components/picker/EmojiPickerList.js +113 -55
  84. package/dist/es2019/components/picker/EmojiPickerListSearch.js +61 -98
  85. package/dist/es2019/components/picker/EmojiPickerVirtualItems.js +4 -1
  86. package/dist/es2019/components/picker/VirtualList.js +247 -108
  87. package/dist/es2019/components/picker/styles.js +20 -28
  88. package/dist/es2019/components/typeahead/EmojiTypeAheadComponent.js +0 -10
  89. package/dist/es2019/context/EmojiPickerListContext.js +17 -0
  90. package/dist/es2019/hooks/useEmojiPickerListContext.js +3 -0
  91. package/dist/es2019/hooks/useIsMounted.js +11 -0
  92. package/dist/es2019/i18n/cs.js +35 -34
  93. package/dist/es2019/i18n/da.js +35 -34
  94. package/dist/es2019/i18n/de.js +35 -34
  95. package/dist/es2019/i18n/en.js +35 -34
  96. package/dist/es2019/i18n/en_GB.js +35 -34
  97. package/dist/es2019/i18n/es.js +35 -34
  98. package/dist/es2019/i18n/fi.js +35 -34
  99. package/dist/es2019/i18n/fr.js +35 -34
  100. package/dist/es2019/i18n/hu.js +35 -34
  101. package/dist/es2019/i18n/it.js +35 -34
  102. package/dist/es2019/i18n/ja.js +35 -34
  103. package/dist/es2019/i18n/ko.js +35 -34
  104. package/dist/es2019/i18n/nb.js +35 -34
  105. package/dist/es2019/i18n/nl.js +35 -34
  106. package/dist/es2019/i18n/pl.js +35 -34
  107. package/dist/es2019/i18n/pt_BR.js +35 -34
  108. package/dist/es2019/i18n/ru.js +35 -34
  109. package/dist/es2019/i18n/sv.js +35 -34
  110. package/dist/es2019/i18n/th.js +35 -34
  111. package/dist/es2019/i18n/tr.js +35 -34
  112. package/dist/es2019/i18n/uk.js +35 -34
  113. package/dist/es2019/i18n/vi.js +35 -34
  114. package/dist/es2019/i18n/zh.js +35 -34
  115. package/dist/es2019/i18n/zh_TW.js +35 -34
  116. package/dist/es2019/types.js +5 -0
  117. package/dist/es2019/util/constants.js +32 -0
  118. package/dist/es2019/util/shared-styles.js +1 -2
  119. package/dist/es2019/version.json +1 -1
  120. package/dist/esm/api/EmojiResource.js +42 -26
  121. package/dist/esm/api/media/TokenManager.js +4 -4
  122. package/dist/esm/components/common/CachingEmoji.js +14 -6
  123. package/dist/esm/components/common/Emoji.js +48 -12
  124. package/dist/esm/components/common/EmojiActions.js +62 -26
  125. package/dist/esm/components/common/EmojiErrorMessage.js +7 -3
  126. package/dist/esm/components/common/EmojiPlaceholder.js +1 -0
  127. package/dist/esm/components/common/EmojiRadioButton.js +52 -0
  128. package/dist/esm/components/common/EmojiUploadPicker.js +77 -36
  129. package/dist/esm/components/common/EmojiUploadPreview.js +11 -2
  130. package/dist/esm/components/common/FileChooser.js +1 -1
  131. package/dist/esm/components/common/ResourcedEmojiComponent.js +4 -0
  132. package/dist/esm/components/common/RetryableButton.js +7 -3
  133. package/dist/esm/components/common/TonePreviewButton.js +33 -0
  134. package/dist/esm/components/common/ToneSelector.js +49 -18
  135. package/dist/esm/components/common/styles.js +40 -12
  136. package/dist/esm/components/i18n.js +44 -4
  137. package/dist/esm/components/picker/CategorySelector.js +114 -95
  138. package/dist/esm/components/picker/CategoryTracker.js +0 -28
  139. package/dist/esm/components/picker/EmojiPickerCategoryHeading.js +2 -2
  140. package/dist/esm/components/picker/EmojiPickerComponent.js +35 -46
  141. package/dist/esm/components/picker/EmojiPickerEmojiRow.js +32 -4
  142. package/dist/esm/components/picker/EmojiPickerList.js +156 -86
  143. package/dist/esm/components/picker/EmojiPickerListSearch.js +64 -117
  144. package/dist/esm/components/picker/EmojiPickerVirtualItems.js +5 -2
  145. package/dist/esm/components/picker/VirtualList.js +274 -172
  146. package/dist/esm/components/picker/styles.js +37 -45
  147. package/dist/esm/components/typeahead/EmojiTypeAheadComponent.js +0 -10
  148. package/dist/esm/context/EmojiPickerListContext.js +21 -0
  149. package/dist/esm/hooks/useEmojiPickerListContext.js +5 -0
  150. package/dist/esm/hooks/useIsMounted.js +11 -0
  151. package/dist/esm/i18n/cs.js +35 -34
  152. package/dist/esm/i18n/da.js +35 -34
  153. package/dist/esm/i18n/de.js +35 -34
  154. package/dist/esm/i18n/en.js +35 -34
  155. package/dist/esm/i18n/en_GB.js +35 -34
  156. package/dist/esm/i18n/es.js +35 -34
  157. package/dist/esm/i18n/fi.js +35 -34
  158. package/dist/esm/i18n/fr.js +35 -34
  159. package/dist/esm/i18n/hu.js +35 -34
  160. package/dist/esm/i18n/it.js +35 -34
  161. package/dist/esm/i18n/ja.js +35 -34
  162. package/dist/esm/i18n/ko.js +35 -34
  163. package/dist/esm/i18n/nb.js +35 -34
  164. package/dist/esm/i18n/nl.js +35 -34
  165. package/dist/esm/i18n/pl.js +35 -34
  166. package/dist/esm/i18n/pt_BR.js +35 -34
  167. package/dist/esm/i18n/ru.js +35 -34
  168. package/dist/esm/i18n/sv.js +35 -34
  169. package/dist/esm/i18n/th.js +35 -34
  170. package/dist/esm/i18n/tr.js +35 -34
  171. package/dist/esm/i18n/uk.js +35 -34
  172. package/dist/esm/i18n/vi.js +35 -34
  173. package/dist/esm/i18n/zh.js +35 -34
  174. package/dist/esm/i18n/zh_TW.js +35 -34
  175. package/dist/esm/types.js +5 -0
  176. package/dist/esm/util/constants.js +32 -0
  177. package/dist/esm/util/shared-styles.js +1 -2
  178. package/dist/esm/version.json +1 -1
  179. package/dist/types/api/EmojiResource.d.ts +2 -0
  180. package/dist/types/components/common/Emoji.d.ts +7 -1
  181. package/dist/types/components/common/EmojiActions.d.ts +4 -3
  182. package/dist/types/components/common/{EmojiButton.d.ts → EmojiRadioButton.d.ts} +3 -4
  183. package/dist/types/components/common/EmojiUploadPicker.d.ts +6 -4
  184. package/dist/types/components/common/RetryableButton.d.ts +1 -0
  185. package/dist/types/components/common/TonePreviewButton.d.ts +14 -0
  186. package/dist/types/components/common/ToneSelector.d.ts +8 -5
  187. package/dist/types/components/common/internal-types.d.ts +9 -0
  188. package/dist/types/components/common/styles.d.ts +2 -1
  189. package/dist/types/components/i18n.d.ts +40 -0
  190. package/dist/types/components/picker/CategorySelector.d.ts +3 -10
  191. package/dist/types/components/picker/CategoryTracker.d.ts +0 -2
  192. package/dist/types/components/picker/EmojiPickerCategoryHeading.d.ts +2 -1
  193. package/dist/types/components/picker/EmojiPickerEmojiRow.d.ts +5 -0
  194. package/dist/types/components/picker/EmojiPickerList.d.ts +14 -7
  195. package/dist/types/components/picker/EmojiPickerListSearch.d.ts +4 -8
  196. package/dist/types/components/picker/EmojiPickerVirtualItems.d.ts +1 -1
  197. package/dist/types/components/picker/VirtualList.d.ts +7 -24
  198. package/dist/types/components/picker/styles.d.ts +1 -1
  199. package/dist/types/context/EmojiPickerListContext.d.ts +10 -0
  200. package/dist/types/hooks/useEmojiPickerListContext.d.ts +1 -0
  201. package/dist/types/hooks/useIsMounted.d.ts +1 -0
  202. package/dist/types/i18n/cs.d.ts +34 -34
  203. package/dist/types/i18n/da.d.ts +34 -34
  204. package/dist/types/i18n/de.d.ts +34 -34
  205. package/dist/types/i18n/en.d.ts +34 -34
  206. package/dist/types/i18n/en_GB.d.ts +34 -34
  207. package/dist/types/i18n/es.d.ts +34 -34
  208. package/dist/types/i18n/fi.d.ts +34 -34
  209. package/dist/types/i18n/fr.d.ts +34 -34
  210. package/dist/types/i18n/hu.d.ts +34 -34
  211. package/dist/types/i18n/it.d.ts +34 -34
  212. package/dist/types/i18n/ja.d.ts +34 -34
  213. package/dist/types/i18n/ko.d.ts +34 -34
  214. package/dist/types/i18n/nb.d.ts +34 -34
  215. package/dist/types/i18n/nl.d.ts +34 -34
  216. package/dist/types/i18n/pl.d.ts +34 -34
  217. package/dist/types/i18n/pt_BR.d.ts +34 -34
  218. package/dist/types/i18n/ru.d.ts +34 -34
  219. package/dist/types/i18n/sv.d.ts +34 -34
  220. package/dist/types/i18n/th.d.ts +34 -34
  221. package/dist/types/i18n/tr.d.ts +34 -34
  222. package/dist/types/i18n/uk.d.ts +34 -34
  223. package/dist/types/i18n/vi.d.ts +34 -34
  224. package/dist/types/i18n/zh.d.ts +34 -34
  225. package/dist/types/i18n/zh_TW.d.ts +34 -34
  226. package/dist/types/types.d.ts +5 -0
  227. package/dist/types/util/constants.d.ts +28 -0
  228. package/dist/types/util/shared-styles.d.ts +1 -1
  229. package/dist/types/util/type-helpers.d.ts +1 -1
  230. package/package.json +12 -8
  231. package/report.api.md +62 -1
  232. package/README.md +0 -3
  233. package/dist/cjs/components/hooks.js +0 -14
  234. package/dist/es2019/components/common/EmojiButton.js +0 -49
  235. package/dist/es2019/components/hooks.js +0 -8
  236. package/dist/esm/components/common/EmojiButton.js +0 -43
  237. package/dist/esm/components/hooks.js +0 -8
  238. package/dist/types/components/hooks.d.ts +0 -1
@@ -1,38 +1,38 @@
1
1
  declare const _default: {
2
- 'fabric.emoji.add.custom.emoji.label': string;
3
- 'fabric.emoji.add.label': string;
4
- 'fabric.emoji.cancel.label': string;
5
- 'fabric.emoji.categories.search.results': string;
6
- 'fabric.emoji.category.activity': string;
7
- 'fabric.emoji.category.all.uploads': string;
8
- 'fabric.emoji.category.flags': string;
9
- 'fabric.emoji.category.foods': string;
10
- 'fabric.emoji.category.frequent': string;
11
- 'fabric.emoji.category.nature': string;
12
- 'fabric.emoji.category.objects': string;
13
- 'fabric.emoji.category.people': string;
14
- 'fabric.emoji.category.places': string;
15
- 'fabric.emoji.category.productivity': string;
16
- 'fabric.emoji.category.symbols': string;
17
- 'fabric.emoji.category.user.uploads': string;
18
- 'fabric.emoji.choose.file.screenReaderDescription': string;
19
- 'fabric.emoji.choose.file.title': string;
20
- 'fabric.emoji.delete.description': string;
21
- 'fabric.emoji.delete.label': string;
22
- 'fabric.emoji.delete.title': string;
23
- 'fabric.emoji.error.delete.failed': string;
24
- 'fabric.emoji.error.image.too.big': string;
25
- 'fabric.emoji.error.invalid.image': string;
26
- 'fabric.emoji.error.upload.failed': string;
27
- 'fabric.emoji.image.requirements': string;
28
- 'fabric.emoji.name.ariaLabel': string;
29
- 'fabric.emoji.placeholder': string;
30
- 'fabric.emoji.preview': string;
31
- 'fabric.emoji.preview.title': string;
32
- 'fabric.emoji.retry.label': string;
33
- 'fabric.emoji.search.label': string;
34
- 'fabric.emoji.search.placeholder': string;
35
- 'fabric.emoji.select.skin.tone.ariaLabel': string;
2
+ "fabric.emoji.add.custom.emoji.label": string;
3
+ "fabric.emoji.add.label": string;
4
+ "fabric.emoji.cancel.label": string;
5
+ "fabric.emoji.categories.search.results": string;
6
+ "fabric.emoji.category.activity": string;
7
+ "fabric.emoji.category.all.uploads": string;
8
+ "fabric.emoji.category.flags": string;
9
+ "fabric.emoji.category.foods": string;
10
+ "fabric.emoji.category.frequent": string;
11
+ "fabric.emoji.category.nature": string;
12
+ "fabric.emoji.category.objects": string;
13
+ "fabric.emoji.category.people": string;
14
+ "fabric.emoji.category.places": string;
15
+ "fabric.emoji.category.productivity": string;
16
+ "fabric.emoji.category.symbols": string;
17
+ "fabric.emoji.category.user.uploads": string;
18
+ "fabric.emoji.choose.file.screenReaderDescription": string;
19
+ "fabric.emoji.choose.file.title": string;
20
+ "fabric.emoji.delete.description": string;
21
+ "fabric.emoji.delete.label": string;
22
+ "fabric.emoji.delete.title": string;
23
+ "fabric.emoji.error.delete.failed": string;
24
+ "fabric.emoji.error.image.too.big": string;
25
+ "fabric.emoji.error.invalid.image": string;
26
+ "fabric.emoji.error.upload.failed": string;
27
+ "fabric.emoji.image.requirements": string;
28
+ "fabric.emoji.name.ariaLabel": string;
29
+ "fabric.emoji.placeholder": string;
30
+ "fabric.emoji.preview": string;
31
+ "fabric.emoji.preview.title": string;
32
+ "fabric.emoji.retry.label": string;
33
+ "fabric.emoji.search.label": string;
34
+ "fabric.emoji.search.placeholder": string;
35
+ "fabric.emoji.select.skin.tone.ariaLabel": string;
36
36
  };
37
37
  /**
38
38
  * NOTE:
@@ -1,38 +1,38 @@
1
1
  declare const _default: {
2
- 'fabric.emoji.add.custom.emoji.label': string;
3
- 'fabric.emoji.add.label': string;
4
- 'fabric.emoji.cancel.label': string;
5
- 'fabric.emoji.categories.search.results': string;
6
- 'fabric.emoji.category.activity': string;
7
- 'fabric.emoji.category.all.uploads': string;
8
- 'fabric.emoji.category.flags': string;
9
- 'fabric.emoji.category.foods': string;
10
- 'fabric.emoji.category.frequent': string;
11
- 'fabric.emoji.category.nature': string;
12
- 'fabric.emoji.category.objects': string;
13
- 'fabric.emoji.category.people': string;
14
- 'fabric.emoji.category.places': string;
15
- 'fabric.emoji.category.productivity': string;
16
- 'fabric.emoji.category.symbols': string;
17
- 'fabric.emoji.category.user.uploads': string;
18
- 'fabric.emoji.choose.file.screenReaderDescription': string;
19
- 'fabric.emoji.choose.file.title': string;
20
- 'fabric.emoji.delete.description': string;
21
- 'fabric.emoji.delete.label': string;
22
- 'fabric.emoji.delete.title': string;
23
- 'fabric.emoji.error.delete.failed': string;
24
- 'fabric.emoji.error.image.too.big': string;
25
- 'fabric.emoji.error.invalid.image': string;
26
- 'fabric.emoji.error.upload.failed': string;
27
- 'fabric.emoji.image.requirements': string;
28
- 'fabric.emoji.name.ariaLabel': string;
29
- 'fabric.emoji.placeholder': string;
30
- 'fabric.emoji.preview': string;
31
- 'fabric.emoji.preview.title': string;
32
- 'fabric.emoji.retry.label': string;
33
- 'fabric.emoji.search.label': string;
34
- 'fabric.emoji.search.placeholder': string;
35
- 'fabric.emoji.select.skin.tone.ariaLabel': string;
2
+ "fabric.emoji.add.custom.emoji.label": string;
3
+ "fabric.emoji.add.label": string;
4
+ "fabric.emoji.cancel.label": string;
5
+ "fabric.emoji.categories.search.results": string;
6
+ "fabric.emoji.category.activity": string;
7
+ "fabric.emoji.category.all.uploads": string;
8
+ "fabric.emoji.category.flags": string;
9
+ "fabric.emoji.category.foods": string;
10
+ "fabric.emoji.category.frequent": string;
11
+ "fabric.emoji.category.nature": string;
12
+ "fabric.emoji.category.objects": string;
13
+ "fabric.emoji.category.people": string;
14
+ "fabric.emoji.category.places": string;
15
+ "fabric.emoji.category.productivity": string;
16
+ "fabric.emoji.category.symbols": string;
17
+ "fabric.emoji.category.user.uploads": string;
18
+ "fabric.emoji.choose.file.screenReaderDescription": string;
19
+ "fabric.emoji.choose.file.title": string;
20
+ "fabric.emoji.delete.description": string;
21
+ "fabric.emoji.delete.label": string;
22
+ "fabric.emoji.delete.title": string;
23
+ "fabric.emoji.error.delete.failed": string;
24
+ "fabric.emoji.error.image.too.big": string;
25
+ "fabric.emoji.error.invalid.image": string;
26
+ "fabric.emoji.error.upload.failed": string;
27
+ "fabric.emoji.image.requirements": string;
28
+ "fabric.emoji.name.ariaLabel": string;
29
+ "fabric.emoji.placeholder": string;
30
+ "fabric.emoji.preview": string;
31
+ "fabric.emoji.preview.title": string;
32
+ "fabric.emoji.retry.label": string;
33
+ "fabric.emoji.search.label": string;
34
+ "fabric.emoji.search.placeholder": string;
35
+ "fabric.emoji.select.skin.tone.ariaLabel": string;
36
36
  };
37
37
  /**
38
38
  * NOTE:
@@ -1,38 +1,38 @@
1
1
  declare const _default: {
2
- 'fabric.emoji.add.custom.emoji.label': string;
3
- 'fabric.emoji.add.label': string;
4
- 'fabric.emoji.cancel.label': string;
5
- 'fabric.emoji.categories.search.results': string;
6
- 'fabric.emoji.category.activity': string;
7
- 'fabric.emoji.category.all.uploads': string;
8
- 'fabric.emoji.category.flags': string;
9
- 'fabric.emoji.category.foods': string;
10
- 'fabric.emoji.category.frequent': string;
11
- 'fabric.emoji.category.nature': string;
12
- 'fabric.emoji.category.objects': string;
13
- 'fabric.emoji.category.people': string;
14
- 'fabric.emoji.category.places': string;
15
- 'fabric.emoji.category.productivity': string;
16
- 'fabric.emoji.category.symbols': string;
17
- 'fabric.emoji.category.user.uploads': string;
18
- 'fabric.emoji.choose.file.screenReaderDescription': string;
19
- 'fabric.emoji.choose.file.title': string;
20
- 'fabric.emoji.delete.description': string;
21
- 'fabric.emoji.delete.label': string;
22
- 'fabric.emoji.delete.title': string;
23
- 'fabric.emoji.error.delete.failed': string;
24
- 'fabric.emoji.error.image.too.big': string;
25
- 'fabric.emoji.error.invalid.image': string;
26
- 'fabric.emoji.error.upload.failed': string;
27
- 'fabric.emoji.image.requirements': string;
28
- 'fabric.emoji.name.ariaLabel': string;
29
- 'fabric.emoji.placeholder': string;
30
- 'fabric.emoji.preview': string;
31
- 'fabric.emoji.preview.title': string;
32
- 'fabric.emoji.retry.label': string;
33
- 'fabric.emoji.search.label': string;
34
- 'fabric.emoji.search.placeholder': string;
35
- 'fabric.emoji.select.skin.tone.ariaLabel': string;
2
+ "fabric.emoji.add.custom.emoji.label": string;
3
+ "fabric.emoji.add.label": string;
4
+ "fabric.emoji.cancel.label": string;
5
+ "fabric.emoji.categories.search.results": string;
6
+ "fabric.emoji.category.activity": string;
7
+ "fabric.emoji.category.all.uploads": string;
8
+ "fabric.emoji.category.flags": string;
9
+ "fabric.emoji.category.foods": string;
10
+ "fabric.emoji.category.frequent": string;
11
+ "fabric.emoji.category.nature": string;
12
+ "fabric.emoji.category.objects": string;
13
+ "fabric.emoji.category.people": string;
14
+ "fabric.emoji.category.places": string;
15
+ "fabric.emoji.category.productivity": string;
16
+ "fabric.emoji.category.symbols": string;
17
+ "fabric.emoji.category.user.uploads": string;
18
+ "fabric.emoji.choose.file.screenReaderDescription": string;
19
+ "fabric.emoji.choose.file.title": string;
20
+ "fabric.emoji.delete.description": string;
21
+ "fabric.emoji.delete.label": string;
22
+ "fabric.emoji.delete.title": string;
23
+ "fabric.emoji.error.delete.failed": string;
24
+ "fabric.emoji.error.image.too.big": string;
25
+ "fabric.emoji.error.invalid.image": string;
26
+ "fabric.emoji.error.upload.failed": string;
27
+ "fabric.emoji.image.requirements": string;
28
+ "fabric.emoji.name.ariaLabel": string;
29
+ "fabric.emoji.placeholder": string;
30
+ "fabric.emoji.preview": string;
31
+ "fabric.emoji.preview.title": string;
32
+ "fabric.emoji.retry.label": string;
33
+ "fabric.emoji.search.label": string;
34
+ "fabric.emoji.search.placeholder": string;
35
+ "fabric.emoji.select.skin.tone.ariaLabel": string;
36
36
  };
37
37
  /**
38
38
  * NOTE:
@@ -1,38 +1,38 @@
1
1
  declare const _default: {
2
- 'fabric.emoji.add.custom.emoji.label': string;
3
- 'fabric.emoji.add.label': string;
4
- 'fabric.emoji.cancel.label': string;
5
- 'fabric.emoji.categories.search.results': string;
6
- 'fabric.emoji.category.activity': string;
7
- 'fabric.emoji.category.all.uploads': string;
8
- 'fabric.emoji.category.flags': string;
9
- 'fabric.emoji.category.foods': string;
10
- 'fabric.emoji.category.frequent': string;
11
- 'fabric.emoji.category.nature': string;
12
- 'fabric.emoji.category.objects': string;
13
- 'fabric.emoji.category.people': string;
14
- 'fabric.emoji.category.places': string;
15
- 'fabric.emoji.category.productivity': string;
16
- 'fabric.emoji.category.symbols': string;
17
- 'fabric.emoji.category.user.uploads': string;
18
- 'fabric.emoji.choose.file.screenReaderDescription': string;
19
- 'fabric.emoji.choose.file.title': string;
20
- 'fabric.emoji.delete.description': string;
21
- 'fabric.emoji.delete.label': string;
22
- 'fabric.emoji.delete.title': string;
23
- 'fabric.emoji.error.delete.failed': string;
24
- 'fabric.emoji.error.image.too.big': string;
25
- 'fabric.emoji.error.invalid.image': string;
26
- 'fabric.emoji.error.upload.failed': string;
27
- 'fabric.emoji.image.requirements': string;
28
- 'fabric.emoji.name.ariaLabel': string;
29
- 'fabric.emoji.placeholder': string;
30
- 'fabric.emoji.preview': string;
31
- 'fabric.emoji.preview.title': string;
32
- 'fabric.emoji.retry.label': string;
33
- 'fabric.emoji.search.label': string;
34
- 'fabric.emoji.search.placeholder': string;
35
- 'fabric.emoji.select.skin.tone.ariaLabel': string;
2
+ "fabric.emoji.add.custom.emoji.label": string;
3
+ "fabric.emoji.add.label": string;
4
+ "fabric.emoji.cancel.label": string;
5
+ "fabric.emoji.categories.search.results": string;
6
+ "fabric.emoji.category.activity": string;
7
+ "fabric.emoji.category.all.uploads": string;
8
+ "fabric.emoji.category.flags": string;
9
+ "fabric.emoji.category.foods": string;
10
+ "fabric.emoji.category.frequent": string;
11
+ "fabric.emoji.category.nature": string;
12
+ "fabric.emoji.category.objects": string;
13
+ "fabric.emoji.category.people": string;
14
+ "fabric.emoji.category.places": string;
15
+ "fabric.emoji.category.productivity": string;
16
+ "fabric.emoji.category.symbols": string;
17
+ "fabric.emoji.category.user.uploads": string;
18
+ "fabric.emoji.choose.file.screenReaderDescription": string;
19
+ "fabric.emoji.choose.file.title": string;
20
+ "fabric.emoji.delete.description": string;
21
+ "fabric.emoji.delete.label": string;
22
+ "fabric.emoji.delete.title": string;
23
+ "fabric.emoji.error.delete.failed": string;
24
+ "fabric.emoji.error.image.too.big": string;
25
+ "fabric.emoji.error.invalid.image": string;
26
+ "fabric.emoji.error.upload.failed": string;
27
+ "fabric.emoji.image.requirements": string;
28
+ "fabric.emoji.name.ariaLabel": string;
29
+ "fabric.emoji.placeholder": string;
30
+ "fabric.emoji.preview": string;
31
+ "fabric.emoji.preview.title": string;
32
+ "fabric.emoji.retry.label": string;
33
+ "fabric.emoji.search.label": string;
34
+ "fabric.emoji.search.placeholder": string;
35
+ "fabric.emoji.select.skin.tone.ariaLabel": string;
36
36
  };
37
37
  /**
38
38
  * NOTE:
@@ -295,10 +295,15 @@ export declare enum SearchSort {
295
295
  Default = 1,
296
296
  UsageFrequency = 2
297
297
  }
298
+ export declare enum SearchSourceTypes {
299
+ PICKER = "picker",
300
+ TYPEAHEAD = "typeahead"
301
+ }
298
302
  export interface SearchOptions {
299
303
  skinTone?: number;
300
304
  limit?: number;
301
305
  sort?: SearchSort;
306
+ source?: SearchSourceTypes;
302
307
  }
303
308
  export interface EmojiSearchResult {
304
309
  emojis: EmojiDescription[];
@@ -2,6 +2,8 @@ import { CategoryId } from '../components/picker/categories';
2
2
  export declare const customCategory = "CUSTOM";
3
3
  export declare const frequentCategory = "FREQUENT";
4
4
  export declare const customType = "SITE";
5
+ export declare const searchCategory = "SEARCH";
6
+ export declare const yourUploadsCategory = "USER_CUSTOM";
5
7
  export declare const customTitle = "allUploadsCustomCategory";
6
8
  export declare const userCustomTitle = "userUploadsCustomCategory";
7
9
  export declare const dataURLPrefix = "data:";
@@ -23,8 +25,34 @@ export declare const emojiPickerHeightWithPreview: number;
23
25
  export declare const localStoragePrefix = "fabric.emoji";
24
26
  export declare const selectedToneStorageKey: string;
25
27
  export declare const defaultCategories: CategoryId[];
28
+ export declare enum KeyboardKeys {
29
+ ArrowLeft = "ArrowLeft",
30
+ ArrowRight = "ArrowRight",
31
+ ArrowUp = "ArrowUp",
32
+ ArrowDown = "ArrowDown",
33
+ PageUp = "PageUp",
34
+ PageDown = "PageDown",
35
+ Home = "Home",
36
+ End = "End",
37
+ Enter = "Enter",
38
+ Tab = "Tab",
39
+ Space = " "
40
+ }
41
+ export declare enum KeyboardNavigationDirection {
42
+ Down = "Down",
43
+ Up = "Up",
44
+ Left = "Left",
45
+ Right = "Right"
46
+ }
47
+ export declare const CATEGORYSELECTOR_KEYBOARD_KEYS_SUPPORTED: string[];
48
+ export declare const TONESELECTOR_KEYBOARD_KEYS_SUPPORTED: string[];
49
+ export declare const EMOJIPICKERLIST_KEYBOARD_KEYS_SUPPORTED: string[];
50
+ export declare const DEFAULT_TONE = 0;
26
51
  export declare const defaultListLimit = 50;
27
52
  export declare const migrationUserId = "hipchat_migration_emoticons";
28
53
  export declare const analyticsEmojiPrefix = "atlassian.fabric.emoji.picker";
54
+ export declare const EMOJI_LIST_COLUMNS = 8;
55
+ export declare const EMOJI_LIST_PAGE_COUNT = 5;
56
+ export declare const EMOJI_SEARCH_DEBOUNCE = 150;
29
57
  export declare const SAMPLING_RATE_EMOJI_RENDERED_EXP = 20;
30
58
  export declare const SAMPLING_RATE_EMOJI_RESOURCE_FETCHED_EXP = 100;
@@ -3,7 +3,7 @@ export declare const emojiPickerListHeight = 205;
3
3
  export declare const emojiPickerBorderColor: "var(--ds-border)";
4
4
  export declare const emojiPickerBoxShadow: "var(--ds-shadow-overlay)";
5
5
  export declare const noDialogContainerBorderColor: "var(--ds-border)";
6
- export declare const noDialogContainerBorderRadius: string;
6
+ export declare const noDialogContainerBorderRadius: "var(--ds-radius-100)";
7
7
  export declare const noDialogContainerBoxShadow: "var(--ds-shadow-overlay)";
8
8
  export declare const akEmojiSelectedBackgroundColor: "var(--ds-background-neutral-subtle-hovered)";
9
9
  export declare const emojiPreviewSelectedColor: "var(--ds-background-neutral)";
@@ -11,7 +11,7 @@ export declare const hasDataURLImage: (rep: EmojiRepresentation) => boolean;
11
11
  export declare const isLoadedMediaEmoji: (emoji: EmojiDescription) => boolean;
12
12
  export declare const isEmojiDescriptionWithVariations: (emoji: OptionalEmojiDescription) => emoji is EmojiDescriptionWithVariations;
13
13
  export declare const isEmojiVariationDescription: (object: any) => object is EmojiVariationDescription;
14
- export declare const isMessagesKey: (key: string) => key is "deleteEmojiTitle" | "deleteEmojiDescription" | "deleteEmojiLabel" | "addCustomEmojiLabel" | "emojiPlaceholder" | "emojiNameAriaLabel" | "emojiChooseFileTitle" | "emojiChooseFileScreenReaderDescription" | "emojiSelectSkinToneButtonAriaLabelText" | "emojiImageRequirements" | "emojiPreviewTitle" | "emojiPreview" | "addEmojiLabel" | "retryLabel" | "cancelLabel" | "searchPlaceholder" | "searchLabel" | "categoriesSearchResults" | "frequentCategory" | "peopleCategory" | "natureCategory" | "foodsCategory" | "activityCategory" | "placesCategory" | "objectsCategory" | "symbolsCategory" | "flagsCategory" | "productivityCategory" | "userUploadsCustomCategory" | "allUploadsCustomCategory" | "deleteEmojiFailed" | "emojiInvalidImage" | "emojiUploadFailed" | "emojiImageTooBig";
14
+ export declare const isMessagesKey: (key: string) => key is "deleteEmojiTitle" | "deleteEmojiDescription" | "deleteEmojiLabel" | "addCustomEmojiLabel" | "emojiPlaceholder" | "emojiNameAriaLabel" | "emojiChooseFileTitle" | "emojiChooseFileScreenReaderDescription" | "emojiSelectSkinToneButtonAriaLabelText" | "emojiSelectSkinToneListAriaLabelText" | "emojiImageRequirements" | "emojiPreviewTitle" | "emojiPreview" | "addEmojiLabel" | "retryLabel" | "cancelLabel" | "searchPlaceholder" | "searchLabel" | "searchResultsStatus" | "searchResultsStatusSeeAll" | "categoriesSelectorLabel" | "categoriesSearchResults" | "frequentCategory" | "peopleCategory" | "natureCategory" | "foodsCategory" | "activityCategory" | "placesCategory" | "objectsCategory" | "symbolsCategory" | "flagsCategory" | "productivityCategory" | "userUploadsCustomCategory" | "allUploadsCustomCategory" | "deleteEmojiFailed" | "emojiInvalidImage" | "emojiUploadFailed" | "emojiImageTooBig" | "emojiPickerTitle" | "emojiPickerListPanel" | "emojiPickerGrid" | "emojiButtonRoleDescription";
15
15
  export declare const toEmojiId: (emoji: EmojiDescription) => EmojiId;
16
16
  export declare const toOptionalEmojiId: (emoji: OptionalEmojiDescription) => EmojiId | undefined;
17
17
  export declare const isEmojiIdEqual: (l?: EmojiId | undefined, r?: EmojiId | undefined) => boolean | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/emoji",
3
- "version": "67.0.7",
3
+ "version": "67.2.0",
4
4
  "description": "Fabric emoji React components",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -27,23 +27,26 @@
27
27
  },
28
28
  "dependencies": {
29
29
  "@atlaskit/analytics-next": "^9.0.0",
30
- "@atlaskit/button": "^16.5.0",
30
+ "@atlaskit/button": "^16.6.0",
31
31
  "@atlaskit/icon": "^21.11.0",
32
- "@atlaskit/media-client": "^20.0.0",
33
- "@atlaskit/spinner": "^15.3.0",
32
+ "@atlaskit/media-client": "^20.2.0",
33
+ "@atlaskit/spinner": "^15.4.0",
34
34
  "@atlaskit/textfield": "^5.3.0",
35
- "@atlaskit/theme": "^12.2.0",
35
+ "@atlaskit/theme": "^12.3.0",
36
36
  "@atlaskit/tokens": "^1.2.0",
37
- "@atlaskit/tooltip": "^17.6.0",
37
+ "@atlaskit/tooltip": "^17.7.0",
38
38
  "@atlaskit/ufo": "^0.1.0",
39
39
  "@atlaskit/util-service-support": "^6.1.0",
40
+ "@atlaskit/visually-hidden": "^1.1.2",
40
41
  "@babel/runtime": "^7.0.0",
41
42
  "@emotion/react": "^11.7.1",
42
43
  "@tanstack/react-virtual": "3.0.0-beta.22",
43
44
  "js-search": "^2.0.0",
44
45
  "lru_map": "^0.4.1",
46
+ "react-focus-lock": "^2.5.2",
45
47
  "react-intersection-observer": "^8.26.2",
46
48
  "react-loadable": "^5.1.0",
49
+ "use-debounce": "^3.4.0",
47
50
  "uuid": "^3.1.0"
48
51
  },
49
52
  "peerDependencies": {
@@ -53,13 +56,13 @@
53
56
  },
54
57
  "devDependencies": {
55
58
  "@atlaskit/docs": "*",
56
- "@atlaskit/editor-test-helpers": "^18.0.0",
59
+ "@atlaskit/editor-test-helpers": "^18.1.0",
57
60
  "@atlaskit/elements-test-helpers": "^0.7.0",
58
61
  "@atlaskit/media-core": "^34.0.0",
59
62
  "@atlaskit/popup": "^1.5.0",
60
63
  "@atlaskit/section-message": "^6.3.0",
61
64
  "@atlaskit/ssr": "*",
62
- "@atlaskit/util-data-test": "^17.6.0",
65
+ "@atlaskit/util-data-test": "^17.7.0",
63
66
  "@atlaskit/visual-regression": "*",
64
67
  "@atlassian/atlassian-frontend-prettier-config-1.0.1": "npm:@atlassian/atlassian-frontend-prettier-config@1.0.1",
65
68
  "@atlassian/ufo": "^0.1.10",
@@ -75,6 +78,7 @@
75
78
  "enzyme-adapter-react-16": "^1.15.1",
76
79
  "es6-promise": "^4.0.5",
77
80
  "fetch-mock": "^8.0.0",
81
+ "jest-axe": "^4.0.0",
78
82
  "p-wait-for": "^3.2.0",
79
83
  "react": "^16.8.0",
80
84
  "react-addons-perf": "^15.3.2",
package/report.api.md CHANGED
@@ -416,6 +416,8 @@ class EmojiResource_2
416
416
  // (undocumented)
417
417
  protected initEmojiRepository(emojiResponses: EmojiResponse[]): void;
418
418
  // (undocumented)
419
+ protected initialLoaders: number;
420
+ // (undocumented)
419
421
  protected initSiteEmojiResource(
420
422
  emojiResponse: EmojiResponse,
421
423
  provider: ServiceConfig,
@@ -423,6 +425,10 @@ class EmojiResource_2
423
425
  // (undocumented)
424
426
  protected isInitialised: boolean;
425
427
  // (undocumented)
428
+ protected isRepositoryAvailable: <T>(
429
+ repository?: T | undefined,
430
+ ) => repository is T;
431
+ // (undocumented)
426
432
  protected lastQuery?: LastQuery;
427
433
  // (undocumented)
428
434
  loadMediaEmoji(
@@ -739,6 +745,11 @@ const messages: {
739
745
  defaultMessage: string;
740
746
  description: string;
741
747
  };
748
+ emojiSelectSkinToneListAriaLabelText: {
749
+ id: string;
750
+ defaultMessage: string;
751
+ description: string;
752
+ };
742
753
  emojiImageRequirements: {
743
754
  id: string;
744
755
  defaultMessage: string;
@@ -779,6 +790,21 @@ const messages: {
779
790
  defaultMessage: string;
780
791
  description: string;
781
792
  };
793
+ searchResultsStatus: {
794
+ id: string;
795
+ defaultMessage: string;
796
+ description: string;
797
+ };
798
+ searchResultsStatusSeeAll: {
799
+ id: string;
800
+ defaultMessage: string;
801
+ description: string;
802
+ };
803
+ categoriesSelectorLabel: {
804
+ id: string;
805
+ defaultMessage: string;
806
+ description: string;
807
+ };
782
808
  categoriesSearchResults: {
783
809
  id: string;
784
810
  defaultMessage: string;
@@ -864,6 +890,26 @@ const messages: {
864
890
  defaultMessage: string;
865
891
  description: string;
866
892
  };
893
+ emojiPickerTitle: {
894
+ id: string;
895
+ defaultMessage: string;
896
+ description: string;
897
+ };
898
+ emojiPickerListPanel: {
899
+ id: string;
900
+ defaultMessage: string;
901
+ description: string;
902
+ };
903
+ emojiPickerGrid: {
904
+ id: string;
905
+ defaultMessage: string;
906
+ description: string;
907
+ };
908
+ emojiButtonRoleDescription: {
909
+ id: string;
910
+ defaultMessage: string;
911
+ description: string;
912
+ };
867
913
  };
868
914
 
869
915
  // @public (undocumented)
@@ -927,13 +973,18 @@ interface PickerRefHandler {
927
973
  export type PickerSize = 'large' | 'medium' | 'small';
928
974
 
929
975
  // @public (undocumented)
930
- interface Props {
976
+ interface Props
977
+ extends Omit<
978
+ React_2.HTMLAttributes<HTMLSpanElement>,
979
+ 'onFocus' | 'onMouseMove'
980
+ > {
931
981
  autoWidth?: boolean;
932
982
  className?: string;
933
983
  disableLazyLoad?: boolean;
934
984
  emoji: EmojiDescription;
935
985
  fitToHeight?: number;
936
986
  onDelete?: OnEmojiEvent;
987
+ onFocus?: OnEmojiEvent;
937
988
  onLoadError?: OnEmojiEvent<HTMLImageElement>;
938
989
  onLoadSuccess?: (emoji: EmojiDescription) => void;
939
990
  onMouseMove?: OnEmojiEvent;
@@ -1083,6 +1134,8 @@ export interface SearchOptions {
1083
1134
  skinTone?: number;
1084
1135
  // (undocumented)
1085
1136
  sort?: SearchSort;
1137
+ // (undocumented)
1138
+ source?: SearchSourceTypes;
1086
1139
  }
1087
1140
 
1088
1141
  // @public (undocumented)
@@ -1095,6 +1148,14 @@ export enum SearchSort {
1095
1148
  UsageFrequency = 2,
1096
1149
  }
1097
1150
 
1151
+ // @public (undocumented)
1152
+ enum SearchSourceTypes {
1153
+ // (undocumented)
1154
+ PICKER = 'picker',
1155
+ // (undocumented)
1156
+ TYPEAHEAD = 'typeahead',
1157
+ }
1158
+
1098
1159
  // @public (undocumented)
1099
1160
  export const selected = 'emoji-common-selected';
1100
1161
 
package/README.md DELETED
@@ -1,3 +0,0 @@
1
- # Emoji
2
-
3
- Documentation can be found on: https://product-fabric.atlassian.net/wiki/spaces/TWPCP/pages/3178201667/Emoji+README
@@ -1,14 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useDidMount = useDidMount;
7
- var _react = require("react");
8
- function useDidMount() {
9
- var didMountRef = (0, _react.useRef)(false);
10
- (0, _react.useEffect)(function () {
11
- didMountRef.current = true;
12
- }, []);
13
- return didMountRef.current;
14
- }
@@ -1,49 +0,0 @@
1
- /** @jsx jsx */
2
- import React, { forwardRef, memo } from 'react';
3
- import { jsx } from '@emotion/react';
4
- import { leftClick } from '../../util/mouse';
5
- import { emojiButton, hiddenToneButton } from './styles';
6
- import Emoji from './Emoji';
7
- const handleMouseDown = (props, event) => {
8
- const {
9
- onSelected
10
- } = props;
11
- event.preventDefault();
12
- if (onSelected && leftClick(event)) {
13
- onSelected();
14
- }
15
- };
16
- const handleKeyPress = (props, event) => {
17
- const {
18
- onSelected
19
- } = props;
20
- if (onSelected && (event.key === 'Enter' || event.key === ' ')) {
21
- event.preventDefault();
22
- onSelected();
23
- }
24
- };
25
- export const EmojiButton = /*#__PURE__*/forwardRef((props, ref) => {
26
- const {
27
- emoji,
28
- selectOnHover,
29
- ariaLabelText,
30
- ariaExpanded,
31
- shouldHideButton
32
- } = props;
33
- return jsx("button", {
34
- ref: ref,
35
- "aria-expanded": ariaExpanded,
36
- css: shouldHideButton ? hiddenToneButton : emojiButton,
37
- onMouseDown: event => {
38
- handleMouseDown(props, event);
39
- },
40
- onKeyDown: event => {
41
- handleKeyPress(props, event);
42
- },
43
- "aria-label": ariaLabelText
44
- }, jsx(Emoji, {
45
- emoji: emoji,
46
- selectOnHover: selectOnHover
47
- }));
48
- });
49
- export default /*#__PURE__*/memo(EmojiButton);
@@ -1,8 +0,0 @@
1
- import { useRef, useEffect } from 'react';
2
- export function useDidMount() {
3
- const didMountRef = useRef(false);
4
- useEffect(() => {
5
- didMountRef.current = true;
6
- }, []);
7
- return didMountRef.current;
8
- }