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