@atlaskit/emoji 66.1.2 → 67.0.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 +21 -0
- package/dist/cjs/api/EmojiResource.js +207 -116
- package/dist/cjs/components/common/CachingEmoji.js +7 -5
- package/dist/cjs/components/common/DeleteButton.js +2 -1
- package/dist/cjs/components/common/Emoji.js +24 -10
- package/dist/cjs/components/common/EmojiActions.js +10 -3
- package/dist/cjs/components/common/EmojiDeletePreview.js +6 -2
- package/dist/cjs/components/common/EmojiErrorMessage.js +16 -5
- package/dist/cjs/components/common/EmojiPlaceholder.js +8 -2
- package/dist/cjs/components/common/EmojiUploadPicker.js +5 -2
- package/dist/cjs/components/common/EmojiUploadPreview.js +9 -3
- package/dist/cjs/components/common/FileChooser.js +10 -3
- package/dist/cjs/components/common/ResourcedEmoji.js +35 -106
- package/dist/cjs/components/common/ResourcedEmojiComponent.js +159 -87
- package/dist/cjs/components/common/RetryableButton.js +10 -3
- package/dist/cjs/components/picker/CategorySelector.js +15 -3
- package/dist/cjs/components/picker/EmojiPicker.js +4 -4
- package/dist/cjs/components/picker/EmojiPickerComponent.js +30 -57
- package/dist/cjs/components/picker/EmojiPickerFooter.js +4 -2
- package/dist/cjs/components/picker/EmojiPickerList.js +8 -8
- package/dist/cjs/components/picker/EmojiPickerListSearch.js +6 -2
- package/dist/cjs/components/picker/EmojiPickerVirtualItems.js +2 -8
- package/dist/cjs/components/picker/VirtualList.js +229 -0
- package/dist/cjs/components/picker/styles.js +1 -1
- package/dist/cjs/components/typeahead/EmojiTypeAheadComponent.js +3 -8
- package/dist/cjs/components/typeahead/EmojiTypeAheadItem.js +7 -4
- package/dist/cjs/context/EmojiCommonProvider.js +36 -0
- package/dist/cjs/context/EmojiContextProvider.js +15 -3
- package/dist/cjs/hooks/useEmoji.js +84 -0
- package/dist/cjs/hooks/useEmojiContext.js +3 -0
- package/dist/cjs/index.js +14 -6
- package/dist/cjs/util/analytics/samplingUfo.js +10 -14
- package/dist/cjs/util/constants.js +2 -2
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/api/EmojiResource.js +66 -40
- package/dist/es2019/components/common/CachingEmoji.js +7 -5
- package/dist/es2019/components/common/DeleteButton.js +2 -1
- package/dist/es2019/components/common/Emoji.js +22 -10
- package/dist/es2019/components/common/EmojiActions.js +5 -2
- package/dist/es2019/components/common/EmojiDeletePreview.js +3 -1
- package/dist/es2019/components/common/EmojiErrorMessage.js +11 -4
- package/dist/es2019/components/common/EmojiPlaceholder.js +2 -1
- package/dist/es2019/components/common/EmojiUploadPicker.js +3 -1
- package/dist/es2019/components/common/EmojiUploadPreview.js +5 -2
- package/dist/es2019/components/common/FileChooser.js +6 -2
- package/dist/es2019/components/common/ResourcedEmoji.js +38 -71
- package/dist/es2019/components/common/ResourcedEmojiComponent.js +90 -54
- package/dist/es2019/components/common/RetryableButton.js +6 -2
- package/dist/es2019/components/picker/CategorySelector.js +8 -2
- package/dist/es2019/components/picker/EmojiPicker.js +3 -3
- package/dist/es2019/components/picker/EmojiPickerComponent.js +10 -31
- package/dist/es2019/components/picker/EmojiPickerFooter.js +2 -1
- package/dist/es2019/components/picker/EmojiPickerList.js +12 -9
- package/dist/es2019/components/picker/EmojiPickerListSearch.js +3 -1
- package/dist/es2019/components/picker/EmojiPickerVirtualItems.js +2 -8
- package/dist/es2019/components/picker/VirtualList.js +169 -0
- package/dist/es2019/components/picker/styles.js +1 -1
- package/dist/es2019/components/typeahead/EmojiTypeAheadComponent.js +3 -8
- package/dist/es2019/components/typeahead/EmojiTypeAheadItem.js +6 -3
- package/dist/es2019/context/EmojiCommonProvider.js +24 -0
- package/dist/es2019/context/EmojiContextProvider.js +6 -1
- package/dist/es2019/hooks/useEmoji.js +39 -0
- package/dist/es2019/hooks/useEmojiContext.js +4 -0
- package/dist/es2019/index.js +4 -3
- package/dist/es2019/util/analytics/samplingUfo.js +10 -15
- package/dist/es2019/util/constants.js +2 -2
- package/dist/es2019/version.json +1 -1
- package/dist/esm/api/EmojiResource.js +206 -115
- package/dist/esm/components/common/CachingEmoji.js +7 -5
- package/dist/esm/components/common/DeleteButton.js +2 -1
- package/dist/esm/components/common/Emoji.js +24 -10
- package/dist/esm/components/common/EmojiActions.js +5 -2
- package/dist/esm/components/common/EmojiDeletePreview.js +3 -1
- package/dist/esm/components/common/EmojiErrorMessage.js +11 -4
- package/dist/esm/components/common/EmojiPlaceholder.js +4 -1
- package/dist/esm/components/common/EmojiUploadPicker.js +3 -1
- package/dist/esm/components/common/EmojiUploadPreview.js +5 -2
- package/dist/esm/components/common/FileChooser.js +6 -2
- package/dist/esm/components/common/ResourcedEmoji.js +34 -102
- package/dist/esm/components/common/ResourcedEmojiComponent.js +159 -88
- package/dist/esm/components/common/RetryableButton.js +6 -2
- package/dist/esm/components/picker/CategorySelector.js +10 -2
- package/dist/esm/components/picker/EmojiPicker.js +3 -3
- package/dist/esm/components/picker/EmojiPickerComponent.js +29 -56
- package/dist/esm/components/picker/EmojiPickerFooter.js +2 -1
- package/dist/esm/components/picker/EmojiPickerList.js +8 -8
- package/dist/esm/components/picker/EmojiPickerListSearch.js +3 -1
- package/dist/esm/components/picker/EmojiPickerVirtualItems.js +2 -8
- package/dist/esm/components/picker/VirtualList.js +205 -0
- package/dist/esm/components/picker/styles.js +1 -1
- package/dist/esm/components/typeahead/EmojiTypeAheadComponent.js +3 -8
- package/dist/esm/components/typeahead/EmojiTypeAheadItem.js +6 -3
- package/dist/esm/context/EmojiCommonProvider.js +24 -0
- package/dist/esm/context/EmojiContextProvider.js +14 -3
- package/dist/esm/hooks/useEmoji.js +69 -0
- package/dist/esm/hooks/useEmojiContext.js +4 -0
- package/dist/esm/index.js +4 -3
- package/dist/esm/util/analytics/samplingUfo.js +10 -15
- package/dist/esm/util/constants.js +2 -2
- package/dist/esm/version.json +1 -1
- package/dist/types/api/EmojiResource.d.ts +15 -1
- package/dist/types/api/EmojiUtils.d.ts +2 -2
- package/dist/types/components/common/Emoji.d.ts +19 -0
- package/dist/types/components/common/EmojiActions.d.ts +2 -0
- package/dist/types/components/common/EmojiDeletePreview.d.ts +1 -0
- package/dist/types/components/common/EmojiErrorMessage.d.ts +3 -0
- package/dist/types/components/common/EmojiPlaceholder.d.ts +1 -0
- package/dist/types/components/common/EmojiUploadPicker.d.ts +1 -0
- package/dist/types/components/common/EmojiUploadPreview.d.ts +2 -0
- package/dist/types/components/common/FileChooser.d.ts +2 -0
- package/dist/types/components/common/ResourcedEmoji.d.ts +5 -17
- package/dist/types/components/common/ResourcedEmojiComponent.d.ts +2 -2
- package/dist/types/components/common/RetryableButton.d.ts +2 -0
- package/dist/types/components/picker/CategorySelector.d.ts +2 -0
- package/dist/types/components/picker/CategoryTracker.d.ts +1 -1
- package/dist/types/components/picker/EmojiPickerComponent.d.ts +1 -6
- package/dist/types/components/picker/EmojiPickerFooter.d.ts +1 -0
- package/dist/types/components/picker/EmojiPickerListSearch.d.ts +1 -0
- package/dist/types/components/picker/EmojiPickerVirtualItems.d.ts +3 -13
- package/dist/types/components/picker/VirtualList.d.ts +39 -0
- package/dist/types/components/typeahead/EmojiTypeAheadItem.d.ts +2 -1
- package/dist/types/context/EmojiCommonProvider.d.ts +17 -0
- package/dist/types/hooks/useEmoji.d.ts +5 -0
- package/dist/types/hooks/useEmojiContext.d.ts +3 -0
- package/dist/types/index.d.ts +3 -2
- package/dist/types/util/analytics/samplingUfo.d.ts +7 -0
- package/dist/types/util/constants.d.ts +2 -2
- package/package.json +7 -6
- package/report.api.md +33 -42
- package/dist/cjs/components/common/EmojiImage.js +0 -99
- package/dist/cjs/context/LegacyEmojiContextProvider.js +0 -76
- package/dist/es2019/components/common/EmojiImage.js +0 -74
- package/dist/es2019/context/LegacyEmojiContextProvider.js +0 -32
- package/dist/esm/components/common/EmojiImage.js +0 -84
- package/dist/esm/context/LegacyEmojiContextProvider.js +0 -57
- package/dist/types/components/common/EmojiImage.d.ts +0 -14
- package/dist/types/context/LegacyEmojiContextProvider.d.ts +0 -22
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# @atlaskit/emoji
|
|
2
2
|
|
|
3
|
+
## 67.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- [`f25b0c5379b`](https://bitbucket.org/atlassian/atlassian-frontend/commits/f25b0c5379b) - Drop support for legacy React Context, and create new EmojiCommonProvider to provide emoji provider
|
|
8
|
+
- [`62789954243`](https://bitbucket.org/atlassian/atlassian-frontend/commits/62789954243) - react-virutlaized has been replaced with @tanstack/react-virutal in @atlaskit/emoji
|
|
9
|
+
|
|
10
|
+
### Minor Changes
|
|
11
|
+
|
|
12
|
+
- [`c7649c62641`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c7649c62641) - add getEmojiProvider in EmojiResource to return emoji provider
|
|
13
|
+
- [`1d41bbc2965`](https://bitbucket.org/atlassian/atlassian-frontend/commits/1d41bbc2965) - This changeset introduces non breaking changes to support ssr within the loader emoji component
|
|
14
|
+
- [`b7678f756b3`](https://bitbucket.org/atlassian/atlassian-frontend/commits/b7678f756b3) - useEmoji hook introduced to work along side EmojiCommonProvider
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- [`d9b8aef8963`](https://bitbucket.org/atlassian/atlassian-frontend/commits/d9b8aef8963) - Remove resolution of optimistic image url inside resourced emoji
|
|
19
|
+
- [`2d8e77c92f0`](https://bitbucket.org/atlassian/atlassian-frontend/commits/2d8e77c92f0) - Remove export from useEmoji hook
|
|
20
|
+
- [`157052c5719`](https://bitbucket.org/atlassian/atlassian-frontend/commits/157052c5719) - improve sampling algorithm in ufo analytics, and add lazyload metadata to emoji rendered ufo analytics
|
|
21
|
+
- [`004378db934`](https://bitbucket.org/atlassian/atlassian-frontend/commits/004378db934) - Fix VirtualList component force rendering while been unmounted and re-mounted in the DOM
|
|
22
|
+
- Updated dependencies
|
|
23
|
+
|
|
3
24
|
## 66.1.2
|
|
4
25
|
|
|
5
26
|
### Patch Changes
|
|
@@ -31,14 +31,14 @@ var _utilServiceSupport = require("@atlaskit/util-service-support");
|
|
|
31
31
|
|
|
32
32
|
var _constants = require("../util/constants");
|
|
33
33
|
|
|
34
|
+
var _logger = _interopRequireDefault(require("../util/logger"));
|
|
35
|
+
|
|
34
36
|
var _typeHelpers = require("../util/type-helpers");
|
|
35
37
|
|
|
36
38
|
var _storageAvailable = _interopRequireDefault(require("../util/storage-available"));
|
|
37
39
|
|
|
38
40
|
var _types = require("../types");
|
|
39
41
|
|
|
40
|
-
var _logger = _interopRequireDefault(require("../util/logger"));
|
|
41
|
-
|
|
42
42
|
var _EmojiLoader = _interopRequireDefault(require("./EmojiLoader"));
|
|
43
43
|
|
|
44
44
|
var _EmojiRepository = _interopRequireDefault(require("./EmojiRepository"));
|
|
@@ -90,7 +90,7 @@ var EmojiResource = /*#__PURE__*/function (_AbstractResource) {
|
|
|
90
90
|
return;
|
|
91
91
|
});
|
|
92
92
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "isLoaded", function () {
|
|
93
|
-
return _this.activeLoaders === 0 && _this.emojiRepository;
|
|
93
|
+
return _this.activeLoaders === 0 && !!_this.emojiRepository;
|
|
94
94
|
});
|
|
95
95
|
_this.emojiProviderConfig = config;
|
|
96
96
|
_this.recordConfig = config.recordConfig;
|
|
@@ -104,121 +104,212 @@ var EmojiResource = /*#__PURE__*/function (_AbstractResource) {
|
|
|
104
104
|
throw new Error('No providers specified');
|
|
105
105
|
}
|
|
106
106
|
|
|
107
|
+
_this.activeLoaders = _this.emojiProviderConfig.providers.length;
|
|
108
|
+
_this.emojiResponses = [];
|
|
107
109
|
return _this;
|
|
108
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Get the emoji provider from Emoji Resource
|
|
113
|
+
* @returns Promise<EmojiProvider>
|
|
114
|
+
*/
|
|
115
|
+
|
|
109
116
|
|
|
110
117
|
(0, _createClass2.default)(EmojiResource, [{
|
|
118
|
+
key: "getEmojiProvider",
|
|
119
|
+
value: function () {
|
|
120
|
+
var _getEmojiProvider = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
|
121
|
+
var options,
|
|
122
|
+
_args = arguments;
|
|
123
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
124
|
+
while (1) {
|
|
125
|
+
switch (_context.prev = _context.next) {
|
|
126
|
+
case 0:
|
|
127
|
+
options = _args.length > 0 && _args[0] !== undefined ? _args[0] : {
|
|
128
|
+
fetchAtStart: true
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
if (!options.fetchAtStart) {
|
|
132
|
+
_context.next = 11;
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
_context.prev = 2;
|
|
137
|
+
_context.next = 5;
|
|
138
|
+
return this.fetchEmojiProvider();
|
|
139
|
+
|
|
140
|
+
case 5:
|
|
141
|
+
_context.next = 11;
|
|
142
|
+
break;
|
|
143
|
+
|
|
144
|
+
case 7:
|
|
145
|
+
_context.prev = 7;
|
|
146
|
+
_context.t0 = _context["catch"](2);
|
|
147
|
+
(0, _logger.default)(_context.t0);
|
|
148
|
+
return _context.abrupt("return", Promise.resolve(this));
|
|
149
|
+
|
|
150
|
+
case 11:
|
|
151
|
+
return _context.abrupt("return", Promise.resolve(this));
|
|
152
|
+
|
|
153
|
+
case 12:
|
|
154
|
+
case "end":
|
|
155
|
+
return _context.stop();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}, _callee, this, [[2, 7]]);
|
|
159
|
+
}));
|
|
160
|
+
|
|
161
|
+
function getEmojiProvider() {
|
|
162
|
+
return _getEmojiProvider.apply(this, arguments);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return getEmojiProvider;
|
|
166
|
+
}()
|
|
167
|
+
}, {
|
|
168
|
+
key: "fetchIndividualProvider",
|
|
169
|
+
value: function () {
|
|
170
|
+
var _fetchIndividualProvider = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(provider, index) {
|
|
171
|
+
var providerType, loader, emojiResponse;
|
|
172
|
+
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
173
|
+
while (1) {
|
|
174
|
+
switch (_context2.prev = _context2.next) {
|
|
175
|
+
case 0:
|
|
176
|
+
providerType = this.getProviderType(provider);
|
|
177
|
+
_context2.prev = 1;
|
|
178
|
+
(0, _ufoExperiences.sampledUfoEmojiResourceFetched)(providerType).start({
|
|
179
|
+
samplingRate: _constants.SAMPLING_RATE_EMOJI_RESOURCE_FETCHED_EXP
|
|
180
|
+
});
|
|
181
|
+
(0, _ufoExperiences.sampledUfoEmojiResourceFetched)(providerType).addMetadata({
|
|
182
|
+
type: providerType
|
|
183
|
+
});
|
|
184
|
+
loader = new _EmojiLoader.default(provider); // fetch emoji from provider url and denormalise
|
|
185
|
+
|
|
186
|
+
_context2.next = 7;
|
|
187
|
+
return loader.loadEmoji();
|
|
188
|
+
|
|
189
|
+
case 7:
|
|
190
|
+
emojiResponse = _context2.sent;
|
|
191
|
+
(0, _ufoExperiences.sampledUfoEmojiResourceFetched)(providerType).success(); // setup emoji repository
|
|
192
|
+
|
|
193
|
+
this.emojiResponses[index] = emojiResponse;
|
|
194
|
+
this.initEmojiRepository(this.emojiResponses);
|
|
195
|
+
_context2.next = 13;
|
|
196
|
+
return this.initSiteEmojiResource(emojiResponse, provider);
|
|
197
|
+
|
|
198
|
+
case 13:
|
|
199
|
+
this.activeLoaders--;
|
|
200
|
+
this.performRetries();
|
|
201
|
+
this.refreshLastFilter();
|
|
202
|
+
_context2.next = 25;
|
|
203
|
+
break;
|
|
204
|
+
|
|
205
|
+
case 18:
|
|
206
|
+
_context2.prev = 18;
|
|
207
|
+
_context2.t0 = _context2["catch"](1);
|
|
208
|
+
this.activeLoaders--;
|
|
209
|
+
this.notifyError(_context2.t0);
|
|
210
|
+
(0, _ufoExperiences.sampledUfoEmojiResourceFetched)(providerType).failure({
|
|
211
|
+
metadata: {
|
|
212
|
+
reason: _context2.t0,
|
|
213
|
+
source: 'EmojiProvider',
|
|
214
|
+
providerUrl: provider.url
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
(0, _logger.default)("failed to fetch emoji provider for ".concat(provider.url), _context2.t0);
|
|
218
|
+
throw new Error("failed to fetch emoji from ".concat(provider.url));
|
|
219
|
+
|
|
220
|
+
case 25:
|
|
221
|
+
case "end":
|
|
222
|
+
return _context2.stop();
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}, _callee2, this, [[1, 18]]);
|
|
226
|
+
}));
|
|
227
|
+
|
|
228
|
+
function fetchIndividualProvider(_x, _x2) {
|
|
229
|
+
return _fetchIndividualProvider.apply(this, arguments);
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
return fetchIndividualProvider;
|
|
233
|
+
}()
|
|
234
|
+
}, {
|
|
111
235
|
key: "fetchEmojiProvider",
|
|
112
|
-
value: function
|
|
113
|
-
var
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
128
|
-
while (1) {
|
|
129
|
-
switch (_context.prev = _context.next) {
|
|
130
|
-
case 0:
|
|
131
|
-
providerType = _this2.getProviderType(provider);
|
|
132
|
-
(0, _ufoExperiences.sampledUfoEmojiResourceFetched)(providerType).start({
|
|
133
|
-
samplingRate: _constants.SAMPLING_RATE_EMOJI_RESOURCE_FETCHED_EXP
|
|
134
|
-
});
|
|
135
|
-
(0, _ufoExperiences.sampledUfoEmojiResourceFetched)(providerType).addMetadata({
|
|
136
|
-
type: providerType
|
|
137
|
-
});
|
|
138
|
-
loader = new _EmojiLoader.default(provider);
|
|
139
|
-
emojis = loader.loadEmoji();
|
|
140
|
-
_context.next = 7;
|
|
141
|
-
return emojis.then(function (emojiResponse) {
|
|
142
|
-
emojiResponses[index] = emojiResponse;
|
|
143
|
-
|
|
144
|
-
_this2.initEmojiRepository(emojiResponses);
|
|
145
|
-
|
|
146
|
-
_this2.initSiteEmojiResource(emojiResponse, provider).then(function () {
|
|
147
|
-
_this2.activeLoaders--;
|
|
148
|
-
|
|
149
|
-
_this2.performRetries();
|
|
150
|
-
|
|
151
|
-
_this2.refreshLastFilter(); // if not site emoji it would still resolve
|
|
152
|
-
// TODO: improve the logic in future
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
(0, _ufoExperiences.sampledUfoEmojiResourceFetched)(providerType).success();
|
|
156
|
-
});
|
|
157
|
-
}).catch(function (reason) {
|
|
158
|
-
_this2.activeLoaders--;
|
|
159
|
-
|
|
160
|
-
_this2.notifyError(reason);
|
|
161
|
-
|
|
162
|
-
(0, _ufoExperiences.sampledUfoEmojiResourceFetched)(providerType).failure({
|
|
163
|
-
metadata: {
|
|
164
|
-
reason: reason,
|
|
165
|
-
source: 'EmojiProvider',
|
|
166
|
-
providerUrl: provider.url
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
case 7:
|
|
172
|
-
case "end":
|
|
173
|
-
return _context.stop();
|
|
236
|
+
value: function () {
|
|
237
|
+
var _fetchEmojiProvider = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
|
|
238
|
+
var _this2 = this;
|
|
239
|
+
|
|
240
|
+
var force,
|
|
241
|
+
_args3 = arguments;
|
|
242
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
243
|
+
while (1) {
|
|
244
|
+
switch (_context3.prev = _context3.next) {
|
|
245
|
+
case 0:
|
|
246
|
+
force = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : false;
|
|
247
|
+
|
|
248
|
+
if (!(force || !this.emojiRepository && !this.isInitialised)) {
|
|
249
|
+
_context3.next = 6;
|
|
250
|
+
break;
|
|
174
251
|
}
|
|
175
|
-
}
|
|
176
|
-
}, _callee);
|
|
177
|
-
}));
|
|
178
252
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
253
|
+
this.isInitialised = true;
|
|
254
|
+
this.emojiResponses = []; // fetch emoji providers
|
|
255
|
+
|
|
256
|
+
_context3.next = 6;
|
|
257
|
+
return Promise.all(this.emojiProviderConfig.providers.map(function (provider, index) {
|
|
258
|
+
return _this2.fetchIndividualProvider(provider, index);
|
|
259
|
+
}));
|
|
260
|
+
|
|
261
|
+
case 6:
|
|
262
|
+
return _context3.abrupt("return", Promise.resolve(this.emojiRepository));
|
|
263
|
+
|
|
264
|
+
case 7:
|
|
265
|
+
case "end":
|
|
266
|
+
return _context3.stop();
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}, _callee3, this);
|
|
270
|
+
}));
|
|
271
|
+
|
|
272
|
+
function fetchEmojiProvider() {
|
|
273
|
+
return _fetchEmojiProvider.apply(this, arguments);
|
|
183
274
|
}
|
|
184
275
|
|
|
185
|
-
return
|
|
186
|
-
}
|
|
276
|
+
return fetchEmojiProvider;
|
|
277
|
+
}()
|
|
187
278
|
}, {
|
|
188
279
|
key: "fetchByEmojiId",
|
|
189
280
|
value: function () {
|
|
190
|
-
var _fetchByEmojiId = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
281
|
+
var _fetchByEmojiId = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(emojiId, optimistic) {
|
|
191
282
|
var _emoji, provider, loader, loadEmoji, _emoji2, emoji;
|
|
192
283
|
|
|
193
|
-
return _regenerator.default.wrap(function
|
|
284
|
+
return _regenerator.default.wrap(function _callee4$(_context4) {
|
|
194
285
|
while (1) {
|
|
195
|
-
switch (
|
|
286
|
+
switch (_context4.prev = _context4.next) {
|
|
196
287
|
case 0:
|
|
197
288
|
if (!(this.emojiRepository && this.isLoaded())) {
|
|
198
|
-
|
|
289
|
+
_context4.next = 8;
|
|
199
290
|
break;
|
|
200
291
|
}
|
|
201
292
|
|
|
202
|
-
|
|
293
|
+
_context4.next = 3;
|
|
203
294
|
return this.findByEmojiId(emojiId);
|
|
204
295
|
|
|
205
296
|
case 3:
|
|
206
|
-
_emoji =
|
|
297
|
+
_emoji = _context4.sent;
|
|
207
298
|
|
|
208
299
|
if (!_emoji) {
|
|
209
|
-
|
|
300
|
+
_context4.next = 8;
|
|
210
301
|
break;
|
|
211
302
|
}
|
|
212
303
|
|
|
213
|
-
|
|
304
|
+
_context4.next = 7;
|
|
214
305
|
return this.getMediaEmojiDescriptionURLWithInlineToken(_emoji);
|
|
215
306
|
|
|
216
307
|
case 7:
|
|
217
|
-
return
|
|
308
|
+
return _context4.abrupt("return", _context4.sent);
|
|
218
309
|
|
|
219
310
|
case 8:
|
|
220
311
|
if (!(this.emojiProviderConfig.singleEmojiApi && optimistic)) {
|
|
221
|
-
|
|
312
|
+
_context4.next = 31;
|
|
222
313
|
break;
|
|
223
314
|
}
|
|
224
315
|
|
|
@@ -228,74 +319,74 @@ var EmojiResource = /*#__PURE__*/function (_AbstractResource) {
|
|
|
228
319
|
securityProvider: this.emojiProviderConfig.singleEmojiApi.securityProvider
|
|
229
320
|
};
|
|
230
321
|
loader = new _EmojiLoader.default(provider);
|
|
231
|
-
|
|
232
|
-
|
|
322
|
+
_context4.prev = 11;
|
|
323
|
+
_context4.next = 14;
|
|
233
324
|
return loader.loadEmoji();
|
|
234
325
|
|
|
235
326
|
case 14:
|
|
236
|
-
loadEmoji =
|
|
327
|
+
loadEmoji = _context4.sent;
|
|
237
328
|
|
|
238
329
|
if (loadEmoji.emojis[0]) {
|
|
239
|
-
|
|
330
|
+
_context4.next = 17;
|
|
240
331
|
break;
|
|
241
332
|
}
|
|
242
333
|
|
|
243
|
-
return
|
|
334
|
+
return _context4.abrupt("return");
|
|
244
335
|
|
|
245
336
|
case 17:
|
|
246
337
|
if (this.siteEmojiResource) {
|
|
247
|
-
|
|
338
|
+
_context4.next = 20;
|
|
248
339
|
break;
|
|
249
340
|
}
|
|
250
341
|
|
|
251
|
-
|
|
342
|
+
_context4.next = 20;
|
|
252
343
|
return this.initSiteEmojiResource(loadEmoji, provider);
|
|
253
344
|
|
|
254
345
|
case 20:
|
|
255
|
-
return
|
|
346
|
+
return _context4.abrupt("return", this.getMediaEmojiDescriptionURLWithInlineToken(loadEmoji.emojis[0]));
|
|
256
347
|
|
|
257
348
|
case 23:
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
349
|
+
_context4.prev = 23;
|
|
350
|
+
_context4.t0 = _context4["catch"](11);
|
|
351
|
+
_context4.next = 27;
|
|
261
352
|
return this.findByEmojiId(emojiId);
|
|
262
353
|
|
|
263
354
|
case 27:
|
|
264
|
-
_emoji2 =
|
|
355
|
+
_emoji2 = _context4.sent;
|
|
265
356
|
|
|
266
357
|
if (_emoji2) {
|
|
267
|
-
|
|
358
|
+
_context4.next = 30;
|
|
268
359
|
break;
|
|
269
360
|
}
|
|
270
361
|
|
|
271
|
-
return
|
|
362
|
+
return _context4.abrupt("return");
|
|
272
363
|
|
|
273
364
|
case 30:
|
|
274
|
-
return
|
|
365
|
+
return _context4.abrupt("return", this.getMediaEmojiDescriptionURLWithInlineToken(_emoji2));
|
|
275
366
|
|
|
276
367
|
case 31:
|
|
277
|
-
|
|
368
|
+
_context4.next = 33;
|
|
278
369
|
return this.findByEmojiId(emojiId);
|
|
279
370
|
|
|
280
371
|
case 33:
|
|
281
|
-
emoji =
|
|
372
|
+
emoji = _context4.sent;
|
|
282
373
|
|
|
283
374
|
if (emoji) {
|
|
284
|
-
|
|
375
|
+
_context4.next = 36;
|
|
285
376
|
break;
|
|
286
377
|
}
|
|
287
378
|
|
|
288
|
-
return
|
|
379
|
+
return _context4.abrupt("return");
|
|
289
380
|
|
|
290
381
|
case 36:
|
|
291
|
-
return
|
|
382
|
+
return _context4.abrupt("return", this.getMediaEmojiDescriptionURLWithInlineToken(emoji));
|
|
292
383
|
|
|
293
384
|
case 37:
|
|
294
385
|
case "end":
|
|
295
|
-
return
|
|
386
|
+
return _context4.stop();
|
|
296
387
|
}
|
|
297
388
|
}
|
|
298
|
-
},
|
|
389
|
+
}, _callee4, this, [[11, 23]]);
|
|
299
390
|
}));
|
|
300
391
|
|
|
301
392
|
function fetchByEmojiId(_x3, _x4) {
|
|
@@ -429,37 +520,37 @@ var EmojiResource = /*#__PURE__*/function (_AbstractResource) {
|
|
|
429
520
|
}, {
|
|
430
521
|
key: "getMediaEmojiDescriptionURLWithInlineToken",
|
|
431
522
|
value: function () {
|
|
432
|
-
var _getMediaEmojiDescriptionURLWithInlineToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function
|
|
523
|
+
var _getMediaEmojiDescriptionURLWithInlineToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(emoji) {
|
|
433
524
|
var tokenisedMediaPath;
|
|
434
|
-
return _regenerator.default.wrap(function
|
|
525
|
+
return _regenerator.default.wrap(function _callee5$(_context5) {
|
|
435
526
|
while (1) {
|
|
436
|
-
switch (
|
|
527
|
+
switch (_context5.prev = _context5.next) {
|
|
437
528
|
case 0:
|
|
438
529
|
if (!(this.siteEmojiResource && (0, _typeHelpers.isMediaRepresentation)(emoji.representation))) {
|
|
439
|
-
|
|
530
|
+
_context5.next = 5;
|
|
440
531
|
break;
|
|
441
532
|
}
|
|
442
533
|
|
|
443
|
-
|
|
534
|
+
_context5.next = 3;
|
|
444
535
|
return this.siteEmojiResource.generateTokenisedMediaURL(emoji);
|
|
445
536
|
|
|
446
537
|
case 3:
|
|
447
|
-
tokenisedMediaPath =
|
|
448
|
-
return
|
|
538
|
+
tokenisedMediaPath = _context5.sent;
|
|
539
|
+
return _context5.abrupt("return", _objectSpread(_objectSpread({}, emoji), {}, {
|
|
449
540
|
representation: _objectSpread(_objectSpread({}, emoji.representation), {}, {
|
|
450
541
|
mediaPath: tokenisedMediaPath
|
|
451
542
|
})
|
|
452
543
|
}));
|
|
453
544
|
|
|
454
545
|
case 5:
|
|
455
|
-
return
|
|
546
|
+
return _context5.abrupt("return", emoji);
|
|
456
547
|
|
|
457
548
|
case 6:
|
|
458
549
|
case "end":
|
|
459
|
-
return
|
|
550
|
+
return _context5.stop();
|
|
460
551
|
}
|
|
461
552
|
}
|
|
462
|
-
},
|
|
553
|
+
}, _callee5, this);
|
|
463
554
|
}));
|
|
464
555
|
|
|
465
556
|
function getMediaEmojiDescriptionURLWithInlineToken(_x5) {
|
|
@@ -35,7 +35,7 @@ var _constants = require("../../util/constants");
|
|
|
35
35
|
|
|
36
36
|
var _ufoExperiences = require("../../util/analytics/ufoExperiences");
|
|
37
37
|
|
|
38
|
-
var
|
|
38
|
+
var _useEmoji2 = require("../../hooks/useEmoji");
|
|
39
39
|
|
|
40
40
|
var _analytics2 = require("../../util/analytics/analytics");
|
|
41
41
|
|
|
@@ -104,7 +104,9 @@ var CachingMediaEmoji = function CachingMediaEmoji(props) {
|
|
|
104
104
|
inValidImage = _useState4[0],
|
|
105
105
|
setInvalidImage = _useState4[1];
|
|
106
106
|
|
|
107
|
-
var
|
|
107
|
+
var _useEmoji = (0, _useEmoji2.useEmoji)(),
|
|
108
|
+
emojiProvider = _useEmoji.emojiProvider;
|
|
109
|
+
|
|
108
110
|
var loadEmoji = (0, _react.useCallback)(function (emojiProvider) {
|
|
109
111
|
(0, _logger.default)('Loading image via media cache', emoji.shortName);
|
|
110
112
|
(0, _analytics.sampledUfoRenderedEmoji)(emoji).mark(_types.UfoEmojiTimings.MEDIA_START);
|
|
@@ -126,10 +128,10 @@ var CachingMediaEmoji = function CachingMediaEmoji(props) {
|
|
|
126
128
|
});
|
|
127
129
|
}, [emoji]);
|
|
128
130
|
(0, _react.useEffect)(function () {
|
|
129
|
-
if (
|
|
130
|
-
loadEmoji(
|
|
131
|
+
if (emojiProvider) {
|
|
132
|
+
loadEmoji(emojiProvider);
|
|
131
133
|
}
|
|
132
|
-
}, [
|
|
134
|
+
}, [emojiProvider, loadEmoji]);
|
|
133
135
|
|
|
134
136
|
var handleLoadError = function handleLoadError(_emojiId) {
|
|
135
137
|
(0, _analytics.sampledUfoRenderedEmoji)(_emojiId).failure({
|
|
@@ -180,7 +180,10 @@ var ImageEmoji = function ImageEmoji(props) {
|
|
|
180
180
|
className = props.className,
|
|
181
181
|
showTooltip = props.showTooltip,
|
|
182
182
|
showDelete = props.showDelete,
|
|
183
|
-
shouldBeInteractive = props.shouldBeInteractive
|
|
183
|
+
shouldBeInteractive = props.shouldBeInteractive,
|
|
184
|
+
onLoadSuccess = props.onLoadSuccess,
|
|
185
|
+
disableLazyLoad = props.disableLazyLoad,
|
|
186
|
+
autoWidth = props.autoWidth;
|
|
184
187
|
|
|
185
188
|
var _useInView = (0, _useInView3.useInView)({
|
|
186
189
|
triggerOnce: true
|
|
@@ -221,7 +224,7 @@ var ImageEmoji = function ImageEmoji(props) {
|
|
|
221
224
|
if (fitToHeight && width && height) {
|
|
222
225
|
// Presize image, to prevent reflow due to size changes after loading
|
|
223
226
|
sizing = {
|
|
224
|
-
width: fitToHeight / height * width,
|
|
227
|
+
width: autoWidth ? 'auto' : fitToHeight / height * width,
|
|
225
228
|
height: fitToHeight
|
|
226
229
|
};
|
|
227
230
|
}
|
|
@@ -230,19 +233,26 @@ var ImageEmoji = function ImageEmoji(props) {
|
|
|
230
233
|
handleImageError(props, event);
|
|
231
234
|
};
|
|
232
235
|
|
|
233
|
-
var
|
|
236
|
+
var onLoad = function onLoad() {
|
|
234
237
|
var mountedMark = ufoExp.metrics.marks.find(function (mark) {
|
|
235
238
|
return mark.name === _types.UfoEmojiTimings.MOUNTED_END;
|
|
236
|
-
});
|
|
237
|
-
ufoExp.mark(_types.UfoEmojiTimings.ONLOAD_START, mountedMark === null || mountedMark === void 0 ? void 0 : mountedMark.time);
|
|
238
|
-
}, [ufoExp]);
|
|
239
|
+
}); // onload could trigger before onBeforeLoad when emojis in viewport at start, so we need to mark onload start manually.
|
|
239
240
|
|
|
240
|
-
var onLoad = function onLoad() {
|
|
241
|
-
// onload could trigger before onBeforeLoad when emojis in viewport at start, so we need to mark onload start manually.
|
|
242
241
|
if (!(0, _ufoExperiences.hasUfoMarked)(ufoExp, _types.UfoEmojiTimings.ONLOAD_START)) {
|
|
243
|
-
|
|
242
|
+
ufoExp.mark(_types.UfoEmojiTimings.ONLOAD_START, mountedMark === null || mountedMark === void 0 ? void 0 : mountedMark.time);
|
|
244
243
|
}
|
|
245
244
|
|
|
245
|
+
var loadedStartMark = ufoExp.metrics.marks.find(function (mark) {
|
|
246
|
+
return mark.name === _types.UfoEmojiTimings.ONLOAD_START;
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
if (mountedMark && loadedStartMark) {
|
|
250
|
+
ufoExp.addMetadata({
|
|
251
|
+
lazyLoad: loadedStartMark.time > mountedMark.time
|
|
252
|
+
});
|
|
253
|
+
} // onload_start
|
|
254
|
+
|
|
255
|
+
|
|
246
256
|
if (!(0, _ufoExperiences.hasUfoMarked)(ufoExp, _types.UfoEmojiTimings.ONLOAD_END)) {
|
|
247
257
|
ufoExp.mark(_types.UfoEmojiTimings.ONLOAD_END);
|
|
248
258
|
}
|
|
@@ -252,6 +262,10 @@ var ImageEmoji = function ImageEmoji(props) {
|
|
|
252
262
|
IBSupported: _browserSupport.isIntersectionObserverSupported
|
|
253
263
|
}
|
|
254
264
|
});
|
|
265
|
+
|
|
266
|
+
if (onLoadSuccess) {
|
|
267
|
+
onLoadSuccess(emoji);
|
|
268
|
+
}
|
|
255
269
|
};
|
|
256
270
|
|
|
257
271
|
var onBeforeLoad = (0, _react.useCallback)(function () {
|
|
@@ -267,7 +281,7 @@ var ImageEmoji = function ImageEmoji(props) {
|
|
|
267
281
|
}, [inView, onBeforeLoad]);
|
|
268
282
|
var emojiNode = (0, _react2.jsx)("img", (0, _extends2.default)({
|
|
269
283
|
//@ts-ignore
|
|
270
|
-
loading:
|
|
284
|
+
loading: disableLazyLoad ? 'eager' : 'lazy',
|
|
271
285
|
src: src,
|
|
272
286
|
key: src,
|
|
273
287
|
alt: emoji.shortName,
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.default = exports.EmojiActions = void 0;
|
|
8
|
+
exports.uploadEmojiTestId = exports.emojiActionsTestId = exports.default = exports.EmojiActions = void 0;
|
|
9
9
|
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
11
|
|
|
@@ -40,12 +40,19 @@ var _styles = require("./styles");
|
|
|
40
40
|
var _styles2 = require("../picker/styles");
|
|
41
41
|
|
|
42
42
|
/** @jsx jsx */
|
|
43
|
+
var emojiActionsTestId = 'emoji-actions';
|
|
44
|
+
exports.emojiActionsTestId = emojiActionsTestId;
|
|
45
|
+
var uploadEmojiTestId = 'upload-emoji'; // Generic Type for the wrapped functional component
|
|
46
|
+
|
|
47
|
+
exports.uploadEmojiTestId = uploadEmojiTestId;
|
|
48
|
+
|
|
43
49
|
var AddOwnEmoji = function AddOwnEmoji(props) {
|
|
44
50
|
var onOpenUpload = props.onOpenUpload,
|
|
45
51
|
uploadEnabled = props.uploadEnabled,
|
|
46
52
|
formatMessage = props.intl.formatMessage;
|
|
47
53
|
return (0, _react2.jsx)(_react.Fragment, null, uploadEnabled && (0, _react2.jsx)("div", {
|
|
48
|
-
css: _styles.addCustomEmoji
|
|
54
|
+
css: _styles.addCustomEmoji,
|
|
55
|
+
"data-testid": uploadEmojiTestId
|
|
49
56
|
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _i18n.messages.addCustomEmojiLabel, function (label) {
|
|
50
57
|
return (0, _react2.jsx)(_standardButton.default, {
|
|
51
58
|
onClick: onOpenUpload,
|
|
@@ -161,7 +168,7 @@ var EmojiActions = function EmojiActions(props) {
|
|
|
161
168
|
}
|
|
162
169
|
|
|
163
170
|
return (0, _react2.jsx)("div", {
|
|
164
|
-
"data-testid":
|
|
171
|
+
"data-testid": emojiActionsTestId,
|
|
165
172
|
css: previewFooterClassnames,
|
|
166
173
|
onMouseLeave: onMouseLeaveHandler
|
|
167
174
|
}, (0, _react2.jsx)("div", {
|