@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.
- package/CHANGELOG.md +37 -0
- package/dist/cjs/api/EmojiResource.js +41 -25
- package/dist/cjs/api/media/TokenManager.js +4 -4
- package/dist/cjs/components/common/CachingEmoji.js +14 -6
- package/dist/cjs/components/common/Emoji.js +48 -12
- package/dist/cjs/components/common/EmojiActions.js +62 -26
- package/dist/cjs/components/common/EmojiErrorMessage.js +12 -7
- package/dist/cjs/components/common/EmojiPlaceholder.js +1 -0
- package/dist/cjs/components/common/{EmojiButton.js → EmojiRadioButton.js} +28 -19
- package/dist/cjs/components/common/EmojiUploadPicker.js +80 -37
- package/dist/cjs/components/common/EmojiUploadPreview.js +11 -2
- package/dist/cjs/components/common/FileChooser.js +2 -2
- package/dist/cjs/components/common/ResourcedEmojiComponent.js +4 -0
- package/dist/cjs/components/common/RetryableButton.js +7 -3
- package/dist/cjs/components/common/TonePreviewButton.js +44 -0
- package/dist/cjs/components/common/ToneSelector.js +53 -25
- package/dist/cjs/components/common/styles.js +45 -16
- package/dist/cjs/components/i18n.js +44 -4
- package/dist/cjs/components/picker/CategorySelector.js +112 -90
- package/dist/cjs/components/picker/CategoryTracker.js +0 -28
- package/dist/cjs/components/picker/EmojiPickerCategoryHeading.js +2 -1
- package/dist/cjs/components/picker/EmojiPickerComponent.js +33 -44
- package/dist/cjs/components/picker/EmojiPickerEmojiRow.js +32 -4
- package/dist/cjs/components/picker/EmojiPickerList.js +154 -88
- package/dist/cjs/components/picker/EmojiPickerListSearch.js +66 -117
- package/dist/cjs/components/picker/EmojiPickerVirtualItems.js +5 -2
- package/dist/cjs/components/picker/VirtualList.js +273 -171
- package/dist/cjs/components/picker/styles.js +43 -51
- package/dist/cjs/components/typeahead/EmojiTypeAheadComponent.js +0 -10
- package/dist/cjs/context/EmojiPickerListContext.js +33 -0
- package/dist/cjs/hooks/useEmojiPickerListContext.js +12 -0
- package/dist/cjs/hooks/useIsMounted.js +17 -0
- package/dist/cjs/i18n/cs.js +35 -34
- package/dist/cjs/i18n/da.js +35 -34
- package/dist/cjs/i18n/de.js +35 -34
- package/dist/cjs/i18n/en.js +35 -34
- package/dist/cjs/i18n/en_GB.js +35 -34
- package/dist/cjs/i18n/es.js +35 -34
- package/dist/cjs/i18n/fi.js +35 -34
- package/dist/cjs/i18n/fr.js +35 -34
- package/dist/cjs/i18n/hu.js +35 -34
- package/dist/cjs/i18n/it.js +35 -34
- package/dist/cjs/i18n/ja.js +35 -34
- package/dist/cjs/i18n/ko.js +35 -34
- package/dist/cjs/i18n/nb.js +35 -34
- package/dist/cjs/i18n/nl.js +35 -34
- package/dist/cjs/i18n/pl.js +35 -34
- package/dist/cjs/i18n/pt_BR.js +35 -34
- package/dist/cjs/i18n/ru.js +35 -34
- package/dist/cjs/i18n/sv.js +35 -34
- package/dist/cjs/i18n/th.js +35 -34
- package/dist/cjs/i18n/tr.js +35 -34
- package/dist/cjs/i18n/uk.js +35 -34
- package/dist/cjs/i18n/vi.js +35 -34
- package/dist/cjs/i18n/zh.js +35 -34
- package/dist/cjs/i18n/zh_TW.js +35 -34
- package/dist/cjs/types.js +7 -1
- package/dist/cjs/util/constants.js +43 -2
- package/dist/cjs/util/shared-styles.js +3 -4
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/api/EmojiResource.js +42 -26
- package/dist/es2019/api/media/TokenManager.js +4 -4
- package/dist/es2019/components/common/CachingEmoji.js +10 -3
- package/dist/es2019/components/common/Emoji.js +44 -11
- package/dist/es2019/components/common/EmojiActions.js +55 -24
- package/dist/es2019/components/common/EmojiErrorMessage.js +7 -3
- package/dist/es2019/components/common/EmojiPlaceholder.js +1 -0
- package/dist/es2019/components/common/EmojiRadioButton.js +54 -0
- package/dist/es2019/components/common/EmojiUploadPicker.js +75 -36
- package/dist/es2019/components/common/EmojiUploadPreview.js +11 -2
- package/dist/es2019/components/common/FileChooser.js +1 -1
- package/dist/es2019/components/common/ResourcedEmojiComponent.js +4 -0
- package/dist/es2019/components/common/RetryableButton.js +7 -3
- package/dist/es2019/components/common/TonePreviewButton.js +34 -0
- package/dist/es2019/components/common/ToneSelector.js +55 -21
- package/dist/es2019/components/common/styles.js +41 -10
- package/dist/es2019/components/i18n.js +44 -4
- package/dist/es2019/components/picker/CategorySelector.js +114 -89
- package/dist/es2019/components/picker/CategoryTracker.js +0 -24
- package/dist/es2019/components/picker/EmojiPickerCategoryHeading.js +2 -2
- package/dist/es2019/components/picker/EmojiPickerComponent.js +36 -46
- package/dist/es2019/components/picker/EmojiPickerEmojiRow.js +51 -21
- package/dist/es2019/components/picker/EmojiPickerList.js +113 -55
- package/dist/es2019/components/picker/EmojiPickerListSearch.js +61 -98
- package/dist/es2019/components/picker/EmojiPickerVirtualItems.js +4 -1
- package/dist/es2019/components/picker/VirtualList.js +247 -108
- package/dist/es2019/components/picker/styles.js +20 -28
- package/dist/es2019/components/typeahead/EmojiTypeAheadComponent.js +0 -10
- package/dist/es2019/context/EmojiPickerListContext.js +17 -0
- package/dist/es2019/hooks/useEmojiPickerListContext.js +3 -0
- package/dist/es2019/hooks/useIsMounted.js +11 -0
- package/dist/es2019/i18n/cs.js +35 -34
- package/dist/es2019/i18n/da.js +35 -34
- package/dist/es2019/i18n/de.js +35 -34
- package/dist/es2019/i18n/en.js +35 -34
- package/dist/es2019/i18n/en_GB.js +35 -34
- package/dist/es2019/i18n/es.js +35 -34
- package/dist/es2019/i18n/fi.js +35 -34
- package/dist/es2019/i18n/fr.js +35 -34
- package/dist/es2019/i18n/hu.js +35 -34
- package/dist/es2019/i18n/it.js +35 -34
- package/dist/es2019/i18n/ja.js +35 -34
- package/dist/es2019/i18n/ko.js +35 -34
- package/dist/es2019/i18n/nb.js +35 -34
- package/dist/es2019/i18n/nl.js +35 -34
- package/dist/es2019/i18n/pl.js +35 -34
- package/dist/es2019/i18n/pt_BR.js +35 -34
- package/dist/es2019/i18n/ru.js +35 -34
- package/dist/es2019/i18n/sv.js +35 -34
- package/dist/es2019/i18n/th.js +35 -34
- package/dist/es2019/i18n/tr.js +35 -34
- package/dist/es2019/i18n/uk.js +35 -34
- package/dist/es2019/i18n/vi.js +35 -34
- package/dist/es2019/i18n/zh.js +35 -34
- package/dist/es2019/i18n/zh_TW.js +35 -34
- package/dist/es2019/types.js +5 -0
- package/dist/es2019/util/constants.js +32 -0
- package/dist/es2019/util/shared-styles.js +1 -2
- package/dist/es2019/version.json +1 -1
- package/dist/esm/api/EmojiResource.js +42 -26
- package/dist/esm/api/media/TokenManager.js +4 -4
- package/dist/esm/components/common/CachingEmoji.js +14 -6
- package/dist/esm/components/common/Emoji.js +48 -12
- package/dist/esm/components/common/EmojiActions.js +62 -26
- package/dist/esm/components/common/EmojiErrorMessage.js +7 -3
- package/dist/esm/components/common/EmojiPlaceholder.js +1 -0
- package/dist/esm/components/common/EmojiRadioButton.js +52 -0
- package/dist/esm/components/common/EmojiUploadPicker.js +77 -36
- package/dist/esm/components/common/EmojiUploadPreview.js +11 -2
- package/dist/esm/components/common/FileChooser.js +1 -1
- package/dist/esm/components/common/ResourcedEmojiComponent.js +4 -0
- package/dist/esm/components/common/RetryableButton.js +7 -3
- package/dist/esm/components/common/TonePreviewButton.js +33 -0
- package/dist/esm/components/common/ToneSelector.js +49 -18
- package/dist/esm/components/common/styles.js +40 -12
- package/dist/esm/components/i18n.js +44 -4
- package/dist/esm/components/picker/CategorySelector.js +114 -95
- package/dist/esm/components/picker/CategoryTracker.js +0 -28
- package/dist/esm/components/picker/EmojiPickerCategoryHeading.js +2 -2
- package/dist/esm/components/picker/EmojiPickerComponent.js +35 -46
- package/dist/esm/components/picker/EmojiPickerEmojiRow.js +32 -4
- package/dist/esm/components/picker/EmojiPickerList.js +156 -86
- package/dist/esm/components/picker/EmojiPickerListSearch.js +64 -117
- package/dist/esm/components/picker/EmojiPickerVirtualItems.js +5 -2
- package/dist/esm/components/picker/VirtualList.js +274 -172
- package/dist/esm/components/picker/styles.js +37 -45
- package/dist/esm/components/typeahead/EmojiTypeAheadComponent.js +0 -10
- package/dist/esm/context/EmojiPickerListContext.js +21 -0
- package/dist/esm/hooks/useEmojiPickerListContext.js +5 -0
- package/dist/esm/hooks/useIsMounted.js +11 -0
- package/dist/esm/i18n/cs.js +35 -34
- package/dist/esm/i18n/da.js +35 -34
- package/dist/esm/i18n/de.js +35 -34
- package/dist/esm/i18n/en.js +35 -34
- package/dist/esm/i18n/en_GB.js +35 -34
- package/dist/esm/i18n/es.js +35 -34
- package/dist/esm/i18n/fi.js +35 -34
- package/dist/esm/i18n/fr.js +35 -34
- package/dist/esm/i18n/hu.js +35 -34
- package/dist/esm/i18n/it.js +35 -34
- package/dist/esm/i18n/ja.js +35 -34
- package/dist/esm/i18n/ko.js +35 -34
- package/dist/esm/i18n/nb.js +35 -34
- package/dist/esm/i18n/nl.js +35 -34
- package/dist/esm/i18n/pl.js +35 -34
- package/dist/esm/i18n/pt_BR.js +35 -34
- package/dist/esm/i18n/ru.js +35 -34
- package/dist/esm/i18n/sv.js +35 -34
- package/dist/esm/i18n/th.js +35 -34
- package/dist/esm/i18n/tr.js +35 -34
- package/dist/esm/i18n/uk.js +35 -34
- package/dist/esm/i18n/vi.js +35 -34
- package/dist/esm/i18n/zh.js +35 -34
- package/dist/esm/i18n/zh_TW.js +35 -34
- package/dist/esm/types.js +5 -0
- package/dist/esm/util/constants.js +32 -0
- package/dist/esm/util/shared-styles.js +1 -2
- package/dist/esm/version.json +1 -1
- package/dist/types/api/EmojiResource.d.ts +2 -0
- package/dist/types/components/common/Emoji.d.ts +7 -1
- package/dist/types/components/common/EmojiActions.d.ts +4 -3
- package/dist/types/components/common/{EmojiButton.d.ts → EmojiRadioButton.d.ts} +3 -4
- package/dist/types/components/common/EmojiUploadPicker.d.ts +6 -4
- package/dist/types/components/common/RetryableButton.d.ts +1 -0
- package/dist/types/components/common/TonePreviewButton.d.ts +14 -0
- package/dist/types/components/common/ToneSelector.d.ts +8 -5
- package/dist/types/components/common/internal-types.d.ts +9 -0
- package/dist/types/components/common/styles.d.ts +2 -1
- package/dist/types/components/i18n.d.ts +40 -0
- package/dist/types/components/picker/CategorySelector.d.ts +3 -10
- package/dist/types/components/picker/CategoryTracker.d.ts +0 -2
- package/dist/types/components/picker/EmojiPickerCategoryHeading.d.ts +2 -1
- package/dist/types/components/picker/EmojiPickerEmojiRow.d.ts +5 -0
- package/dist/types/components/picker/EmojiPickerList.d.ts +14 -7
- package/dist/types/components/picker/EmojiPickerListSearch.d.ts +4 -8
- package/dist/types/components/picker/EmojiPickerVirtualItems.d.ts +1 -1
- package/dist/types/components/picker/VirtualList.d.ts +7 -24
- package/dist/types/components/picker/styles.d.ts +1 -1
- package/dist/types/context/EmojiPickerListContext.d.ts +10 -0
- package/dist/types/hooks/useEmojiPickerListContext.d.ts +1 -0
- package/dist/types/hooks/useIsMounted.d.ts +1 -0
- package/dist/types/i18n/cs.d.ts +34 -34
- package/dist/types/i18n/da.d.ts +34 -34
- package/dist/types/i18n/de.d.ts +34 -34
- package/dist/types/i18n/en.d.ts +34 -34
- package/dist/types/i18n/en_GB.d.ts +34 -34
- package/dist/types/i18n/es.d.ts +34 -34
- package/dist/types/i18n/fi.d.ts +34 -34
- package/dist/types/i18n/fr.d.ts +34 -34
- package/dist/types/i18n/hu.d.ts +34 -34
- package/dist/types/i18n/it.d.ts +34 -34
- package/dist/types/i18n/ja.d.ts +34 -34
- package/dist/types/i18n/ko.d.ts +34 -34
- package/dist/types/i18n/nb.d.ts +34 -34
- package/dist/types/i18n/nl.d.ts +34 -34
- package/dist/types/i18n/pl.d.ts +34 -34
- package/dist/types/i18n/pt_BR.d.ts +34 -34
- package/dist/types/i18n/ru.d.ts +34 -34
- package/dist/types/i18n/sv.d.ts +34 -34
- package/dist/types/i18n/th.d.ts +34 -34
- package/dist/types/i18n/tr.d.ts +34 -34
- package/dist/types/i18n/uk.d.ts +34 -34
- package/dist/types/i18n/vi.d.ts +34 -34
- package/dist/types/i18n/zh.d.ts +34 -34
- package/dist/types/i18n/zh_TW.d.ts +34 -34
- package/dist/types/types.d.ts +5 -0
- package/dist/types/util/constants.d.ts +28 -0
- package/dist/types/util/shared-styles.d.ts +1 -1
- package/dist/types/util/type-helpers.d.ts +1 -1
- package/package.json +12 -8
- package/report.api.md +62 -1
- package/README.md +0 -3
- package/dist/cjs/components/hooks.js +0 -14
- package/dist/es2019/components/common/EmojiButton.js +0 -49
- package/dist/es2019/components/hooks.js +0 -8
- package/dist/esm/components/common/EmojiButton.js +0 -43
- package/dist/esm/components/hooks.js +0 -8
- package/dist/types/components/hooks.d.ts +0 -1
|
@@ -21,7 +21,7 @@ import { ProviderTypes } from '../types';
|
|
|
21
21
|
import EmojiLoader from './EmojiLoader';
|
|
22
22
|
import EmojiRepository from './EmojiRepository';
|
|
23
23
|
import SiteEmojiResource from './media/SiteEmojiResource';
|
|
24
|
-
import { sampledUfoEmojiResourceFetched } from '../util/analytics/ufoExperiences';
|
|
24
|
+
import { sampledUfoEmojiResourceFetched, ufoExperiences } from '../util/analytics/ufoExperiences';
|
|
25
25
|
/**
|
|
26
26
|
* Checks if the emojiProvider can support uploading at a feature level.
|
|
27
27
|
*
|
|
@@ -41,6 +41,7 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
41
41
|
_classCallCheck(this, EmojiResource);
|
|
42
42
|
_this = _super.call(this);
|
|
43
43
|
_defineProperty(_assertThisInitialized(_this), "activeLoaders", 0);
|
|
44
|
+
_defineProperty(_assertThisInitialized(_this), "initialLoaders", 0);
|
|
44
45
|
_defineProperty(_assertThisInitialized(_this), "retries", new Map());
|
|
45
46
|
_defineProperty(_assertThisInitialized(_this), "isInitialised", false);
|
|
46
47
|
_defineProperty(_assertThisInitialized(_this), "getOptimisticImageURL", function (emojiId) {
|
|
@@ -49,8 +50,11 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
49
50
|
}
|
|
50
51
|
return;
|
|
51
52
|
});
|
|
53
|
+
_defineProperty(_assertThisInitialized(_this), "isRepositoryAvailable", function (repository) {
|
|
54
|
+
return !!repository;
|
|
55
|
+
});
|
|
52
56
|
_defineProperty(_assertThisInitialized(_this), "isLoaded", function () {
|
|
53
|
-
return _this.
|
|
57
|
+
return _this.initialLoaders !== 0 && _this.activeLoaders === 0;
|
|
54
58
|
});
|
|
55
59
|
_this.emojiProviderConfig = config;
|
|
56
60
|
_this.recordConfig = config.recordConfig;
|
|
@@ -61,6 +65,7 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
61
65
|
if (config.providers.length === 0) {
|
|
62
66
|
throw new Error('No providers specified');
|
|
63
67
|
}
|
|
68
|
+
_this.initialLoaders = _this.emojiProviderConfig.providers.length;
|
|
64
69
|
_this.activeLoaders = _this.emojiProviderConfig.providers.length;
|
|
65
70
|
_this.emojiResponses = [];
|
|
66
71
|
return _this;
|
|
@@ -184,7 +189,7 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
184
189
|
switch (_context3.prev = _context3.next) {
|
|
185
190
|
case 0:
|
|
186
191
|
force = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : false;
|
|
187
|
-
if (!(force || !this.emojiRepository && !this.isInitialised)) {
|
|
192
|
+
if (!(force || !this.isRepositoryAvailable(this.emojiRepository) && !this.isInitialised)) {
|
|
188
193
|
_context3.next = 6;
|
|
189
194
|
break;
|
|
190
195
|
}
|
|
@@ -218,7 +223,7 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
218
223
|
while (1) {
|
|
219
224
|
switch (_context4.prev = _context4.next) {
|
|
220
225
|
case 0:
|
|
221
|
-
if (!(this.
|
|
226
|
+
if (!(this.isLoaded() && this.isRepositoryAvailable(this.emojiRepository))) {
|
|
222
227
|
_context4.next = 8;
|
|
223
228
|
break;
|
|
224
229
|
}
|
|
@@ -256,7 +261,7 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
256
261
|
}
|
|
257
262
|
return _context4.abrupt("return");
|
|
258
263
|
case 17:
|
|
259
|
-
if (this.siteEmojiResource) {
|
|
264
|
+
if (this.isRepositoryAvailable(this.siteEmojiResource)) {
|
|
260
265
|
_context4.next = 20;
|
|
261
266
|
break;
|
|
262
267
|
}
|
|
@@ -326,7 +331,7 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
326
331
|
}, {
|
|
327
332
|
key: "initSiteEmojiResource",
|
|
328
333
|
value: function initSiteEmojiResource(emojiResponse, provider) {
|
|
329
|
-
if (!this.siteEmojiResource && emojiResponse.mediaApiToken) {
|
|
334
|
+
if (!this.isRepositoryAvailable(this.siteEmojiResource) && emojiResponse.mediaApiToken) {
|
|
330
335
|
this.siteEmojiResource = new SiteEmojiResource(provider, emojiResponse.mediaApiToken);
|
|
331
336
|
|
|
332
337
|
// Prime cache type + optimistic rendering by checking first Emoji.
|
|
@@ -424,7 +429,7 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
424
429
|
while (1) {
|
|
425
430
|
switch (_context5.prev = _context5.next) {
|
|
426
431
|
case 0:
|
|
427
|
-
if (!(this.siteEmojiResource && isMediaRepresentation(emoji.representation))) {
|
|
432
|
+
if (!(this.isRepositoryAvailable(this.siteEmojiResource) && isMediaRepresentation(emoji.representation))) {
|
|
428
433
|
_context5.next = 5;
|
|
429
434
|
break;
|
|
430
435
|
}
|
|
@@ -454,7 +459,7 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
454
459
|
}, {
|
|
455
460
|
key: "loadMediaEmoji",
|
|
456
461
|
value: function loadMediaEmoji(emoji, useAlt) {
|
|
457
|
-
if (!this.siteEmojiResource || !isMediaEmoji(emoji)) {
|
|
462
|
+
if (!this.isRepositoryAvailable(this.siteEmojiResource) || !isMediaEmoji(emoji)) {
|
|
458
463
|
return emoji;
|
|
459
464
|
}
|
|
460
465
|
return this.siteEmojiResource.loadMediaEmoji(emoji, useAlt);
|
|
@@ -465,7 +470,7 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
465
470
|
if (!isMediaEmoji(emoji)) {
|
|
466
471
|
return true;
|
|
467
472
|
}
|
|
468
|
-
if (!this.siteEmojiResource) {
|
|
473
|
+
if (!this.isRepositoryAvailable(this.siteEmojiResource)) {
|
|
469
474
|
// Shouldn't have a media emoji without a siteEmojiResouce, but anyway ;)
|
|
470
475
|
return false;
|
|
471
476
|
}
|
|
@@ -479,12 +484,23 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
479
484
|
}, {
|
|
480
485
|
key: "filter",
|
|
481
486
|
value: function filter(query, options) {
|
|
487
|
+
ufoExperiences['emoji-searched'].start();
|
|
488
|
+
ufoExperiences['emoji-searched'].addMetadata({
|
|
489
|
+
queryLength: (query === null || query === void 0 ? void 0 : query.length) || 0
|
|
490
|
+
});
|
|
482
491
|
this.lastQuery = {
|
|
483
492
|
query: query,
|
|
484
493
|
options: options
|
|
485
494
|
};
|
|
486
|
-
if (this.emojiRepository) {
|
|
487
|
-
this.
|
|
495
|
+
if (this.isRepositoryAvailable(this.emojiRepository)) {
|
|
496
|
+
var searchResults = this.emojiRepository.search(query, options);
|
|
497
|
+
this.notifyResult(searchResults);
|
|
498
|
+
ufoExperiences['emoji-searched'].success({
|
|
499
|
+
metadata: {
|
|
500
|
+
emojisLength: searchResults.emojis.length,
|
|
501
|
+
source: (options === null || options === void 0 ? void 0 : options.source) || 'typeahead'
|
|
502
|
+
}
|
|
503
|
+
});
|
|
488
504
|
} else {
|
|
489
505
|
// not ready
|
|
490
506
|
this.notifyNotReady();
|
|
@@ -494,7 +510,7 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
494
510
|
key: "findByShortName",
|
|
495
511
|
value: function findByShortName(shortName) {
|
|
496
512
|
var _this4 = this;
|
|
497
|
-
if (this.isLoaded()) {
|
|
513
|
+
if (this.isLoaded() && this.isRepositoryAvailable(this.emojiRepository)) {
|
|
498
514
|
// Wait for all emoji to load before looking by shortName (to ensure correct priority)
|
|
499
515
|
return this.emojiRepository.findByShortName(shortName);
|
|
500
516
|
}
|
|
@@ -508,7 +524,7 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
508
524
|
var _this5 = this;
|
|
509
525
|
var id = emojiId.id,
|
|
510
526
|
shortName = emojiId.shortName;
|
|
511
|
-
if (this.emojiRepository) {
|
|
527
|
+
if (this.isRepositoryAvailable(this.emojiRepository)) {
|
|
512
528
|
if (id) {
|
|
513
529
|
var emoji = this.emojiRepository.findById(id);
|
|
514
530
|
if (emoji) {
|
|
@@ -517,7 +533,7 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
517
533
|
if (this.isLoaded()) {
|
|
518
534
|
// all loaded but not found by id, try server to see if
|
|
519
535
|
// this is a newly uploaded emoji
|
|
520
|
-
if (this.siteEmojiResource) {
|
|
536
|
+
if (this.isRepositoryAvailable(this.siteEmojiResource)) {
|
|
521
537
|
return this.siteEmojiResource.findEmoji(emojiId).then(function (emoji) {
|
|
522
538
|
if (!emoji) {
|
|
523
539
|
// if not, fallback to searching by shortName to
|
|
@@ -546,7 +562,7 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
546
562
|
key: "findById",
|
|
547
563
|
value: function findById(id) {
|
|
548
564
|
var _this6 = this;
|
|
549
|
-
if (this.isLoaded()) {
|
|
565
|
+
if (this.isLoaded() && this.isRepositoryAvailable(this.emojiRepository)) {
|
|
550
566
|
return this.emojiRepository.findById(id);
|
|
551
567
|
}
|
|
552
568
|
return this.retryIfLoading(function () {
|
|
@@ -557,7 +573,7 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
557
573
|
key: "findInCategory",
|
|
558
574
|
value: function findInCategory(categoryId) {
|
|
559
575
|
var _this7 = this;
|
|
560
|
-
if (this.isLoaded()) {
|
|
576
|
+
if (this.isLoaded() && this.isRepositoryAvailable(this.emojiRepository)) {
|
|
561
577
|
return Promise.resolve(this.emojiRepository.findInCategory(categoryId));
|
|
562
578
|
}
|
|
563
579
|
return this.retryIfLoading(function () {
|
|
@@ -568,7 +584,7 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
568
584
|
key: "getAsciiMap",
|
|
569
585
|
value: function getAsciiMap() {
|
|
570
586
|
var _this8 = this;
|
|
571
|
-
if (this.isLoaded()) {
|
|
587
|
+
if (this.isLoaded() && this.isRepositoryAvailable(this.emojiRepository)) {
|
|
572
588
|
return Promise.resolve(this.emojiRepository.getAsciiMap());
|
|
573
589
|
}
|
|
574
590
|
return this.retryIfLoading(function () {
|
|
@@ -579,7 +595,7 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
579
595
|
key: "getFrequentlyUsed",
|
|
580
596
|
value: function getFrequentlyUsed(options) {
|
|
581
597
|
var _this9 = this;
|
|
582
|
-
if (this.isLoaded()) {
|
|
598
|
+
if (this.isLoaded() && this.isRepositoryAvailable(this.emojiRepository)) {
|
|
583
599
|
return Promise.resolve(this.emojiRepository.getFrequentlyUsed(options));
|
|
584
600
|
}
|
|
585
601
|
return this.retryIfLoading(function () {
|
|
@@ -598,7 +614,7 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
598
614
|
key: "recordSelection",
|
|
599
615
|
value: function recordSelection(emoji) {
|
|
600
616
|
var recordConfig = this.recordConfig;
|
|
601
|
-
if (this.emojiRepository) {
|
|
617
|
+
if (this.isRepositoryAvailable(this.emojiRepository)) {
|
|
602
618
|
this.emojiRepository.used(emoji);
|
|
603
619
|
}
|
|
604
620
|
if (recordConfig) {
|
|
@@ -619,9 +635,9 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
619
635
|
key: "deleteSiteEmoji",
|
|
620
636
|
value: function deleteSiteEmoji(emoji) {
|
|
621
637
|
var _this10 = this;
|
|
622
|
-
if (this.siteEmojiResource && emoji.id) {
|
|
638
|
+
if (this.isRepositoryAvailable(this.siteEmojiResource) && emoji.id) {
|
|
623
639
|
return this.siteEmojiResource.deleteEmoji(emoji).then(function (success) {
|
|
624
|
-
if (success && _this10.emojiRepository) {
|
|
640
|
+
if (success && _this10.isRepositoryAvailable(_this10.emojiRepository)) {
|
|
625
641
|
_this10.emojiRepository.delete(emoji);
|
|
626
642
|
return true;
|
|
627
643
|
}
|
|
@@ -661,7 +677,7 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
661
677
|
key: "calculateDynamicCategories",
|
|
662
678
|
value: function calculateDynamicCategories() {
|
|
663
679
|
var _this11 = this;
|
|
664
|
-
if (this.isLoaded()) {
|
|
680
|
+
if (this.isLoaded() && this.isRepositoryAvailable(this.emojiRepository)) {
|
|
665
681
|
return Promise.resolve(this.emojiRepository.getDynamicCategoryList());
|
|
666
682
|
}
|
|
667
683
|
return this.retryIfLoading(function () {
|
|
@@ -676,7 +692,7 @@ export var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
676
692
|
}, {
|
|
677
693
|
key: "addUnknownEmoji",
|
|
678
694
|
value: function addUnknownEmoji(emoji) {
|
|
679
|
-
if (this.emojiRepository) {
|
|
695
|
+
if (this.isRepositoryAvailable(this.emojiRepository)) {
|
|
680
696
|
this.emojiRepository.addUnknownEmoji(emoji);
|
|
681
697
|
}
|
|
682
698
|
}
|
|
@@ -700,7 +716,7 @@ var UploadingEmojiResource = /*#__PURE__*/function (_EmojiResource) {
|
|
|
700
716
|
if (!this.allowUpload) {
|
|
701
717
|
return Promise.resolve(false);
|
|
702
718
|
}
|
|
703
|
-
if (this.siteEmojiResource) {
|
|
719
|
+
if (this.isRepositoryAvailable(this.siteEmojiResource)) {
|
|
704
720
|
return this.siteEmojiResource.hasUploadToken();
|
|
705
721
|
}
|
|
706
722
|
return this.retryIfLoading(function () {
|
|
@@ -713,7 +729,7 @@ var UploadingEmojiResource = /*#__PURE__*/function (_EmojiResource) {
|
|
|
713
729
|
var _this14 = this;
|
|
714
730
|
var retry = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
715
731
|
return this.isUploadSupported().then(function (supported) {
|
|
716
|
-
if (!supported || !_this14.siteEmojiResource) {
|
|
732
|
+
if (!supported || !_this14.isRepositoryAvailable(_this14.siteEmojiResource)) {
|
|
717
733
|
return Promise.reject('No media api support is configured');
|
|
718
734
|
}
|
|
719
735
|
return _this14.siteEmojiResource.uploadEmoji(upload, retry).then(function (emoji) {
|
|
@@ -727,7 +743,7 @@ var UploadingEmojiResource = /*#__PURE__*/function (_EmojiResource) {
|
|
|
727
743
|
key: "prepareForUpload",
|
|
728
744
|
value: function prepareForUpload() {
|
|
729
745
|
var _this15 = this;
|
|
730
|
-
if (this.siteEmojiResource) {
|
|
746
|
+
if (this.isRepositoryAvailable(this.siteEmojiResource)) {
|
|
731
747
|
this.siteEmojiResource.prepareForUpload();
|
|
732
748
|
}
|
|
733
749
|
return this.retryIfLoading(function () {
|
|
@@ -50,10 +50,10 @@ var TokenManager = /*#__PURE__*/function () {
|
|
|
50
50
|
// still valid
|
|
51
51
|
return Promise.resolve(mediaApiToken);
|
|
52
52
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
}
|
|
54
|
+
if (activeTokenRefresh) {
|
|
55
|
+
// refresh token promise already active, return that
|
|
56
|
+
return activeTokenRefresh;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
// request a new token and track the promise for future requests until completed
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import _extends from "@babel/runtime/helpers/extends";
|
|
2
1
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
3
3
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
4
|
-
var _excluded = ["emoji", "placeholderSize",
|
|
4
|
+
var _excluded = ["emoji", "placeholderSize"],
|
|
5
|
+
_excluded2 = ["emoji", "placeholderSize", "showTooltip", "fitToHeight", "children"];
|
|
5
6
|
import React, { memo, useEffect, useState } from 'react';
|
|
6
7
|
import { isMediaEmoji } from '../../util/type-helpers';
|
|
7
8
|
import { UfoEmojiTimings } from '../../types';
|
|
@@ -21,7 +22,9 @@ import { extractErrorInfo } from '../../util/analytics/analytics';
|
|
|
21
22
|
export var CachingEmoji = function CachingEmoji(props) {
|
|
22
23
|
// Optimisation to only render CachingMediaEmoji if necessary
|
|
23
24
|
// slight performance hit, which accumulates for a large number of emoji.
|
|
24
|
-
var emoji = props.emoji
|
|
25
|
+
var emoji = props.emoji,
|
|
26
|
+
placeholderSize = props.placeholderSize,
|
|
27
|
+
restProps = _objectWithoutProperties(props, _excluded);
|
|
25
28
|
// start emoji rendered experience, it may have already started earlier in `ResourcedEmoji`.
|
|
26
29
|
useSampledUFOComponentExperience(ufoExperiences['emoji-rendered'].getInstance(emoji.id || emoji.shortName), SAMPLING_RATE_EMOJI_RENDERED_EXP, {
|
|
27
30
|
source: 'CachingEmoji',
|
|
@@ -35,9 +38,14 @@ export var CachingEmoji = function CachingEmoji(props) {
|
|
|
35
38
|
}, []);
|
|
36
39
|
var emojiNode = function emojiNode() {
|
|
37
40
|
if (isMediaEmoji(emoji)) {
|
|
38
|
-
return /*#__PURE__*/React.createElement(CachingMediaEmoji,
|
|
41
|
+
return /*#__PURE__*/React.createElement(CachingMediaEmoji, _extends({
|
|
42
|
+
emoji: emoji,
|
|
43
|
+
placeholderSize: placeholderSize
|
|
44
|
+
}, restProps));
|
|
39
45
|
}
|
|
40
|
-
return /*#__PURE__*/React.createElement(Emoji,
|
|
46
|
+
return /*#__PURE__*/React.createElement(Emoji, _extends({
|
|
47
|
+
emoji: emoji
|
|
48
|
+
}, restProps));
|
|
41
49
|
};
|
|
42
50
|
return /*#__PURE__*/React.createElement(UfoErrorBoundary, {
|
|
43
51
|
experiences: [ufoExperiences['emoji-rendered'].getInstance(props.emoji.id || props.emoji.shortName)]
|
|
@@ -54,7 +62,7 @@ export var CachingMediaEmoji = function CachingMediaEmoji(props) {
|
|
|
54
62
|
showTooltip = props.showTooltip,
|
|
55
63
|
fitToHeight = props.fitToHeight,
|
|
56
64
|
children = props.children,
|
|
57
|
-
restProps = _objectWithoutProperties(props,
|
|
65
|
+
restProps = _objectWithoutProperties(props, _excluded2);
|
|
58
66
|
var shortName = emoji.shortName,
|
|
59
67
|
representation = emoji.representation;
|
|
60
68
|
var _useState = useState(),
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import _extends from "@babel/runtime/helpers/extends";
|
|
2
1
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
3
3
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
4
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
5
|
+
var _excluded = ["emoji", "fitToHeight", "selected", "selectOnHover", "className", "showTooltip", "shouldBeInteractive", "tabIndex", "onSelected", "onMouseMove", "onFocus", "onDelete", "onLoadError", "onLoadSuccess", "showDelete", "disableLazyLoad", "autoWidth"],
|
|
6
|
+
_excluded2 = ["emoji", "fitToHeight", "selected", "selectOnHover", "className", "showTooltip", "showDelete", "shouldBeInteractive", "tabIndex", "onSelected", "onMouseMove", "onFocus", "onDelete", "onLoadError", "onLoadSuccess", "disableLazyLoad", "autoWidth"];
|
|
4
7
|
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; }
|
|
5
8
|
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; }
|
|
6
9
|
/** @jsx jsx */
|
|
@@ -48,6 +51,13 @@ var handleMouseMove = function handleMouseMove(props, event) {
|
|
|
48
51
|
onMouseMove(toEmojiId(emoji), emoji, event);
|
|
49
52
|
}
|
|
50
53
|
};
|
|
54
|
+
var handleFocus = function handleFocus(props, event) {
|
|
55
|
+
var emoji = props.emoji,
|
|
56
|
+
onFocus = props.onFocus;
|
|
57
|
+
if (onFocus) {
|
|
58
|
+
onFocus(toEmojiId(emoji), emoji, event);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
51
61
|
var handleDelete = function handleDelete(props, event) {
|
|
52
62
|
var emoji = props.emoji,
|
|
53
63
|
onDelete = props.onDelete;
|
|
@@ -79,7 +89,19 @@ export var SpriteEmoji = function SpriteEmoji(props) {
|
|
|
79
89
|
selectOnHover = props.selectOnHover,
|
|
80
90
|
className = props.className,
|
|
81
91
|
showTooltip = props.showTooltip,
|
|
82
|
-
|
|
92
|
+
_props$shouldBeIntera = props.shouldBeInteractive,
|
|
93
|
+
shouldBeInteractive = _props$shouldBeIntera === void 0 ? false : _props$shouldBeIntera,
|
|
94
|
+
tabIndex = props.tabIndex,
|
|
95
|
+
onSelected = props.onSelected,
|
|
96
|
+
onMouseMove = props.onMouseMove,
|
|
97
|
+
onFocus = props.onFocus,
|
|
98
|
+
onDelete = props.onDelete,
|
|
99
|
+
onLoadError = props.onLoadError,
|
|
100
|
+
onLoadSuccess = props.onLoadSuccess,
|
|
101
|
+
showDelete = props.showDelete,
|
|
102
|
+
disableLazyLoad = props.disableLazyLoad,
|
|
103
|
+
autoWidth = props.autoWidth,
|
|
104
|
+
other = _objectWithoutProperties(props, _excluded);
|
|
83
105
|
var representation = emoji.representation;
|
|
84
106
|
var sprite = representation.sprite;
|
|
85
107
|
var classes = "".concat(emojiNodeStyles, " ").concat(selected ? commonSelectedStyles : '', " ").concat(selectOnHover ? selectOnHoverStyles : '', " ").concat(className ? className : '');
|
|
@@ -99,11 +121,11 @@ export var SpriteEmoji = function SpriteEmoji(props) {
|
|
|
99
121
|
backgroundPosition: "".concat(xPositionInPercent, "% ").concat(yPositionInPercent, "%"),
|
|
100
122
|
backgroundSize: "".concat(sprite.column * 100, "% ").concat(sprite.row * 100, "%")
|
|
101
123
|
}, sizing);
|
|
102
|
-
return jsx("span", {
|
|
124
|
+
return jsx("span", _extends({
|
|
103
125
|
"data-testid": "sprite-emoji-".concat(emoji.shortName),
|
|
104
126
|
"data-emoji-type": "sprite",
|
|
105
|
-
tabIndex: shouldBeInteractive ? 0 : undefined,
|
|
106
|
-
role: shouldBeInteractive ? 'button' :
|
|
127
|
+
tabIndex: shouldBeInteractive ? tabIndex || 0 : undefined,
|
|
128
|
+
role: shouldBeInteractive ? 'button' : 'img',
|
|
107
129
|
css: emojiContainer,
|
|
108
130
|
className: classes,
|
|
109
131
|
onKeyPress: function onKeyPress(event) {
|
|
@@ -115,9 +137,12 @@ export var SpriteEmoji = function SpriteEmoji(props) {
|
|
|
115
137
|
onMouseEnter: function onMouseEnter(event) {
|
|
116
138
|
handleMouseMove(props, event);
|
|
117
139
|
},
|
|
140
|
+
onFocus: function onFocus(event) {
|
|
141
|
+
handleFocus(props, event);
|
|
142
|
+
},
|
|
118
143
|
"aria-label": emoji.shortName,
|
|
119
144
|
title: showTooltip ? emoji.shortName : ''
|
|
120
|
-
}, jsx("span", {
|
|
145
|
+
}, other), jsx("span", {
|
|
121
146
|
className: emojiSprite,
|
|
122
147
|
style: style
|
|
123
148
|
}, "\xA0"));
|
|
@@ -132,10 +157,18 @@ export var ImageEmoji = function ImageEmoji(props) {
|
|
|
132
157
|
className = props.className,
|
|
133
158
|
showTooltip = props.showTooltip,
|
|
134
159
|
showDelete = props.showDelete,
|
|
135
|
-
|
|
160
|
+
_props$shouldBeIntera2 = props.shouldBeInteractive,
|
|
161
|
+
shouldBeInteractive = _props$shouldBeIntera2 === void 0 ? false : _props$shouldBeIntera2,
|
|
162
|
+
tabIndex = props.tabIndex,
|
|
163
|
+
onSelected = props.onSelected,
|
|
164
|
+
onMouseMove = props.onMouseMove,
|
|
165
|
+
onFocus = props.onFocus,
|
|
166
|
+
onDelete = props.onDelete,
|
|
167
|
+
onLoadError = props.onLoadError,
|
|
136
168
|
onLoadSuccess = props.onLoadSuccess,
|
|
137
169
|
disableLazyLoad = props.disableLazyLoad,
|
|
138
|
-
autoWidth = props.autoWidth
|
|
170
|
+
autoWidth = props.autoWidth,
|
|
171
|
+
other = _objectWithoutProperties(props, _excluded2);
|
|
139
172
|
var _useInView = useInView({
|
|
140
173
|
triggerOnce: true
|
|
141
174
|
}),
|
|
@@ -233,12 +266,12 @@ export var ImageEmoji = function ImageEmoji(props) {
|
|
|
233
266
|
onError: onError,
|
|
234
267
|
onLoad: onLoad
|
|
235
268
|
}, sizing));
|
|
236
|
-
return jsx("span", {
|
|
269
|
+
return jsx("span", _extends({
|
|
237
270
|
"data-testid": "image-emoji-".concat(emoji.shortName),
|
|
238
271
|
"data-emoji-type": "image",
|
|
239
272
|
css: emojiStyles,
|
|
240
|
-
tabIndex: shouldBeInteractive ? 0 : undefined,
|
|
241
|
-
role: shouldBeInteractive ? 'button' :
|
|
273
|
+
tabIndex: shouldBeInteractive ? tabIndex || 0 : undefined,
|
|
274
|
+
role: shouldBeInteractive ? 'button' : 'img',
|
|
242
275
|
className: classes,
|
|
243
276
|
onKeyPress: function onKeyPress(event) {
|
|
244
277
|
return handleKeyPress(props, event);
|
|
@@ -249,10 +282,13 @@ export var ImageEmoji = function ImageEmoji(props) {
|
|
|
249
282
|
onMouseEnter: function onMouseEnter(event) {
|
|
250
283
|
handleMouseMove(props, event);
|
|
251
284
|
},
|
|
285
|
+
onFocus: function onFocus(event) {
|
|
286
|
+
handleFocus(props, event);
|
|
287
|
+
},
|
|
252
288
|
"aria-label": emoji.shortName,
|
|
253
289
|
title: showTooltip ? emoji.shortName : '',
|
|
254
290
|
ref: ref
|
|
255
|
-
}, deleteButton, emojiNode);
|
|
291
|
+
}, other), deleteButton, emojiNode);
|
|
256
292
|
};
|
|
257
293
|
export var Emoji = function Emoji(props) {
|
|
258
294
|
var emoji = props.emoji;
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
3
|
/** @jsx jsx */
|
|
4
|
-
import { Fragment, useState } from 'react';
|
|
4
|
+
import { Fragment, useState, useRef, useEffect, memo } from 'react';
|
|
5
5
|
import { jsx } from '@emotion/react';
|
|
6
6
|
import { FormattedMessage, injectIntl } from 'react-intl-next';
|
|
7
7
|
import EmojiDeletePreview from '../common/EmojiDeletePreview';
|
|
8
8
|
import EmojiUploadPicker from '../common/EmojiUploadPicker';
|
|
9
|
-
import EmojiPickerListSearch from '../picker/EmojiPickerListSearch';
|
|
9
|
+
import { EmojiPickerListSearch } from '../picker/EmojiPickerListSearch';
|
|
10
10
|
import ToneSelector from './ToneSelector';
|
|
11
|
-
import
|
|
11
|
+
import TonePreviewButton from './TonePreviewButton';
|
|
12
12
|
import { messages } from '../i18n';
|
|
13
13
|
import AkButton from '@atlaskit/button/standard-button';
|
|
14
14
|
import AddIcon from '@atlaskit/icon/glyph/add';
|
|
15
15
|
import { setSkinToneAriaLabelText } from './setSkinToneAriaLabelText';
|
|
16
16
|
import { addCustomEmoji, addCustomEmojiButton, emojiActionsWrapper, emojiPickerAddEmoji, emojiToneSelectorContainer } from './styles';
|
|
17
17
|
import { emojiActionsContainerWithBottomShadow, emojiPickerFooter } from '../picker/styles';
|
|
18
|
+
import { DEFAULT_TONE } from '../../util/constants';
|
|
18
19
|
export var emojiActionsTestId = 'emoji-actions';
|
|
19
20
|
export var uploadEmojiTestId = 'upload-emoji';
|
|
20
21
|
|
|
@@ -22,8 +23,7 @@ export var uploadEmojiTestId = 'upload-emoji';
|
|
|
22
23
|
|
|
23
24
|
var AddOwnEmoji = function AddOwnEmoji(props) {
|
|
24
25
|
var onOpenUpload = props.onOpenUpload,
|
|
25
|
-
uploadEnabled = props.uploadEnabled
|
|
26
|
-
formatMessage = props.intl.formatMessage;
|
|
26
|
+
uploadEnabled = props.uploadEnabled;
|
|
27
27
|
return jsx(Fragment, null, uploadEnabled && jsx("div", {
|
|
28
28
|
css: addCustomEmoji,
|
|
29
29
|
"data-testid": uploadEmojiTestId
|
|
@@ -31,44 +31,73 @@ var AddOwnEmoji = function AddOwnEmoji(props) {
|
|
|
31
31
|
return jsx(AkButton, {
|
|
32
32
|
onClick: onOpenUpload,
|
|
33
33
|
iconBefore: jsx(AddIcon, {
|
|
34
|
-
label:
|
|
34
|
+
label: "",
|
|
35
35
|
size: "small"
|
|
36
36
|
}),
|
|
37
37
|
appearance: "subtle",
|
|
38
38
|
css: addCustomEmojiButton,
|
|
39
|
-
className: emojiPickerAddEmoji
|
|
39
|
+
className: emojiPickerAddEmoji,
|
|
40
|
+
tabIndex: 0,
|
|
41
|
+
id: "add-custom-emoji"
|
|
40
42
|
}, label);
|
|
41
43
|
})));
|
|
42
44
|
};
|
|
43
45
|
var TonesWrapper = function TonesWrapper(props) {
|
|
44
46
|
var toneEmoji = props.toneEmoji,
|
|
45
|
-
selectedTone = props.selectedTone,
|
|
47
|
+
_props$selectedTone = props.selectedTone,
|
|
48
|
+
selectedTone = _props$selectedTone === void 0 ? DEFAULT_TONE : _props$selectedTone,
|
|
46
49
|
intl = props.intl,
|
|
47
|
-
onToneSelected = props.onToneSelected,
|
|
48
50
|
onToneOpen = props.onToneOpen,
|
|
49
51
|
showToneSelector = props.showToneSelector;
|
|
50
52
|
var formatMessage = intl.formatMessage;
|
|
53
|
+
var tonePreviewButtonRef = useRef(null);
|
|
54
|
+
var _useState = useState(false),
|
|
55
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
56
|
+
focusTonePreviewButton = _useState2[0],
|
|
57
|
+
setFocusTonePreviewButton = _useState2[1];
|
|
58
|
+
useEffect(function () {
|
|
59
|
+
if (focusTonePreviewButton && tonePreviewButtonRef.current) {
|
|
60
|
+
tonePreviewButtonRef.current.focus();
|
|
61
|
+
}
|
|
62
|
+
return function () {
|
|
63
|
+
setFocusTonePreviewButton(false);
|
|
64
|
+
};
|
|
65
|
+
});
|
|
66
|
+
var onToneCloseHandler = function onToneCloseHandler() {
|
|
67
|
+
var onToneClose = props.onToneClose;
|
|
68
|
+
onToneClose();
|
|
69
|
+
setFocusTonePreviewButton(true);
|
|
70
|
+
};
|
|
71
|
+
var onToneSelectedHandler = function onToneSelectedHandler(toneValue) {
|
|
72
|
+
var onToneSelected = props.onToneSelected;
|
|
73
|
+
onToneSelected(toneValue);
|
|
74
|
+
setFocusTonePreviewButton(true);
|
|
75
|
+
};
|
|
51
76
|
if (!toneEmoji) {
|
|
52
77
|
return null;
|
|
53
78
|
}
|
|
54
|
-
var
|
|
55
|
-
if (selectedTone &&
|
|
56
|
-
|
|
79
|
+
var previewToneEmoji = toneEmoji;
|
|
80
|
+
if (selectedTone !== DEFAULT_TONE && previewToneEmoji.skinVariations) {
|
|
81
|
+
previewToneEmoji = previewToneEmoji.skinVariations[selectedTone - 1];
|
|
57
82
|
}
|
|
58
83
|
return jsx("div", {
|
|
59
84
|
css: emojiToneSelectorContainer
|
|
60
|
-
},
|
|
85
|
+
}, jsx(ToneSelector, {
|
|
61
86
|
emoji: toneEmoji,
|
|
62
|
-
onToneSelected:
|
|
63
|
-
|
|
64
|
-
|
|
87
|
+
onToneSelected: onToneSelectedHandler,
|
|
88
|
+
onToneClose: onToneCloseHandler,
|
|
89
|
+
selectedTone: selectedTone,
|
|
90
|
+
isVisible: showToneSelector
|
|
91
|
+
}), jsx(TonePreviewButton, {
|
|
92
|
+
ref: tonePreviewButtonRef,
|
|
65
93
|
ariaExpanded: showToneSelector,
|
|
66
|
-
emoji:
|
|
94
|
+
emoji: previewToneEmoji,
|
|
67
95
|
selectOnHover: true,
|
|
68
96
|
onSelected: onToneOpen,
|
|
69
97
|
ariaLabelText: formatMessage(messages.emojiSelectSkinToneButtonAriaLabelText, {
|
|
70
|
-
selectedTone: "".concat(setSkinToneAriaLabelText(
|
|
71
|
-
})
|
|
98
|
+
selectedTone: "".concat(setSkinToneAriaLabelText(previewToneEmoji.name))
|
|
99
|
+
}),
|
|
100
|
+
isVisible: !showToneSelector
|
|
72
101
|
}));
|
|
73
102
|
};
|
|
74
103
|
export var EmojiActions = function EmojiActions(props) {
|
|
@@ -84,15 +113,20 @@ export var EmojiActions = function EmojiActions(props) {
|
|
|
84
113
|
onFileChooserClicked = props.onFileChooserClicked,
|
|
85
114
|
emojiToDelete = props.emojiToDelete,
|
|
86
115
|
onChange = props.onChange,
|
|
87
|
-
query = props.query
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
116
|
+
query = props.query,
|
|
117
|
+
_props$resultsCount = props.resultsCount,
|
|
118
|
+
resultsCount = _props$resultsCount === void 0 ? 0 : _props$resultsCount;
|
|
119
|
+
var _useState3 = useState(false),
|
|
120
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
121
|
+
showToneSelector = _useState4[0],
|
|
122
|
+
setShowToneSelector = _useState4[1];
|
|
92
123
|
var previewFooterClassnames = [emojiPickerFooter, emojiActionsContainerWithBottomShadow];
|
|
93
124
|
var onToneOpenHandler = function onToneOpenHandler() {
|
|
94
125
|
return setShowToneSelector(true);
|
|
95
126
|
};
|
|
127
|
+
var onToneCloseHandler = function onToneCloseHandler() {
|
|
128
|
+
return setShowToneSelector(false);
|
|
129
|
+
};
|
|
96
130
|
var onToneSelectedHandler = function onToneSelectedHandler(toneValue) {
|
|
97
131
|
setShowToneSelector(false);
|
|
98
132
|
if (onToneSelected) {
|
|
@@ -133,11 +167,13 @@ export var EmojiActions = function EmojiActions(props) {
|
|
|
133
167
|
css: emojiActionsWrapper
|
|
134
168
|
}, !showToneSelector && jsx(EmojiPickerListSearch, {
|
|
135
169
|
onChange: onChange,
|
|
136
|
-
query: query
|
|
170
|
+
query: query,
|
|
171
|
+
resultsCount: resultsCount
|
|
137
172
|
}), jsx(TonesWrapper, _extends({}, props, {
|
|
138
173
|
onToneOpen: onToneOpenHandler,
|
|
174
|
+
onToneClose: onToneCloseHandler,
|
|
139
175
|
onToneSelected: onToneSelectedHandler,
|
|
140
176
|
showToneSelector: showToneSelector
|
|
141
177
|
}))), jsx(AddOwnEmoji, props));
|
|
142
178
|
};
|
|
143
|
-
export default injectIntl(EmojiActions);
|
|
179
|
+
export default injectIntl( /*#__PURE__*/memo(EmojiActions));
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/** @jsx jsx */
|
|
2
|
-
|
|
2
|
+
import { Fragment } from 'react';
|
|
3
3
|
import { jsx } from '@emotion/react';
|
|
4
4
|
import Tooltip from '@atlaskit/tooltip';
|
|
5
5
|
import ErrorIcon from '@atlaskit/icon/glyph/error';
|
|
6
|
+
import VisuallyHidden from '@atlaskit/visually-hidden';
|
|
6
7
|
export var emojiErrorMessageTestId = 'emoji-error-message';
|
|
7
8
|
export var emojiErrorMessageTooltipTestId = 'emoji-error-message-tooltip';
|
|
8
9
|
export var emojiErrorIconTestId = 'emoji-error-icon';
|
|
@@ -10,7 +11,7 @@ var EmojiErrorMessage = function EmojiErrorMessage(props) {
|
|
|
10
11
|
var messageStyles = props.messageStyles,
|
|
11
12
|
message = props.message,
|
|
12
13
|
tooltip = props.tooltip;
|
|
13
|
-
|
|
14
|
+
var visualContent = tooltip ? jsx("div", {
|
|
14
15
|
css: messageStyles,
|
|
15
16
|
"data-testid": emojiErrorMessageTestId
|
|
16
17
|
}, jsx(Tooltip, {
|
|
@@ -27,6 +28,9 @@ var EmojiErrorMessage = function EmojiErrorMessage(props) {
|
|
|
27
28
|
}, jsx(ErrorIcon, {
|
|
28
29
|
label: "Error",
|
|
29
30
|
size: "small"
|
|
30
|
-
}),
|
|
31
|
+
}), message);
|
|
32
|
+
return jsx(Fragment, null, jsx(VisuallyHidden, {
|
|
33
|
+
role: "alert"
|
|
34
|
+
}, message), visualContent);
|
|
31
35
|
};
|
|
32
36
|
export default EmojiErrorMessage;
|
|
@@ -34,6 +34,7 @@ var EmojiPlaceholder = function EmojiPlaceholder(props) {
|
|
|
34
34
|
return jsx("span", {
|
|
35
35
|
"data-testid": emojiPlaceholderTestId(shortName),
|
|
36
36
|
"aria-busy": loading,
|
|
37
|
+
role: "status",
|
|
37
38
|
"aria-label": shortName,
|
|
38
39
|
className: placeholder,
|
|
39
40
|
css: loading ? [placeholderContainer, placeholderContainerAnimated] : placeholderContainer,
|