@atlaskit/emoji 67.1.0 → 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 +23 -0
- package/dist/cjs/api/EmojiResource.js +29 -24
- 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 +60 -24
- 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 +13 -7
- package/dist/cjs/components/picker/EmojiPickerEmojiRow.js +32 -4
- package/dist/cjs/components/picker/EmojiPickerList.js +140 -51
- package/dist/cjs/components/picker/EmojiPickerListSearch.js +16 -3
- package/dist/cjs/components/picker/EmojiPickerVirtualItems.js +5 -2
- package/dist/cjs/components/picker/VirtualList.js +196 -14
- package/dist/cjs/components/picker/styles.js +43 -51
- package/dist/cjs/context/EmojiPickerListContext.js +33 -0
- package/dist/cjs/hooks/useEmojiPickerListContext.js +12 -0
- package/dist/cjs/util/constants.js +40 -1
- package/dist/cjs/util/shared-styles.js +3 -4
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/api/EmojiResource.js +29 -24
- 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 +54 -23
- 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 +14 -7
- package/dist/es2019/components/picker/EmojiPickerEmojiRow.js +51 -21
- package/dist/es2019/components/picker/EmojiPickerList.js +102 -21
- package/dist/es2019/components/picker/EmojiPickerListSearch.js +14 -4
- package/dist/es2019/components/picker/EmojiPickerVirtualItems.js +4 -1
- package/dist/es2019/components/picker/VirtualList.js +193 -12
- package/dist/es2019/components/picker/styles.js +20 -28
- package/dist/es2019/context/EmojiPickerListContext.js +17 -0
- package/dist/es2019/hooks/useEmojiPickerListContext.js +3 -0
- package/dist/es2019/util/constants.js +31 -0
- package/dist/es2019/util/shared-styles.js +1 -2
- package/dist/es2019/version.json +1 -1
- package/dist/esm/api/EmojiResource.js +29 -24
- 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 +61 -25
- 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 +13 -7
- package/dist/esm/components/picker/EmojiPickerEmojiRow.js +32 -4
- package/dist/esm/components/picker/EmojiPickerList.js +141 -52
- package/dist/esm/components/picker/EmojiPickerListSearch.js +17 -4
- package/dist/esm/components/picker/EmojiPickerVirtualItems.js +5 -2
- package/dist/esm/components/picker/VirtualList.js +195 -12
- package/dist/esm/components/picker/styles.js +37 -45
- package/dist/esm/context/EmojiPickerListContext.js +21 -0
- package/dist/esm/hooks/useEmojiPickerListContext.js +5 -0
- package/dist/esm/util/constants.js +31 -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 +3 -2
- 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 +10 -5
- package/dist/types/components/picker/EmojiPickerListSearch.d.ts +1 -0
- package/dist/types/components/picker/EmojiPickerVirtualItems.d.ts +1 -1
- package/dist/types/components/picker/VirtualList.d.ts +2 -0
- 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/util/constants.d.ts +27 -0
- package/dist/types/util/shared-styles.d.ts +1 -1
- package/dist/types/util/type-helpers.d.ts +1 -1
- package/package.json +9 -6
- package/report.api.md +52 -1
- package/README.md +0 -3
- package/dist/es2019/components/common/EmojiButton.js +0 -49
- package/dist/esm/components/common/EmojiButton.js +0 -43
- /package/dist/cjs/{components/hooks.js → hooks/useIsMounted.js} +0 -0
- /package/dist/es2019/{components/hooks.js → hooks/useIsMounted.js} +0 -0
- /package/dist/esm/{components/hooks.js → hooks/useIsMounted.js} +0 -0
- /package/dist/types/{components/hooks.d.ts → hooks/useIsMounted.d.ts} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
# @atlaskit/emoji
|
|
2
2
|
|
|
3
|
+
## 67.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`2b2aa109521`](https://bitbucket.org/atlassian/atlassian-frontend/commits/2b2aa109521) - [ux] improve keyboard navigation in emoji picker list, improve category highlight logic in emoji picker
|
|
8
|
+
- [`7e3c38a86ef`](https://bitbucket.org/atlassian/atlassian-frontend/commits/7e3c38a86ef) - [ux] [COLLAB-2264] add arrow keys support for navigating categories selctor in emoji picker, used tabs structure for emoji picker with category selctor for better accessibility, added more aria-labels for category selector and picker list panel for accessibility, highlight first category in emoji picker at start
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- [`d06e5f9c381`](https://bitbucket.org/atlassian/atlassian-frontend/commits/d06e5f9c381) - Fixed accessibility issues in upload emoji journey flagged by axe and added accessibility tests
|
|
13
|
+
- [`2c650251e9a`](https://bitbucket.org/atlassian/atlassian-frontend/commits/2c650251e9a) - Improve uploading custom emoji experience for screen reader user
|
|
14
|
+
- [`ef218ded5ca`](https://bitbucket.org/atlassian/atlassian-frontend/commits/ef218ded5ca) - ResourcedEmoji component will fallback when provider fails to fetch
|
|
15
|
+
- [`37192cbc921`](https://bitbucket.org/atlassian/atlassian-frontend/commits/37192cbc921) - Scroll and focus on newly uploaded emoji in the picker list after uploading
|
|
16
|
+
- [`36f471471e3`](https://bitbucket.org/atlassian/atlassian-frontend/commits/36f471471e3) - fix scroll to category when click category in category toolbar
|
|
17
|
+
- [`ed20cc3d0d9`](https://bitbucket.org/atlassian/atlassian-frontend/commits/ed20cc3d0d9) - Changed 'Choose File' button in Emoji Picker to a standard button
|
|
18
|
+
- [`47c411e6564`](https://bitbucket.org/atlassian/atlassian-frontend/commits/47c411e6564) - [ux] [COLLAB-2281] Improve keyboard experience with tone selector, changes include allow arrow key nagivation, allow Tab key to close tone selector, focus on the selected/default tone when tone selector is expanded, focus on tone selector trigger button after closing tone selector
|
|
19
|
+
- [`2896c02e6cb`](https://bitbucket.org/atlassian/atlassian-frontend/commits/2896c02e6cb) - update aria attributes across emoji components to improve accessibility
|
|
20
|
+
- [`d4234822fb6`](https://bitbucket.org/atlassian/atlassian-frontend/commits/d4234822fb6) - [ux] Updated focus styling to align with Atlassian Design System styling
|
|
21
|
+
- [`221f0101322`](https://bitbucket.org/atlassian/atlassian-frontend/commits/221f0101322) - Fixes a bug where get token could be called multiple times while in flight
|
|
22
|
+
- [`1537683bd72`](https://bitbucket.org/atlassian/atlassian-frontend/commits/1537683bd72) - clean up css of emoji picker
|
|
23
|
+
- [`73b9fda49ad`](https://bitbucket.org/atlassian/atlassian-frontend/commits/73b9fda49ad) - Fixed accessibility issues in emoji picker flagged by axe
|
|
24
|
+
- Updated dependencies
|
|
25
|
+
|
|
3
26
|
## 67.1.0
|
|
4
27
|
|
|
5
28
|
### Minor Changes
|
|
@@ -49,6 +49,7 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
49
49
|
(0, _classCallCheck2.default)(this, EmojiResource);
|
|
50
50
|
_this = _super.call(this);
|
|
51
51
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "activeLoaders", 0);
|
|
52
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "initialLoaders", 0);
|
|
52
53
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "retries", new Map());
|
|
53
54
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isInitialised", false);
|
|
54
55
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "getOptimisticImageURL", function (emojiId) {
|
|
@@ -57,8 +58,11 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
57
58
|
}
|
|
58
59
|
return;
|
|
59
60
|
});
|
|
61
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isRepositoryAvailable", function (repository) {
|
|
62
|
+
return !!repository;
|
|
63
|
+
});
|
|
60
64
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isLoaded", function () {
|
|
61
|
-
return _this.
|
|
65
|
+
return _this.initialLoaders !== 0 && _this.activeLoaders === 0;
|
|
62
66
|
});
|
|
63
67
|
_this.emojiProviderConfig = config;
|
|
64
68
|
_this.recordConfig = config.recordConfig;
|
|
@@ -69,6 +73,7 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
69
73
|
if (config.providers.length === 0) {
|
|
70
74
|
throw new Error('No providers specified');
|
|
71
75
|
}
|
|
76
|
+
_this.initialLoaders = _this.emojiProviderConfig.providers.length;
|
|
72
77
|
_this.activeLoaders = _this.emojiProviderConfig.providers.length;
|
|
73
78
|
_this.emojiResponses = [];
|
|
74
79
|
return _this;
|
|
@@ -192,7 +197,7 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
192
197
|
switch (_context3.prev = _context3.next) {
|
|
193
198
|
case 0:
|
|
194
199
|
force = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : false;
|
|
195
|
-
if (!(force || !this.emojiRepository && !this.isInitialised)) {
|
|
200
|
+
if (!(force || !this.isRepositoryAvailable(this.emojiRepository) && !this.isInitialised)) {
|
|
196
201
|
_context3.next = 6;
|
|
197
202
|
break;
|
|
198
203
|
}
|
|
@@ -226,7 +231,7 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
226
231
|
while (1) {
|
|
227
232
|
switch (_context4.prev = _context4.next) {
|
|
228
233
|
case 0:
|
|
229
|
-
if (!(this.
|
|
234
|
+
if (!(this.isLoaded() && this.isRepositoryAvailable(this.emojiRepository))) {
|
|
230
235
|
_context4.next = 8;
|
|
231
236
|
break;
|
|
232
237
|
}
|
|
@@ -264,7 +269,7 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
264
269
|
}
|
|
265
270
|
return _context4.abrupt("return");
|
|
266
271
|
case 17:
|
|
267
|
-
if (this.siteEmojiResource) {
|
|
272
|
+
if (this.isRepositoryAvailable(this.siteEmojiResource)) {
|
|
268
273
|
_context4.next = 20;
|
|
269
274
|
break;
|
|
270
275
|
}
|
|
@@ -334,7 +339,7 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
334
339
|
}, {
|
|
335
340
|
key: "initSiteEmojiResource",
|
|
336
341
|
value: function initSiteEmojiResource(emojiResponse, provider) {
|
|
337
|
-
if (!this.siteEmojiResource && emojiResponse.mediaApiToken) {
|
|
342
|
+
if (!this.isRepositoryAvailable(this.siteEmojiResource) && emojiResponse.mediaApiToken) {
|
|
338
343
|
this.siteEmojiResource = new _SiteEmojiResource.default(provider, emojiResponse.mediaApiToken);
|
|
339
344
|
|
|
340
345
|
// Prime cache type + optimistic rendering by checking first Emoji.
|
|
@@ -432,7 +437,7 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
432
437
|
while (1) {
|
|
433
438
|
switch (_context5.prev = _context5.next) {
|
|
434
439
|
case 0:
|
|
435
|
-
if (!(this.siteEmojiResource && (0, _typeHelpers.isMediaRepresentation)(emoji.representation))) {
|
|
440
|
+
if (!(this.isRepositoryAvailable(this.siteEmojiResource) && (0, _typeHelpers.isMediaRepresentation)(emoji.representation))) {
|
|
436
441
|
_context5.next = 5;
|
|
437
442
|
break;
|
|
438
443
|
}
|
|
@@ -462,7 +467,7 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
462
467
|
}, {
|
|
463
468
|
key: "loadMediaEmoji",
|
|
464
469
|
value: function loadMediaEmoji(emoji, useAlt) {
|
|
465
|
-
if (!this.siteEmojiResource || !(0, _typeHelpers.isMediaEmoji)(emoji)) {
|
|
470
|
+
if (!this.isRepositoryAvailable(this.siteEmojiResource) || !(0, _typeHelpers.isMediaEmoji)(emoji)) {
|
|
466
471
|
return emoji;
|
|
467
472
|
}
|
|
468
473
|
return this.siteEmojiResource.loadMediaEmoji(emoji, useAlt);
|
|
@@ -473,7 +478,7 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
473
478
|
if (!(0, _typeHelpers.isMediaEmoji)(emoji)) {
|
|
474
479
|
return true;
|
|
475
480
|
}
|
|
476
|
-
if (!this.siteEmojiResource) {
|
|
481
|
+
if (!this.isRepositoryAvailable(this.siteEmojiResource)) {
|
|
477
482
|
// Shouldn't have a media emoji without a siteEmojiResouce, but anyway ;)
|
|
478
483
|
return false;
|
|
479
484
|
}
|
|
@@ -495,7 +500,7 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
495
500
|
query: query,
|
|
496
501
|
options: options
|
|
497
502
|
};
|
|
498
|
-
if (this.emojiRepository) {
|
|
503
|
+
if (this.isRepositoryAvailable(this.emojiRepository)) {
|
|
499
504
|
var searchResults = this.emojiRepository.search(query, options);
|
|
500
505
|
this.notifyResult(searchResults);
|
|
501
506
|
_ufoExperiences.ufoExperiences['emoji-searched'].success({
|
|
@@ -513,7 +518,7 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
513
518
|
key: "findByShortName",
|
|
514
519
|
value: function findByShortName(shortName) {
|
|
515
520
|
var _this4 = this;
|
|
516
|
-
if (this.isLoaded()) {
|
|
521
|
+
if (this.isLoaded() && this.isRepositoryAvailable(this.emojiRepository)) {
|
|
517
522
|
// Wait for all emoji to load before looking by shortName (to ensure correct priority)
|
|
518
523
|
return this.emojiRepository.findByShortName(shortName);
|
|
519
524
|
}
|
|
@@ -527,7 +532,7 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
527
532
|
var _this5 = this;
|
|
528
533
|
var id = emojiId.id,
|
|
529
534
|
shortName = emojiId.shortName;
|
|
530
|
-
if (this.emojiRepository) {
|
|
535
|
+
if (this.isRepositoryAvailable(this.emojiRepository)) {
|
|
531
536
|
if (id) {
|
|
532
537
|
var emoji = this.emojiRepository.findById(id);
|
|
533
538
|
if (emoji) {
|
|
@@ -536,7 +541,7 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
536
541
|
if (this.isLoaded()) {
|
|
537
542
|
// all loaded but not found by id, try server to see if
|
|
538
543
|
// this is a newly uploaded emoji
|
|
539
|
-
if (this.siteEmojiResource) {
|
|
544
|
+
if (this.isRepositoryAvailable(this.siteEmojiResource)) {
|
|
540
545
|
return this.siteEmojiResource.findEmoji(emojiId).then(function (emoji) {
|
|
541
546
|
if (!emoji) {
|
|
542
547
|
// if not, fallback to searching by shortName to
|
|
@@ -565,7 +570,7 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
565
570
|
key: "findById",
|
|
566
571
|
value: function findById(id) {
|
|
567
572
|
var _this6 = this;
|
|
568
|
-
if (this.isLoaded()) {
|
|
573
|
+
if (this.isLoaded() && this.isRepositoryAvailable(this.emojiRepository)) {
|
|
569
574
|
return this.emojiRepository.findById(id);
|
|
570
575
|
}
|
|
571
576
|
return this.retryIfLoading(function () {
|
|
@@ -576,7 +581,7 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
576
581
|
key: "findInCategory",
|
|
577
582
|
value: function findInCategory(categoryId) {
|
|
578
583
|
var _this7 = this;
|
|
579
|
-
if (this.isLoaded()) {
|
|
584
|
+
if (this.isLoaded() && this.isRepositoryAvailable(this.emojiRepository)) {
|
|
580
585
|
return Promise.resolve(this.emojiRepository.findInCategory(categoryId));
|
|
581
586
|
}
|
|
582
587
|
return this.retryIfLoading(function () {
|
|
@@ -587,7 +592,7 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
587
592
|
key: "getAsciiMap",
|
|
588
593
|
value: function getAsciiMap() {
|
|
589
594
|
var _this8 = this;
|
|
590
|
-
if (this.isLoaded()) {
|
|
595
|
+
if (this.isLoaded() && this.isRepositoryAvailable(this.emojiRepository)) {
|
|
591
596
|
return Promise.resolve(this.emojiRepository.getAsciiMap());
|
|
592
597
|
}
|
|
593
598
|
return this.retryIfLoading(function () {
|
|
@@ -598,7 +603,7 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
598
603
|
key: "getFrequentlyUsed",
|
|
599
604
|
value: function getFrequentlyUsed(options) {
|
|
600
605
|
var _this9 = this;
|
|
601
|
-
if (this.isLoaded()) {
|
|
606
|
+
if (this.isLoaded() && this.isRepositoryAvailable(this.emojiRepository)) {
|
|
602
607
|
return Promise.resolve(this.emojiRepository.getFrequentlyUsed(options));
|
|
603
608
|
}
|
|
604
609
|
return this.retryIfLoading(function () {
|
|
@@ -617,7 +622,7 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
617
622
|
key: "recordSelection",
|
|
618
623
|
value: function recordSelection(emoji) {
|
|
619
624
|
var recordConfig = this.recordConfig;
|
|
620
|
-
if (this.emojiRepository) {
|
|
625
|
+
if (this.isRepositoryAvailable(this.emojiRepository)) {
|
|
621
626
|
this.emojiRepository.used(emoji);
|
|
622
627
|
}
|
|
623
628
|
if (recordConfig) {
|
|
@@ -638,9 +643,9 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
638
643
|
key: "deleteSiteEmoji",
|
|
639
644
|
value: function deleteSiteEmoji(emoji) {
|
|
640
645
|
var _this10 = this;
|
|
641
|
-
if (this.siteEmojiResource && emoji.id) {
|
|
646
|
+
if (this.isRepositoryAvailable(this.siteEmojiResource) && emoji.id) {
|
|
642
647
|
return this.siteEmojiResource.deleteEmoji(emoji).then(function (success) {
|
|
643
|
-
if (success && _this10.emojiRepository) {
|
|
648
|
+
if (success && _this10.isRepositoryAvailable(_this10.emojiRepository)) {
|
|
644
649
|
_this10.emojiRepository.delete(emoji);
|
|
645
650
|
return true;
|
|
646
651
|
}
|
|
@@ -680,7 +685,7 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
680
685
|
key: "calculateDynamicCategories",
|
|
681
686
|
value: function calculateDynamicCategories() {
|
|
682
687
|
var _this11 = this;
|
|
683
|
-
if (this.isLoaded()) {
|
|
688
|
+
if (this.isLoaded() && this.isRepositoryAvailable(this.emojiRepository)) {
|
|
684
689
|
return Promise.resolve(this.emojiRepository.getDynamicCategoryList());
|
|
685
690
|
}
|
|
686
691
|
return this.retryIfLoading(function () {
|
|
@@ -695,7 +700,7 @@ var EmojiResource = /*#__PURE__*/function (_ref) {
|
|
|
695
700
|
}, {
|
|
696
701
|
key: "addUnknownEmoji",
|
|
697
702
|
value: function addUnknownEmoji(emoji) {
|
|
698
|
-
if (this.emojiRepository) {
|
|
703
|
+
if (this.isRepositoryAvailable(this.emojiRepository)) {
|
|
699
704
|
this.emojiRepository.addUnknownEmoji(emoji);
|
|
700
705
|
}
|
|
701
706
|
}
|
|
@@ -720,7 +725,7 @@ var UploadingEmojiResource = /*#__PURE__*/function (_EmojiResource) {
|
|
|
720
725
|
if (!this.allowUpload) {
|
|
721
726
|
return Promise.resolve(false);
|
|
722
727
|
}
|
|
723
|
-
if (this.siteEmojiResource) {
|
|
728
|
+
if (this.isRepositoryAvailable(this.siteEmojiResource)) {
|
|
724
729
|
return this.siteEmojiResource.hasUploadToken();
|
|
725
730
|
}
|
|
726
731
|
return this.retryIfLoading(function () {
|
|
@@ -733,7 +738,7 @@ var UploadingEmojiResource = /*#__PURE__*/function (_EmojiResource) {
|
|
|
733
738
|
var _this14 = this;
|
|
734
739
|
var retry = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
735
740
|
return this.isUploadSupported().then(function (supported) {
|
|
736
|
-
if (!supported || !_this14.siteEmojiResource) {
|
|
741
|
+
if (!supported || !_this14.isRepositoryAvailable(_this14.siteEmojiResource)) {
|
|
737
742
|
return Promise.reject('No media api support is configured');
|
|
738
743
|
}
|
|
739
744
|
return _this14.siteEmojiResource.uploadEmoji(upload, retry).then(function (emoji) {
|
|
@@ -747,7 +752,7 @@ var UploadingEmojiResource = /*#__PURE__*/function (_EmojiResource) {
|
|
|
747
752
|
key: "prepareForUpload",
|
|
748
753
|
value: function prepareForUpload() {
|
|
749
754
|
var _this15 = this;
|
|
750
|
-
if (this.siteEmojiResource) {
|
|
755
|
+
if (this.isRepositoryAvailable(this.siteEmojiResource)) {
|
|
751
756
|
this.siteEmojiResource.prepareForUpload();
|
|
752
757
|
}
|
|
753
758
|
return this.retryIfLoading(function () {
|
|
@@ -57,10 +57,10 @@ var TokenManager = /*#__PURE__*/function () {
|
|
|
57
57
|
// still valid
|
|
58
58
|
return Promise.resolve(mediaApiToken);
|
|
59
59
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
}
|
|
61
|
+
if (activeTokenRefresh) {
|
|
62
|
+
// refresh token promise already active, return that
|
|
63
|
+
return activeTokenRefresh;
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
// request a new token and track the promise for future requests until completed
|
|
@@ -6,8 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.default = exports.CachingMediaEmoji = exports.CachingEmoji = void 0;
|
|
9
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
9
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
11
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
12
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
13
|
var _typeHelpers = require("../../util/type-helpers");
|
|
@@ -21,7 +21,8 @@ var _constants = require("../../util/constants");
|
|
|
21
21
|
var _ufoExperiences = require("../../util/analytics/ufoExperiences");
|
|
22
22
|
var _useEmoji2 = require("../../hooks/useEmoji");
|
|
23
23
|
var _analytics2 = require("../../util/analytics/analytics");
|
|
24
|
-
var _excluded = ["emoji", "placeholderSize",
|
|
24
|
+
var _excluded = ["emoji", "placeholderSize"],
|
|
25
|
+
_excluded2 = ["emoji", "placeholderSize", "showTooltip", "fitToHeight", "children"];
|
|
25
26
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
26
27
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
27
28
|
/**
|
|
@@ -30,7 +31,9 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
30
31
|
var CachingEmoji = function CachingEmoji(props) {
|
|
31
32
|
// Optimisation to only render CachingMediaEmoji if necessary
|
|
32
33
|
// slight performance hit, which accumulates for a large number of emoji.
|
|
33
|
-
var emoji = props.emoji
|
|
34
|
+
var emoji = props.emoji,
|
|
35
|
+
placeholderSize = props.placeholderSize,
|
|
36
|
+
restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
|
|
34
37
|
// start emoji rendered experience, it may have already started earlier in `ResourcedEmoji`.
|
|
35
38
|
(0, _analytics.useSampledUFOComponentExperience)(_analytics.ufoExperiences['emoji-rendered'].getInstance(emoji.id || emoji.shortName), _constants.SAMPLING_RATE_EMOJI_RENDERED_EXP, {
|
|
36
39
|
source: 'CachingEmoji',
|
|
@@ -44,9 +47,14 @@ var CachingEmoji = function CachingEmoji(props) {
|
|
|
44
47
|
}, []);
|
|
45
48
|
var emojiNode = function emojiNode() {
|
|
46
49
|
if ((0, _typeHelpers.isMediaEmoji)(emoji)) {
|
|
47
|
-
return /*#__PURE__*/_react.default.createElement(CachingMediaEmoji,
|
|
50
|
+
return /*#__PURE__*/_react.default.createElement(CachingMediaEmoji, (0, _extends2.default)({
|
|
51
|
+
emoji: emoji,
|
|
52
|
+
placeholderSize: placeholderSize
|
|
53
|
+
}, restProps));
|
|
48
54
|
}
|
|
49
|
-
return /*#__PURE__*/_react.default.createElement(_Emoji.default,
|
|
55
|
+
return /*#__PURE__*/_react.default.createElement(_Emoji.default, (0, _extends2.default)({
|
|
56
|
+
emoji: emoji
|
|
57
|
+
}, restProps));
|
|
50
58
|
};
|
|
51
59
|
return /*#__PURE__*/_react.default.createElement(_UfoErrorBoundary.UfoErrorBoundary, {
|
|
52
60
|
experiences: [_analytics.ufoExperiences['emoji-rendered'].getInstance(props.emoji.id || props.emoji.shortName)]
|
|
@@ -64,7 +72,7 @@ var CachingMediaEmoji = function CachingMediaEmoji(props) {
|
|
|
64
72
|
showTooltip = props.showTooltip,
|
|
65
73
|
fitToHeight = props.fitToHeight,
|
|
66
74
|
children = props.children,
|
|
67
|
-
restProps = (0, _objectWithoutProperties2.default)(props,
|
|
75
|
+
restProps = (0, _objectWithoutProperties2.default)(props, _excluded2);
|
|
68
76
|
var shortName = emoji.shortName,
|
|
69
77
|
representation = emoji.representation;
|
|
70
78
|
var _useState = (0, _react.useState)(),
|
|
@@ -6,9 +6,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.default = exports.SpriteEmoji = exports.ImageEmoji = exports.Emoji = void 0;
|
|
9
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
9
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
12
13
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
14
|
var _react2 = require("@emotion/react");
|
|
14
15
|
var _EmojiUtils = require("../../api/EmojiUtils");
|
|
@@ -22,6 +23,8 @@ var _analytics = require("../../util/analytics");
|
|
|
22
23
|
var _browserSupport = require("../../util/browser-support");
|
|
23
24
|
var _useInView3 = require("../../util/useInView");
|
|
24
25
|
var _ufoExperiences = require("../../util/analytics/ufoExperiences");
|
|
26
|
+
var _excluded = ["emoji", "fitToHeight", "selected", "selectOnHover", "className", "showTooltip", "shouldBeInteractive", "tabIndex", "onSelected", "onMouseMove", "onFocus", "onDelete", "onLoadError", "onLoadSuccess", "showDelete", "disableLazyLoad", "autoWidth"],
|
|
27
|
+
_excluded2 = ["emoji", "fitToHeight", "selected", "selectOnHover", "className", "showTooltip", "showDelete", "shouldBeInteractive", "tabIndex", "onSelected", "onMouseMove", "onFocus", "onDelete", "onLoadError", "onLoadSuccess", "disableLazyLoad", "autoWidth"];
|
|
25
28
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
26
29
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
27
30
|
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; }
|
|
@@ -57,6 +60,13 @@ var handleMouseMove = function handleMouseMove(props, event) {
|
|
|
57
60
|
onMouseMove((0, _typeHelpers.toEmojiId)(emoji), emoji, event);
|
|
58
61
|
}
|
|
59
62
|
};
|
|
63
|
+
var handleFocus = function handleFocus(props, event) {
|
|
64
|
+
var emoji = props.emoji,
|
|
65
|
+
onFocus = props.onFocus;
|
|
66
|
+
if (onFocus) {
|
|
67
|
+
onFocus((0, _typeHelpers.toEmojiId)(emoji), emoji, event);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
60
70
|
var handleDelete = function handleDelete(props, event) {
|
|
61
71
|
var emoji = props.emoji,
|
|
62
72
|
onDelete = props.onDelete;
|
|
@@ -88,7 +98,19 @@ var SpriteEmoji = function SpriteEmoji(props) {
|
|
|
88
98
|
selectOnHover = props.selectOnHover,
|
|
89
99
|
className = props.className,
|
|
90
100
|
showTooltip = props.showTooltip,
|
|
91
|
-
|
|
101
|
+
_props$shouldBeIntera = props.shouldBeInteractive,
|
|
102
|
+
shouldBeInteractive = _props$shouldBeIntera === void 0 ? false : _props$shouldBeIntera,
|
|
103
|
+
tabIndex = props.tabIndex,
|
|
104
|
+
onSelected = props.onSelected,
|
|
105
|
+
onMouseMove = props.onMouseMove,
|
|
106
|
+
onFocus = props.onFocus,
|
|
107
|
+
onDelete = props.onDelete,
|
|
108
|
+
onLoadError = props.onLoadError,
|
|
109
|
+
onLoadSuccess = props.onLoadSuccess,
|
|
110
|
+
showDelete = props.showDelete,
|
|
111
|
+
disableLazyLoad = props.disableLazyLoad,
|
|
112
|
+
autoWidth = props.autoWidth,
|
|
113
|
+
other = (0, _objectWithoutProperties2.default)(props, _excluded);
|
|
92
114
|
var representation = emoji.representation;
|
|
93
115
|
var sprite = representation.sprite;
|
|
94
116
|
var classes = "".concat(_styles.emojiNodeStyles, " ").concat(selected ? _styles.commonSelectedStyles : '', " ").concat(selectOnHover ? _styles.selectOnHoverStyles : '', " ").concat(className ? className : '');
|
|
@@ -108,11 +130,11 @@ var SpriteEmoji = function SpriteEmoji(props) {
|
|
|
108
130
|
backgroundPosition: "".concat(xPositionInPercent, "% ").concat(yPositionInPercent, "%"),
|
|
109
131
|
backgroundSize: "".concat(sprite.column * 100, "% ").concat(sprite.row * 100, "%")
|
|
110
132
|
}, sizing);
|
|
111
|
-
return (0, _react2.jsx)("span", {
|
|
133
|
+
return (0, _react2.jsx)("span", (0, _extends2.default)({
|
|
112
134
|
"data-testid": "sprite-emoji-".concat(emoji.shortName),
|
|
113
135
|
"data-emoji-type": "sprite",
|
|
114
|
-
tabIndex: shouldBeInteractive ? 0 : undefined,
|
|
115
|
-
role: shouldBeInteractive ? 'button' :
|
|
136
|
+
tabIndex: shouldBeInteractive ? tabIndex || 0 : undefined,
|
|
137
|
+
role: shouldBeInteractive ? 'button' : 'img',
|
|
116
138
|
css: _styles.emojiContainer,
|
|
117
139
|
className: classes,
|
|
118
140
|
onKeyPress: function onKeyPress(event) {
|
|
@@ -124,9 +146,12 @@ var SpriteEmoji = function SpriteEmoji(props) {
|
|
|
124
146
|
onMouseEnter: function onMouseEnter(event) {
|
|
125
147
|
handleMouseMove(props, event);
|
|
126
148
|
},
|
|
149
|
+
onFocus: function onFocus(event) {
|
|
150
|
+
handleFocus(props, event);
|
|
151
|
+
},
|
|
127
152
|
"aria-label": emoji.shortName,
|
|
128
153
|
title: showTooltip ? emoji.shortName : ''
|
|
129
|
-
}, (0, _react2.jsx)("span", {
|
|
154
|
+
}, other), (0, _react2.jsx)("span", {
|
|
130
155
|
className: _styles.emojiSprite,
|
|
131
156
|
style: style
|
|
132
157
|
}, "\xA0"));
|
|
@@ -142,10 +167,18 @@ var ImageEmoji = function ImageEmoji(props) {
|
|
|
142
167
|
className = props.className,
|
|
143
168
|
showTooltip = props.showTooltip,
|
|
144
169
|
showDelete = props.showDelete,
|
|
145
|
-
|
|
170
|
+
_props$shouldBeIntera2 = props.shouldBeInteractive,
|
|
171
|
+
shouldBeInteractive = _props$shouldBeIntera2 === void 0 ? false : _props$shouldBeIntera2,
|
|
172
|
+
tabIndex = props.tabIndex,
|
|
173
|
+
onSelected = props.onSelected,
|
|
174
|
+
onMouseMove = props.onMouseMove,
|
|
175
|
+
onFocus = props.onFocus,
|
|
176
|
+
onDelete = props.onDelete,
|
|
177
|
+
onLoadError = props.onLoadError,
|
|
146
178
|
onLoadSuccess = props.onLoadSuccess,
|
|
147
179
|
disableLazyLoad = props.disableLazyLoad,
|
|
148
|
-
autoWidth = props.autoWidth
|
|
180
|
+
autoWidth = props.autoWidth,
|
|
181
|
+
other = (0, _objectWithoutProperties2.default)(props, _excluded2);
|
|
149
182
|
var _useInView = (0, _useInView3.useInView)({
|
|
150
183
|
triggerOnce: true
|
|
151
184
|
}),
|
|
@@ -243,12 +276,12 @@ var ImageEmoji = function ImageEmoji(props) {
|
|
|
243
276
|
onError: onError,
|
|
244
277
|
onLoad: onLoad
|
|
245
278
|
}, sizing));
|
|
246
|
-
return (0, _react2.jsx)("span", {
|
|
279
|
+
return (0, _react2.jsx)("span", (0, _extends2.default)({
|
|
247
280
|
"data-testid": "image-emoji-".concat(emoji.shortName),
|
|
248
281
|
"data-emoji-type": "image",
|
|
249
282
|
css: _styles.emojiStyles,
|
|
250
|
-
tabIndex: shouldBeInteractive ? 0 : undefined,
|
|
251
|
-
role: shouldBeInteractive ? 'button' :
|
|
283
|
+
tabIndex: shouldBeInteractive ? tabIndex || 0 : undefined,
|
|
284
|
+
role: shouldBeInteractive ? 'button' : 'img',
|
|
252
285
|
className: classes,
|
|
253
286
|
onKeyPress: function onKeyPress(event) {
|
|
254
287
|
return handleKeyPress(props, event);
|
|
@@ -259,10 +292,13 @@ var ImageEmoji = function ImageEmoji(props) {
|
|
|
259
292
|
onMouseEnter: function onMouseEnter(event) {
|
|
260
293
|
handleMouseMove(props, event);
|
|
261
294
|
},
|
|
295
|
+
onFocus: function onFocus(event) {
|
|
296
|
+
handleFocus(props, event);
|
|
297
|
+
},
|
|
262
298
|
"aria-label": emoji.shortName,
|
|
263
299
|
title: showTooltip ? emoji.shortName : '',
|
|
264
300
|
ref: ref
|
|
265
|
-
}, deleteButton, emojiNode);
|
|
301
|
+
}, other), deleteButton, emojiNode);
|
|
266
302
|
};
|
|
267
303
|
exports.ImageEmoji = ImageEmoji;
|
|
268
304
|
var Emoji = function Emoji(props) {
|
|
@@ -14,13 +14,14 @@ var _EmojiDeletePreview = _interopRequireDefault(require("../common/EmojiDeleteP
|
|
|
14
14
|
var _EmojiUploadPicker = _interopRequireDefault(require("../common/EmojiUploadPicker"));
|
|
15
15
|
var _EmojiPickerListSearch = require("../picker/EmojiPickerListSearch");
|
|
16
16
|
var _ToneSelector = _interopRequireDefault(require("./ToneSelector"));
|
|
17
|
-
var
|
|
17
|
+
var _TonePreviewButton = _interopRequireDefault(require("./TonePreviewButton"));
|
|
18
18
|
var _i18n = require("../i18n");
|
|
19
19
|
var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
|
|
20
20
|
var _add = _interopRequireDefault(require("@atlaskit/icon/glyph/add"));
|
|
21
21
|
var _setSkinToneAriaLabelText = require("./setSkinToneAriaLabelText");
|
|
22
22
|
var _styles = require("./styles");
|
|
23
23
|
var _styles2 = require("../picker/styles");
|
|
24
|
+
var _constants = require("../../util/constants");
|
|
24
25
|
/** @jsx jsx */
|
|
25
26
|
|
|
26
27
|
var emojiActionsTestId = 'emoji-actions';
|
|
@@ -31,8 +32,7 @@ var uploadEmojiTestId = 'upload-emoji';
|
|
|
31
32
|
exports.uploadEmojiTestId = uploadEmojiTestId;
|
|
32
33
|
var AddOwnEmoji = function AddOwnEmoji(props) {
|
|
33
34
|
var onOpenUpload = props.onOpenUpload,
|
|
34
|
-
uploadEnabled = props.uploadEnabled
|
|
35
|
-
formatMessage = props.intl.formatMessage;
|
|
35
|
+
uploadEnabled = props.uploadEnabled;
|
|
36
36
|
return (0, _react2.jsx)(_react.Fragment, null, uploadEnabled && (0, _react2.jsx)("div", {
|
|
37
37
|
css: _styles.addCustomEmoji,
|
|
38
38
|
"data-testid": uploadEmojiTestId
|
|
@@ -40,44 +40,73 @@ var AddOwnEmoji = function AddOwnEmoji(props) {
|
|
|
40
40
|
return (0, _react2.jsx)(_standardButton.default, {
|
|
41
41
|
onClick: onOpenUpload,
|
|
42
42
|
iconBefore: (0, _react2.jsx)(_add.default, {
|
|
43
|
-
label:
|
|
43
|
+
label: "",
|
|
44
44
|
size: "small"
|
|
45
45
|
}),
|
|
46
46
|
appearance: "subtle",
|
|
47
47
|
css: _styles.addCustomEmojiButton,
|
|
48
|
-
className: _styles.emojiPickerAddEmoji
|
|
48
|
+
className: _styles.emojiPickerAddEmoji,
|
|
49
|
+
tabIndex: 0,
|
|
50
|
+
id: "add-custom-emoji"
|
|
49
51
|
}, label);
|
|
50
52
|
})));
|
|
51
53
|
};
|
|
52
54
|
var TonesWrapper = function TonesWrapper(props) {
|
|
53
55
|
var toneEmoji = props.toneEmoji,
|
|
54
|
-
selectedTone = props.selectedTone,
|
|
56
|
+
_props$selectedTone = props.selectedTone,
|
|
57
|
+
selectedTone = _props$selectedTone === void 0 ? _constants.DEFAULT_TONE : _props$selectedTone,
|
|
55
58
|
intl = props.intl,
|
|
56
|
-
onToneSelected = props.onToneSelected,
|
|
57
59
|
onToneOpen = props.onToneOpen,
|
|
58
60
|
showToneSelector = props.showToneSelector;
|
|
59
61
|
var formatMessage = intl.formatMessage;
|
|
62
|
+
var tonePreviewButtonRef = (0, _react.useRef)(null);
|
|
63
|
+
var _useState = (0, _react.useState)(false),
|
|
64
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
65
|
+
focusTonePreviewButton = _useState2[0],
|
|
66
|
+
setFocusTonePreviewButton = _useState2[1];
|
|
67
|
+
(0, _react.useEffect)(function () {
|
|
68
|
+
if (focusTonePreviewButton && tonePreviewButtonRef.current) {
|
|
69
|
+
tonePreviewButtonRef.current.focus();
|
|
70
|
+
}
|
|
71
|
+
return function () {
|
|
72
|
+
setFocusTonePreviewButton(false);
|
|
73
|
+
};
|
|
74
|
+
});
|
|
75
|
+
var onToneCloseHandler = function onToneCloseHandler() {
|
|
76
|
+
var onToneClose = props.onToneClose;
|
|
77
|
+
onToneClose();
|
|
78
|
+
setFocusTonePreviewButton(true);
|
|
79
|
+
};
|
|
80
|
+
var onToneSelectedHandler = function onToneSelectedHandler(toneValue) {
|
|
81
|
+
var onToneSelected = props.onToneSelected;
|
|
82
|
+
onToneSelected(toneValue);
|
|
83
|
+
setFocusTonePreviewButton(true);
|
|
84
|
+
};
|
|
60
85
|
if (!toneEmoji) {
|
|
61
86
|
return null;
|
|
62
87
|
}
|
|
63
|
-
var
|
|
64
|
-
if (selectedTone &&
|
|
65
|
-
|
|
88
|
+
var previewToneEmoji = toneEmoji;
|
|
89
|
+
if (selectedTone !== _constants.DEFAULT_TONE && previewToneEmoji.skinVariations) {
|
|
90
|
+
previewToneEmoji = previewToneEmoji.skinVariations[selectedTone - 1];
|
|
66
91
|
}
|
|
67
92
|
return (0, _react2.jsx)("div", {
|
|
68
93
|
css: _styles.emojiToneSelectorContainer
|
|
69
|
-
},
|
|
94
|
+
}, (0, _react2.jsx)(_ToneSelector.default, {
|
|
70
95
|
emoji: toneEmoji,
|
|
71
|
-
onToneSelected:
|
|
72
|
-
|
|
73
|
-
|
|
96
|
+
onToneSelected: onToneSelectedHandler,
|
|
97
|
+
onToneClose: onToneCloseHandler,
|
|
98
|
+
selectedTone: selectedTone,
|
|
99
|
+
isVisible: showToneSelector
|
|
100
|
+
}), (0, _react2.jsx)(_TonePreviewButton.default, {
|
|
101
|
+
ref: tonePreviewButtonRef,
|
|
74
102
|
ariaExpanded: showToneSelector,
|
|
75
|
-
emoji:
|
|
103
|
+
emoji: previewToneEmoji,
|
|
76
104
|
selectOnHover: true,
|
|
77
105
|
onSelected: onToneOpen,
|
|
78
106
|
ariaLabelText: formatMessage(_i18n.messages.emojiSelectSkinToneButtonAriaLabelText, {
|
|
79
|
-
selectedTone: "".concat((0, _setSkinToneAriaLabelText.setSkinToneAriaLabelText)(
|
|
80
|
-
})
|
|
107
|
+
selectedTone: "".concat((0, _setSkinToneAriaLabelText.setSkinToneAriaLabelText)(previewToneEmoji.name))
|
|
108
|
+
}),
|
|
109
|
+
isVisible: !showToneSelector
|
|
81
110
|
}));
|
|
82
111
|
};
|
|
83
112
|
var EmojiActions = function EmojiActions(props) {
|
|
@@ -93,15 +122,20 @@ var EmojiActions = function EmojiActions(props) {
|
|
|
93
122
|
onFileChooserClicked = props.onFileChooserClicked,
|
|
94
123
|
emojiToDelete = props.emojiToDelete,
|
|
95
124
|
onChange = props.onChange,
|
|
96
|
-
query = props.query
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
125
|
+
query = props.query,
|
|
126
|
+
_props$resultsCount = props.resultsCount,
|
|
127
|
+
resultsCount = _props$resultsCount === void 0 ? 0 : _props$resultsCount;
|
|
128
|
+
var _useState3 = (0, _react.useState)(false),
|
|
129
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
130
|
+
showToneSelector = _useState4[0],
|
|
131
|
+
setShowToneSelector = _useState4[1];
|
|
101
132
|
var previewFooterClassnames = [_styles2.emojiPickerFooter, _styles2.emojiActionsContainerWithBottomShadow];
|
|
102
133
|
var onToneOpenHandler = function onToneOpenHandler() {
|
|
103
134
|
return setShowToneSelector(true);
|
|
104
135
|
};
|
|
136
|
+
var onToneCloseHandler = function onToneCloseHandler() {
|
|
137
|
+
return setShowToneSelector(false);
|
|
138
|
+
};
|
|
105
139
|
var onToneSelectedHandler = function onToneSelectedHandler(toneValue) {
|
|
106
140
|
setShowToneSelector(false);
|
|
107
141
|
if (onToneSelected) {
|
|
@@ -142,13 +176,15 @@ var EmojiActions = function EmojiActions(props) {
|
|
|
142
176
|
css: _styles.emojiActionsWrapper
|
|
143
177
|
}, !showToneSelector && (0, _react2.jsx)(_EmojiPickerListSearch.EmojiPickerListSearch, {
|
|
144
178
|
onChange: onChange,
|
|
145
|
-
query: query
|
|
179
|
+
query: query,
|
|
180
|
+
resultsCount: resultsCount
|
|
146
181
|
}), (0, _react2.jsx)(TonesWrapper, (0, _extends2.default)({}, props, {
|
|
147
182
|
onToneOpen: onToneOpenHandler,
|
|
183
|
+
onToneClose: onToneCloseHandler,
|
|
148
184
|
onToneSelected: onToneSelectedHandler,
|
|
149
185
|
showToneSelector: showToneSelector
|
|
150
186
|
}))), (0, _react2.jsx)(AddOwnEmoji, props));
|
|
151
187
|
};
|
|
152
188
|
exports.EmojiActions = EmojiActions;
|
|
153
|
-
var _default = (0, _reactIntlNext.injectIntl)(EmojiActions);
|
|
189
|
+
var _default = (0, _reactIntlNext.injectIntl)( /*#__PURE__*/(0, _react.memo)(EmojiActions));
|
|
154
190
|
exports.default = _default;
|