@atlaskit/emoji 67.0.4 → 67.0.6
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 +12 -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/package.json +6 -4
|
@@ -1,39 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = exports.EXPIRES_AT_LATENCY_IN_SECONDS = void 0;
|
|
9
|
-
|
|
10
8
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
9
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
10
|
var _utilServiceSupport = require("@atlaskit/util-service-support");
|
|
15
|
-
|
|
16
11
|
// expire 30 seconds early to factor in latency, slow services, etc
|
|
17
12
|
var EXPIRES_AT_LATENCY_IN_SECONDS = 30;
|
|
18
13
|
exports.EXPIRES_AT_LATENCY_IN_SECONDS = EXPIRES_AT_LATENCY_IN_SECONDS;
|
|
19
|
-
|
|
20
14
|
var TokenManager = /*#__PURE__*/function () {
|
|
21
15
|
function TokenManager(siteServiceConfig) {
|
|
22
16
|
(0, _classCallCheck2.default)(this, TokenManager);
|
|
23
17
|
this.siteServiceConfig = siteServiceConfig;
|
|
24
18
|
this.tokens = new Map();
|
|
25
19
|
}
|
|
26
|
-
|
|
27
20
|
(0, _createClass2.default)(TokenManager, [{
|
|
28
21
|
key: "isValidToken",
|
|
29
22
|
value: function isValidToken(mediaApiToken) {
|
|
30
23
|
var nowInSeconds = Date.now() / 1000;
|
|
31
24
|
var expiresAt = mediaApiToken.expiresAt - EXPIRES_AT_LATENCY_IN_SECONDS;
|
|
32
|
-
|
|
33
25
|
if (nowInSeconds < expiresAt) {
|
|
34
26
|
return true;
|
|
35
27
|
}
|
|
36
|
-
|
|
37
28
|
return false;
|
|
38
29
|
}
|
|
39
30
|
}, {
|
|
@@ -54,29 +45,25 @@ var TokenManager = /*#__PURE__*/function () {
|
|
|
54
45
|
key: "getToken",
|
|
55
46
|
value: function getToken(type, forceRefresh) {
|
|
56
47
|
var tokenDetail = this.tokens.get(type);
|
|
57
|
-
|
|
58
48
|
if (!tokenDetail) {
|
|
59
49
|
tokenDetail = {};
|
|
60
50
|
this.tokens.set(type, tokenDetail);
|
|
61
51
|
}
|
|
62
|
-
|
|
63
52
|
var _tokenDetail = tokenDetail,
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
53
|
+
mediaApiToken = _tokenDetail.mediaApiToken,
|
|
54
|
+
activeTokenRefresh = _tokenDetail.activeTokenRefresh;
|
|
67
55
|
if (mediaApiToken) {
|
|
68
56
|
if (this.isValidToken(mediaApiToken) && !forceRefresh) {
|
|
69
57
|
// still valid
|
|
70
58
|
return Promise.resolve(mediaApiToken);
|
|
71
59
|
}
|
|
72
|
-
|
|
73
60
|
if (activeTokenRefresh) {
|
|
74
61
|
// refresh token promise already active, return that
|
|
75
62
|
return activeTokenRefresh;
|
|
76
63
|
}
|
|
77
|
-
}
|
|
78
|
-
|
|
64
|
+
}
|
|
79
65
|
|
|
66
|
+
// request a new token and track the promise for future requests until completed
|
|
80
67
|
tokenDetail.activeTokenRefresh = this.fetchNewToken(type).then(function (token) {
|
|
81
68
|
tokenDetail.mediaApiToken = token;
|
|
82
69
|
tokenDetail.activeTokenRefresh = undefined;
|
|
@@ -87,5 +74,4 @@ var TokenManager = /*#__PURE__*/function () {
|
|
|
87
74
|
}]);
|
|
88
75
|
return TokenManager;
|
|
89
76
|
}();
|
|
90
|
-
|
|
91
77
|
exports.default = TokenManager;
|
|
@@ -1,58 +1,37 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports.default = exports.CachingMediaEmoji = exports.CachingEmoji = void 0;
|
|
11
|
-
|
|
12
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
-
|
|
14
10
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
|
-
|
|
16
11
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
17
|
-
|
|
18
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
19
|
-
|
|
20
13
|
var _typeHelpers = require("../../util/type-helpers");
|
|
21
|
-
|
|
22
14
|
var _types = require("../../types");
|
|
23
|
-
|
|
24
15
|
var _logger = _interopRequireDefault(require("../../util/logger"));
|
|
25
|
-
|
|
26
16
|
var _Emoji = _interopRequireDefault(require("./Emoji"));
|
|
27
|
-
|
|
28
17
|
var _EmojiPlaceholder = _interopRequireDefault(require("./EmojiPlaceholder"));
|
|
29
|
-
|
|
30
18
|
var _UfoErrorBoundary = require("./UfoErrorBoundary");
|
|
31
|
-
|
|
32
19
|
var _analytics = require("../../util/analytics");
|
|
33
|
-
|
|
34
20
|
var _constants = require("../../util/constants");
|
|
35
|
-
|
|
36
21
|
var _ufoExperiences = require("../../util/analytics/ufoExperiences");
|
|
37
|
-
|
|
38
22
|
var _useEmoji2 = require("../../hooks/useEmoji");
|
|
39
|
-
|
|
40
23
|
var _analytics2 = require("../../util/analytics/analytics");
|
|
41
|
-
|
|
42
24
|
var _excluded = ["emoji", "placeholderSize", "showTooltip", "fitToHeight", "children"];
|
|
43
|
-
|
|
44
25
|
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); }
|
|
45
|
-
|
|
46
26
|
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; }
|
|
47
|
-
|
|
48
27
|
/**
|
|
49
28
|
* Renders an emoji from a cached image, if required.
|
|
50
29
|
*/
|
|
51
30
|
var CachingEmoji = function CachingEmoji(props) {
|
|
52
31
|
// Optimisation to only render CachingMediaEmoji if necessary
|
|
53
32
|
// slight performance hit, which accumulates for a large number of emoji.
|
|
54
|
-
var emoji = props.emoji;
|
|
55
|
-
|
|
33
|
+
var emoji = props.emoji;
|
|
34
|
+
// start emoji rendered experience, it may have already started earlier in ResourcedEmoji
|
|
56
35
|
(0, _analytics.useSampledUFOComponentExperience)(_analytics.ufoExperiences['emoji-rendered'].getInstance(emoji.id || emoji.shortName), _constants.SAMPLING_RATE_EMOJI_RENDERED_EXP, {
|
|
57
36
|
source: 'CachingEmoji',
|
|
58
37
|
emojiId: emoji.id
|
|
@@ -60,53 +39,44 @@ var CachingEmoji = function CachingEmoji(props) {
|
|
|
60
39
|
(0, _react.useEffect)(function () {
|
|
61
40
|
if (!(0, _ufoExperiences.hasUfoMarked)((0, _analytics.sampledUfoRenderedEmoji)(emoji), 'fmp')) {
|
|
62
41
|
(0, _analytics.sampledUfoRenderedEmoji)(emoji).markFMP();
|
|
63
|
-
}
|
|
64
|
-
|
|
42
|
+
}
|
|
43
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
65
44
|
}, []);
|
|
66
|
-
|
|
67
45
|
var emojiNode = function emojiNode() {
|
|
68
46
|
if ((0, _typeHelpers.isMediaEmoji)(emoji)) {
|
|
69
47
|
return /*#__PURE__*/_react.default.createElement(CachingMediaEmoji, props);
|
|
70
48
|
}
|
|
71
|
-
|
|
72
49
|
return /*#__PURE__*/_react.default.createElement(_Emoji.default, props);
|
|
73
50
|
};
|
|
74
|
-
|
|
75
51
|
return /*#__PURE__*/_react.default.createElement(_UfoErrorBoundary.UfoErrorBoundary, {
|
|
76
52
|
experiences: [_analytics.ufoExperiences['emoji-rendered'].getInstance(props.emoji.id || props.emoji.shortName)]
|
|
77
53
|
}, emojiNode());
|
|
78
54
|
};
|
|
55
|
+
|
|
79
56
|
/**
|
|
80
57
|
* Rendering a media emoji image from a cache for media emoji, with different
|
|
81
58
|
* rendering paths depending on caching strategy.
|
|
82
59
|
*/
|
|
83
|
-
|
|
84
|
-
|
|
85
60
|
exports.CachingEmoji = CachingEmoji;
|
|
86
|
-
|
|
87
61
|
var CachingMediaEmoji = function CachingMediaEmoji(props) {
|
|
88
62
|
var emoji = props.emoji,
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
63
|
+
placeholderSize = props.placeholderSize,
|
|
64
|
+
showTooltip = props.showTooltip,
|
|
65
|
+
fitToHeight = props.fitToHeight,
|
|
66
|
+
children = props.children,
|
|
67
|
+
restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
|
|
94
68
|
var shortName = emoji.shortName,
|
|
95
|
-
|
|
96
|
-
|
|
69
|
+
representation = emoji.representation;
|
|
97
70
|
var _useState = (0, _react.useState)(),
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
71
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
72
|
+
cachedEmoji = _useState2[0],
|
|
73
|
+
setCachedEmoji = _useState2[1];
|
|
102
74
|
var _useState3 = (0, _react.useState)(false),
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
75
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
76
|
+
inValidImage = _useState4[0],
|
|
77
|
+
setInvalidImage = _useState4[1];
|
|
107
78
|
var _useEmoji = (0, _useEmoji2.useEmoji)(),
|
|
108
|
-
|
|
109
|
-
|
|
79
|
+
emojiProvider = _useEmoji.emojiProvider;
|
|
110
80
|
var loadEmoji = (0, _react.useCallback)(function (emojiProvider) {
|
|
111
81
|
(0, _logger.default)('Loading image via media cache', emoji.shortName);
|
|
112
82
|
(0, _analytics.sampledUfoRenderedEmoji)(emoji).mark(_types.UfoEmojiTimings.MEDIA_START);
|
|
@@ -132,7 +102,6 @@ var CachingMediaEmoji = function CachingMediaEmoji(props) {
|
|
|
132
102
|
loadEmoji(emojiProvider);
|
|
133
103
|
}
|
|
134
104
|
}, [emojiProvider, loadEmoji]);
|
|
135
|
-
|
|
136
105
|
var handleLoadError = function handleLoadError(_emojiId) {
|
|
137
106
|
(0, _analytics.sampledUfoRenderedEmoji)(_emojiId).failure({
|
|
138
107
|
metadata: {
|
|
@@ -143,7 +112,6 @@ var CachingMediaEmoji = function CachingMediaEmoji(props) {
|
|
|
143
112
|
});
|
|
144
113
|
setInvalidImage(true);
|
|
145
114
|
};
|
|
146
|
-
|
|
147
115
|
if (cachedEmoji && !inValidImage) {
|
|
148
116
|
return /*#__PURE__*/_react.default.createElement(_Emoji.default, (0, _extends2.default)({}, restProps, {
|
|
149
117
|
showTooltip: showTooltip,
|
|
@@ -152,7 +120,6 @@ var CachingMediaEmoji = function CachingMediaEmoji(props) {
|
|
|
152
120
|
onLoadError: handleLoadError
|
|
153
121
|
}));
|
|
154
122
|
}
|
|
155
|
-
|
|
156
123
|
return /*#__PURE__*/_react.default.createElement(_EmojiPlaceholder.default, {
|
|
157
124
|
size: fitToHeight || placeholderSize,
|
|
158
125
|
shortName: shortName,
|
|
@@ -160,7 +127,6 @@ var CachingMediaEmoji = function CachingMediaEmoji(props) {
|
|
|
160
127
|
representation: representation
|
|
161
128
|
});
|
|
162
129
|
};
|
|
163
|
-
|
|
164
130
|
exports.CachingMediaEmoji = CachingMediaEmoji;
|
|
165
131
|
var _default = CachingEmoji;
|
|
166
132
|
exports.default = _default;
|
|
@@ -1,24 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.default = exports.RENDER_EMOJI_DELETE_BUTTON_TESTID = void 0;
|
|
9
|
-
|
|
10
8
|
var _react = require("@emotion/react");
|
|
11
|
-
|
|
12
9
|
var _customThemeButton = _interopRequireDefault(require("@atlaskit/button/custom-theme-button"));
|
|
13
|
-
|
|
14
10
|
var _crossCircle = _interopRequireDefault(require("@atlaskit/icon/glyph/cross-circle"));
|
|
15
|
-
|
|
16
11
|
var _colors = require("@atlaskit/theme/colors");
|
|
17
|
-
|
|
18
12
|
var _constants = require("../../util/constants");
|
|
19
|
-
|
|
20
13
|
var _styles = require("./styles");
|
|
21
|
-
|
|
22
14
|
/** @jsx jsx */
|
|
23
15
|
|
|
24
16
|
/**
|
|
@@ -26,7 +18,6 @@ var _styles = require("./styles");
|
|
|
26
18
|
*/
|
|
27
19
|
var RENDER_EMOJI_DELETE_BUTTON_TESTID = 'render-emoji-delete-button';
|
|
28
20
|
exports.RENDER_EMOJI_DELETE_BUTTON_TESTID = RENDER_EMOJI_DELETE_BUTTON_TESTID;
|
|
29
|
-
|
|
30
21
|
var DeleteButton = function DeleteButton(props) {
|
|
31
22
|
return (0, _react.jsx)("span", {
|
|
32
23
|
css: _styles.deleteButton,
|
|
@@ -44,6 +35,5 @@ var DeleteButton = function DeleteButton(props) {
|
|
|
44
35
|
testId: "emoji-delete-button"
|
|
45
36
|
}));
|
|
46
37
|
};
|
|
47
|
-
|
|
48
38
|
var _default = DeleteButton;
|
|
49
39
|
exports.default = _default;
|
|
@@ -1,132 +1,98 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
-
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
8
6
|
value: true
|
|
9
7
|
});
|
|
10
8
|
exports.default = exports.SpriteEmoji = exports.ImageEmoji = exports.Emoji = void 0;
|
|
11
|
-
|
|
12
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
-
|
|
14
10
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
|
-
|
|
16
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
|
-
|
|
18
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
19
|
-
|
|
20
13
|
var _react2 = require("@emotion/react");
|
|
21
|
-
|
|
22
14
|
var _EmojiUtils = require("../../api/EmojiUtils");
|
|
23
|
-
|
|
24
15
|
var _constants = require("../../util/constants");
|
|
25
|
-
|
|
26
16
|
var _typeHelpers = require("../../util/type-helpers");
|
|
27
|
-
|
|
28
17
|
var _types = require("../../types");
|
|
29
|
-
|
|
30
18
|
var _mouse = require("../../util/mouse");
|
|
31
|
-
|
|
32
19
|
var _DeleteButton = _interopRequireDefault(require("./DeleteButton"));
|
|
33
|
-
|
|
34
20
|
var _styles = require("./styles");
|
|
35
|
-
|
|
36
21
|
var _analytics = require("../../util/analytics");
|
|
37
|
-
|
|
38
22
|
var _browserSupport = require("../../util/browser-support");
|
|
39
|
-
|
|
40
23
|
var _useInView3 = require("../../util/useInView");
|
|
41
|
-
|
|
42
24
|
var _ufoExperiences = require("../../util/analytics/ufoExperiences");
|
|
43
|
-
|
|
44
25
|
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); }
|
|
45
|
-
|
|
46
26
|
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; }
|
|
47
|
-
|
|
48
27
|
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; }
|
|
49
|
-
|
|
50
28
|
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) { (0, _defineProperty2.default)(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; }
|
|
51
|
-
|
|
52
29
|
var handleMouseDown = function handleMouseDown(props, event) {
|
|
53
30
|
// Clicked emoji delete button
|
|
54
31
|
if (event.target instanceof Element && event.target.getAttribute('aria-label') === _constants.deleteEmojiLabel) {
|
|
55
32
|
return;
|
|
56
33
|
}
|
|
57
|
-
|
|
58
34
|
var emoji = props.emoji,
|
|
59
|
-
|
|
35
|
+
onSelected = props.onSelected;
|
|
60
36
|
event.preventDefault();
|
|
61
|
-
|
|
62
37
|
if (onSelected && (0, _mouse.leftClick)(event)) {
|
|
63
38
|
onSelected((0, _typeHelpers.toEmojiId)(emoji), emoji, event);
|
|
64
39
|
}
|
|
65
40
|
};
|
|
66
|
-
|
|
67
41
|
var handleKeyPress = function handleKeyPress(props, event) {
|
|
68
42
|
// Clicked emoji delete button
|
|
69
43
|
if (event.target instanceof Element && event.target.getAttribute('aria-label') === _constants.deleteEmojiLabel) {
|
|
70
44
|
return;
|
|
71
45
|
}
|
|
72
|
-
|
|
73
46
|
var emoji = props.emoji,
|
|
74
|
-
|
|
47
|
+
onSelected = props.onSelected;
|
|
75
48
|
event.preventDefault();
|
|
76
|
-
|
|
77
49
|
if (onSelected && (event.key === 'Enter' || event.key === ' ')) {
|
|
78
50
|
onSelected((0, _typeHelpers.toEmojiId)(emoji), emoji, event);
|
|
79
51
|
}
|
|
80
52
|
};
|
|
81
|
-
|
|
82
53
|
var handleMouseMove = function handleMouseMove(props, event) {
|
|
83
54
|
var emoji = props.emoji,
|
|
84
|
-
|
|
85
|
-
|
|
55
|
+
onMouseMove = props.onMouseMove;
|
|
86
56
|
if (onMouseMove) {
|
|
87
57
|
onMouseMove((0, _typeHelpers.toEmojiId)(emoji), emoji, event);
|
|
88
58
|
}
|
|
89
59
|
};
|
|
90
|
-
|
|
91
60
|
var handleDelete = function handleDelete(props, event) {
|
|
92
61
|
var emoji = props.emoji,
|
|
93
|
-
|
|
94
|
-
|
|
62
|
+
onDelete = props.onDelete;
|
|
95
63
|
if (onDelete) {
|
|
96
64
|
onDelete((0, _typeHelpers.toEmojiId)(emoji), emoji, event);
|
|
97
65
|
}
|
|
98
66
|
};
|
|
99
|
-
|
|
100
67
|
var handleImageError = function handleImageError(props, event) {
|
|
101
68
|
var emoji = props.emoji,
|
|
102
|
-
|
|
69
|
+
onLoadError = props.onLoadError;
|
|
103
70
|
|
|
71
|
+
// Hide error state (but keep space for it)
|
|
104
72
|
if (event.target) {
|
|
105
73
|
var target = event.target;
|
|
106
74
|
target.style.visibility = 'hidden';
|
|
107
75
|
}
|
|
108
|
-
|
|
109
76
|
if (onLoadError) {
|
|
110
77
|
onLoadError((0, _typeHelpers.toEmojiId)(emoji), emoji, event);
|
|
111
78
|
}
|
|
112
|
-
};
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
// Pure functional components are used in favour of class based components, due to the performance!
|
|
113
82
|
// When rendering 1500+ emoji using class based components had a significant impact.
|
|
114
83
|
// TODO: add UFO tracking for sprite emoji
|
|
115
|
-
|
|
116
|
-
|
|
117
84
|
var SpriteEmoji = function SpriteEmoji(props) {
|
|
118
85
|
var emoji = props.emoji,
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
86
|
+
fitToHeight = props.fitToHeight,
|
|
87
|
+
selected = props.selected,
|
|
88
|
+
selectOnHover = props.selectOnHover,
|
|
89
|
+
className = props.className,
|
|
90
|
+
showTooltip = props.showTooltip,
|
|
91
|
+
shouldBeInteractive = props.shouldBeInteractive;
|
|
125
92
|
var representation = emoji.representation;
|
|
126
93
|
var sprite = representation.sprite;
|
|
127
94
|
var classes = "".concat(_styles.emojiNodeStyles, " ").concat(selected ? _styles.commonSelectedStyles : '', " ").concat(selectOnHover ? _styles.selectOnHoverStyles : '', " ").concat(className ? className : '');
|
|
128
95
|
var sizing = {};
|
|
129
|
-
|
|
130
96
|
if (fitToHeight) {
|
|
131
97
|
sizing = {
|
|
132
98
|
width: "".concat(fitToHeight, "px"),
|
|
@@ -135,16 +101,13 @@ var SpriteEmoji = function SpriteEmoji(props) {
|
|
|
135
101
|
minWidth: "".concat(fitToHeight, "px")
|
|
136
102
|
};
|
|
137
103
|
}
|
|
138
|
-
|
|
139
104
|
var xPositionInPercent = 100 / (sprite.column - 1) * (representation.xIndex - 0);
|
|
140
105
|
var yPositionInPercent = 100 / (sprite.row - 1) * (representation.yIndex - 0);
|
|
141
|
-
|
|
142
106
|
var style = _objectSpread({
|
|
143
107
|
backgroundImage: "url(".concat(sprite.url, ")"),
|
|
144
108
|
backgroundPosition: "".concat(xPositionInPercent, "% ").concat(yPositionInPercent, "%"),
|
|
145
109
|
backgroundSize: "".concat(sprite.column * 100, "% ").concat(sprite.row * 100, "%")
|
|
146
110
|
}, sizing);
|
|
147
|
-
|
|
148
111
|
return (0, _react2.jsx)("span", {
|
|
149
112
|
"data-testid": "sprite-emoji-".concat(emoji.shortName),
|
|
150
113
|
"data-emoji-type": "sprite",
|
|
@@ -167,38 +130,34 @@ var SpriteEmoji = function SpriteEmoji(props) {
|
|
|
167
130
|
className: _styles.emojiSprite,
|
|
168
131
|
style: style
|
|
169
132
|
}, "\xA0"));
|
|
170
|
-
};
|
|
171
|
-
|
|
133
|
+
};
|
|
172
134
|
|
|
135
|
+
// Keep as pure functional component, see renderAsSprite.
|
|
173
136
|
exports.SpriteEmoji = SpriteEmoji;
|
|
174
|
-
|
|
175
137
|
var ImageEmoji = function ImageEmoji(props) {
|
|
176
138
|
var emoji = props.emoji,
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
139
|
+
fitToHeight = props.fitToHeight,
|
|
140
|
+
selected = props.selected,
|
|
141
|
+
selectOnHover = props.selectOnHover,
|
|
142
|
+
className = props.className,
|
|
143
|
+
showTooltip = props.showTooltip,
|
|
144
|
+
showDelete = props.showDelete,
|
|
145
|
+
shouldBeInteractive = props.shouldBeInteractive,
|
|
146
|
+
onLoadSuccess = props.onLoadSuccess,
|
|
147
|
+
disableLazyLoad = props.disableLazyLoad,
|
|
148
|
+
autoWidth = props.autoWidth;
|
|
188
149
|
var _useInView = (0, _useInView3.useInView)({
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
150
|
+
triggerOnce: true
|
|
151
|
+
}),
|
|
152
|
+
_useInView2 = (0, _slicedToArray2.default)(_useInView, 2),
|
|
153
|
+
ref = _useInView2[0],
|
|
154
|
+
inView = _useInView2[1];
|
|
195
155
|
var ufoExp = (0, _analytics.sampledUfoRenderedEmoji)(emoji);
|
|
196
156
|
var classes = "".concat(_styles.emojiMainStyle, " ").concat(_styles.emojiNodeStyles, " ").concat(selected ? _styles.commonSelectedStyles : '', " ").concat(selectOnHover ? _styles.selectOnHoverStyles : '', " ").concat(_styles.emojiImage, " ").concat(className ? className : '');
|
|
197
157
|
var width;
|
|
198
158
|
var height;
|
|
199
159
|
var src;
|
|
200
160
|
var representation = (0, _EmojiUtils.shouldUseAltRepresentation)(emoji, fitToHeight) ? emoji.altRepresentation : emoji.representation;
|
|
201
|
-
|
|
202
161
|
if ((0, _typeHelpers.isImageRepresentation)(representation)) {
|
|
203
162
|
src = representation.imagePath;
|
|
204
163
|
width = representation.width;
|
|
@@ -208,9 +167,7 @@ var ImageEmoji = function ImageEmoji(props) {
|
|
|
208
167
|
width = representation.width;
|
|
209
168
|
height = representation.height;
|
|
210
169
|
}
|
|
211
|
-
|
|
212
170
|
var deleteButton;
|
|
213
|
-
|
|
214
171
|
if (showDelete) {
|
|
215
172
|
deleteButton = (0, _react2.jsx)(_DeleteButton.default, {
|
|
216
173
|
onClick: function onClick(event) {
|
|
@@ -218,9 +175,7 @@ var ImageEmoji = function ImageEmoji(props) {
|
|
|
218
175
|
}
|
|
219
176
|
});
|
|
220
177
|
}
|
|
221
|
-
|
|
222
178
|
var sizing = {};
|
|
223
|
-
|
|
224
179
|
if (fitToHeight && width && height) {
|
|
225
180
|
// Presize image, to prevent reflow due to size changes after loading
|
|
226
181
|
sizing = {
|
|
@@ -228,52 +183,45 @@ var ImageEmoji = function ImageEmoji(props) {
|
|
|
228
183
|
height: fitToHeight
|
|
229
184
|
};
|
|
230
185
|
}
|
|
231
|
-
|
|
232
186
|
var onError = function onError(event) {
|
|
233
187
|
handleImageError(props, event);
|
|
234
188
|
};
|
|
235
|
-
|
|
236
189
|
var onLoad = function onLoad() {
|
|
237
190
|
var mountedMark = ufoExp.metrics.marks.find(function (mark) {
|
|
238
191
|
return mark.name === _types.UfoEmojiTimings.MOUNTED_END;
|
|
239
|
-
});
|
|
240
|
-
|
|
192
|
+
});
|
|
193
|
+
// onload could trigger before onBeforeLoad when emojis in viewport at start, so we need to mark onload start manually.
|
|
241
194
|
if (!(0, _ufoExperiences.hasUfoMarked)(ufoExp, _types.UfoEmojiTimings.ONLOAD_START)) {
|
|
242
195
|
ufoExp.mark(_types.UfoEmojiTimings.ONLOAD_START, mountedMark === null || mountedMark === void 0 ? void 0 : mountedMark.time);
|
|
243
196
|
}
|
|
244
|
-
|
|
245
197
|
var loadedStartMark = ufoExp.metrics.marks.find(function (mark) {
|
|
246
198
|
return mark.name === _types.UfoEmojiTimings.ONLOAD_START;
|
|
247
199
|
});
|
|
248
|
-
|
|
249
200
|
if (mountedMark && loadedStartMark) {
|
|
250
201
|
ufoExp.addMetadata({
|
|
251
202
|
lazyLoad: loadedStartMark.time > mountedMark.time
|
|
252
203
|
});
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
|
|
204
|
+
}
|
|
205
|
+
// onload_start
|
|
256
206
|
if (!(0, _ufoExperiences.hasUfoMarked)(ufoExp, _types.UfoEmojiTimings.ONLOAD_END)) {
|
|
257
207
|
ufoExp.mark(_types.UfoEmojiTimings.ONLOAD_END);
|
|
258
208
|
}
|
|
259
|
-
|
|
260
209
|
ufoExp.success({
|
|
261
210
|
metadata: {
|
|
262
211
|
IBSupported: _browserSupport.isIntersectionObserverSupported
|
|
263
212
|
}
|
|
264
213
|
});
|
|
265
|
-
|
|
266
214
|
if (onLoadSuccess) {
|
|
267
215
|
onLoadSuccess(emoji);
|
|
268
216
|
}
|
|
269
217
|
};
|
|
270
|
-
|
|
271
218
|
var onBeforeLoad = (0, _react.useCallback)(function () {
|
|
272
219
|
if (!(0, _ufoExperiences.hasUfoMarked)(ufoExp, _types.UfoEmojiTimings.ONLOAD_START)) {
|
|
273
220
|
ufoExp.mark(_types.UfoEmojiTimings.ONLOAD_START);
|
|
274
221
|
}
|
|
275
|
-
}, [ufoExp]);
|
|
222
|
+
}, [ufoExp]);
|
|
276
223
|
|
|
224
|
+
// 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.
|
|
277
225
|
(0, _react.useEffect)(function () {
|
|
278
226
|
if (inView) {
|
|
279
227
|
onBeforeLoad();
|
|
@@ -316,36 +264,30 @@ var ImageEmoji = function ImageEmoji(props) {
|
|
|
316
264
|
ref: ref
|
|
317
265
|
}, deleteButton, emojiNode);
|
|
318
266
|
};
|
|
319
|
-
|
|
320
267
|
exports.ImageEmoji = ImageEmoji;
|
|
321
|
-
|
|
322
268
|
var Emoji = function Emoji(props) {
|
|
323
|
-
var emoji = props.emoji;
|
|
324
|
-
|
|
269
|
+
var emoji = props.emoji;
|
|
270
|
+
// start emoji rendered experience, it may have already started earlier in ResourcedEmoji or CachingEmoji
|
|
325
271
|
(0, _analytics.useSampledUFOComponentExperience)(_analytics.ufoExperiences['emoji-rendered'].getInstance(emoji.id || emoji.shortName), _constants.SAMPLING_RATE_EMOJI_RENDERED_EXP, {
|
|
326
272
|
source: 'Emoji',
|
|
327
273
|
emojiId: emoji.id
|
|
328
274
|
});
|
|
329
275
|
(0, _react.useEffect)(function () {
|
|
330
276
|
var ufoExp = (0, _analytics.sampledUfoRenderedEmoji)(emoji);
|
|
331
|
-
|
|
332
277
|
if (!(0, _ufoExperiences.hasUfoMarked)(ufoExp, 'fmp')) {
|
|
333
278
|
ufoExp.markFMP();
|
|
334
279
|
}
|
|
335
|
-
|
|
336
280
|
if (!(0, _ufoExperiences.hasUfoMarked)(ufoExp, _types.UfoEmojiTimings.MOUNTED_END)) {
|
|
337
281
|
ufoExp.mark(_types.UfoEmojiTimings.MOUNTED_END);
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
}, []);
|
|
341
|
-
|
|
282
|
+
}
|
|
283
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
284
|
+
}, []);
|
|
285
|
+
// TODO: We always prefer render as image as having accessibility issues with sprite representation
|
|
342
286
|
if ((0, _typeHelpers.isSpriteRepresentation)(emoji.representation)) {
|
|
343
287
|
return (0, _react2.jsx)(SpriteEmoji, props);
|
|
344
288
|
}
|
|
345
|
-
|
|
346
289
|
return (0, _react2.jsx)(ImageEmoji, props);
|
|
347
290
|
};
|
|
348
|
-
|
|
349
291
|
exports.Emoji = Emoji;
|
|
350
292
|
var _default = Emoji;
|
|
351
293
|
exports.default = _default;
|