@atlaskit/emoji 73.3.6 → 73.3.8
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 +15 -0
- package/dist/cjs/components/common/ResourcedEmojiComponent.js +47 -4
- package/dist/cjs/util/analytics/createEvent.js +1 -1
- package/dist/es2019/components/common/ResourcedEmojiComponent.js +40 -2
- package/dist/es2019/util/analytics/createEvent.js +1 -1
- package/dist/esm/components/common/ResourcedEmojiComponent.js +47 -4
- package/dist/esm/util/analytics/createEvent.js +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @atlaskit/emoji
|
|
2
2
|
|
|
3
|
+
## 73.3.8
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`12727dc9ff879`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/12727dc9ff879) -
|
|
8
|
+
Reuse the provider's MDPI image for compact standard and Atlassian emojis behind
|
|
9
|
+
platform_emoji_adaptive_image_size when it has enough pixels for the display. Preserve catalogue
|
|
10
|
+
images for larger or denser displays and providers without a suitable URL.
|
|
11
|
+
|
|
12
|
+
## 73.3.7
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- Updated dependencies
|
|
17
|
+
|
|
3
18
|
## 73.3.6
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
|
@@ -10,10 +10,12 @@ exports.default = exports.ResourcedEmojiComponent = void 0;
|
|
|
10
10
|
require("./ResourcedEmojiComponent.compiled.css");
|
|
11
11
|
var _runtime = require("@compiled/react/runtime");
|
|
12
12
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
14
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
14
15
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
16
|
var _react = _interopRequireWildcard(require("react"));
|
|
16
17
|
var _fg = require("@atlaskit/platform-feature-flags/fg");
|
|
18
|
+
var _getPixelRatio = require("../../api/getPixelRatio");
|
|
17
19
|
var _EmojiCommonProvider = require("../../context/EmojiCommonProvider");
|
|
18
20
|
var _types = require("../../types");
|
|
19
21
|
var _hasUfoMarked = require("../../util/analytics/hasUfoMarked");
|
|
@@ -23,7 +25,16 @@ var _isPromise = require("../../util/is-promise");
|
|
|
23
25
|
var _Emoji = _interopRequireDefault(require("./Emoji"));
|
|
24
26
|
var _EmojiPlaceholder = _interopRequireDefault(require("./EmojiPlaceholder"));
|
|
25
27
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
28
|
+
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; }
|
|
29
|
+
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) { (0, _defineProperty2.default)(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; }
|
|
26
30
|
var ignoreWrapperStyles = null;
|
|
31
|
+
var isMdpiImageURL = function isMdpiImageURL(imageURL) {
|
|
32
|
+
try {
|
|
33
|
+
return new URL(imageURL, 'https://emoji.invalid').searchParams.get('scale') === 'MDPI';
|
|
34
|
+
} catch (_unused) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
27
38
|
var ResourcedEmojiComponentRenderStatesEnum = /*#__PURE__*/function (ResourcedEmojiComponentRenderStatesEnum) {
|
|
28
39
|
ResourcedEmojiComponentRenderStatesEnum["INITIAL"] = "INITIAL";
|
|
29
40
|
ResourcedEmojiComponentRenderStatesEnum["FALLBACK"] = "FALLBACK";
|
|
@@ -69,8 +80,12 @@ var ResourcedEmojiComponent = exports.ResourcedEmojiComponent = function Resourc
|
|
|
69
80
|
setImageLoadError = _useState6[1];
|
|
70
81
|
var _useState7 = (0, _react.useState)(),
|
|
71
82
|
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
72
|
-
|
|
73
|
-
|
|
83
|
+
failedAdaptiveImageURL = _useState8[0],
|
|
84
|
+
setFailedAdaptiveImageURL = _useState8[1];
|
|
85
|
+
var _useState9 = (0, _react.useState)(),
|
|
86
|
+
_useState0 = (0, _slicedToArray2.default)(_useState9, 2),
|
|
87
|
+
resolvedEmojiProvider = _useState0[0],
|
|
88
|
+
setResolvedEmojiProvider = _useState0[1];
|
|
74
89
|
var fetchOrGetEmoji = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
75
90
|
var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_emojiProvider, emojiId) {
|
|
76
91
|
var optimisticFetch,
|
|
@@ -187,6 +202,10 @@ var ResourcedEmojiComponent = exports.ResourcedEmojiComponent = function Resourc
|
|
|
187
202
|
return ResourcedEmojiComponentRenderStatesEnum.EMOJI;
|
|
188
203
|
}, [emoji, loaded, optimisticImageURL, imageLoadError]);
|
|
189
204
|
var optimisticEmojiDescription = (0, _react.useMemo)(function () {
|
|
205
|
+
if (optimisticImageURL && emoji && (emoji.type === 'STANDARD' || emoji.type === 'ATLASSIAN') && fitToHeight * Math.max(1, (0, _getPixelRatio.getPixelRatio)()) > 32 && isMdpiImageURL(optimisticImageURL) && (0, _fg.fg)('platform_emoji_adaptive_image_size')) {
|
|
206
|
+
return emoji;
|
|
207
|
+
}
|
|
208
|
+
|
|
190
209
|
// reduce blast radius by targeting page title
|
|
191
210
|
if (pageTitleEmoji && optimisticImageURL && (0, _fg.fg)('platform_emoji_prevent_img_src_changing')) {
|
|
192
211
|
return {
|
|
@@ -219,9 +238,33 @@ var ResourcedEmojiComponent = exports.ResourcedEmojiComponent = function Resourc
|
|
|
219
238
|
}
|
|
220
239
|
};
|
|
221
240
|
}
|
|
241
|
+
if ((0, _fg.fg)('platform_emoji_adaptive_image_size') && emoji && (emoji.type === 'STANDARD' || emoji.type === 'ATLASSIAN') && emoji.representation && 'imagePath' in emoji.representation && emoji.representation.height > 32 && fitToHeight > 0 && fitToHeight * Math.max(1, (0, _getPixelRatio.getPixelRatio)()) <= 32) {
|
|
242
|
+
var _resolvedEmojiProvide;
|
|
243
|
+
var imageURL = resolvedEmojiProvider === null || resolvedEmojiProvider === void 0 || (_resolvedEmojiProvide = resolvedEmojiProvider.getOptimisticImageURL) === null || _resolvedEmojiProvide === void 0 ? void 0 : _resolvedEmojiProvide.call(resolvedEmojiProvider, {
|
|
244
|
+
id: id,
|
|
245
|
+
shortName: shortName,
|
|
246
|
+
fallback: fallback
|
|
247
|
+
});
|
|
248
|
+
// MDPI standard/Atlassian images are 32px. Reuse the provider's URL instead of
|
|
249
|
+
// downloading a larger catalogue image when those pixels already cover the display.
|
|
250
|
+
if (imageURL && imageURL !== failedAdaptiveImageURL && isMdpiImageURL(imageURL)) {
|
|
251
|
+
return _objectSpread(_objectSpread({}, emoji), {}, {
|
|
252
|
+
representation: {
|
|
253
|
+
imagePath: imageURL,
|
|
254
|
+
width: 32,
|
|
255
|
+
height: 32
|
|
256
|
+
},
|
|
257
|
+
altRepresentation: undefined
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
}
|
|
222
261
|
return emoji;
|
|
223
|
-
}, [emoji, optimisticImageURL, fallback, fitToHeight, id, shortName, pageTitleEmoji]);
|
|
262
|
+
}, [emoji, optimisticImageURL, fallback, fitToHeight, id, shortName, pageTitleEmoji, resolvedEmojiProvider, failedAdaptiveImageURL]);
|
|
224
263
|
var handleOnLoadError = (0, _react.useCallback)(function (emojiId) {
|
|
264
|
+
if ((0, _fg.fg)('platform_emoji_adaptive_image_size') && !optimisticImageURL && optimisticEmojiDescription !== emoji && optimisticEmojiDescription !== null && optimisticEmojiDescription !== void 0 && optimisticEmojiDescription.representation && 'imagePath' in optimisticEmojiDescription.representation) {
|
|
265
|
+
setFailedAdaptiveImageURL(optimisticEmojiDescription.representation.imagePath);
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
225
268
|
setImageLoadError(true);
|
|
226
269
|
var reason = 'load error';
|
|
227
270
|
onEmojiLoadFail && onEmojiLoadFail(emojiId.id, reason);
|
|
@@ -232,7 +275,7 @@ var ResourcedEmojiComponent = exports.ResourcedEmojiComponent = function Resourc
|
|
|
232
275
|
emojiId: emojiId.id
|
|
233
276
|
}
|
|
234
277
|
});
|
|
235
|
-
}, [onEmojiLoadFail]);
|
|
278
|
+
}, [onEmojiLoadFail, optimisticImageURL, optimisticEmojiDescription, emoji]);
|
|
236
279
|
var handleOnLoadSuccess = (0, _react.useCallback)(function (emojiId) {
|
|
237
280
|
onEmojiLoadSuccess && onEmojiLoadSuccess(emojiId.id);
|
|
238
281
|
}, [onEmojiLoadSuccess]);
|
|
@@ -17,7 +17,7 @@ var createEvent = exports.createEvent = function createEvent(eventType, action,
|
|
|
17
17
|
actionSubjectId: actionSubjectId,
|
|
18
18
|
attributes: _objectSpread({
|
|
19
19
|
packageName: "@atlaskit/emoji",
|
|
20
|
-
packageVersion: "73.3.
|
|
20
|
+
packageVersion: "73.3.7"
|
|
21
21
|
}, attributes)
|
|
22
22
|
};
|
|
23
23
|
};
|
|
@@ -3,6 +3,7 @@ import "./ResourcedEmojiComponent.compiled.css";
|
|
|
3
3
|
import { ax, ix } from "@compiled/react/runtime";
|
|
4
4
|
import React, { useCallback, useEffect, useLayoutEffect, useMemo, useState } from 'react';
|
|
5
5
|
import { fg } from '@atlaskit/platform-feature-flags/fg';
|
|
6
|
+
import { getPixelRatio } from '../../api/getPixelRatio';
|
|
6
7
|
import { EmojiCommonProvider } from '../../context/EmojiCommonProvider';
|
|
7
8
|
import { UfoEmojiTimings } from '../../types';
|
|
8
9
|
import { hasUfoMarked } from '../../util/analytics/hasUfoMarked';
|
|
@@ -12,6 +13,13 @@ import { isPromise } from '../../util/is-promise';
|
|
|
12
13
|
import Emoji from './Emoji';
|
|
13
14
|
import EmojiPlaceholder from './EmojiPlaceholder';
|
|
14
15
|
const ignoreWrapperStyles = null;
|
|
16
|
+
const isMdpiImageURL = imageURL => {
|
|
17
|
+
try {
|
|
18
|
+
return new URL(imageURL, 'https://emoji.invalid').searchParams.get('scale') === 'MDPI';
|
|
19
|
+
} catch {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
15
23
|
var ResourcedEmojiComponentRenderStatesEnum = /*#__PURE__*/function (ResourcedEmojiComponentRenderStatesEnum) {
|
|
16
24
|
ResourcedEmojiComponentRenderStatesEnum["INITIAL"] = "INITIAL";
|
|
17
25
|
ResourcedEmojiComponentRenderStatesEnum["FALLBACK"] = "FALLBACK";
|
|
@@ -42,6 +50,7 @@ export const ResourcedEmojiComponent = ({
|
|
|
42
50
|
const [emoji, setEmoji] = useState();
|
|
43
51
|
const [loaded, setLoaded] = useState(false);
|
|
44
52
|
const [imageLoadError, setImageLoadError] = useState(false);
|
|
53
|
+
const [failedAdaptiveImageURL, setFailedAdaptiveImageURL] = useState();
|
|
45
54
|
const [resolvedEmojiProvider, setResolvedEmojiProvider] = useState();
|
|
46
55
|
const fetchOrGetEmoji = useCallback(async (_emojiProvider, emojiId, optimisticFetch = false) => {
|
|
47
56
|
if (!_emojiProvider.fetchByEmojiId) {
|
|
@@ -141,6 +150,10 @@ export const ResourcedEmojiComponent = ({
|
|
|
141
150
|
return ResourcedEmojiComponentRenderStatesEnum.EMOJI;
|
|
142
151
|
}, [emoji, loaded, optimisticImageURL, imageLoadError]);
|
|
143
152
|
const optimisticEmojiDescription = useMemo(() => {
|
|
153
|
+
if (optimisticImageURL && emoji && (emoji.type === 'STANDARD' || emoji.type === 'ATLASSIAN') && fitToHeight * Math.max(1, getPixelRatio()) > 32 && isMdpiImageURL(optimisticImageURL) && fg('platform_emoji_adaptive_image_size')) {
|
|
154
|
+
return emoji;
|
|
155
|
+
}
|
|
156
|
+
|
|
144
157
|
// reduce blast radius by targeting page title
|
|
145
158
|
if (pageTitleEmoji && optimisticImageURL && fg('platform_emoji_prevent_img_src_changing')) {
|
|
146
159
|
return {
|
|
@@ -173,9 +186,34 @@ export const ResourcedEmojiComponent = ({
|
|
|
173
186
|
}
|
|
174
187
|
};
|
|
175
188
|
}
|
|
189
|
+
if (fg('platform_emoji_adaptive_image_size') && emoji && (emoji.type === 'STANDARD' || emoji.type === 'ATLASSIAN') && emoji.representation && 'imagePath' in emoji.representation && emoji.representation.height > 32 && fitToHeight > 0 && fitToHeight * Math.max(1, getPixelRatio()) <= 32) {
|
|
190
|
+
var _resolvedEmojiProvide;
|
|
191
|
+
const imageURL = resolvedEmojiProvider === null || resolvedEmojiProvider === void 0 ? void 0 : (_resolvedEmojiProvide = resolvedEmojiProvider.getOptimisticImageURL) === null || _resolvedEmojiProvide === void 0 ? void 0 : _resolvedEmojiProvide.call(resolvedEmojiProvider, {
|
|
192
|
+
id,
|
|
193
|
+
shortName,
|
|
194
|
+
fallback
|
|
195
|
+
});
|
|
196
|
+
// MDPI standard/Atlassian images are 32px. Reuse the provider's URL instead of
|
|
197
|
+
// downloading a larger catalogue image when those pixels already cover the display.
|
|
198
|
+
if (imageURL && imageURL !== failedAdaptiveImageURL && isMdpiImageURL(imageURL)) {
|
|
199
|
+
return {
|
|
200
|
+
...emoji,
|
|
201
|
+
representation: {
|
|
202
|
+
imagePath: imageURL,
|
|
203
|
+
width: 32,
|
|
204
|
+
height: 32
|
|
205
|
+
},
|
|
206
|
+
altRepresentation: undefined
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
}
|
|
176
210
|
return emoji;
|
|
177
|
-
}, [emoji, optimisticImageURL, fallback, fitToHeight, id, shortName, pageTitleEmoji]);
|
|
211
|
+
}, [emoji, optimisticImageURL, fallback, fitToHeight, id, shortName, pageTitleEmoji, resolvedEmojiProvider, failedAdaptiveImageURL]);
|
|
178
212
|
const handleOnLoadError = useCallback(emojiId => {
|
|
213
|
+
if (fg('platform_emoji_adaptive_image_size') && !optimisticImageURL && optimisticEmojiDescription !== emoji && optimisticEmojiDescription !== null && optimisticEmojiDescription !== void 0 && optimisticEmojiDescription.representation && 'imagePath' in optimisticEmojiDescription.representation) {
|
|
214
|
+
setFailedAdaptiveImageURL(optimisticEmojiDescription.representation.imagePath);
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
179
217
|
setImageLoadError(true);
|
|
180
218
|
const reason = 'load error';
|
|
181
219
|
onEmojiLoadFail && onEmojiLoadFail(emojiId.id, reason);
|
|
@@ -186,7 +224,7 @@ export const ResourcedEmojiComponent = ({
|
|
|
186
224
|
emojiId: emojiId.id
|
|
187
225
|
}
|
|
188
226
|
});
|
|
189
|
-
}, [onEmojiLoadFail]);
|
|
227
|
+
}, [onEmojiLoadFail, optimisticImageURL, optimisticEmojiDescription, emoji]);
|
|
190
228
|
const handleOnLoadSuccess = useCallback(emojiId => {
|
|
191
229
|
onEmojiLoadSuccess && onEmojiLoadSuccess(emojiId.id);
|
|
192
230
|
}, [onEmojiLoadSuccess]);
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
/* ResourcedEmojiComponent.tsx generated by @compiled/babel-plugin v3.0.2 */
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
3
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
3
4
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
4
5
|
import "./ResourcedEmojiComponent.compiled.css";
|
|
5
6
|
import { ax, ix } from "@compiled/react/runtime";
|
|
7
|
+
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; }
|
|
8
|
+
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
9
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
7
10
|
import React, { useCallback, useEffect, useLayoutEffect, useMemo, useState } from 'react';
|
|
8
11
|
import { fg } from '@atlaskit/platform-feature-flags/fg';
|
|
12
|
+
import { getPixelRatio } from '../../api/getPixelRatio';
|
|
9
13
|
import { EmojiCommonProvider } from '../../context/EmojiCommonProvider';
|
|
10
14
|
import { UfoEmojiTimings } from '../../types';
|
|
11
15
|
import { hasUfoMarked } from '../../util/analytics/hasUfoMarked';
|
|
@@ -15,6 +19,13 @@ import { isPromise } from '../../util/is-promise';
|
|
|
15
19
|
import Emoji from './Emoji';
|
|
16
20
|
import EmojiPlaceholder from './EmojiPlaceholder';
|
|
17
21
|
var ignoreWrapperStyles = null;
|
|
22
|
+
var isMdpiImageURL = function isMdpiImageURL(imageURL) {
|
|
23
|
+
try {
|
|
24
|
+
return new URL(imageURL, 'https://emoji.invalid').searchParams.get('scale') === 'MDPI';
|
|
25
|
+
} catch (_unused) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
18
29
|
var ResourcedEmojiComponentRenderStatesEnum = /*#__PURE__*/function (ResourcedEmojiComponentRenderStatesEnum) {
|
|
19
30
|
ResourcedEmojiComponentRenderStatesEnum["INITIAL"] = "INITIAL";
|
|
20
31
|
ResourcedEmojiComponentRenderStatesEnum["FALLBACK"] = "FALLBACK";
|
|
@@ -60,8 +71,12 @@ export var ResourcedEmojiComponent = function ResourcedEmojiComponent(_ref) {
|
|
|
60
71
|
setImageLoadError = _useState6[1];
|
|
61
72
|
var _useState7 = useState(),
|
|
62
73
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
63
|
-
|
|
64
|
-
|
|
74
|
+
failedAdaptiveImageURL = _useState8[0],
|
|
75
|
+
setFailedAdaptiveImageURL = _useState8[1];
|
|
76
|
+
var _useState9 = useState(),
|
|
77
|
+
_useState0 = _slicedToArray(_useState9, 2),
|
|
78
|
+
resolvedEmojiProvider = _useState0[0],
|
|
79
|
+
setResolvedEmojiProvider = _useState0[1];
|
|
65
80
|
var fetchOrGetEmoji = useCallback( /*#__PURE__*/function () {
|
|
66
81
|
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_emojiProvider, emojiId) {
|
|
67
82
|
var optimisticFetch,
|
|
@@ -178,6 +193,10 @@ export var ResourcedEmojiComponent = function ResourcedEmojiComponent(_ref) {
|
|
|
178
193
|
return ResourcedEmojiComponentRenderStatesEnum.EMOJI;
|
|
179
194
|
}, [emoji, loaded, optimisticImageURL, imageLoadError]);
|
|
180
195
|
var optimisticEmojiDescription = useMemo(function () {
|
|
196
|
+
if (optimisticImageURL && emoji && (emoji.type === 'STANDARD' || emoji.type === 'ATLASSIAN') && fitToHeight * Math.max(1, getPixelRatio()) > 32 && isMdpiImageURL(optimisticImageURL) && fg('platform_emoji_adaptive_image_size')) {
|
|
197
|
+
return emoji;
|
|
198
|
+
}
|
|
199
|
+
|
|
181
200
|
// reduce blast radius by targeting page title
|
|
182
201
|
if (pageTitleEmoji && optimisticImageURL && fg('platform_emoji_prevent_img_src_changing')) {
|
|
183
202
|
return {
|
|
@@ -210,9 +229,33 @@ export var ResourcedEmojiComponent = function ResourcedEmojiComponent(_ref) {
|
|
|
210
229
|
}
|
|
211
230
|
};
|
|
212
231
|
}
|
|
232
|
+
if (fg('platform_emoji_adaptive_image_size') && emoji && (emoji.type === 'STANDARD' || emoji.type === 'ATLASSIAN') && emoji.representation && 'imagePath' in emoji.representation && emoji.representation.height > 32 && fitToHeight > 0 && fitToHeight * Math.max(1, getPixelRatio()) <= 32) {
|
|
233
|
+
var _resolvedEmojiProvide;
|
|
234
|
+
var imageURL = resolvedEmojiProvider === null || resolvedEmojiProvider === void 0 || (_resolvedEmojiProvide = resolvedEmojiProvider.getOptimisticImageURL) === null || _resolvedEmojiProvide === void 0 ? void 0 : _resolvedEmojiProvide.call(resolvedEmojiProvider, {
|
|
235
|
+
id: id,
|
|
236
|
+
shortName: shortName,
|
|
237
|
+
fallback: fallback
|
|
238
|
+
});
|
|
239
|
+
// MDPI standard/Atlassian images are 32px. Reuse the provider's URL instead of
|
|
240
|
+
// downloading a larger catalogue image when those pixels already cover the display.
|
|
241
|
+
if (imageURL && imageURL !== failedAdaptiveImageURL && isMdpiImageURL(imageURL)) {
|
|
242
|
+
return _objectSpread(_objectSpread({}, emoji), {}, {
|
|
243
|
+
representation: {
|
|
244
|
+
imagePath: imageURL,
|
|
245
|
+
width: 32,
|
|
246
|
+
height: 32
|
|
247
|
+
},
|
|
248
|
+
altRepresentation: undefined
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
}
|
|
213
252
|
return emoji;
|
|
214
|
-
}, [emoji, optimisticImageURL, fallback, fitToHeight, id, shortName, pageTitleEmoji]);
|
|
253
|
+
}, [emoji, optimisticImageURL, fallback, fitToHeight, id, shortName, pageTitleEmoji, resolvedEmojiProvider, failedAdaptiveImageURL]);
|
|
215
254
|
var handleOnLoadError = useCallback(function (emojiId) {
|
|
255
|
+
if (fg('platform_emoji_adaptive_image_size') && !optimisticImageURL && optimisticEmojiDescription !== emoji && optimisticEmojiDescription !== null && optimisticEmojiDescription !== void 0 && optimisticEmojiDescription.representation && 'imagePath' in optimisticEmojiDescription.representation) {
|
|
256
|
+
setFailedAdaptiveImageURL(optimisticEmojiDescription.representation.imagePath);
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
216
259
|
setImageLoadError(true);
|
|
217
260
|
var reason = 'load error';
|
|
218
261
|
onEmojiLoadFail && onEmojiLoadFail(emojiId.id, reason);
|
|
@@ -223,7 +266,7 @@ export var ResourcedEmojiComponent = function ResourcedEmojiComponent(_ref) {
|
|
|
223
266
|
emojiId: emojiId.id
|
|
224
267
|
}
|
|
225
268
|
});
|
|
226
|
-
}, [onEmojiLoadFail]);
|
|
269
|
+
}, [onEmojiLoadFail, optimisticImageURL, optimisticEmojiDescription, emoji]);
|
|
227
270
|
var handleOnLoadSuccess = useCallback(function (emojiId) {
|
|
228
271
|
onEmojiLoadSuccess && onEmojiLoadSuccess(emojiId.id);
|
|
229
272
|
}, [onEmojiLoadSuccess]);
|
|
@@ -10,7 +10,7 @@ export var createEvent = function createEvent(eventType, action, actionSubject,
|
|
|
10
10
|
actionSubjectId: actionSubjectId,
|
|
11
11
|
attributes: _objectSpread({
|
|
12
12
|
packageName: "@atlaskit/emoji",
|
|
13
|
-
packageVersion: "73.3.
|
|
13
|
+
packageVersion: "73.3.7"
|
|
14
14
|
}, attributes)
|
|
15
15
|
};
|
|
16
16
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/emoji",
|
|
3
|
-
"version": "73.3.
|
|
3
|
+
"version": "73.3.8",
|
|
4
4
|
"description": "Fabric emoji React components",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"registry": "https://registry.npmjs.org/"
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"@atlaskit/spinner": "^20.4.0",
|
|
55
55
|
"@atlaskit/textfield": "^10.3.0",
|
|
56
56
|
"@atlaskit/theme": "^28.2.0",
|
|
57
|
-
"@atlaskit/tmp-editor-statsig": "^
|
|
57
|
+
"@atlaskit/tmp-editor-statsig": "^253.0.0",
|
|
58
58
|
"@atlaskit/tokens": "^20.9.0",
|
|
59
59
|
"@atlaskit/tooltip": "^24.4.0",
|
|
60
60
|
"@atlaskit/ufo": "^2.0.0",
|