@atlaskit/emoji 67.0.7 → 67.1.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 (140) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/api/EmojiResource.js +12 -1
  3. package/dist/cjs/components/common/EmojiActions.js +2 -2
  4. package/dist/cjs/components/hooks.js +8 -5
  5. package/dist/cjs/components/picker/EmojiPickerComponent.js +23 -40
  6. package/dist/cjs/components/picker/EmojiPickerList.js +20 -43
  7. package/dist/cjs/components/picker/EmojiPickerListSearch.js +53 -117
  8. package/dist/cjs/components/picker/VirtualList.js +100 -180
  9. package/dist/cjs/components/typeahead/EmojiTypeAheadComponent.js +0 -10
  10. package/dist/cjs/i18n/cs.js +35 -34
  11. package/dist/cjs/i18n/da.js +35 -34
  12. package/dist/cjs/i18n/de.js +35 -34
  13. package/dist/cjs/i18n/en.js +35 -34
  14. package/dist/cjs/i18n/en_GB.js +35 -34
  15. package/dist/cjs/i18n/es.js +35 -34
  16. package/dist/cjs/i18n/fi.js +35 -34
  17. package/dist/cjs/i18n/fr.js +35 -34
  18. package/dist/cjs/i18n/hu.js +35 -34
  19. package/dist/cjs/i18n/it.js +35 -34
  20. package/dist/cjs/i18n/ja.js +35 -34
  21. package/dist/cjs/i18n/ko.js +35 -34
  22. package/dist/cjs/i18n/nb.js +35 -34
  23. package/dist/cjs/i18n/nl.js +35 -34
  24. package/dist/cjs/i18n/pl.js +35 -34
  25. package/dist/cjs/i18n/pt_BR.js +35 -34
  26. package/dist/cjs/i18n/ru.js +35 -34
  27. package/dist/cjs/i18n/sv.js +35 -34
  28. package/dist/cjs/i18n/th.js +35 -34
  29. package/dist/cjs/i18n/tr.js +35 -34
  30. package/dist/cjs/i18n/uk.js +35 -34
  31. package/dist/cjs/i18n/vi.js +35 -34
  32. package/dist/cjs/i18n/zh.js +35 -34
  33. package/dist/cjs/i18n/zh_TW.js +35 -34
  34. package/dist/cjs/types.js +7 -1
  35. package/dist/cjs/util/constants.js +4 -2
  36. package/dist/cjs/version.json +1 -1
  37. package/dist/es2019/api/EmojiResource.js +13 -2
  38. package/dist/es2019/components/common/EmojiActions.js +1 -1
  39. package/dist/es2019/components/hooks.js +7 -4
  40. package/dist/es2019/components/picker/EmojiPickerComponent.js +24 -41
  41. package/dist/es2019/components/picker/EmojiPickerList.js +17 -40
  42. package/dist/es2019/components/picker/EmojiPickerListSearch.js +51 -98
  43. package/dist/es2019/components/picker/VirtualList.js +71 -113
  44. package/dist/es2019/components/typeahead/EmojiTypeAheadComponent.js +0 -10
  45. package/dist/es2019/i18n/cs.js +35 -34
  46. package/dist/es2019/i18n/da.js +35 -34
  47. package/dist/es2019/i18n/de.js +35 -34
  48. package/dist/es2019/i18n/en.js +35 -34
  49. package/dist/es2019/i18n/en_GB.js +35 -34
  50. package/dist/es2019/i18n/es.js +35 -34
  51. package/dist/es2019/i18n/fi.js +35 -34
  52. package/dist/es2019/i18n/fr.js +35 -34
  53. package/dist/es2019/i18n/hu.js +35 -34
  54. package/dist/es2019/i18n/it.js +35 -34
  55. package/dist/es2019/i18n/ja.js +35 -34
  56. package/dist/es2019/i18n/ko.js +35 -34
  57. package/dist/es2019/i18n/nb.js +35 -34
  58. package/dist/es2019/i18n/nl.js +35 -34
  59. package/dist/es2019/i18n/pl.js +35 -34
  60. package/dist/es2019/i18n/pt_BR.js +35 -34
  61. package/dist/es2019/i18n/ru.js +35 -34
  62. package/dist/es2019/i18n/sv.js +35 -34
  63. package/dist/es2019/i18n/th.js +35 -34
  64. package/dist/es2019/i18n/tr.js +35 -34
  65. package/dist/es2019/i18n/uk.js +35 -34
  66. package/dist/es2019/i18n/vi.js +35 -34
  67. package/dist/es2019/i18n/zh.js +35 -34
  68. package/dist/es2019/i18n/zh_TW.js +35 -34
  69. package/dist/es2019/types.js +5 -0
  70. package/dist/es2019/util/constants.js +1 -0
  71. package/dist/es2019/version.json +1 -1
  72. package/dist/esm/api/EmojiResource.js +13 -2
  73. package/dist/esm/components/common/EmojiActions.js +1 -1
  74. package/dist/esm/components/hooks.js +7 -4
  75. package/dist/esm/components/picker/EmojiPickerComponent.js +24 -41
  76. package/dist/esm/components/picker/EmojiPickerList.js +21 -40
  77. package/dist/esm/components/picker/EmojiPickerListSearch.js +51 -117
  78. package/dist/esm/components/picker/VirtualList.js +99 -180
  79. package/dist/esm/components/typeahead/EmojiTypeAheadComponent.js +0 -10
  80. package/dist/esm/i18n/cs.js +35 -34
  81. package/dist/esm/i18n/da.js +35 -34
  82. package/dist/esm/i18n/de.js +35 -34
  83. package/dist/esm/i18n/en.js +35 -34
  84. package/dist/esm/i18n/en_GB.js +35 -34
  85. package/dist/esm/i18n/es.js +35 -34
  86. package/dist/esm/i18n/fi.js +35 -34
  87. package/dist/esm/i18n/fr.js +35 -34
  88. package/dist/esm/i18n/hu.js +35 -34
  89. package/dist/esm/i18n/it.js +35 -34
  90. package/dist/esm/i18n/ja.js +35 -34
  91. package/dist/esm/i18n/ko.js +35 -34
  92. package/dist/esm/i18n/nb.js +35 -34
  93. package/dist/esm/i18n/nl.js +35 -34
  94. package/dist/esm/i18n/pl.js +35 -34
  95. package/dist/esm/i18n/pt_BR.js +35 -34
  96. package/dist/esm/i18n/ru.js +35 -34
  97. package/dist/esm/i18n/sv.js +35 -34
  98. package/dist/esm/i18n/th.js +35 -34
  99. package/dist/esm/i18n/tr.js +35 -34
  100. package/dist/esm/i18n/uk.js +35 -34
  101. package/dist/esm/i18n/vi.js +35 -34
  102. package/dist/esm/i18n/zh.js +35 -34
  103. package/dist/esm/i18n/zh_TW.js +35 -34
  104. package/dist/esm/types.js +5 -0
  105. package/dist/esm/util/constants.js +1 -0
  106. package/dist/esm/version.json +1 -1
  107. package/dist/types/components/common/EmojiActions.d.ts +1 -1
  108. package/dist/types/components/hooks.d.ts +1 -1
  109. package/dist/types/components/picker/CategoryTracker.d.ts +2 -2
  110. package/dist/types/components/picker/EmojiPickerList.d.ts +4 -2
  111. package/dist/types/components/picker/EmojiPickerListSearch.d.ts +3 -8
  112. package/dist/types/components/picker/VirtualList.d.ts +5 -24
  113. package/dist/types/i18n/cs.d.ts +34 -34
  114. package/dist/types/i18n/da.d.ts +34 -34
  115. package/dist/types/i18n/de.d.ts +34 -34
  116. package/dist/types/i18n/en.d.ts +34 -34
  117. package/dist/types/i18n/en_GB.d.ts +34 -34
  118. package/dist/types/i18n/es.d.ts +34 -34
  119. package/dist/types/i18n/fi.d.ts +34 -34
  120. package/dist/types/i18n/fr.d.ts +34 -34
  121. package/dist/types/i18n/hu.d.ts +34 -34
  122. package/dist/types/i18n/it.d.ts +34 -34
  123. package/dist/types/i18n/ja.d.ts +34 -34
  124. package/dist/types/i18n/ko.d.ts +34 -34
  125. package/dist/types/i18n/nb.d.ts +34 -34
  126. package/dist/types/i18n/nl.d.ts +34 -34
  127. package/dist/types/i18n/pl.d.ts +34 -34
  128. package/dist/types/i18n/pt_BR.d.ts +34 -34
  129. package/dist/types/i18n/ru.d.ts +34 -34
  130. package/dist/types/i18n/sv.d.ts +34 -34
  131. package/dist/types/i18n/th.d.ts +34 -34
  132. package/dist/types/i18n/tr.d.ts +34 -34
  133. package/dist/types/i18n/uk.d.ts +34 -34
  134. package/dist/types/i18n/vi.d.ts +34 -34
  135. package/dist/types/i18n/zh.d.ts +34 -34
  136. package/dist/types/i18n/zh_TW.d.ts +34 -34
  137. package/dist/types/types.d.ts +5 -0
  138. package/dist/types/util/constants.d.ts +1 -0
  139. package/package.json +5 -4
  140. package/report.api.md +10 -0
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ /* prettier-ignore */
7
8
  /**
8
9
  * NOTE:
9
10
  *
@@ -12,39 +13,39 @@ exports.default = void 0;
12
13
  */
13
14
  //Vietnamese (Vietnam)
14
15
  var _default = {
15
- 'fabric.emoji.add.custom.emoji.label': 'Thêm biểu tượng cảm xúc của riêng bạn',
16
- 'fabric.emoji.add.label': 'Thêm biểu tượng cảm xúc',
17
- 'fabric.emoji.cancel.label': 'Hủy',
18
- 'fabric.emoji.categories.search.results': 'Kết quả tìm kiếm',
19
- 'fabric.emoji.category.activity': 'Hoạt động',
20
- 'fabric.emoji.category.all.uploads': 'Tất cả các nội dung tải lên',
21
- 'fabric.emoji.category.flags': 'Cờ',
22
- 'fabric.emoji.category.foods': 'Thực phẩm & Đồ uống',
23
- 'fabric.emoji.category.frequent': 'Thường ngày',
24
- 'fabric.emoji.category.nature': 'Thiên nhiên',
25
- 'fabric.emoji.category.objects': 'Đồ vật',
26
- 'fabric.emoji.category.people': 'Mọi người',
27
- 'fabric.emoji.category.places': 'Du lịch & Địa điểm',
28
- 'fabric.emoji.category.productivity': 'Năng suất',
29
- 'fabric.emoji.category.symbols': 'Biểu tượng',
30
- 'fabric.emoji.category.user.uploads': 'Các nội dung bạn tải lên',
31
- 'fabric.emoji.choose.file.screenReaderDescription': 'Chọn một tệp cho biểu tượng cảm xúc. JPG, PNG hoặc GIF. Kích thước tối đa 1 MB.',
32
- 'fabric.emoji.choose.file.title': 'Chọn tập tin',
33
- 'fabric.emoji.delete.description': 'Tất cả các phiên bản hiện tại của biểu tượng cảm xúc này sẽ được thay thế bằng {emojiShortName}',
34
- 'fabric.emoji.delete.label': 'Xóa',
35
- 'fabric.emoji.delete.title': 'Xóa biểu tượng cảm xúc',
36
- 'fabric.emoji.error.delete.failed': 'Không xóa được',
37
- 'fabric.emoji.error.image.too.big': 'Hình ảnh đã chọn có kích thước lớn hơn 1 MB',
38
- 'fabric.emoji.error.invalid.image': 'Hình ảnh đã chọn không hợp lệ',
39
- 'fabric.emoji.error.upload.failed': 'Không thể tải lên',
40
- 'fabric.emoji.image.requirements': 'JPG, PNG hoặc GIF. Kích thước tối đa 1 MB.',
41
- 'fabric.emoji.name.ariaLabel': 'Nhập tên cho biểu tượng cảm xúc mới này',
42
- 'fabric.emoji.placeholder': 'Tên biểu tượng cảm xúc',
43
- 'fabric.emoji.preview': 'Biểu tượng cảm xúc mới của bạn {emoji} trông rất tuyệt',
44
- 'fabric.emoji.preview.title': 'Xem trước',
45
- 'fabric.emoji.retry.label': 'Thử lại',
46
- 'fabric.emoji.search.label': 'Tìm kiếm biểu tượng cảm xúc',
47
- 'fabric.emoji.search.placeholder': 'Tìm kiếm',
48
- 'fabric.emoji.select.skin.tone.ariaLabel': 'Chọn tông màu da, {selectedTone}'
16
+ "fabric.emoji.add.custom.emoji.label": "Thêm biểu tượng cảm xúc của riêng bạn",
17
+ "fabric.emoji.add.label": "Thêm biểu tượng cảm xúc",
18
+ "fabric.emoji.cancel.label": "Hủy",
19
+ "fabric.emoji.categories.search.results": "Kết quả tìm kiếm",
20
+ "fabric.emoji.category.activity": "Hoạt động",
21
+ "fabric.emoji.category.all.uploads": "Tất cả các nội dung tải lên",
22
+ "fabric.emoji.category.flags": "Cờ",
23
+ "fabric.emoji.category.foods": "Thực phẩm & Đồ uống",
24
+ "fabric.emoji.category.frequent": "Thường ngày",
25
+ "fabric.emoji.category.nature": "Thiên nhiên",
26
+ "fabric.emoji.category.objects": "Đồ vật",
27
+ "fabric.emoji.category.people": "Mọi người",
28
+ "fabric.emoji.category.places": "Du lịch & Địa điểm",
29
+ "fabric.emoji.category.productivity": "Năng suất",
30
+ "fabric.emoji.category.symbols": "Biểu tượng",
31
+ "fabric.emoji.category.user.uploads": "Các nội dung bạn tải lên",
32
+ "fabric.emoji.choose.file.screenReaderDescription": "Chọn một tệp cho biểu tượng cảm xúc. JPG, PNG hoặc GIF. Kích thước tối đa 1 MB.",
33
+ "fabric.emoji.choose.file.title": "Chọn tập tin",
34
+ "fabric.emoji.delete.description": "Tất cả các phiên bản hiện tại của biểu tượng cảm xúc này sẽ được thay thế bằng {emojiShortName}",
35
+ "fabric.emoji.delete.label": "Xóa",
36
+ "fabric.emoji.delete.title": "Xóa biểu tượng cảm xúc",
37
+ "fabric.emoji.error.delete.failed": "Không xóa được",
38
+ "fabric.emoji.error.image.too.big": "Hình ảnh đã chọn có kích thước lớn hơn 1 MB",
39
+ "fabric.emoji.error.invalid.image": "Hình ảnh đã chọn không hợp lệ",
40
+ "fabric.emoji.error.upload.failed": "Không thể tải lên",
41
+ "fabric.emoji.image.requirements": "JPG, PNG hoặc GIF. Kích thước tối đa 1 MB.",
42
+ "fabric.emoji.name.ariaLabel": "Nhập tên cho biểu tượng cảm xúc mới này",
43
+ "fabric.emoji.placeholder": "Tên biểu tượng cảm xúc",
44
+ "fabric.emoji.preview": "Biểu tượng cảm xúc mới của bạn {emoji} trông rất tuyệt",
45
+ "fabric.emoji.preview.title": "Xem trước",
46
+ "fabric.emoji.retry.label": "Thử lại",
47
+ "fabric.emoji.search.label": "Tìm kiếm biểu tượng cảm xúc",
48
+ "fabric.emoji.search.placeholder": "Tìm kiếm",
49
+ "fabric.emoji.select.skin.tone.ariaLabel": "Chọn tông màu da, {selectedTone}"
49
50
  };
50
51
  exports.default = _default;
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ /* prettier-ignore */
7
8
  /**
8
9
  * NOTE:
9
10
  *
@@ -12,39 +13,39 @@ exports.default = void 0;
12
13
  */
13
14
  //Chinese (Simplified)
14
15
  var _default = {
15
- 'fabric.emoji.add.custom.emoji.label': '添加您自己的表情符号',
16
- 'fabric.emoji.add.label': '添加表情符号',
17
- 'fabric.emoji.cancel.label': '取消',
18
- 'fabric.emoji.categories.search.results': '搜索结果',
19
- 'fabric.emoji.category.activity': '活动',
20
- 'fabric.emoji.category.all.uploads': '所有上传',
21
- 'fabric.emoji.category.flags': '标记',
22
- 'fabric.emoji.category.foods': '食物和饮品',
23
- 'fabric.emoji.category.frequent': '频率',
24
- 'fabric.emoji.category.nature': '性质',
25
- 'fabric.emoji.category.objects': '对象',
26
- 'fabric.emoji.category.people': '人员',
27
- 'fabric.emoji.category.places': '旅行和地点',
28
- 'fabric.emoji.category.productivity': '生产力',
29
- 'fabric.emoji.category.symbols': '符号',
30
- 'fabric.emoji.category.user.uploads': '您的上传',
31
- 'fabric.emoji.choose.file.screenReaderDescription': '为表情符号选择一个文件。JPG、PNG 或 GIF。文件大小不得超过 1 MB。',
32
- 'fabric.emoji.choose.file.title': '选择文件',
33
- 'fabric.emoji.delete.description': '此表情符号的所有现有实例将替换为{emojiShortName}',
34
- 'fabric.emoji.delete.label': '删除',
35
- 'fabric.emoji.delete.title': '删除表情符号',
36
- 'fabric.emoji.error.delete.failed': '删除失败',
37
- 'fabric.emoji.error.image.too.big': '选择的图像超过 1 MB',
38
- 'fabric.emoji.error.invalid.image': '选择的图像无效',
39
- 'fabric.emoji.error.upload.failed': '上传失败',
40
- 'fabric.emoji.image.requirements': 'JPG、PNG 或 GIF 最大为 1 MB。',
41
- 'fabric.emoji.name.ariaLabel': '为新表情符号输入名称',
42
- 'fabric.emoji.placeholder': '表情符号名称',
43
- 'fabric.emoji.preview': '您的新表情符号{emoji}看起来很棒',
44
- 'fabric.emoji.preview.title': '预览',
45
- 'fabric.emoji.retry.label': '重试',
46
- 'fabric.emoji.search.label': '搜索表情',
47
- 'fabric.emoji.search.placeholder': '搜索',
48
- 'fabric.emoji.select.skin.tone.ariaLabel': '选择肤色,{selectedTone}'
16
+ "fabric.emoji.add.custom.emoji.label": "添加您自己的表情符号",
17
+ "fabric.emoji.add.label": "添加表情符号",
18
+ "fabric.emoji.cancel.label": "取消",
19
+ "fabric.emoji.categories.search.results": "搜索结果",
20
+ "fabric.emoji.category.activity": "活动",
21
+ "fabric.emoji.category.all.uploads": "所有上传",
22
+ "fabric.emoji.category.flags": "标记",
23
+ "fabric.emoji.category.foods": "食物和饮品",
24
+ "fabric.emoji.category.frequent": "频率",
25
+ "fabric.emoji.category.nature": "性质",
26
+ "fabric.emoji.category.objects": "对象",
27
+ "fabric.emoji.category.people": "人员",
28
+ "fabric.emoji.category.places": "旅行和地点",
29
+ "fabric.emoji.category.productivity": "生产力",
30
+ "fabric.emoji.category.symbols": "符号",
31
+ "fabric.emoji.category.user.uploads": "您的上传",
32
+ "fabric.emoji.choose.file.screenReaderDescription": "为表情符号选择一个文件。JPG、PNG 或 GIF。文件大小不得超过 1 MB。",
33
+ "fabric.emoji.choose.file.title": "选择文件",
34
+ "fabric.emoji.delete.description": "此表情符号的所有现有实例将替换为{emojiShortName}",
35
+ "fabric.emoji.delete.label": "删除",
36
+ "fabric.emoji.delete.title": "删除表情符号",
37
+ "fabric.emoji.error.delete.failed": "删除失败",
38
+ "fabric.emoji.error.image.too.big": "选择的图像超过 1 MB",
39
+ "fabric.emoji.error.invalid.image": "选择的图像无效",
40
+ "fabric.emoji.error.upload.failed": "上传失败",
41
+ "fabric.emoji.image.requirements": "JPG、PNG 或 GIF 最大为 1 MB。",
42
+ "fabric.emoji.name.ariaLabel": "为新表情符号输入名称",
43
+ "fabric.emoji.placeholder": "表情符号名称",
44
+ "fabric.emoji.preview": "您的新表情符号{emoji}看起来很棒",
45
+ "fabric.emoji.preview.title": "预览",
46
+ "fabric.emoji.retry.label": "重试",
47
+ "fabric.emoji.search.label": "搜索表情",
48
+ "fabric.emoji.search.placeholder": "搜索",
49
+ "fabric.emoji.select.skin.tone.ariaLabel": "选择肤色,{selectedTone}"
49
50
  };
50
51
  exports.default = _default;
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ /* prettier-ignore */
7
8
  /**
8
9
  * NOTE:
9
10
  *
@@ -12,39 +13,39 @@ exports.default = void 0;
12
13
  */
13
14
  //Chinese (Traditional)
14
15
  var _default = {
15
- 'fabric.emoji.add.custom.emoji.label': '新增專屬的表情符號',
16
- 'fabric.emoji.add.label': '新增表情符號',
17
- 'fabric.emoji.cancel.label': '取消',
18
- 'fabric.emoji.categories.search.results': '搜尋結果',
19
- 'fabric.emoji.category.activity': '活動',
20
- 'fabric.emoji.category.all.uploads': '所有上傳項目',
21
- 'fabric.emoji.category.flags': '旗標',
22
- 'fabric.emoji.category.foods': '食物和飲料',
23
- 'fabric.emoji.category.frequent': '常用項目',
24
- 'fabric.emoji.category.nature': '自然',
25
- 'fabric.emoji.category.objects': '物體',
26
- 'fabric.emoji.category.people': '人員',
27
- 'fabric.emoji.category.places': '旅遊和地點',
28
- 'fabric.emoji.category.productivity': '生產力',
29
- 'fabric.emoji.category.symbols': '符號',
30
- 'fabric.emoji.category.user.uploads': '您的上傳項目',
31
- 'fabric.emoji.choose.file.screenReaderDescription': '請選擇表情符號的檔案。JPG、PNG 或 GIF。大小上限為 1 MB。',
32
- 'fabric.emoji.choose.file.title': '選擇檔案',
33
- 'fabric.emoji.delete.description': '此表情符號的所有現有執行個體都將取代為 {emojiShortName}',
34
- 'fabric.emoji.delete.label': '移除',
35
- 'fabric.emoji.delete.title': '移除表情符號',
36
- 'fabric.emoji.error.delete.failed': '移除失敗',
37
- 'fabric.emoji.error.image.too.big': '所選的影像超過 1 MB',
38
- 'fabric.emoji.error.invalid.image': '所選的影像無效',
39
- 'fabric.emoji.error.upload.failed': '上傳失敗',
40
- 'fabric.emoji.image.requirements': 'JPG、PNG 或 GIF。大小上限為 1 MB。',
41
- 'fabric.emoji.name.ariaLabel': '請輸入新表情符號的名稱',
42
- 'fabric.emoji.placeholder': '表情符號名稱',
43
- 'fabric.emoji.preview': '新的表情符號 {emoji} 看起來很棒',
44
- 'fabric.emoji.preview.title': '預覽',
45
- 'fabric.emoji.retry.label': '重試',
46
- 'fabric.emoji.search.label': '搜尋表情符號',
47
- 'fabric.emoji.search.placeholder': '搜尋',
48
- 'fabric.emoji.select.skin.tone.ariaLabel': '選取膚色,{selectedTone}'
16
+ "fabric.emoji.add.custom.emoji.label": "新增專屬的表情符號",
17
+ "fabric.emoji.add.label": "新增表情符號",
18
+ "fabric.emoji.cancel.label": "取消",
19
+ "fabric.emoji.categories.search.results": "搜尋結果",
20
+ "fabric.emoji.category.activity": "活動",
21
+ "fabric.emoji.category.all.uploads": "所有上傳項目",
22
+ "fabric.emoji.category.flags": "旗標",
23
+ "fabric.emoji.category.foods": "食物和飲料",
24
+ "fabric.emoji.category.frequent": "常用項目",
25
+ "fabric.emoji.category.nature": "自然",
26
+ "fabric.emoji.category.objects": "物體",
27
+ "fabric.emoji.category.people": "人員",
28
+ "fabric.emoji.category.places": "旅遊和地點",
29
+ "fabric.emoji.category.productivity": "生產力",
30
+ "fabric.emoji.category.symbols": "符號",
31
+ "fabric.emoji.category.user.uploads": "您的上傳項目",
32
+ "fabric.emoji.choose.file.screenReaderDescription": "請選擇表情符號的檔案。JPG、PNG 或 GIF。大小上限為 1 MB。",
33
+ "fabric.emoji.choose.file.title": "選擇檔案",
34
+ "fabric.emoji.delete.description": "此表情符號的所有現有執行個體都將取代為 {emojiShortName}",
35
+ "fabric.emoji.delete.label": "移除",
36
+ "fabric.emoji.delete.title": "移除表情符號",
37
+ "fabric.emoji.error.delete.failed": "移除失敗",
38
+ "fabric.emoji.error.image.too.big": "所選的影像超過 1 MB",
39
+ "fabric.emoji.error.invalid.image": "所選的影像無效",
40
+ "fabric.emoji.error.upload.failed": "上傳失敗",
41
+ "fabric.emoji.image.requirements": "JPG、PNG 或 GIF。大小上限為 1 MB。",
42
+ "fabric.emoji.name.ariaLabel": "請輸入新表情符號的名稱",
43
+ "fabric.emoji.placeholder": "表情符號名稱",
44
+ "fabric.emoji.preview": "新的表情符號 {emoji} 看起來很棒",
45
+ "fabric.emoji.preview.title": "預覽",
46
+ "fabric.emoji.retry.label": "重試",
47
+ "fabric.emoji.search.label": "搜尋表情符號",
48
+ "fabric.emoji.search.placeholder": "搜尋",
49
+ "fabric.emoji.select.skin.tone.ariaLabel": "選取膚色,{selectedTone}"
49
50
  };
50
51
  exports.default = _default;
package/dist/cjs/types.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.UfoExperienceName = exports.UfoEmojiTimingsKeys = exports.UfoEmojiTimings = exports.UfoComponentName = exports.SearchSort = exports.ProviderTypes = void 0;
6
+ exports.UfoExperienceName = exports.UfoEmojiTimingsKeys = exports.UfoEmojiTimings = exports.UfoComponentName = exports.SearchSourceTypes = exports.SearchSort = exports.ProviderTypes = void 0;
7
7
  /**
8
8
  * Minimum information to defined an emoji is the shortName.
9
9
  * In order to uniquely define an emoji, the id should be included, and is
@@ -35,6 +35,12 @@ exports.SearchSort = SearchSort;
35
35
  SearchSort[SearchSort["Default"] = 1] = "Default";
36
36
  SearchSort[SearchSort["UsageFrequency"] = 2] = "UsageFrequency";
37
37
  })(SearchSort || (exports.SearchSort = SearchSort = {}));
38
+ var SearchSourceTypes;
39
+ exports.SearchSourceTypes = SearchSourceTypes;
40
+ (function (SearchSourceTypes) {
41
+ SearchSourceTypes["PICKER"] = "picker";
42
+ SearchSourceTypes["TYPEAHEAD"] = "typeahead";
43
+ })(SearchSourceTypes || (exports.SearchSourceTypes = SearchSourceTypes = {}));
38
44
  var ProviderTypes;
39
45
  exports.ProviderTypes = ProviderTypes;
40
46
  (function (ProviderTypes) {
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.userCustomTitle = exports.sizeGap = exports.selectedToneStorageKey = exports.migrationUserId = exports.localStoragePrefix = exports.frequentCategory = exports.emojiPickerWidth = exports.emojiPickerPreviewHeight = exports.emojiPickerMinHeight = exports.emojiPickerListHeight = exports.emojiPickerHeightWithPreview = exports.emojiPickerHeight = exports.deleteEmojiLabel = exports.defaultListLimit = exports.defaultEmojiPickerSize = exports.defaultEmojiHeight = exports.defaultCategories = exports.dataURLPrefix = exports.customType = exports.customTitle = exports.customCategory = exports.analyticsEmojiPrefix = exports.SAMPLING_RATE_EMOJI_RESOURCE_FETCHED_EXP = exports.SAMPLING_RATE_EMOJI_RENDERED_EXP = exports.MAX_ORDINAL = void 0;
6
+ exports.userCustomTitle = exports.sizeGap = exports.selectedToneStorageKey = exports.migrationUserId = exports.localStoragePrefix = exports.frequentCategory = exports.emojiPickerWidth = exports.emojiPickerPreviewHeight = exports.emojiPickerMinHeight = exports.emojiPickerListHeight = exports.emojiPickerHeightWithPreview = exports.emojiPickerHeight = exports.deleteEmojiLabel = exports.defaultListLimit = exports.defaultEmojiPickerSize = exports.defaultEmojiHeight = exports.defaultCategories = exports.dataURLPrefix = exports.customType = exports.customTitle = exports.customCategory = exports.analyticsEmojiPrefix = exports.SAMPLING_RATE_EMOJI_RESOURCE_FETCHED_EXP = exports.SAMPLING_RATE_EMOJI_RENDERED_EXP = exports.MAX_ORDINAL = exports.EMOJI_SEARCH_DEBOUNCE = void 0;
7
7
  var customCategory = 'CUSTOM';
8
8
  exports.customCategory = customCategory;
9
9
  var frequentCategory = 'FREQUENT';
@@ -54,9 +54,11 @@ exports.defaultListLimit = defaultListLimit;
54
54
  var migrationUserId = 'hipchat_migration_emoticons';
55
55
  exports.migrationUserId = migrationUserId;
56
56
  var analyticsEmojiPrefix = 'atlassian.fabric.emoji.picker';
57
+ exports.analyticsEmojiPrefix = analyticsEmojiPrefix;
58
+ var EMOJI_SEARCH_DEBOUNCE = 150;
57
59
 
58
60
  // This is the base sampling rate in Emoji
59
- exports.analyticsEmojiPrefix = analyticsEmojiPrefix;
61
+ exports.EMOJI_SEARCH_DEBOUNCE = EMOJI_SEARCH_DEBOUNCE;
60
62
  var SAMPLING_RATE_EMOJI_RENDERED_EXP = 20;
61
63
  // This rate is used in fetching emoji resource
62
64
  exports.SAMPLING_RATE_EMOJI_RENDERED_EXP = SAMPLING_RATE_EMOJI_RENDERED_EXP;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/emoji",
3
- "version": "67.0.7",
3
+ "version": "67.1.0",
4
4
  "sideEffects": false
5
5
  }
@@ -8,7 +8,7 @@ import { ProviderTypes } from '../types';
8
8
  import EmojiLoader from './EmojiLoader';
9
9
  import EmojiRepository from './EmojiRepository';
10
10
  import SiteEmojiResource from './media/SiteEmojiResource';
11
- import { sampledUfoEmojiResourceFetched } from '../util/analytics/ufoExperiences';
11
+ import { sampledUfoEmojiResourceFetched, ufoExperiences } from '../util/analytics/ufoExperiences';
12
12
  /**
13
13
  * Checks if the emojiProvider can support uploading at a feature level.
14
14
  *
@@ -284,12 +284,23 @@ export class EmojiResource extends AbstractResource {
284
284
  return optimistic;
285
285
  }
286
286
  filter(query, options) {
287
+ ufoExperiences['emoji-searched'].start();
288
+ ufoExperiences['emoji-searched'].addMetadata({
289
+ queryLength: (query === null || query === void 0 ? void 0 : query.length) || 0
290
+ });
287
291
  this.lastQuery = {
288
292
  query,
289
293
  options
290
294
  };
291
295
  if (this.emojiRepository) {
292
- this.notifyResult(this.emojiRepository.search(query, options));
296
+ const searchResults = this.emojiRepository.search(query, options);
297
+ this.notifyResult(searchResults);
298
+ ufoExperiences['emoji-searched'].success({
299
+ metadata: {
300
+ emojisLength: searchResults.emojis.length,
301
+ source: (options === null || options === void 0 ? void 0 : options.source) || 'typeahead'
302
+ }
303
+ });
293
304
  } else {
294
305
  // not ready
295
306
  this.notifyNotReady();
@@ -5,7 +5,7 @@ import { jsx } from '@emotion/react';
5
5
  import { FormattedMessage, injectIntl } from 'react-intl-next';
6
6
  import EmojiDeletePreview from '../common/EmojiDeletePreview';
7
7
  import EmojiUploadPicker from '../common/EmojiUploadPicker';
8
- import EmojiPickerListSearch from '../picker/EmojiPickerListSearch';
8
+ import { EmojiPickerListSearch } from '../picker/EmojiPickerListSearch';
9
9
  import ToneSelector from './ToneSelector';
10
10
  import EmojiButton from './EmojiButton';
11
11
  import { messages } from '../i18n';
@@ -1,8 +1,11 @@
1
1
  import { useRef, useEffect } from 'react';
2
- export function useDidMount() {
3
- const didMountRef = useRef(false);
2
+ export function useIsMounted() {
3
+ const isMountedRef = useRef(false);
4
4
  useEffect(() => {
5
- didMountRef.current = true;
5
+ isMountedRef.current = true;
6
+ return () => {
7
+ isMountedRef.current = false;
8
+ };
6
9
  }, []);
7
- return didMountRef.current;
10
+ return isMountedRef.current;
8
11
  }
@@ -7,7 +7,7 @@ import { getEmojiVariation } from '../../api/EmojiRepository';
7
7
  import { supportsUploadFeature } from '../../api/EmojiResource';
8
8
  import { customCategory, defaultEmojiPickerSize, frequentCategory } from '../../util/constants';
9
9
  import { containsEmojiId, isPromise /*, isEmojiIdEqual, isEmojiLoaded*/, isEmojiDescription } from '../../util/type-helpers';
10
- import { SearchSort } from '../../types';
10
+ import { SearchSort, SearchSourceTypes } from '../../types';
11
11
  import { getToneEmoji } from '../../util/filters';
12
12
  import { uploadEmoji } from '../common/UploadEmoji';
13
13
  import { createRecordSelectionDefault } from '../common/RecordSelectionDefault';
@@ -16,8 +16,8 @@ import EmojiPickerFooter from './EmojiPickerFooter';
16
16
  import EmojiPickerList from './EmojiPickerList';
17
17
  import { createAndFireEventInElementsChannel, categoryClickedEvent, closedPickerEvent, deleteBeginEvent, deleteCancelEvent, deleteConfirmEvent, openedPickerEvent, pickerClickedEvent, pickerSearchedEvent, selectedFileEvent, uploadBeginButton, uploadCancelButton, uploadConfirmButton, toneSelectorClosedEvent, ufoExperiences } from '../../util/analytics';
18
18
  import { emojiPicker } from './styles';
19
- import { useDidMount } from '../hooks';
20
19
  import { useEmoji } from '../../hooks/useEmoji';
20
+ import { useIsMounted } from '../hooks';
21
21
  const FREQUENTLY_USED_MAX = 16;
22
22
  const EmojiPickerComponent = ({
23
23
  onSelection,
@@ -47,12 +47,11 @@ const EmojiPickerComponent = ({
47
47
  const emojiPickerList = useMemo(() => /*#__PURE__*/createRef(), []);
48
48
  const openTime = useRef(0);
49
49
  const isMounting = useRef(true);
50
- const didMount = useDidMount();
51
- const updateAfterDidMount = useRef(true);
52
50
  const previousEmojiProvider = useRef(emojiProvider);
53
51
  const currentUser = useMemo(() => {
54
52
  return emojiProvider.getCurrentUser();
55
53
  }, [emojiProvider]);
54
+ const isMounted = useIsMounted();
56
55
  const fireAnalytics = useCallback(analyticsEvent => {
57
56
  if (createAnalyticsEvent) {
58
57
  createAndFireEventInElementsChannel(analyticsEvent)(createAnalyticsEvent);
@@ -157,7 +156,11 @@ const EmojiPickerComponent = ({
157
156
  emojiToRender,
158
157
  searchEmoji: searchResults.emojis
159
158
  });
160
- }, [frequentlyUsedEmojis, query, setStateAfterEmojiChange]);
159
+ fireAnalytics(pickerSearchedEvent({
160
+ queryLength: searchQuery.length,
161
+ numMatches: searchResults.emojis.length
162
+ }));
163
+ }, [frequentlyUsedEmojis, query, setStateAfterEmojiChange, fireAnalytics]);
161
164
  const onProviderChange = useMemo(() => {
162
165
  return {
163
166
  result: onSearchResult
@@ -242,22 +245,22 @@ const EmojiPickerComponent = ({
242
245
  const onFileChooserClicked = useCallback(() => {
243
246
  fireAnalytics(selectedFileEvent());
244
247
  }, [fireAnalytics]);
248
+ const scrollToTopOfList = useCallback(() => {
249
+ var _emojiPickerList$curr;
250
+ (_emojiPickerList$curr = emojiPickerList.current) === null || _emojiPickerList$curr === void 0 ? void 0 : _emojiPickerList$curr.scrollToTop();
251
+ }, [emojiPickerList]);
245
252
  const onSearch = useCallback(searchQuery => {
246
253
  const options = {
247
- skinTone: selectedTone
254
+ skinTone: selectedTone,
255
+ source: SearchSourceTypes.PICKER
248
256
  };
249
- if (query) {
250
- ufoExperiences['emoji-searched'].start();
251
- ufoExperiences['emoji-searched'].addMetadata({
252
- queryLength: query.length,
253
- source: 'EmojiPickerComponent'
254
- });
255
- }
256
257
  if (searchQuery !== query) {
257
258
  setQuery(searchQuery);
259
+ // scroll to top when search, which is search results section
260
+ scrollToTopOfList();
258
261
  }
259
- updateEmojis(query, options);
260
- }, [query, selectedTone, updateEmojis]);
262
+ updateEmojis(searchQuery, options);
263
+ }, [query, selectedTone, updateEmojis, scrollToTopOfList]);
261
264
  const onOpenUpload = useCallback(() => {
262
265
  // Prime upload token so it's ready when the user adds
263
266
  if (supportsUploadFeature(emojiProvider)) {
@@ -273,8 +276,8 @@ const EmojiPickerComponent = ({
273
276
  if (emojiPickerList.current) {
274
277
  // Wait a tick to ensure repaint and updated height for picker list
275
278
  window.setTimeout(() => {
276
- var _emojiPickerList$curr;
277
- (_emojiPickerList$curr = emojiPickerList.current) === null || _emojiPickerList$curr === void 0 ? void 0 : _emojiPickerList$curr.scrollToBottom();
279
+ var _emojiPickerList$curr2;
280
+ (_emojiPickerList$curr2 = emojiPickerList.current) === null || _emojiPickerList$curr2 === void 0 ? void 0 : _emojiPickerList$curr2.scrollToBottom();
278
281
  }, 0);
279
282
  }
280
283
  }, [emojiPickerList]);
@@ -343,11 +346,10 @@ const EmojiPickerComponent = ({
343
346
  }
344
347
  useEffect(() => {
345
348
  // componentDidMount logic
346
- if (didMount && updateAfterDidMount.current) {
349
+ if (!isMounted) {
347
350
  onComponentDidMount();
348
- updateAfterDidMount.current = false;
349
351
  }
350
- }, [didMount, onComponentDidMount]);
352
+ }, [onComponentDidMount, isMounted]);
351
353
  useEffect(() => {
352
354
  previousEmojiProvider.current.unsubscribe(onProviderChange);
353
355
  previousEmojiProvider.current = emojiProvider;
@@ -356,26 +358,6 @@ const EmojiPickerComponent = ({
356
358
  emojiProvider.unsubscribe(onProviderChange);
357
359
  };
358
360
  }, [emojiProvider, onProviderChange]);
359
- useEffect(() => {
360
- // We changed provider which means we subscribed to filter results for a new subscriber.
361
- // So we refresh the emoji display with onSearch and we do it here, after the new props have
362
- // been set since onSearch leads to filter being called on the current emojiProvider.
363
- // (Calling onSearch in a '...Will...' lifecycle method would lead to filter being called on
364
- // an emojiProvider we have already unsubscribed from)
365
- onSearch(query);
366
- }, [emojiProvider, onSearch, query]);
367
- useEffect(() => {
368
- // Fire analytics event whenever query changes
369
- fireAnalytics(pickerSearchedEvent({
370
- queryLength: query.length,
371
- numMatches: filteredEmojis.length
372
- }));
373
- ufoExperiences['emoji-searched'].success({
374
- metadata: {
375
- emojisLength: filteredEmojis.length
376
- }
377
- });
378
- }, [filteredEmojis.length, fireAnalytics, query]);
379
361
  useEffect(() => {
380
362
  if (!frequentlyUsedEmojis.length || query) {
381
363
  setFilteredEmojis(searchEmojis);
@@ -445,7 +427,8 @@ const EmojiPickerComponent = ({
445
427
  onCloseDelete: onCloseDelete,
446
428
  onFileChooserClicked: onFileChooserClicked,
447
429
  onOpenUpload: onOpenUpload,
448
- size: size
430
+ size: size,
431
+ activeCategoryId: activeCategory
449
432
  }), showPreview && jsx(EmojiPickerFooter, {
450
433
  selectedEmoji: selectedEmoji
451
434
  }));
@@ -1,6 +1,6 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  /** @jsx jsx */
3
- import React, { PureComponent } from 'react';
3
+ import { createRef, PureComponent } from 'react';
4
4
  import { jsx } from '@emotion/react';
5
5
  import { customCategory, defaultEmojiPickerSize, userCustomTitle } from '../../util/constants';
6
6
  import { CategoryDescriptionMap } from './categories';
@@ -11,6 +11,7 @@ import EmojiActions from '../common/EmojiActions';
11
11
  import { emojiPickerList } from './styles';
12
12
  import { emojiPickerHeightOffset } from './utils';
13
13
  import { VirtualList } from './VirtualList';
14
+
14
15
  /**
15
16
  * Test id for wrapper Emoji Picker List div
16
17
  */
@@ -22,14 +23,15 @@ export default class EmojiPickerVirtualList extends PureComponent {
22
23
  super(_props);
23
24
  _defineProperty(this, "virtualItems", []);
24
25
  _defineProperty(this, "categoryTracker", new CategoryTracker());
26
+ _defineProperty(this, "listRef", /*#__PURE__*/createRef());
25
27
  _defineProperty(this, "onEmojiMouseEnter", (emojiId, emoji) => {
26
28
  if (this.props.onEmojiActive) {
27
29
  this.props.onEmojiActive(emojiId, emoji);
28
30
  }
29
31
  });
30
- _defineProperty(this, "onSearch", e => {
32
+ _defineProperty(this, "onSearch", value => {
31
33
  if (this.props.onSearch) {
32
- this.props.onSearch(e.target.value);
34
+ this.props.onSearch(value);
33
35
  }
34
36
  });
35
37
  _defineProperty(this, "buildVirtualItemFromGroup", group => {
@@ -90,19 +92,7 @@ export default class EmojiPickerVirtualList extends PureComponent {
90
92
  });
91
93
  }
92
94
  }
93
- const rowCountChanged = this.virtualItems.length !== items.length;
94
95
  this.virtualItems = items;
95
- const list = this.refs.list;
96
- if (!rowCountChanged && list) {
97
- // Row count has not changed, so need to tell list to rerender.
98
- list.forceUpdateGrid();
99
- }
100
- if (!query && list) {
101
- // VirtualList can apply stale heights since it performs a shallow
102
- // compare to check if the list has changed. Should manually recompute
103
- // row heights for the case when frequent category come in later
104
- list.recomputeRowHeights();
105
- }
106
96
  });
107
97
  _defineProperty(this, "addToCategoryMap", (categoryToGroupMap, emoji, category) => {
108
98
  if (!categoryToGroupMap[category]) {
@@ -134,33 +124,15 @@ export default class EmojiPickerVirtualList extends PureComponent {
134
124
  return group;
135
125
  }).sort(byOrder);
136
126
  });
137
- _defineProperty(this, "repaintList", () => {
138
- if (this.refs.root) {
139
- const root = this.refs.root;
140
- const display = root.style.display;
141
- root.style.display = 'none';
142
-
143
- // we need to access offset to force repaint
144
- // eslint-disable-next-line no-unused-expressions
145
- root.offsetHeight;
146
- root.style.display = display;
147
- }
148
- });
149
127
  _defineProperty(this, "checkCategoryIdChange", indexes => {
150
128
  const {
151
129
  startIndex
152
130
  } = indexes;
153
-
154
- // FS-1844 Fix a rendering problem when scrolling to the top
155
- if (startIndex === 0) {
156
- this.repaintList();
157
- }
158
131
  if (!this.props.query) {
159
132
  // Calculate category in view - only relevant if categories shown, i.e. no query
160
- const list = this.refs.list;
133
+ const list = this.listRef.current;
161
134
  const currentCategory = this.categoryTracker.findNearestCategoryAbove(startIndex, list);
162
- if (currentCategory && this.activeCategoryId !== currentCategory) {
163
- this.activeCategoryId = currentCategory;
135
+ if (currentCategory && this.props.activeCategoryId !== currentCategory) {
164
136
  if (this.props.onCategoryActivated) {
165
137
  this.props.onCategoryActivated(currentCategory);
166
138
  }
@@ -191,12 +163,17 @@ export default class EmojiPickerVirtualList extends PureComponent {
191
163
  */
192
164
  reveal(category) {
193
165
  const row = this.categoryTracker.getRow(category);
194
- const list = this.refs.list;
195
- list.scrollToRow(row);
166
+ this.scrollToRow(row);
196
167
  }
197
168
  scrollToBottom() {
198
- const list = this.refs.list;
199
- list.scrollToRow(this.virtualItems.length);
169
+ this.scrollToRow(this.virtualItems.length);
170
+ }
171
+ scrollToTop() {
172
+ this.scrollToRow(0);
173
+ }
174
+ scrollToRow(index) {
175
+ var _this$listRef$current;
176
+ (_this$listRef$current = this.listRef.current) === null || _this$listRef$current === void 0 ? void 0 : _this$listRef$current.scrollToRow(index);
200
177
  }
201
178
  render() {
202
179
  const {
@@ -242,7 +219,7 @@ export default class EmojiPickerVirtualList extends PureComponent {
242
219
  query: query,
243
220
  onChange: this.onSearch
244
221
  }), jsx(VirtualList, {
245
- ref: "list",
222
+ ref: this.listRef,
246
223
  height: virtualListHeight,
247
224
  overscanRowCount: 10,
248
225
  rowCount: this.virtualItems.length,