@atlaskit/emoji 64.7.1 → 65.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 +16 -0
- package/dist/cjs/api/EmojiResource.js +250 -91
- package/dist/cjs/api/media/SiteEmojiResource.js +4 -2
- package/dist/cjs/api/media/TokenManager.js +13 -12
- package/dist/cjs/components/common/EmojiImage.js +99 -0
- package/dist/cjs/components/common/EmojiPlaceholder.js +7 -5
- package/dist/cjs/components/common/ResourcedEmoji.js +1 -1
- package/dist/cjs/components/common/ResourcedEmojiComponent.js +159 -165
- package/dist/cjs/components/common/UploadEmoji.js +3 -14
- package/dist/cjs/components/common/styles.js +26 -9
- package/dist/cjs/components/picker/EmojiPickerComponent.js +3 -3
- package/dist/cjs/components/uploader/EmojiUploadComponent.js +1 -1
- package/dist/cjs/context/EmojiContextProvider.js +33 -0
- package/dist/cjs/index.js +20 -0
- package/dist/cjs/types.js +1 -0
- package/dist/cjs/util/analytics/samplingUfo.js +13 -3
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/api/EmojiResource.js +116 -40
- package/dist/es2019/api/media/SiteEmojiResource.js +2 -2
- package/dist/es2019/api/media/TokenManager.js +12 -12
- package/dist/es2019/components/common/EmojiImage.js +74 -0
- package/dist/es2019/components/common/EmojiPlaceholder.js +7 -5
- package/dist/es2019/components/common/ResourcedEmoji.js +1 -1
- package/dist/es2019/components/common/ResourcedEmojiComponent.js +117 -104
- package/dist/es2019/components/common/UploadEmoji.js +3 -7
- package/dist/es2019/components/common/styles.js +30 -9
- package/dist/es2019/components/picker/EmojiPickerComponent.js +2 -2
- package/dist/es2019/components/uploader/EmojiUploadComponent.js +1 -1
- package/dist/es2019/context/EmojiContextProvider.js +9 -1
- package/dist/es2019/index.js +5 -4
- package/dist/es2019/types.js +1 -0
- package/dist/es2019/util/analytics/samplingUfo.js +11 -1
- package/dist/es2019/version.json +1 -1
- package/dist/esm/api/EmojiResource.js +257 -93
- package/dist/esm/api/media/SiteEmojiResource.js +5 -3
- package/dist/esm/api/media/TokenManager.js +13 -12
- package/dist/esm/components/common/EmojiImage.js +84 -0
- package/dist/esm/components/common/EmojiPlaceholder.js +8 -5
- package/dist/esm/components/common/ResourcedEmoji.js +1 -1
- package/dist/esm/components/common/ResourcedEmojiComponent.js +155 -165
- package/dist/esm/components/common/UploadEmoji.js +3 -12
- package/dist/esm/components/common/styles.js +25 -10
- package/dist/esm/components/picker/EmojiPickerComponent.js +2 -2
- package/dist/esm/components/uploader/EmojiUploadComponent.js +1 -1
- package/dist/esm/context/EmojiContextProvider.js +30 -1
- package/dist/esm/index.js +5 -4
- package/dist/esm/types.js +1 -0
- package/dist/esm/util/analytics/samplingUfo.js +13 -2
- package/dist/esm/version.json +1 -1
- package/dist/types/api/EmojiResource.d.ts +20 -2
- package/dist/types/api/EmojiUtils.d.ts +7 -1
- package/dist/types/api/media/SiteEmojiResource.d.ts +1 -1
- package/dist/types/api/media/TokenManager.d.ts +1 -0
- package/dist/types/components/common/EmojiImage.d.ts +13 -0
- package/dist/types/components/common/EmojiPlaceholder.d.ts +1 -0
- package/dist/types/components/common/LoadingEmojiComponent.d.ts +4 -4
- package/dist/types/components/common/ResourcedEmoji.d.ts +3 -3
- package/dist/types/components/common/ResourcedEmojiComponent.d.ts +21 -12
- package/dist/types/components/common/UploadEmoji.d.ts +1 -1
- package/dist/types/components/common/styles.d.ts +1 -0
- package/dist/types/index.d.ts +5 -4
- package/dist/types/types.d.ts +12 -2
- package/dist/types/util/analytics/index.d.ts +1 -1
- package/dist/types/util/analytics/samplingUfo.d.ts +1 -8
- package/dist/types/util/analytics/ufoExperiences.d.ts +2 -2
- package/local-config-example.ts +22 -1
- package/package.json +4 -4
- package/report.api.md +1287 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.EmojiImage = void 0;
|
|
9
|
+
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
|
+
|
|
12
|
+
var _core = require("@emotion/core");
|
|
13
|
+
|
|
14
|
+
var _react = require("react");
|
|
15
|
+
|
|
16
|
+
var _styles = require("./styles");
|
|
17
|
+
|
|
18
|
+
var _constants = require("../../util/constants");
|
|
19
|
+
|
|
20
|
+
/** @jsx jsx */
|
|
21
|
+
var EmojiImage = function EmojiImage(props) {
|
|
22
|
+
var _props$maxSize = props.maxSize,
|
|
23
|
+
maxSize = _props$maxSize === void 0 ? _constants.defaultEmojiHeight : _props$maxSize,
|
|
24
|
+
representation = props.representation,
|
|
25
|
+
showTooltip = props.showTooltip,
|
|
26
|
+
imageUrl = props.imageUrl,
|
|
27
|
+
showImageBeforeLoad = props.showImageBeforeLoad,
|
|
28
|
+
emojiId = props.emojiId,
|
|
29
|
+
onImageLoadError = props.onImageLoadError;
|
|
30
|
+
var shortName = emojiId.shortName;
|
|
31
|
+
|
|
32
|
+
var _useState = (0, _react.useState)(false),
|
|
33
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
34
|
+
validImage = _useState2[0],
|
|
35
|
+
setValidImage = _useState2[1];
|
|
36
|
+
|
|
37
|
+
var imageSize = (0, _react.useMemo)(function () {
|
|
38
|
+
if (representation) {
|
|
39
|
+
return {
|
|
40
|
+
width: maxSize / (representation.height * representation.width),
|
|
41
|
+
height: maxSize
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return {
|
|
46
|
+
width: maxSize,
|
|
47
|
+
height: maxSize
|
|
48
|
+
};
|
|
49
|
+
}, [maxSize, representation]);
|
|
50
|
+
var style = {
|
|
51
|
+
minWidth: "".concat(imageSize.width, "px"),
|
|
52
|
+
width: "".concat(imageSize.width, "px"),
|
|
53
|
+
height: "".concat(imageSize.height, "px")
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
var handleImageLoad = function handleImageLoad() {
|
|
57
|
+
return setValidImage(true);
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
var handleImageLoadError = function handleImageLoadError() {
|
|
61
|
+
setValidImage(false);
|
|
62
|
+
|
|
63
|
+
if (onImageLoadError) {
|
|
64
|
+
onImageLoadError();
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
var visibility = (0, _react.useMemo)(function () {
|
|
69
|
+
return showImageBeforeLoad || validImage ? 'initial' : 'hidden';
|
|
70
|
+
}, [validImage, showImageBeforeLoad]);
|
|
71
|
+
return (0, _core.jsx)("span", {
|
|
72
|
+
"data-testid": "emoji-image-".concat(shortName),
|
|
73
|
+
"aria-label": shortName,
|
|
74
|
+
className: "".concat(_styles.emojiMainStyle, " ").concat(_styles.emojiNodeStyles, " ").concat(_styles.emojiImage),
|
|
75
|
+
style: style,
|
|
76
|
+
css: [_styles.emojiContainer, _styles.emojiStyles],
|
|
77
|
+
title: showTooltip ? shortName : ''
|
|
78
|
+
}, (0, _core.jsx)("img", {
|
|
79
|
+
className: "emoji",
|
|
80
|
+
alt: shortName,
|
|
81
|
+
onLoad: function onLoad() {
|
|
82
|
+
return handleImageLoad();
|
|
83
|
+
},
|
|
84
|
+
onError: function onError() {
|
|
85
|
+
return handleImageLoadError();
|
|
86
|
+
},
|
|
87
|
+
src: imageUrl,
|
|
88
|
+
style: {
|
|
89
|
+
objectFit: 'contain',
|
|
90
|
+
visibility: visibility
|
|
91
|
+
},
|
|
92
|
+
width: imageSize.width,
|
|
93
|
+
height: imageSize.height //@ts-ignore
|
|
94
|
+
,
|
|
95
|
+
loading: "lazy"
|
|
96
|
+
}));
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
exports.EmojiImage = EmojiImage;
|
|
@@ -11,19 +11,19 @@ var _styles = require("./styles");
|
|
|
11
11
|
|
|
12
12
|
var _constants = require("../../util/constants");
|
|
13
13
|
|
|
14
|
-
var _typeHelpers = require("../../util/type-helpers");
|
|
15
|
-
|
|
16
14
|
/** @jsx jsx */
|
|
17
15
|
var EmojiPlaceholder = function EmojiPlaceholder(props) {
|
|
18
16
|
var shortName = props.shortName,
|
|
19
17
|
_props$size = props.size,
|
|
20
18
|
size = _props$size === void 0 ? _constants.defaultEmojiHeight : _props$size,
|
|
21
19
|
showTooltip = props.showTooltip,
|
|
22
|
-
representation = props.representation
|
|
20
|
+
representation = props.representation,
|
|
21
|
+
_props$loading = props.loading,
|
|
22
|
+
loading = _props$loading === void 0 ? false : _props$loading;
|
|
23
23
|
var scaledWidth;
|
|
24
24
|
var scaledHeight;
|
|
25
25
|
|
|
26
|
-
if (representation && size
|
|
26
|
+
if (representation && size) {
|
|
27
27
|
var _width = representation.width;
|
|
28
28
|
var _height = representation.height;
|
|
29
29
|
|
|
@@ -37,14 +37,16 @@ var EmojiPlaceholder = function EmojiPlaceholder(props) {
|
|
|
37
37
|
var height = scaledHeight || size;
|
|
38
38
|
var style = {
|
|
39
39
|
fill: 'f7f7f7',
|
|
40
|
+
minWidth: "".concat(width, "px"),
|
|
40
41
|
width: "".concat(width, "px"),
|
|
41
42
|
height: "".concat(height, "px")
|
|
42
43
|
};
|
|
43
44
|
return (0, _core.jsx)("span", {
|
|
44
45
|
"data-testid": "emoji-placeholder-".concat(shortName),
|
|
46
|
+
"aria-busy": loading,
|
|
45
47
|
"aria-label": shortName,
|
|
46
48
|
className: _styles.placeholder,
|
|
47
|
-
css: _styles.placeholderContainer,
|
|
49
|
+
css: loading ? [_styles.placeholderContainer, _styles.placeholderContainerAnimated] : _styles.placeholderContainer,
|
|
48
50
|
style: style,
|
|
49
51
|
title: showTooltip ? shortName : ''
|
|
50
52
|
});
|
|
@@ -57,7 +57,7 @@ var resourcedEmojiModuleLoader = function resourcedEmojiModuleLoader() {
|
|
|
57
57
|
|
|
58
58
|
var resourcedEmojiComponentLoader = function resourcedEmojiComponentLoader() {
|
|
59
59
|
return resourcedEmojiModuleLoader().then(function (module) {
|
|
60
|
-
return module.
|
|
60
|
+
return module.ResourcedEmojiComponent;
|
|
61
61
|
});
|
|
62
62
|
};
|
|
63
63
|
|
|
@@ -7,21 +7,9 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
7
7
|
Object.defineProperty(exports, "__esModule", {
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
|
-
exports.
|
|
10
|
+
exports.ResourcedEmojiComponent = void 0;
|
|
11
11
|
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
-
|
|
16
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
17
|
-
|
|
18
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
|
-
|
|
20
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
21
|
-
|
|
22
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
23
|
-
|
|
24
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
25
13
|
|
|
26
14
|
var _react = _interopRequireWildcard(require("react"));
|
|
27
15
|
|
|
@@ -31,7 +19,7 @@ var _typeHelpers = require("../../util/type-helpers");
|
|
|
31
19
|
|
|
32
20
|
var _types = require("../../types");
|
|
33
21
|
|
|
34
|
-
var
|
|
22
|
+
var _Emoji = _interopRequireDefault(require("./Emoji"));
|
|
35
23
|
|
|
36
24
|
var _EmojiPlaceholder = _interopRequireDefault(require("./EmojiPlaceholder"));
|
|
37
25
|
|
|
@@ -39,76 +27,68 @@ var _analytics = require("../../util/analytics");
|
|
|
39
27
|
|
|
40
28
|
var _LegacyEmojiContextProvider = _interopRequireDefault(require("../../context/LegacyEmojiContextProvider"));
|
|
41
29
|
|
|
30
|
+
var _EmojiImage = require("./EmojiImage");
|
|
31
|
+
|
|
42
32
|
var _ufoExperiences = require("../../util/analytics/ufoExperiences");
|
|
43
33
|
|
|
44
34
|
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
35
|
|
|
46
36
|
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
37
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
emoji: {
|
|
100
|
-
id: emojiId.id,
|
|
101
|
-
shortName: emojiId.shortName
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
}).catch(function () {
|
|
38
|
+
var ResourcedEmojiComponentRenderStatesEnum;
|
|
39
|
+
|
|
40
|
+
(function (ResourcedEmojiComponentRenderStatesEnum) {
|
|
41
|
+
ResourcedEmojiComponentRenderStatesEnum["INITIAL"] = "INITIAL";
|
|
42
|
+
ResourcedEmojiComponentRenderStatesEnum["OPTIMISTIC"] = "OPTIMISTIC";
|
|
43
|
+
ResourcedEmojiComponentRenderStatesEnum["FALLBACK"] = "FALLBACK";
|
|
44
|
+
ResourcedEmojiComponentRenderStatesEnum["EMOJI"] = "EMOJI";
|
|
45
|
+
})(ResourcedEmojiComponentRenderStatesEnum || (ResourcedEmojiComponentRenderStatesEnum = {}));
|
|
46
|
+
|
|
47
|
+
var ResourcedEmojiComponent = function ResourcedEmojiComponent(_ref) {
|
|
48
|
+
var emojiProvider = _ref.emojiProvider,
|
|
49
|
+
emojiId = _ref.emojiId,
|
|
50
|
+
showTooltip = _ref.showTooltip,
|
|
51
|
+
customFallback = _ref.customFallback,
|
|
52
|
+
_ref$fitToHeight = _ref.fitToHeight,
|
|
53
|
+
fitToHeight = _ref$fitToHeight === void 0 ? _constants.defaultEmojiHeight : _ref$fitToHeight,
|
|
54
|
+
_ref$optimistic = _ref.optimistic,
|
|
55
|
+
optimistic = _ref$optimistic === void 0 ? false : _ref$optimistic,
|
|
56
|
+
optimisticImageURL = _ref.optimisticImageURL;
|
|
57
|
+
var shortName = emojiId.shortName,
|
|
58
|
+
id = emojiId.id,
|
|
59
|
+
fallback = emojiId.fallback;
|
|
60
|
+
var emojiContextValue = {
|
|
61
|
+
emoji: {
|
|
62
|
+
emojiProvider: emojiProvider
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
var _useState = (0, _react.useState)(),
|
|
67
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
68
|
+
emoji = _useState2[0],
|
|
69
|
+
setEmoji = _useState2[1];
|
|
70
|
+
|
|
71
|
+
var _useState3 = (0, _react.useState)(false),
|
|
72
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
73
|
+
loaded = _useState4[0],
|
|
74
|
+
setLoaded = _useState4[1];
|
|
75
|
+
|
|
76
|
+
var fetchOrGetEmoji = function fetchOrGetEmoji(emojiProvider, emojiId) {
|
|
77
|
+
var optimisticFetch = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
78
|
+
// TODO: Pass in optimistic into findByEmojiId to allow a single emoji meta fetch
|
|
79
|
+
var foundEmoji = emojiProvider.fetchByEmojiId(emojiId, optimisticFetch);
|
|
80
|
+
(0, _analytics.sampledUfoRenderedEmoji)(emojiId).mark(_types.UfoEmojiTimings.METADATA_START);
|
|
81
|
+
|
|
82
|
+
if ((0, _typeHelpers.isPromise)(foundEmoji)) {
|
|
83
|
+
setLoaded(false);
|
|
84
|
+
foundEmoji.then(function (emoji) {
|
|
85
|
+
setEmoji(emoji);
|
|
86
|
+
|
|
87
|
+
if (!emoji) {
|
|
88
|
+
// emoji is undefined
|
|
109
89
|
(0, _analytics.sampledUfoRenderedEmoji)(emojiId).failure({
|
|
110
90
|
metadata: {
|
|
111
|
-
reason: 'failed to
|
|
91
|
+
reason: 'failed to find',
|
|
112
92
|
source: 'ResourcedEmojiComponent',
|
|
113
93
|
data: {
|
|
114
94
|
emoji: {
|
|
@@ -118,99 +98,113 @@ var ResourcedEmojiComponent = /*#__PURE__*/function (_Component) {
|
|
|
118
98
|
}
|
|
119
99
|
}
|
|
120
100
|
});
|
|
101
|
+
(0, _analytics.sampledUfoRenderedEmoji)(emojiId).mark(_types.UfoEmojiTimings.METADATA_END);
|
|
102
|
+
|
|
103
|
+
if (!emoji) {
|
|
104
|
+
// emoji is undefined
|
|
105
|
+
(0, _analytics.sampledUfoRenderedEmoji)(emojiId).failure({
|
|
106
|
+
metadata: {
|
|
107
|
+
reason: 'failed to find',
|
|
108
|
+
source: 'ResourcedEmojiComponent',
|
|
109
|
+
data: {
|
|
110
|
+
emoji: {
|
|
111
|
+
id: emojiId.id,
|
|
112
|
+
shortName: emojiId.shortName
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}).catch(function () {
|
|
120
|
+
setEmoji(undefined);
|
|
121
|
+
(0, _analytics.sampledUfoRenderedEmoji)(emojiId).failure({
|
|
122
|
+
metadata: {
|
|
123
|
+
reason: 'failed to load',
|
|
124
|
+
source: 'ResourcedEmojiComponent',
|
|
125
|
+
data: {
|
|
126
|
+
emoji: {
|
|
127
|
+
id: emojiId.id,
|
|
128
|
+
shortName: emojiId.shortName
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
121
132
|
});
|
|
122
|
-
}
|
|
123
|
-
(
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
133
|
+
}).finally(function () {
|
|
134
|
+
setLoaded(true);
|
|
135
|
+
(0, _analytics.sampledUfoRenderedEmoji)(emojiId).mark(_types.UfoEmojiTimings.METADATA_END);
|
|
136
|
+
});
|
|
137
|
+
} else {
|
|
138
|
+
setEmoji(foundEmoji);
|
|
139
|
+
setLoaded(true);
|
|
140
|
+
(0, _analytics.sampledUfoRenderedEmoji)(emojiId).mark(_types.UfoEmojiTimings.METADATA_END);
|
|
130
141
|
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
if (!this.state.emoji) {
|
|
137
|
-
// using UNSAFE_componentWillMount instead of componentDidMount to avoid needless
|
|
138
|
-
// rerendering.
|
|
139
|
-
this.refreshEmoji(this.props.emojiProvider, this.props.emojiId);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}, {
|
|
143
|
-
key: "componentWillUnmount",
|
|
144
|
-
value: function componentWillUnmount() {
|
|
145
|
-
this.ready = false;
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
(0, _react.useEffect)(function () {
|
|
145
|
+
if (!emojiId) {
|
|
146
|
+
return;
|
|
146
147
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
if (!(0, _ufoExperiences.hasUfoMarked)((0, _analytics.sampledUfoRenderedEmoji)(this.props.emojiId), _types.UfoEmojiTimings.FMP_END)) {
|
|
151
|
-
(0, _analytics.sampledUfoRenderedEmoji)(this.props.emojiId).markFMP();
|
|
152
|
-
}
|
|
148
|
+
|
|
149
|
+
if (!(0, _ufoExperiences.hasUfoMarked)((0, _analytics.sampledUfoRenderedEmoji)(emojiId), _types.UfoEmojiTimings.FMP_END)) {
|
|
150
|
+
(0, _analytics.sampledUfoRenderedEmoji)(emojiId).markFMP();
|
|
153
151
|
}
|
|
154
|
-
},
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
this.refreshEmoji(nextProps.emojiProvider, nextProps.emojiId);
|
|
159
|
-
}
|
|
152
|
+
}, [emojiId]);
|
|
153
|
+
(0, _react.useMemo)(function () {
|
|
154
|
+
if (!emojiProvider || !emojiId) {
|
|
155
|
+
return;
|
|
160
156
|
}
|
|
161
|
-
}, {
|
|
162
|
-
key: "render",
|
|
163
|
-
value: function render() {
|
|
164
|
-
var _this$props = this.props,
|
|
165
|
-
emojiId = _this$props.emojiId,
|
|
166
|
-
_this$props$fitToHeig = _this$props.fitToHeight,
|
|
167
|
-
fitToHeight = _this$props$fitToHeig === void 0 ? _constants.defaultEmojiHeight : _this$props$fitToHeig,
|
|
168
|
-
showTooltip = _this$props.showTooltip;
|
|
169
|
-
var _this$state = this.state,
|
|
170
|
-
emoji = _this$state.emoji,
|
|
171
|
-
loaded = _this$state.loaded;
|
|
172
|
-
var shortName = emojiId.shortName,
|
|
173
|
-
fallback = emojiId.fallback;
|
|
174
|
-
|
|
175
|
-
if (emoji) {
|
|
176
|
-
return this.emojiWrapper( /*#__PURE__*/_react.default.createElement(_CachingEmoji.default, {
|
|
177
|
-
emoji: emoji,
|
|
178
|
-
showTooltip: showTooltip,
|
|
179
|
-
fitToHeight: fitToHeight
|
|
180
|
-
}));
|
|
181
|
-
} else if (loaded) {
|
|
182
|
-
// loaded but not found - render fallback
|
|
183
|
-
return this.emojiWrapper( /*#__PURE__*/_react.default.createElement("span", null, fallback || shortName));
|
|
184
|
-
}
|
|
185
157
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
158
|
+
fetchOrGetEmoji(emojiProvider, emojiId, optimistic);
|
|
159
|
+
}, [emojiProvider, emojiId, optimistic]);
|
|
160
|
+
var emojiRenderState = (0, _react.useMemo)(function () {
|
|
161
|
+
if (!emoji && !loaded && !optimisticImageURL) {
|
|
162
|
+
return ResourcedEmojiComponentRenderStatesEnum.INITIAL;
|
|
163
|
+
} else if (!emoji && !loaded && optimisticImageURL) {
|
|
164
|
+
return ResourcedEmojiComponentRenderStatesEnum.OPTIMISTIC;
|
|
165
|
+
} else if (!emoji && loaded) {
|
|
166
|
+
return ResourcedEmojiComponentRenderStatesEnum.FALLBACK;
|
|
191
167
|
}
|
|
192
|
-
}, {
|
|
193
|
-
key: "emojiWrapper",
|
|
194
|
-
value: function emojiWrapper(element) {
|
|
195
|
-
var _this$props$emojiId = this.props.emojiId,
|
|
196
|
-
shortName = _this$props$emojiId.shortName,
|
|
197
|
-
id = _this$props$emojiId.id,
|
|
198
|
-
fallback = _this$props$emojiId.fallback;
|
|
199
|
-
var emojiContextValue = {
|
|
200
|
-
emoji: {
|
|
201
|
-
emojiProvider: this.props.emojiProvider
|
|
202
|
-
}
|
|
203
|
-
};
|
|
204
|
-
return /*#__PURE__*/_react.default.createElement(_LegacyEmojiContextProvider.default, {
|
|
205
|
-
emojiContextValue: emojiContextValue
|
|
206
|
-
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
207
|
-
"data-emoji-id": id,
|
|
208
|
-
"data-emoji-short-name": shortName,
|
|
209
|
-
"data-emoji-text": fallback || shortName
|
|
210
|
-
}, element));
|
|
211
|
-
}
|
|
212
|
-
}]);
|
|
213
|
-
return ResourcedEmojiComponent;
|
|
214
|
-
}(_react.Component);
|
|
215
168
|
|
|
216
|
-
|
|
169
|
+
return ResourcedEmojiComponentRenderStatesEnum.EMOJI;
|
|
170
|
+
}, [emoji, loaded, optimisticImageURL]);
|
|
171
|
+
|
|
172
|
+
var handleOnLoadError = function handleOnLoadError(emojiId) {
|
|
173
|
+
(0, _analytics.sampledUfoRenderedEmoji)(emojiId).failure({
|
|
174
|
+
metadata: {
|
|
175
|
+
reason: 'load error',
|
|
176
|
+
source: 'ResourcedEmojiComponent',
|
|
177
|
+
data: {
|
|
178
|
+
emoji: {
|
|
179
|
+
id: emojiId.id,
|
|
180
|
+
shortName: emojiId.shortName
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
return /*#__PURE__*/_react.default.createElement(_LegacyEmojiContextProvider.default, {
|
|
188
|
+
emojiContextValue: emojiContextValue
|
|
189
|
+
}, /*#__PURE__*/_react.default.createElement("span", {
|
|
190
|
+
"data-emoji-id": id,
|
|
191
|
+
"data-emoji-short-name": shortName,
|
|
192
|
+
"data-emoji-text": fallback || shortName
|
|
193
|
+
}, emojiRenderState === ResourcedEmojiComponentRenderStatesEnum.INITIAL && /*#__PURE__*/_react.default.createElement(_EmojiPlaceholder.default, {
|
|
194
|
+
shortName: shortName,
|
|
195
|
+
showTooltip: showTooltip,
|
|
196
|
+
size: fitToHeight || _constants.defaultEmojiHeight,
|
|
197
|
+
loading: true
|
|
198
|
+
}), emojiRenderState === ResourcedEmojiComponentRenderStatesEnum.OPTIMISTIC && optimisticImageURL && /*#__PURE__*/_react.default.createElement(_EmojiImage.EmojiImage, {
|
|
199
|
+
emojiId: emojiId,
|
|
200
|
+
imageUrl: optimisticImageURL,
|
|
201
|
+
maxSize: fitToHeight || _constants.defaultEmojiHeight
|
|
202
|
+
}), emojiRenderState === ResourcedEmojiComponentRenderStatesEnum.FALLBACK && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, customFallback || fallback || shortName), emojiRenderState === ResourcedEmojiComponentRenderStatesEnum.EMOJI && emoji && /*#__PURE__*/_react.default.createElement(_Emoji.default, {
|
|
203
|
+
emoji: emoji,
|
|
204
|
+
onLoadError: handleOnLoadError,
|
|
205
|
+
showTooltip: showTooltip,
|
|
206
|
+
fitToHeight: fitToHeight
|
|
207
|
+
})));
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
exports.ResourcedEmojiComponent = ResourcedEmojiComponent;
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
8
6
|
exports.uploadEmoji = void 0;
|
|
9
7
|
|
|
10
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
12
8
|
var _EmojiResource = require("../../api/EmojiResource");
|
|
13
9
|
|
|
14
10
|
var _analytics = require("../../util/analytics");
|
|
@@ -17,18 +13,14 @@ var _i18n = require("../i18n");
|
|
|
17
13
|
|
|
18
14
|
var _ufoExperiences = require("../../util/analytics/ufoExperiences");
|
|
19
15
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
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; }
|
|
23
|
-
|
|
24
|
-
var uploadEmoji = function uploadEmoji(upload, emojiProvider, errorSetter, onSuccess, fireAnalytics) {
|
|
16
|
+
var uploadEmoji = function uploadEmoji(upload, emojiProvider, errorSetter, onSuccess, fireAnalytics, retry) {
|
|
25
17
|
var startTime = Date.now();
|
|
26
18
|
errorSetter(undefined);
|
|
27
19
|
|
|
28
20
|
if ((0, _EmojiResource.supportsUploadFeature)(emojiProvider)) {
|
|
29
21
|
_ufoExperiences.ufoExperiences['emoji-uploaded'].start();
|
|
30
22
|
|
|
31
|
-
emojiProvider.uploadCustomEmoji(upload).then(function (emojiDescription) {
|
|
23
|
+
emojiProvider.uploadCustomEmoji(upload, retry).then(function (emojiDescription) {
|
|
32
24
|
fireAnalytics((0, _analytics.uploadSucceededEvent)({
|
|
33
25
|
duration: Date.now() - startTime
|
|
34
26
|
}));
|
|
@@ -47,10 +39,7 @@ var uploadEmoji = function uploadEmoji(upload, emojiProvider, errorSetter, onSuc
|
|
|
47
39
|
_ufoExperiences.ufoExperiences['emoji-uploaded'].failure({
|
|
48
40
|
metadata: {
|
|
49
41
|
source: 'UploadEmoji',
|
|
50
|
-
error: err
|
|
51
|
-
data: {
|
|
52
|
-
upload: _objectSpread({}, upload)
|
|
53
|
-
}
|
|
42
|
+
error: err
|
|
54
43
|
}
|
|
55
44
|
});
|
|
56
45
|
});
|
|
@@ -5,7 +5,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.uploadRetryButton = exports.uploadPreviewText = exports.uploadPreviewFooter = exports.uploadPreview = exports.uploadEmojiButton = exports.uploadChooseFileRow = exports.uploadChooseFileMessage = exports.uploadChooseFileEmojiName = exports.uploadChooseFileBrowse = exports.uploadAddRow = exports.toneSelectorContainer = exports.submitDelete = exports.selectOnHoverStyles = exports.previewText = exports.previewImg = exports.previewButtonGroup = exports.preview = exports.placeholderContainer = exports.placeholder = exports.hiddenToneButton = exports.emojiUploadBottom = exports.emojiUpload = exports.emojiToneSelectorContainer = exports.emojiStyles = exports.emojiSprite = exports.emojiShortName = exports.emojiScrollable = exports.emojiPreviewErrorMessage = exports.emojiPreview = exports.emojiPickerAddEmoji = exports.emojiNodeStyles = exports.emojiName = exports.emojiMainStyle = exports.emojiImage = exports.emojiDeleteErrorMessage = exports.emojiDeleteButton = exports.emojiContainer = exports.emojiChooseFileErrorMessage = exports.emojiButton = exports.deleteText = exports.deletePreview = exports.deleteFooter = exports.deleteButton = exports.commonSelectedStyles = exports.cancelButton = exports.buttons = exports.buttonSpinner = exports.bigEmojiPreview = exports.addCustomEmojiButton = exports.addCustomEmoji = void 0;
|
|
8
|
+
exports.uploadRetryButton = exports.uploadPreviewText = exports.uploadPreviewFooter = exports.uploadPreview = exports.uploadEmojiButton = exports.uploadChooseFileRow = exports.uploadChooseFileMessage = exports.uploadChooseFileEmojiName = exports.uploadChooseFileBrowse = exports.uploadAddRow = exports.toneSelectorContainer = exports.submitDelete = exports.selectOnHoverStyles = exports.previewText = exports.previewImg = exports.previewButtonGroup = exports.preview = exports.placeholderContainerAnimated = exports.placeholderContainer = exports.placeholder = exports.hiddenToneButton = exports.emojiUploadBottom = exports.emojiUpload = exports.emojiToneSelectorContainer = exports.emojiStyles = exports.emojiSprite = exports.emojiShortName = exports.emojiScrollable = exports.emojiPreviewErrorMessage = exports.emojiPreview = exports.emojiPickerAddEmoji = exports.emojiNodeStyles = exports.emojiName = exports.emojiMainStyle = exports.emojiImage = exports.emojiDeleteErrorMessage = exports.emojiDeleteButton = exports.emojiContainer = exports.emojiChooseFileErrorMessage = exports.emojiButton = exports.deleteText = exports.deletePreview = exports.deleteFooter = exports.deleteButton = exports.commonSelectedStyles = exports.cancelButton = exports.buttons = exports.buttonSpinner = exports.bigEmojiPreview = exports.addCustomEmojiButton = exports.addCustomEmoji = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
9
11
|
|
|
10
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
13
|
|
|
@@ -21,7 +23,7 @@ var _sharedStyles = require("../../util/shared-styles");
|
|
|
21
23
|
|
|
22
24
|
var _colors = require("@atlaskit/theme/colors");
|
|
23
25
|
|
|
24
|
-
var _css, _css2, _span, _css3, _css6, _input, _css7;
|
|
26
|
+
var _css, _css2, _templateObject, _span, _css3, _css6, _input, _css7;
|
|
25
27
|
|
|
26
28
|
var commonSelectedStyles = 'emoji-common-selected';
|
|
27
29
|
exports.commonSelectedStyles = commonSelectedStyles;
|
|
@@ -59,7 +61,7 @@ var emojiToneSelectorContainer = (0, _core.css)({
|
|
|
59
61
|
});
|
|
60
62
|
exports.emojiToneSelectorContainer = emojiToneSelectorContainer;
|
|
61
63
|
var emojiStyles = (0, _core.css)((_css = {
|
|
62
|
-
borderRadius:
|
|
64
|
+
borderRadius: "".concat((0, _constants.borderRadius)(), "px"),
|
|
63
65
|
backgroundColor: 'transparent',
|
|
64
66
|
display: 'inline-block',
|
|
65
67
|
verticalAlign: 'middle',
|
|
@@ -85,23 +87,38 @@ var emojiContainer = (0, _core.css)((_css2 = {
|
|
|
85
87
|
}), (0, _defineProperty2.default)(_css2, ".".concat(emojiSprite), {
|
|
86
88
|
background: 'transparent no-repeat',
|
|
87
89
|
display: 'inline-block',
|
|
88
|
-
verticalAlign: 'middle',
|
|
89
90
|
minHeight: "".concat(_constants2.defaultEmojiHeight, "px"),
|
|
90
|
-
minWidth: "".concat(_constants2.defaultEmojiHeight, "px")
|
|
91
|
+
minWidth: "".concat(_constants2.defaultEmojiHeight, "px"),
|
|
92
|
+
verticalAlign: 'middle'
|
|
91
93
|
}), _css2));
|
|
92
94
|
exports.emojiContainer = emojiContainer;
|
|
93
95
|
var placeholder = 'emoji-common-placeholder';
|
|
94
96
|
exports.placeholder = placeholder;
|
|
95
97
|
var placeholderContainer = (0, _core.css)({
|
|
96
|
-
|
|
98
|
+
position: 'relative',
|
|
97
99
|
margin: '-1px 0',
|
|
98
100
|
display: 'inline-block',
|
|
99
101
|
background: (0, _tokens.token)('color.border', '#f7f7f7'),
|
|
100
|
-
borderRadius:
|
|
102
|
+
borderRadius: "".concat((0, _constants.borderRadius)(), "px"),
|
|
103
|
+
overflow: 'hidden',
|
|
101
104
|
verticalAlign: 'middle',
|
|
102
|
-
whiteSpace: 'nowrap'
|
|
105
|
+
whiteSpace: 'nowrap',
|
|
106
|
+
textAlign: 'center'
|
|
103
107
|
});
|
|
104
108
|
exports.placeholderContainer = placeholderContainer;
|
|
109
|
+
var easeSweep = (0, _core.keyframes)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(100%);\n }\n"])));
|
|
110
|
+
var placeholderContainerAnimated = (0, _core.css)({
|
|
111
|
+
'&::before': {
|
|
112
|
+
content: '""',
|
|
113
|
+
display: 'block',
|
|
114
|
+
position: 'absolute',
|
|
115
|
+
background: (0, _tokens.token)('color.background.neutral', _colors.N20A),
|
|
116
|
+
height: '100%',
|
|
117
|
+
width: '100%',
|
|
118
|
+
animation: "".concat(easeSweep, " 1s cubic-bezier(0.4, 0.0, 0.2, 1) infinite")
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
exports.placeholderContainerAnimated = placeholderContainerAnimated;
|
|
105
122
|
var emojiButton = (0, _core.css)((_css3 = {
|
|
106
123
|
backgroundColor: 'transparent',
|
|
107
124
|
border: '0',
|
|
@@ -111,7 +128,7 @@ var emojiButton = (0, _core.css)((_css3 = {
|
|
|
111
128
|
border: '0 none',
|
|
112
129
|
padding: 0
|
|
113
130
|
}), (0, _defineProperty2.default)(_css3, '&>span', (_span = {
|
|
114
|
-
borderRadius:
|
|
131
|
+
borderRadius: "".concat((0, _constants.borderRadius)(), "px"),
|
|
115
132
|
padding: '8px'
|
|
116
133
|
}, (0, _defineProperty2.default)(_span, "&>.".concat(emojiSprite), {
|
|
117
134
|
height: '24px',
|