@atlaskit/emoji 69.0.13 → 69.1.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 +8 -0
- package/dist/cjs/components/common/ResourcedEmojiComponent.js +31 -34
- package/dist/cjs/util/analytics/analytics.js +1 -1
- package/dist/es2019/components/common/ResourcedEmojiComponent.js +25 -35
- package/dist/es2019/util/analytics/analytics.js +1 -1
- package/dist/esm/components/common/ResourcedEmojiComponent.js +32 -35
- package/dist/esm/util/analytics/analytics.js +1 -1
- package/dist/types/api/EmojiResource.d.ts +9 -1
- package/dist/types/api/EmojiUtils.d.ts +2 -0
- package/dist/types/components/common/ResourcedEmojiComponent.d.ts +9 -0
- package/dist/types/resource.d.ts +1 -0
- package/dist/types-ts4.5/api/EmojiResource.d.ts +9 -1
- package/dist/types-ts4.5/api/EmojiUtils.d.ts +2 -0
- package/dist/types-ts4.5/components/common/ResourcedEmojiComponent.d.ts +9 -0
- package/dist/types-ts4.5/resource.d.ts +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @atlaskit/emoji
|
|
2
2
|
|
|
3
|
+
## 69.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#144384](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/144384)
|
|
8
|
+
[`3a650f8970f01`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/3a650f8970f01) -
|
|
9
|
+
Adding emoji load callbacks to Renderer EmojiConfig
|
|
10
|
+
|
|
3
11
|
## 69.0.13
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
|
@@ -7,11 +7,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.default = exports.ResourcedEmojiComponent = void 0;
|
|
9
9
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
10
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
10
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
12
12
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
13
|
var _react = _interopRequireWildcard(require("react"));
|
|
14
|
-
var _interactionMetrics = require("@atlaskit/react-ufo/interaction-metrics");
|
|
15
14
|
var _constants = require("../../util/constants");
|
|
16
15
|
var _typeHelpers = require("../../util/type-helpers");
|
|
17
16
|
var _types = require("../../types");
|
|
@@ -43,7 +42,9 @@ var ResourcedEmojiComponent = exports.ResourcedEmojiComponent = function Resourc
|
|
|
43
42
|
optimistic = _props$optimistic === void 0 ? false : _props$optimistic,
|
|
44
43
|
_props$optimisticImag = props.optimisticImageURL,
|
|
45
44
|
optimisticImageURL = _props$optimisticImag === void 0 ? undefined : _props$optimisticImag,
|
|
46
|
-
editorEmoji = props.editorEmoji
|
|
45
|
+
editorEmoji = props.editorEmoji,
|
|
46
|
+
onEmojiLoadSuccess = props.onEmojiLoadSuccess,
|
|
47
|
+
onEmojiLoadFail = props.onEmojiLoadFail;
|
|
47
48
|
var shortName = emojiId.shortName,
|
|
48
49
|
id = emojiId.id,
|
|
49
50
|
fallback = emojiId.fallback;
|
|
@@ -63,22 +64,10 @@ var ResourcedEmojiComponent = exports.ResourcedEmojiComponent = function Resourc
|
|
|
63
64
|
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
64
65
|
resolvedEmojiProvider = _useState8[0],
|
|
65
66
|
setResolvedEmojiProvider = _useState8[1];
|
|
66
|
-
var getActiveInterationMetadata = function getActiveInterationMetadata() {
|
|
67
|
-
var activeInteraction = (0, _interactionMetrics.getActiveInteraction)();
|
|
68
|
-
var activeInteractionMetadata = {};
|
|
69
|
-
if (activeInteraction) {
|
|
70
|
-
activeInteractionMetadata = _objectSpread(_objectSpread({}, activeInteraction.metaData['productInteractionName'] ? {
|
|
71
|
-
productInteractionName: activeInteraction.metaData['productInteractionName']
|
|
72
|
-
} : {}), activeInteraction.metaData['productInteractionType'] ? {
|
|
73
|
-
productInteractionType: activeInteraction.metaData['productInteractionType']
|
|
74
|
-
} : {});
|
|
75
|
-
}
|
|
76
|
-
return activeInteractionMetadata;
|
|
77
|
-
};
|
|
78
67
|
var fetchOrGetEmoji = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
79
68
|
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_emojiProvider, emojiId) {
|
|
80
69
|
var optimisticFetch,
|
|
81
|
-
|
|
70
|
+
reason,
|
|
82
71
|
foundEmoji,
|
|
83
72
|
_args = arguments;
|
|
84
73
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
@@ -86,13 +75,14 @@ var ResourcedEmojiComponent = exports.ResourcedEmojiComponent = function Resourc
|
|
|
86
75
|
case 0:
|
|
87
76
|
optimisticFetch = _args.length > 2 && _args[2] !== undefined ? _args[2] : false;
|
|
88
77
|
if (!_emojiProvider.fetchByEmojiId) {
|
|
89
|
-
activeInteractionMetadata = getActiveInterationMetadata();
|
|
90
78
|
setEmoji(undefined);
|
|
79
|
+
reason = 'missing fetchByEmojiId interface';
|
|
80
|
+
onEmojiLoadFail && onEmojiLoadFail(emojiId.id, reason);
|
|
91
81
|
(0, _analytics.sampledUfoRenderedEmoji)(emojiId).failure({
|
|
92
|
-
metadata:
|
|
93
|
-
reason:
|
|
82
|
+
metadata: {
|
|
83
|
+
reason: reason,
|
|
94
84
|
source: 'ResourcedEmojiComponent'
|
|
95
|
-
}
|
|
85
|
+
}
|
|
96
86
|
});
|
|
97
87
|
}
|
|
98
88
|
foundEmoji = _emojiProvider.fetchByEmojiId(emojiId, optimisticFetch);
|
|
@@ -102,11 +92,12 @@ var ResourcedEmojiComponent = exports.ResourcedEmojiComponent = function Resourc
|
|
|
102
92
|
foundEmoji.then(function (emoji) {
|
|
103
93
|
setEmoji(emoji);
|
|
104
94
|
if (!emoji) {
|
|
95
|
+
var _reason = 'failed to find';
|
|
96
|
+
onEmojiLoadFail && onEmojiLoadFail(emojiId.id, _reason);
|
|
105
97
|
// emoji is undefined
|
|
106
|
-
var _activeInteractionMetadata = getActiveInterationMetadata();
|
|
107
98
|
(0, _analytics.sampledUfoRenderedEmoji)(emojiId).failure({
|
|
108
|
-
metadata:
|
|
109
|
-
reason:
|
|
99
|
+
metadata: {
|
|
100
|
+
reason: _reason,
|
|
110
101
|
source: 'ResourcedEmojiComponent',
|
|
111
102
|
data: {
|
|
112
103
|
emoji: {
|
|
@@ -114,15 +105,16 @@ var ResourcedEmojiComponent = exports.ResourcedEmojiComponent = function Resourc
|
|
|
114
105
|
shortName: emojiId.shortName
|
|
115
106
|
}
|
|
116
107
|
}
|
|
117
|
-
}
|
|
108
|
+
}
|
|
118
109
|
});
|
|
119
110
|
}
|
|
120
111
|
}).catch(function () {
|
|
121
112
|
setEmoji(undefined);
|
|
122
|
-
var
|
|
113
|
+
var reason = 'failed to load';
|
|
114
|
+
onEmojiLoadFail && onEmojiLoadFail(emojiId.id, reason);
|
|
123
115
|
(0, _analytics.sampledUfoRenderedEmoji)(emojiId).failure({
|
|
124
|
-
metadata:
|
|
125
|
-
reason:
|
|
116
|
+
metadata: {
|
|
117
|
+
reason: reason,
|
|
126
118
|
source: 'ResourcedEmojiComponent',
|
|
127
119
|
data: {
|
|
128
120
|
emoji: {
|
|
@@ -130,7 +122,7 @@ var ResourcedEmojiComponent = exports.ResourcedEmojiComponent = function Resourc
|
|
|
130
122
|
shortName: emojiId.shortName
|
|
131
123
|
}
|
|
132
124
|
}
|
|
133
|
-
}
|
|
125
|
+
}
|
|
134
126
|
});
|
|
135
127
|
}).finally(function () {
|
|
136
128
|
setLoaded(true);
|
|
@@ -150,7 +142,7 @@ var ResourcedEmojiComponent = exports.ResourcedEmojiComponent = function Resourc
|
|
|
150
142
|
return function (_x, _x2) {
|
|
151
143
|
return _ref.apply(this, arguments);
|
|
152
144
|
};
|
|
153
|
-
}(), []);
|
|
145
|
+
}(), [onEmojiLoadFail]);
|
|
154
146
|
(0, _react.useEffect)(function () {
|
|
155
147
|
if (!emojiId) {
|
|
156
148
|
return;
|
|
@@ -214,16 +206,20 @@ var ResourcedEmojiComponent = exports.ResourcedEmojiComponent = function Resourc
|
|
|
214
206
|
return emoji;
|
|
215
207
|
}, [emoji, optimisticImageURL, fallback, fitToHeight, id, shortName]);
|
|
216
208
|
var handleOnLoadError = (0, _react.useCallback)(function (emojiId) {
|
|
217
|
-
var activeInteractionMetadata = getActiveInterationMetadata();
|
|
218
209
|
setImageLoadError(true);
|
|
210
|
+
var reason = 'load error';
|
|
211
|
+
onEmojiLoadFail && onEmojiLoadFail(emojiId.id, reason);
|
|
219
212
|
(0, _analytics.sampledUfoRenderedEmoji)(emojiId).failure({
|
|
220
|
-
metadata:
|
|
221
|
-
reason:
|
|
213
|
+
metadata: {
|
|
214
|
+
reason: reason,
|
|
222
215
|
source: 'ResourcedEmojiComponent',
|
|
223
216
|
emojiId: emojiId.id
|
|
224
|
-
}
|
|
217
|
+
}
|
|
225
218
|
});
|
|
226
|
-
}, []);
|
|
219
|
+
}, [onEmojiLoadFail]);
|
|
220
|
+
var handleOnLoadSuccess = (0, _react.useCallback)(function (emojiId) {
|
|
221
|
+
onEmojiLoadSuccess && onEmojiLoadSuccess(emojiId.id);
|
|
222
|
+
}, [onEmojiLoadSuccess]);
|
|
227
223
|
return /*#__PURE__*/_react.default.createElement(_EmojiCommonProvider.EmojiCommonProvider, {
|
|
228
224
|
emojiProvider: resolvedEmojiProvider
|
|
229
225
|
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
@@ -238,6 +234,7 @@ var ResourcedEmojiComponent = exports.ResourcedEmojiComponent = function Resourc
|
|
|
238
234
|
}), emojiRenderState === ResourcedEmojiComponentRenderStatesEnum.FALLBACK && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, customFallback || fallback || shortName), emojiRenderState === ResourcedEmojiComponentRenderStatesEnum.EMOJI && optimisticEmojiDescription && /*#__PURE__*/_react.default.createElement(_Emoji.default, {
|
|
239
235
|
emoji: optimisticEmojiDescription,
|
|
240
236
|
onLoadError: handleOnLoadError,
|
|
237
|
+
onLoadSuccess: handleOnLoadSuccess,
|
|
241
238
|
showTooltip: showTooltip,
|
|
242
239
|
fitToHeight: fitToHeight,
|
|
243
240
|
autoWidth: !!emoji ? false : true,
|
|
@@ -20,7 +20,7 @@ var createEvent = function createEvent(eventType, action, actionSubject, actionS
|
|
|
20
20
|
actionSubjectId: actionSubjectId,
|
|
21
21
|
attributes: _objectSpread({
|
|
22
22
|
packageName: "@atlaskit/emoji",
|
|
23
|
-
packageVersion: "69.0
|
|
23
|
+
packageVersion: "69.1.0"
|
|
24
24
|
}, attributes)
|
|
25
25
|
};
|
|
26
26
|
};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
2
|
-
import { getActiveInteraction } from '@atlaskit/react-ufo/interaction-metrics';
|
|
3
2
|
import { defaultEmojiHeight } from '../../util/constants';
|
|
4
3
|
import { isImageRepresentation, isMediaRepresentation, isPromise } from '../../util/type-helpers';
|
|
5
4
|
import { UfoEmojiTimings } from '../../types';
|
|
@@ -23,7 +22,9 @@ export const ResourcedEmojiComponent = props => {
|
|
|
23
22
|
fitToHeight = defaultEmojiHeight,
|
|
24
23
|
optimistic = false,
|
|
25
24
|
optimisticImageURL = undefined,
|
|
26
|
-
editorEmoji
|
|
25
|
+
editorEmoji,
|
|
26
|
+
onEmojiLoadSuccess,
|
|
27
|
+
onEmojiLoadFail
|
|
27
28
|
} = props;
|
|
28
29
|
const {
|
|
29
30
|
shortName,
|
|
@@ -34,30 +35,15 @@ export const ResourcedEmojiComponent = props => {
|
|
|
34
35
|
const [loaded, setLoaded] = useState(false);
|
|
35
36
|
const [imageLoadError, setImageLoadError] = useState(false);
|
|
36
37
|
const [resolvedEmojiProvider, setResolvedEmojiProvider] = useState();
|
|
37
|
-
const getActiveInterationMetadata = () => {
|
|
38
|
-
const activeInteraction = getActiveInteraction();
|
|
39
|
-
let activeInteractionMetadata = {};
|
|
40
|
-
if (activeInteraction) {
|
|
41
|
-
activeInteractionMetadata = {
|
|
42
|
-
...(activeInteraction.metaData['productInteractionName'] ? {
|
|
43
|
-
productInteractionName: activeInteraction.metaData['productInteractionName']
|
|
44
|
-
} : {}),
|
|
45
|
-
...(activeInteraction.metaData['productInteractionType'] ? {
|
|
46
|
-
productInteractionType: activeInteraction.metaData['productInteractionType']
|
|
47
|
-
} : {})
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
return activeInteractionMetadata;
|
|
51
|
-
};
|
|
52
38
|
const fetchOrGetEmoji = useCallback(async (_emojiProvider, emojiId, optimisticFetch = false) => {
|
|
53
39
|
if (!_emojiProvider.fetchByEmojiId) {
|
|
54
|
-
const activeInteractionMetadata = getActiveInterationMetadata();
|
|
55
40
|
setEmoji(undefined);
|
|
41
|
+
const reason = 'missing fetchByEmojiId interface';
|
|
42
|
+
onEmojiLoadFail && onEmojiLoadFail(emojiId.id, reason);
|
|
56
43
|
sampledUfoRenderedEmoji(emojiId).failure({
|
|
57
44
|
metadata: {
|
|
58
|
-
reason
|
|
59
|
-
source: 'ResourcedEmojiComponent'
|
|
60
|
-
...activeInteractionMetadata
|
|
45
|
+
reason,
|
|
46
|
+
source: 'ResourcedEmojiComponent'
|
|
61
47
|
}
|
|
62
48
|
});
|
|
63
49
|
}
|
|
@@ -68,36 +54,36 @@ export const ResourcedEmojiComponent = props => {
|
|
|
68
54
|
foundEmoji.then(emoji => {
|
|
69
55
|
setEmoji(emoji);
|
|
70
56
|
if (!emoji) {
|
|
57
|
+
const reason = 'failed to find';
|
|
58
|
+
onEmojiLoadFail && onEmojiLoadFail(emojiId.id, reason);
|
|
71
59
|
// emoji is undefined
|
|
72
|
-
const activeInteractionMetadata = getActiveInterationMetadata();
|
|
73
60
|
sampledUfoRenderedEmoji(emojiId).failure({
|
|
74
61
|
metadata: {
|
|
75
|
-
reason
|
|
62
|
+
reason,
|
|
76
63
|
source: 'ResourcedEmojiComponent',
|
|
77
64
|
data: {
|
|
78
65
|
emoji: {
|
|
79
66
|
id: emojiId.id,
|
|
80
67
|
shortName: emojiId.shortName
|
|
81
68
|
}
|
|
82
|
-
}
|
|
83
|
-
...activeInteractionMetadata
|
|
69
|
+
}
|
|
84
70
|
}
|
|
85
71
|
});
|
|
86
72
|
}
|
|
87
73
|
}).catch(() => {
|
|
88
74
|
setEmoji(undefined);
|
|
89
|
-
const
|
|
75
|
+
const reason = 'failed to load';
|
|
76
|
+
onEmojiLoadFail && onEmojiLoadFail(emojiId.id, reason);
|
|
90
77
|
sampledUfoRenderedEmoji(emojiId).failure({
|
|
91
78
|
metadata: {
|
|
92
|
-
reason
|
|
79
|
+
reason,
|
|
93
80
|
source: 'ResourcedEmojiComponent',
|
|
94
81
|
data: {
|
|
95
82
|
emoji: {
|
|
96
83
|
id: emojiId.id,
|
|
97
84
|
shortName: emojiId.shortName
|
|
98
85
|
}
|
|
99
|
-
}
|
|
100
|
-
...activeInteractionMetadata
|
|
86
|
+
}
|
|
101
87
|
}
|
|
102
88
|
});
|
|
103
89
|
}).finally(() => {
|
|
@@ -109,7 +95,7 @@ export const ResourcedEmojiComponent = props => {
|
|
|
109
95
|
setLoaded(true);
|
|
110
96
|
sampledUfoRenderedEmoji(emojiId).mark(UfoEmojiTimings.METADATA_END);
|
|
111
97
|
}
|
|
112
|
-
}, []);
|
|
98
|
+
}, [onEmojiLoadFail]);
|
|
113
99
|
useEffect(() => {
|
|
114
100
|
if (!emojiId) {
|
|
115
101
|
return;
|
|
@@ -175,17 +161,20 @@ export const ResourcedEmojiComponent = props => {
|
|
|
175
161
|
return emoji;
|
|
176
162
|
}, [emoji, optimisticImageURL, fallback, fitToHeight, id, shortName]);
|
|
177
163
|
const handleOnLoadError = useCallback(emojiId => {
|
|
178
|
-
const activeInteractionMetadata = getActiveInterationMetadata();
|
|
179
164
|
setImageLoadError(true);
|
|
165
|
+
const reason = 'load error';
|
|
166
|
+
onEmojiLoadFail && onEmojiLoadFail(emojiId.id, reason);
|
|
180
167
|
sampledUfoRenderedEmoji(emojiId).failure({
|
|
181
168
|
metadata: {
|
|
182
|
-
reason
|
|
169
|
+
reason,
|
|
183
170
|
source: 'ResourcedEmojiComponent',
|
|
184
|
-
emojiId: emojiId.id
|
|
185
|
-
...activeInteractionMetadata
|
|
171
|
+
emojiId: emojiId.id
|
|
186
172
|
}
|
|
187
173
|
});
|
|
188
|
-
}, []);
|
|
174
|
+
}, [onEmojiLoadFail]);
|
|
175
|
+
const handleOnLoadSuccess = useCallback(emojiId => {
|
|
176
|
+
onEmojiLoadSuccess && onEmojiLoadSuccess(emojiId.id);
|
|
177
|
+
}, [onEmojiLoadSuccess]);
|
|
189
178
|
return /*#__PURE__*/React.createElement(EmojiCommonProvider, {
|
|
190
179
|
emojiProvider: resolvedEmojiProvider
|
|
191
180
|
}, /*#__PURE__*/React.createElement("span", {
|
|
@@ -200,6 +189,7 @@ export const ResourcedEmojiComponent = props => {
|
|
|
200
189
|
}), emojiRenderState === ResourcedEmojiComponentRenderStatesEnum.FALLBACK && /*#__PURE__*/React.createElement(React.Fragment, null, customFallback || fallback || shortName), emojiRenderState === ResourcedEmojiComponentRenderStatesEnum.EMOJI && optimisticEmojiDescription && /*#__PURE__*/React.createElement(Emoji, {
|
|
201
190
|
emoji: optimisticEmojiDescription,
|
|
202
191
|
onLoadError: handleOnLoadError,
|
|
192
|
+
onLoadSuccess: handleOnLoadSuccess,
|
|
203
193
|
showTooltip: showTooltip,
|
|
204
194
|
fitToHeight: fitToHeight,
|
|
205
195
|
autoWidth: !!emoji ? false : true,
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
3
3
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
4
|
-
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
5
4
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
6
5
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
6
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
7
7
|
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
8
|
-
import { getActiveInteraction } from '@atlaskit/react-ufo/interaction-metrics';
|
|
9
8
|
import { defaultEmojiHeight } from '../../util/constants';
|
|
10
9
|
import { isImageRepresentation, isMediaRepresentation, isPromise } from '../../util/type-helpers';
|
|
11
10
|
import { UfoEmojiTimings } from '../../types';
|
|
@@ -33,7 +32,9 @@ export var ResourcedEmojiComponent = function ResourcedEmojiComponent(props) {
|
|
|
33
32
|
optimistic = _props$optimistic === void 0 ? false : _props$optimistic,
|
|
34
33
|
_props$optimisticImag = props.optimisticImageURL,
|
|
35
34
|
optimisticImageURL = _props$optimisticImag === void 0 ? undefined : _props$optimisticImag,
|
|
36
|
-
editorEmoji = props.editorEmoji
|
|
35
|
+
editorEmoji = props.editorEmoji,
|
|
36
|
+
onEmojiLoadSuccess = props.onEmojiLoadSuccess,
|
|
37
|
+
onEmojiLoadFail = props.onEmojiLoadFail;
|
|
37
38
|
var shortName = emojiId.shortName,
|
|
38
39
|
id = emojiId.id,
|
|
39
40
|
fallback = emojiId.fallback;
|
|
@@ -53,22 +54,10 @@ export var ResourcedEmojiComponent = function ResourcedEmojiComponent(props) {
|
|
|
53
54
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
54
55
|
resolvedEmojiProvider = _useState8[0],
|
|
55
56
|
setResolvedEmojiProvider = _useState8[1];
|
|
56
|
-
var getActiveInterationMetadata = function getActiveInterationMetadata() {
|
|
57
|
-
var activeInteraction = getActiveInteraction();
|
|
58
|
-
var activeInteractionMetadata = {};
|
|
59
|
-
if (activeInteraction) {
|
|
60
|
-
activeInteractionMetadata = _objectSpread(_objectSpread({}, activeInteraction.metaData['productInteractionName'] ? {
|
|
61
|
-
productInteractionName: activeInteraction.metaData['productInteractionName']
|
|
62
|
-
} : {}), activeInteraction.metaData['productInteractionType'] ? {
|
|
63
|
-
productInteractionType: activeInteraction.metaData['productInteractionType']
|
|
64
|
-
} : {});
|
|
65
|
-
}
|
|
66
|
-
return activeInteractionMetadata;
|
|
67
|
-
};
|
|
68
57
|
var fetchOrGetEmoji = useCallback( /*#__PURE__*/function () {
|
|
69
58
|
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_emojiProvider, emojiId) {
|
|
70
59
|
var optimisticFetch,
|
|
71
|
-
|
|
60
|
+
reason,
|
|
72
61
|
foundEmoji,
|
|
73
62
|
_args = arguments;
|
|
74
63
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
@@ -76,13 +65,14 @@ export var ResourcedEmojiComponent = function ResourcedEmojiComponent(props) {
|
|
|
76
65
|
case 0:
|
|
77
66
|
optimisticFetch = _args.length > 2 && _args[2] !== undefined ? _args[2] : false;
|
|
78
67
|
if (!_emojiProvider.fetchByEmojiId) {
|
|
79
|
-
activeInteractionMetadata = getActiveInterationMetadata();
|
|
80
68
|
setEmoji(undefined);
|
|
69
|
+
reason = 'missing fetchByEmojiId interface';
|
|
70
|
+
onEmojiLoadFail && onEmojiLoadFail(emojiId.id, reason);
|
|
81
71
|
sampledUfoRenderedEmoji(emojiId).failure({
|
|
82
|
-
metadata:
|
|
83
|
-
reason:
|
|
72
|
+
metadata: {
|
|
73
|
+
reason: reason,
|
|
84
74
|
source: 'ResourcedEmojiComponent'
|
|
85
|
-
}
|
|
75
|
+
}
|
|
86
76
|
});
|
|
87
77
|
}
|
|
88
78
|
foundEmoji = _emojiProvider.fetchByEmojiId(emojiId, optimisticFetch);
|
|
@@ -92,11 +82,12 @@ export var ResourcedEmojiComponent = function ResourcedEmojiComponent(props) {
|
|
|
92
82
|
foundEmoji.then(function (emoji) {
|
|
93
83
|
setEmoji(emoji);
|
|
94
84
|
if (!emoji) {
|
|
85
|
+
var _reason = 'failed to find';
|
|
86
|
+
onEmojiLoadFail && onEmojiLoadFail(emojiId.id, _reason);
|
|
95
87
|
// emoji is undefined
|
|
96
|
-
var _activeInteractionMetadata = getActiveInterationMetadata();
|
|
97
88
|
sampledUfoRenderedEmoji(emojiId).failure({
|
|
98
|
-
metadata:
|
|
99
|
-
reason:
|
|
89
|
+
metadata: {
|
|
90
|
+
reason: _reason,
|
|
100
91
|
source: 'ResourcedEmojiComponent',
|
|
101
92
|
data: {
|
|
102
93
|
emoji: {
|
|
@@ -104,15 +95,16 @@ export var ResourcedEmojiComponent = function ResourcedEmojiComponent(props) {
|
|
|
104
95
|
shortName: emojiId.shortName
|
|
105
96
|
}
|
|
106
97
|
}
|
|
107
|
-
}
|
|
98
|
+
}
|
|
108
99
|
});
|
|
109
100
|
}
|
|
110
101
|
}).catch(function () {
|
|
111
102
|
setEmoji(undefined);
|
|
112
|
-
var
|
|
103
|
+
var reason = 'failed to load';
|
|
104
|
+
onEmojiLoadFail && onEmojiLoadFail(emojiId.id, reason);
|
|
113
105
|
sampledUfoRenderedEmoji(emojiId).failure({
|
|
114
|
-
metadata:
|
|
115
|
-
reason:
|
|
106
|
+
metadata: {
|
|
107
|
+
reason: reason,
|
|
116
108
|
source: 'ResourcedEmojiComponent',
|
|
117
109
|
data: {
|
|
118
110
|
emoji: {
|
|
@@ -120,7 +112,7 @@ export var ResourcedEmojiComponent = function ResourcedEmojiComponent(props) {
|
|
|
120
112
|
shortName: emojiId.shortName
|
|
121
113
|
}
|
|
122
114
|
}
|
|
123
|
-
}
|
|
115
|
+
}
|
|
124
116
|
});
|
|
125
117
|
}).finally(function () {
|
|
126
118
|
setLoaded(true);
|
|
@@ -140,7 +132,7 @@ export var ResourcedEmojiComponent = function ResourcedEmojiComponent(props) {
|
|
|
140
132
|
return function (_x, _x2) {
|
|
141
133
|
return _ref.apply(this, arguments);
|
|
142
134
|
};
|
|
143
|
-
}(), []);
|
|
135
|
+
}(), [onEmojiLoadFail]);
|
|
144
136
|
useEffect(function () {
|
|
145
137
|
if (!emojiId) {
|
|
146
138
|
return;
|
|
@@ -204,16 +196,20 @@ export var ResourcedEmojiComponent = function ResourcedEmojiComponent(props) {
|
|
|
204
196
|
return emoji;
|
|
205
197
|
}, [emoji, optimisticImageURL, fallback, fitToHeight, id, shortName]);
|
|
206
198
|
var handleOnLoadError = useCallback(function (emojiId) {
|
|
207
|
-
var activeInteractionMetadata = getActiveInterationMetadata();
|
|
208
199
|
setImageLoadError(true);
|
|
200
|
+
var reason = 'load error';
|
|
201
|
+
onEmojiLoadFail && onEmojiLoadFail(emojiId.id, reason);
|
|
209
202
|
sampledUfoRenderedEmoji(emojiId).failure({
|
|
210
|
-
metadata:
|
|
211
|
-
reason:
|
|
203
|
+
metadata: {
|
|
204
|
+
reason: reason,
|
|
212
205
|
source: 'ResourcedEmojiComponent',
|
|
213
206
|
emojiId: emojiId.id
|
|
214
|
-
}
|
|
207
|
+
}
|
|
215
208
|
});
|
|
216
|
-
}, []);
|
|
209
|
+
}, [onEmojiLoadFail]);
|
|
210
|
+
var handleOnLoadSuccess = useCallback(function (emojiId) {
|
|
211
|
+
onEmojiLoadSuccess && onEmojiLoadSuccess(emojiId.id);
|
|
212
|
+
}, [onEmojiLoadSuccess]);
|
|
217
213
|
return /*#__PURE__*/React.createElement(EmojiCommonProvider, {
|
|
218
214
|
emojiProvider: resolvedEmojiProvider
|
|
219
215
|
}, /*#__PURE__*/React.createElement("span", {
|
|
@@ -228,6 +224,7 @@ export var ResourcedEmojiComponent = function ResourcedEmojiComponent(props) {
|
|
|
228
224
|
}), emojiRenderState === ResourcedEmojiComponentRenderStatesEnum.FALLBACK && /*#__PURE__*/React.createElement(React.Fragment, null, customFallback || fallback || shortName), emojiRenderState === ResourcedEmojiComponentRenderStatesEnum.EMOJI && optimisticEmojiDescription && /*#__PURE__*/React.createElement(Emoji, {
|
|
229
225
|
emoji: optimisticEmojiDescription,
|
|
230
226
|
onLoadError: handleOnLoadError,
|
|
227
|
+
onLoadSuccess: handleOnLoadSuccess,
|
|
231
228
|
showTooltip: showTooltip,
|
|
232
229
|
fitToHeight: fitToHeight,
|
|
233
230
|
autoWidth: !!emoji ? false : true,
|
|
@@ -13,7 +13,7 @@ var createEvent = function createEvent(eventType, action, actionSubject, actionS
|
|
|
13
13
|
actionSubjectId: actionSubjectId,
|
|
14
14
|
attributes: _objectSpread({
|
|
15
15
|
packageName: "@atlaskit/emoji",
|
|
16
|
-
packageVersion: "69.0
|
|
16
|
+
packageVersion: "69.1.0"
|
|
17
17
|
}, attributes)
|
|
18
18
|
};
|
|
19
19
|
};
|
|
@@ -3,7 +3,7 @@ import type { CategoryId } from '../components/picker/categories';
|
|
|
3
3
|
import { type EmojiDescription, type EmojiId, type EmojiProvider, type EmojiResponse, type EmojiSearchResult, type EmojiUpload, type OptionalEmojiDescription, type OptionalEmojiDescriptionWithVariations, type OptionalUser, type SearchOptions, type ToneSelection, type UploadingEmojiProvider, type User } from '../types';
|
|
4
4
|
import EmojiRepository from './EmojiRepository';
|
|
5
5
|
import SiteEmojiResource from './media/SiteEmojiResource';
|
|
6
|
-
import type { OptimisticImageApiLoaderConfig, Options, SingleEmojiApiLoaderConfig } from './EmojiUtils';
|
|
6
|
+
import type { OptimisticImageApiLoaderConfig, Options, SingleEmojiApiLoaderConfig, EmojiLoadSuccessCallback, EmojiLoadFailCallback } from './EmojiUtils';
|
|
7
7
|
interface GetEmojiProviderOptions {
|
|
8
8
|
/**
|
|
9
9
|
* Whether fetch emoji provider at start
|
|
@@ -52,6 +52,14 @@ export interface EmojiResourceConfig {
|
|
|
52
52
|
* the user is being presented with a placeholder
|
|
53
53
|
*/
|
|
54
54
|
optimisticImageApi?: OptimisticImageApiLoaderConfig;
|
|
55
|
+
/**
|
|
56
|
+
* A callback triggered on emoji load success
|
|
57
|
+
*/
|
|
58
|
+
onEmojiLoadSuccess?: EmojiLoadSuccessCallback;
|
|
59
|
+
/**
|
|
60
|
+
* A callback triggered on emoji load failure
|
|
61
|
+
*/
|
|
62
|
+
onEmojiLoadFail?: EmojiLoadFailCallback;
|
|
55
63
|
}
|
|
56
64
|
export interface OnEmojiProviderChange extends OnProviderChange<EmojiSearchResult, any, void> {
|
|
57
65
|
}
|
|
@@ -12,6 +12,8 @@ export interface SingleEmojiApiLoaderConfig extends Omit<ServiceConfig, 'url'> {
|
|
|
12
12
|
export interface OptimisticImageApiLoaderConfig extends Omit<ServiceConfig, 'url'> {
|
|
13
13
|
getUrl: (emojiId: EmojiId) => string;
|
|
14
14
|
}
|
|
15
|
+
export type EmojiLoadSuccessCallback = (emojiId?: string) => void;
|
|
16
|
+
export type EmojiLoadFailCallback = (emojiId?: string, reason?: string) => void;
|
|
15
17
|
export declare const emojiRequest: (provider: EmojiLoaderConfig, options?: RequestServiceOptions) => Promise<EmojiServiceResponse>;
|
|
16
18
|
export declare const getPixelRatio: () => number;
|
|
17
19
|
export declare const getAltRepresentation: (reps: AltRepresentations) => EmojiServiceRepresentation;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { EmojiProvider } from '../../api/EmojiResource';
|
|
3
|
+
import type { EmojiLoadSuccessCallback, EmojiLoadFailCallback } from '../../api/EmojiUtils';
|
|
3
4
|
import { type EmojiId } from '../../types';
|
|
4
5
|
export interface BaseResourcedEmojiProps {
|
|
5
6
|
/**
|
|
@@ -49,6 +50,14 @@ export interface Props extends BaseResourcedEmojiProps {
|
|
|
49
50
|
* EmojiResource instance that handles fetching of emoji data.
|
|
50
51
|
*/
|
|
51
52
|
emojiProvider: Promise<EmojiProvider>;
|
|
53
|
+
/**
|
|
54
|
+
* A callback triggered on emoji load success
|
|
55
|
+
*/
|
|
56
|
+
onEmojiLoadSuccess?: EmojiLoadSuccessCallback;
|
|
57
|
+
/**
|
|
58
|
+
* A callback triggered on emoji load failure
|
|
59
|
+
*/
|
|
60
|
+
onEmojiLoadFail?: EmojiLoadFailCallback;
|
|
52
61
|
}
|
|
53
62
|
export declare const ResourcedEmojiComponent: (props: Props) => React.JSX.Element;
|
|
54
63
|
export default ResourcedEmojiComponent;
|
package/dist/types/resource.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { AbstractResource } from '@atlaskit/util-service-support';
|
|
2
2
|
export { default as EmojiResource } from './api/EmojiResource';
|
|
3
3
|
export type { EmojiProvider, UploadingEmojiProvider, EmojiResourceConfig, OnEmojiProviderChange, } from './api/EmojiResource';
|
|
4
|
+
export type { EmojiLoadSuccessCallback, EmojiLoadFailCallback } from './api/EmojiUtils';
|
|
4
5
|
export { default as EmojiRepository } from './api/EmojiRepository';
|
|
5
6
|
export { default as EmojiLoader } from './api/EmojiLoader';
|
|
@@ -3,7 +3,7 @@ import type { CategoryId } from '../components/picker/categories';
|
|
|
3
3
|
import { type EmojiDescription, type EmojiId, type EmojiProvider, type EmojiResponse, type EmojiSearchResult, type EmojiUpload, type OptionalEmojiDescription, type OptionalEmojiDescriptionWithVariations, type OptionalUser, type SearchOptions, type ToneSelection, type UploadingEmojiProvider, type User } from '../types';
|
|
4
4
|
import EmojiRepository from './EmojiRepository';
|
|
5
5
|
import SiteEmojiResource from './media/SiteEmojiResource';
|
|
6
|
-
import type { OptimisticImageApiLoaderConfig, Options, SingleEmojiApiLoaderConfig } from './EmojiUtils';
|
|
6
|
+
import type { OptimisticImageApiLoaderConfig, Options, SingleEmojiApiLoaderConfig, EmojiLoadSuccessCallback, EmojiLoadFailCallback } from './EmojiUtils';
|
|
7
7
|
interface GetEmojiProviderOptions {
|
|
8
8
|
/**
|
|
9
9
|
* Whether fetch emoji provider at start
|
|
@@ -52,6 +52,14 @@ export interface EmojiResourceConfig {
|
|
|
52
52
|
* the user is being presented with a placeholder
|
|
53
53
|
*/
|
|
54
54
|
optimisticImageApi?: OptimisticImageApiLoaderConfig;
|
|
55
|
+
/**
|
|
56
|
+
* A callback triggered on emoji load success
|
|
57
|
+
*/
|
|
58
|
+
onEmojiLoadSuccess?: EmojiLoadSuccessCallback;
|
|
59
|
+
/**
|
|
60
|
+
* A callback triggered on emoji load failure
|
|
61
|
+
*/
|
|
62
|
+
onEmojiLoadFail?: EmojiLoadFailCallback;
|
|
55
63
|
}
|
|
56
64
|
export interface OnEmojiProviderChange extends OnProviderChange<EmojiSearchResult, any, void> {
|
|
57
65
|
}
|
|
@@ -12,6 +12,8 @@ export interface SingleEmojiApiLoaderConfig extends Omit<ServiceConfig, 'url'> {
|
|
|
12
12
|
export interface OptimisticImageApiLoaderConfig extends Omit<ServiceConfig, 'url'> {
|
|
13
13
|
getUrl: (emojiId: EmojiId) => string;
|
|
14
14
|
}
|
|
15
|
+
export type EmojiLoadSuccessCallback = (emojiId?: string) => void;
|
|
16
|
+
export type EmojiLoadFailCallback = (emojiId?: string, reason?: string) => void;
|
|
15
17
|
export declare const emojiRequest: (provider: EmojiLoaderConfig, options?: RequestServiceOptions) => Promise<EmojiServiceResponse>;
|
|
16
18
|
export declare const getPixelRatio: () => number;
|
|
17
19
|
export declare const getAltRepresentation: (reps: AltRepresentations) => EmojiServiceRepresentation;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { EmojiProvider } from '../../api/EmojiResource';
|
|
3
|
+
import type { EmojiLoadSuccessCallback, EmojiLoadFailCallback } from '../../api/EmojiUtils';
|
|
3
4
|
import { type EmojiId } from '../../types';
|
|
4
5
|
export interface BaseResourcedEmojiProps {
|
|
5
6
|
/**
|
|
@@ -49,6 +50,14 @@ export interface Props extends BaseResourcedEmojiProps {
|
|
|
49
50
|
* EmojiResource instance that handles fetching of emoji data.
|
|
50
51
|
*/
|
|
51
52
|
emojiProvider: Promise<EmojiProvider>;
|
|
53
|
+
/**
|
|
54
|
+
* A callback triggered on emoji load success
|
|
55
|
+
*/
|
|
56
|
+
onEmojiLoadSuccess?: EmojiLoadSuccessCallback;
|
|
57
|
+
/**
|
|
58
|
+
* A callback triggered on emoji load failure
|
|
59
|
+
*/
|
|
60
|
+
onEmojiLoadFail?: EmojiLoadFailCallback;
|
|
52
61
|
}
|
|
53
62
|
export declare const ResourcedEmojiComponent: (props: Props) => React.JSX.Element;
|
|
54
63
|
export default ResourcedEmojiComponent;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { AbstractResource } from '@atlaskit/util-service-support';
|
|
2
2
|
export { default as EmojiResource } from './api/EmojiResource';
|
|
3
3
|
export type { EmojiProvider, UploadingEmojiProvider, EmojiResourceConfig, OnEmojiProviderChange, } from './api/EmojiResource';
|
|
4
|
+
export type { EmojiLoadSuccessCallback, EmojiLoadFailCallback } from './api/EmojiUtils';
|
|
4
5
|
export { default as EmojiRepository } from './api/EmojiRepository';
|
|
5
6
|
export { default as EmojiLoader } from './api/EmojiLoader';
|