@atlaskit/emoji 65.1.1 → 65.2.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.
Files changed (95) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/cjs/components/common/CachingEmoji.js +84 -151
  3. package/dist/cjs/components/common/Emoji.js +2 -2
  4. package/dist/cjs/components/common/EmojiActions.js +129 -175
  5. package/dist/cjs/components/common/EmojiErrorMessage.js +23 -59
  6. package/dist/cjs/components/common/EmojiPreviewComponent.js +1 -0
  7. package/dist/cjs/components/common/EmojiUploadPicker.js +235 -293
  8. package/dist/cjs/components/common/FileChooser.js +34 -71
  9. package/dist/cjs/components/common/Popup.js +105 -154
  10. package/dist/cjs/components/common/RetryableButton.js +43 -64
  11. package/dist/cjs/components/common/ToneSelector.js +50 -89
  12. package/dist/cjs/components/common/styles.js +14 -16
  13. package/dist/cjs/components/hooks.js +16 -0
  14. package/dist/cjs/components/picker/EmojiPickerCategoryHeading.js +16 -48
  15. package/dist/cjs/components/picker/EmojiPickerComponent.js +496 -516
  16. package/dist/cjs/components/picker/EmojiPickerEmojiRow.js +33 -60
  17. package/dist/cjs/components/picker/EmojiPickerFooter.js +13 -48
  18. package/dist/cjs/components/uploader/EmojiUploadComponent.js +124 -109
  19. package/dist/cjs/hooks/useEmojiContext.js +16 -0
  20. package/dist/cjs/hooks/{index.js → usePrevious.js} +0 -0
  21. package/dist/cjs/index.js +16 -0
  22. package/dist/cjs/version.json +1 -1
  23. package/dist/es2019/components/common/CachingEmoji.js +65 -112
  24. package/dist/es2019/components/common/Emoji.js +2 -2
  25. package/dist/es2019/components/common/EmojiActions.js +124 -150
  26. package/dist/es2019/components/common/EmojiErrorMessage.js +22 -26
  27. package/dist/es2019/components/common/EmojiPreviewComponent.js +1 -0
  28. package/dist/es2019/components/common/EmojiUploadPicker.js +190 -253
  29. package/dist/es2019/components/common/FileChooser.js +37 -40
  30. package/dist/es2019/components/common/Popup.js +89 -109
  31. package/dist/es2019/components/common/RetryableButton.js +43 -34
  32. package/dist/es2019/components/common/ToneSelector.js +46 -59
  33. package/dist/es2019/components/common/styles.js +9 -9
  34. package/dist/es2019/components/hooks.js +8 -0
  35. package/dist/es2019/components/picker/EmojiPickerCategoryHeading.js +13 -17
  36. package/dist/es2019/components/picker/EmojiPickerComponent.js +417 -506
  37. package/dist/es2019/components/picker/EmojiPickerEmojiRow.js +32 -35
  38. package/dist/es2019/components/picker/EmojiPickerFooter.js +11 -21
  39. package/dist/es2019/components/uploader/EmojiUploadComponent.js +81 -91
  40. package/dist/es2019/hooks/useEmojiContext.js +3 -0
  41. package/dist/es2019/hooks/{index.js → usePrevious.js} +0 -0
  42. package/dist/es2019/index.js +4 -1
  43. package/dist/es2019/version.json +1 -1
  44. package/dist/esm/components/common/CachingEmoji.js +86 -156
  45. package/dist/esm/components/common/Emoji.js +2 -2
  46. package/dist/esm/components/common/EmojiActions.js +129 -176
  47. package/dist/esm/components/common/EmojiErrorMessage.js +21 -56
  48. package/dist/esm/components/common/EmojiPreviewComponent.js +1 -0
  49. package/dist/esm/components/common/EmojiUploadPicker.js +233 -299
  50. package/dist/esm/components/common/FileChooser.js +34 -70
  51. package/dist/esm/components/common/Popup.js +104 -155
  52. package/dist/esm/components/common/RetryableButton.js +40 -60
  53. package/dist/esm/components/common/ToneSelector.js +50 -87
  54. package/dist/esm/components/common/styles.js +10 -10
  55. package/dist/esm/components/hooks.js +8 -0
  56. package/dist/esm/components/picker/EmojiPickerCategoryHeading.js +14 -43
  57. package/dist/esm/components/picker/EmojiPickerComponent.js +486 -535
  58. package/dist/esm/components/picker/EmojiPickerEmojiRow.js +31 -59
  59. package/dist/esm/components/picker/EmojiPickerFooter.js +14 -49
  60. package/dist/esm/components/uploader/EmojiUploadComponent.js +119 -113
  61. package/dist/esm/hooks/useEmojiContext.js +5 -0
  62. package/dist/esm/hooks/{index.js → usePrevious.js} +0 -0
  63. package/dist/esm/index.js +4 -1
  64. package/dist/esm/version.json +1 -1
  65. package/dist/types/components/common/CachingEmoji.d.ts +3 -13
  66. package/dist/types/components/common/Emoji.d.ts +1 -1
  67. package/dist/types/components/common/EmojiActions.d.ts +6 -17
  68. package/dist/types/components/common/EmojiErrorMessage.d.ts +3 -6
  69. package/dist/types/components/common/EmojiPreviewComponent.d.ts +2 -2
  70. package/dist/types/components/common/EmojiUploadPicker.d.ts +3 -27
  71. package/dist/types/components/common/FileChooser.d.ts +3 -5
  72. package/dist/types/components/common/Popup.d.ts +3 -20
  73. package/dist/types/components/common/RetryableButton.d.ts +3 -7
  74. package/dist/types/components/common/ToneSelector.d.ts +4 -10
  75. package/dist/types/components/common/setSkinToneAriaLabelText.d.ts +1 -1
  76. package/dist/types/components/common/styles.d.ts +1 -3
  77. package/dist/types/components/hooks.d.ts +1 -0
  78. package/dist/types/components/picker/CategorySelector.d.ts +1 -1
  79. package/dist/types/components/picker/EmojiPicker.d.ts +3 -3
  80. package/dist/types/components/picker/EmojiPickerCategoryHeading.d.ts +3 -4
  81. package/dist/types/components/picker/EmojiPickerComponent.d.ts +4 -80
  82. package/dist/types/components/picker/EmojiPickerEmojiRow.d.ts +3 -4
  83. package/dist/types/components/picker/EmojiPickerFooter.d.ts +3 -6
  84. package/dist/types/components/uploader/EmojiUploadComponent.d.ts +3 -17
  85. package/dist/types/components/uploader/EmojiUploader.d.ts +5 -7
  86. package/dist/types/hooks/useEmojiContext.d.ts +1 -0
  87. package/dist/types/hooks/{index.d.ts → usePrevious.d.ts} +0 -0
  88. package/dist/types/index.d.ts +3 -1
  89. package/dist/types/types.d.ts +2 -1
  90. package/local-config-example.ts +3 -1
  91. package/package.json +17 -4
  92. package/dist/cjs/components/common/EmojiPreview.js +0 -194
  93. package/dist/es2019/components/common/EmojiPreview.js +0 -152
  94. package/dist/esm/components/common/EmojiPreview.js +0 -170
  95. package/dist/types/components/common/EmojiPreview.d.ts +0 -31
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @atlaskit/emoji
2
2
 
3
+ ## 65.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`dc70b6076fb`](https://bitbucket.org/atlassian/atlassian-frontend/commits/dc70b6076fb) - Converted emoji picker component children to functional components.
8
+ - [`f397ebff733`](https://bitbucket.org/atlassian/atlassian-frontend/commits/f397ebff733) - Emoji Upload Component refactor to functional
9
+ - [`f39be18203b`](https://bitbucket.org/atlassian/atlassian-frontend/commits/f39be18203b) - ToneSelector and EmojiActions functional component conversion
10
+ - [`2a233390245`](https://bitbucket.org/atlassian/atlassian-frontend/commits/2a233390245) - Emoji Upload Picker and File Chooser functional component refactor
11
+ - [`02b3743e97a`](https://bitbucket.org/atlassian/atlassian-frontend/commits/02b3743e97a) - Converted emoji picker component to functional and fixed emoji preview bugs
12
+ - [`16b6d3503f3`](https://bitbucket.org/atlassian/atlassian-frontend/commits/16b6d3503f3) - EmojiErrorMessage, RetryableButton and Popup refactor to functional components
13
+ - [`8a79098bcca`](https://bitbucket.org/atlassian/atlassian-frontend/commits/8a79098bcca) - CachiningEmoji and EmojiPreviewComponent functional component conversion
14
+ - [`7f5cfd05d71`](https://bitbucket.org/atlassian/atlassian-frontend/commits/7f5cfd05d71) - Revert changes that causing the emoji picker emoji preview to jump
15
+
16
+ ### Patch Changes
17
+
18
+ - [`fa52e2a1ffd`](https://bitbucket.org/atlassian/atlassian-frontend/commits/fa52e2a1ffd) - Convert the 04, 13, 19 and 03 emoji examples to function components
19
+ - [`277d88799b0`](https://bitbucket.org/atlassian/atlassian-frontend/commits/277d88799b0) - Convert emoji example from class to functional
20
+ - Updated dependencies
21
+
3
22
  ## 65.1.1
4
23
 
5
24
  ### Patch Changes
@@ -11,19 +11,7 @@ exports.default = exports.CachingMediaEmoji = exports.CachingEmoji = void 0;
11
11
 
12
12
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
13
 
14
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
-
16
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
-
18
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
19
-
20
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
21
-
22
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
23
-
24
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
25
-
26
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
27
15
 
28
16
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
29
17
 
@@ -45,47 +33,41 @@ var _analytics = require("../../util/analytics");
45
33
 
46
34
  var _constants = require("../../util/constants");
47
35
 
48
- var _EmojiContext = require("../../context/EmojiContext");
49
-
50
36
  var _ufoExperiences = require("../../util/analytics/ufoExperiences");
51
37
 
52
- var _excluded = ["placeholderSize"],
53
- _excluded2 = ["children"];
38
+ var _useEmojiContext = require("../../hooks/useEmojiContext");
39
+
40
+ var _excluded = ["emoji", "placeholderSize", "showTooltip", "fitToHeight", "children"];
54
41
 
55
42
  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); }
56
43
 
57
44
  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; }
58
45
 
59
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
60
-
61
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
62
-
63
46
  /**
64
47
  * Renders an emoji from a cached image, if required.
65
48
  */
66
49
  var CachingEmoji = function CachingEmoji(props) {
67
- // Optimisation to only render the class based CachingMediaEmoji if necessary
50
+ // Optimisation to only render CachingMediaEmoji if necessary
68
51
  // slight performance hit, which accumulates for a large number of emoji.
69
- var placeholderSize = props.placeholderSize,
70
- emojiProps = (0, _objectWithoutProperties2.default)(props, _excluded); // start emoji rendered experience, it may have already started earlier in ResourcedEmoji
52
+ var emoji = props.emoji; // start emoji rendered experience, it may have already started earlier in ResourcedEmoji
71
53
 
72
- (0, _analytics.useSampledUFOComponentExperience)(_analytics.ufoExperiences['emoji-rendered'].getInstance(emojiProps.emoji.id || emojiProps.emoji.shortName), _constants.SAMPLING_RATE_EMOJI_RENDERED_EXP, {
54
+ (0, _analytics.useSampledUFOComponentExperience)(_analytics.ufoExperiences['emoji-rendered'].getInstance(emoji.id || emoji.shortName), _constants.SAMPLING_RATE_EMOJI_RENDERED_EXP, {
73
55
  source: 'caching-emoji',
74
- emoji: emojiProps.emoji.shortName
56
+ emoji: emoji.shortName
75
57
  });
76
58
  (0, _react.useEffect)(function () {
77
- if (!(0, _ufoExperiences.hasUfoMarked)((0, _analytics.sampledUfoRenderedEmoji)(emojiProps.emoji), 'fmp')) {
78
- (0, _analytics.sampledUfoRenderedEmoji)(emojiProps.emoji).markFMP();
59
+ if (!(0, _ufoExperiences.hasUfoMarked)((0, _analytics.sampledUfoRenderedEmoji)(emoji), 'fmp')) {
60
+ (0, _analytics.sampledUfoRenderedEmoji)(emoji).markFMP();
79
61
  } // eslint-disable-next-line react-hooks/exhaustive-deps
80
62
 
81
63
  }, []);
82
64
 
83
65
  var emojiNode = function emojiNode() {
84
- if ((0, _typeHelpers.isMediaEmoji)(props.emoji)) {
66
+ if ((0, _typeHelpers.isMediaEmoji)(emoji)) {
85
67
  return /*#__PURE__*/_react.default.createElement(CachingMediaEmoji, props);
86
68
  }
87
69
 
88
- return /*#__PURE__*/_react.default.createElement(_Emoji.default, emojiProps);
70
+ return /*#__PURE__*/_react.default.createElement(_Emoji.default, props);
89
71
  };
90
72
 
91
73
  return /*#__PURE__*/_react.default.createElement(_UfoErrorBoundary.UfoErrorBoundary, {
@@ -100,138 +82,89 @@ var CachingEmoji = function CachingEmoji(props) {
100
82
 
101
83
  exports.CachingEmoji = CachingEmoji;
102
84
 
103
- var CachingMediaEmoji = /*#__PURE__*/function (_PureComponent) {
104
- (0, _inherits2.default)(CachingMediaEmoji, _PureComponent);
105
-
106
- var _super = _createSuper(CachingMediaEmoji);
107
-
108
- function CachingMediaEmoji(props, context) {
109
- var _this;
110
-
111
- (0, _classCallCheck2.default)(this, CachingMediaEmoji);
112
- _this = _super.call(this, props);
113
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleLoadError", function (_emojiId) {
114
- (0, _analytics.sampledUfoRenderedEmoji)(_emojiId).failure({
85
+ var CachingMediaEmoji = function CachingMediaEmoji(props) {
86
+ var emoji = props.emoji,
87
+ placeholderSize = props.placeholderSize,
88
+ showTooltip = props.showTooltip,
89
+ fitToHeight = props.fitToHeight,
90
+ children = props.children,
91
+ restProps = (0, _objectWithoutProperties2.default)(props, _excluded);
92
+ var shortName = emoji.shortName,
93
+ representation = emoji.representation;
94
+
95
+ var _useState = (0, _react.useState)(),
96
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
97
+ cachedEmoji = _useState2[0],
98
+ setCachedEmoji = _useState2[1];
99
+
100
+ var _useState3 = (0, _react.useState)(false),
101
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
102
+ inValidImage = _useState4[0],
103
+ setInvalidImage = _useState4[1];
104
+
105
+ var context = (0, _useEmojiContext.useEmojiContext)();
106
+ var loadEmoji = (0, _react.useCallback)(function (emojiProvider) {
107
+ (0, _logger.default)('Loading image via media cache', emoji.shortName);
108
+ (0, _analytics.sampledUfoRenderedEmoji)(emoji).mark(_types.UfoEmojiTimings.MEDIA_START);
109
+ emojiProvider.getMediaEmojiDescriptionURLWithInlineToken(emoji).then(function (cachedEmoji) {
110
+ setCachedEmoji(cachedEmoji);
111
+ setInvalidImage(false);
112
+ (0, _analytics.sampledUfoRenderedEmoji)(emoji).mark(_types.UfoEmojiTimings.MEDIA_END);
113
+ }).catch(function () {
114
+ setCachedEmoji(undefined);
115
+ setInvalidImage(true);
116
+ (0, _analytics.sampledUfoRenderedEmoji)(emoji).failure({
115
117
  metadata: {
116
- reason: 'load error',
118
+ reason: 'failed to load media emoji',
117
119
  source: 'CachingMediaEmoji',
118
- emoji: {
119
- id: _emojiId.id,
120
- shortName: _emojiId.shortName
120
+ data: {
121
+ emoji: {
122
+ id: emoji.id,
123
+ shortName: emoji.shortName,
124
+ name: emoji.name
125
+ }
121
126
  }
122
127
  }
123
128
  });
124
-
125
- _this.setState({
126
- invalidImage: true
127
- });
128
129
  });
129
- _this.state = {
130
- cachedEmoji: undefined
131
- };
132
-
133
- _this.loadEmoji(props.emoji, context);
134
-
135
- return _this;
136
- }
137
-
138
- (0, _createClass2.default)(CachingMediaEmoji, [{
139
- key: "componentDidUpdate",
140
- value: function componentDidUpdate() {
141
- var _this$state$cachedEmo;
142
-
143
- if (this.props.emoji.shortName !== ((_this$state$cachedEmo = this.state.cachedEmoji) === null || _this$state$cachedEmo === void 0 ? void 0 : _this$state$cachedEmo.shortName)) {
144
- this.loadEmoji(this.props.emoji, this.context);
145
- }
130
+ }, [emoji]);
131
+ (0, _react.useEffect)(function () {
132
+ if (context && context.emoji.emojiProvider) {
133
+ loadEmoji(context.emoji.emojiProvider);
146
134
  }
147
- }, {
148
- key: "loadEmoji",
149
- value: function loadEmoji(emoji, context) {
150
- var _this2 = this;
151
-
152
- if (!context) {
153
- return;
154
- }
155
-
156
- if (!context.emoji) {
157
- return undefined;
158
- }
159
-
160
- var emojiProvider = context.emoji.emojiProvider;
161
-
162
- if (!emojiProvider) {
163
- return undefined;
135
+ }, [context, loadEmoji]);
136
+
137
+ var handleLoadError = function handleLoadError(_emojiId) {
138
+ (0, _analytics.sampledUfoRenderedEmoji)(_emojiId).failure({
139
+ metadata: {
140
+ reason: 'load error',
141
+ source: 'CachingMediaEmoji',
142
+ emoji: {
143
+ id: _emojiId.id,
144
+ shortName: _emojiId.shortName
145
+ }
164
146
  }
147
+ });
148
+ setInvalidImage(true);
149
+ };
165
150
 
166
- (0, _logger.default)('Loading image via media cache', emoji.shortName);
167
- (0, _analytics.sampledUfoRenderedEmoji)(emoji).mark(_types.UfoEmojiTimings.MEDIA_START);
168
- emojiProvider.getMediaEmojiDescriptionURLWithInlineToken(emoji).then(function (cachedEmoji) {
169
- _this2.setState({
170
- cachedEmoji: cachedEmoji,
171
- invalidImage: false
172
- });
173
-
174
- (0, _analytics.sampledUfoRenderedEmoji)(emoji).mark(_types.UfoEmojiTimings.MEDIA_END);
175
- }).catch(function () {
176
- _this2.setState({
177
- cachedEmoji: undefined,
178
- invalidImage: true
179
- });
180
-
181
- (0, _analytics.sampledUfoRenderedEmoji)(emoji).failure({
182
- metadata: {
183
- reason: 'failed to load media emoji',
184
- source: 'CachingMediaEmoji',
185
- data: {
186
- emoji: {
187
- id: emoji.id,
188
- shortName: emoji.shortName,
189
- name: emoji.name
190
- }
191
- }
192
- }
193
- });
194
- });
195
- }
196
- }, {
197
- key: "render",
198
- value: function render() {
199
- var _this$state = this.state,
200
- cachedEmoji = _this$state.cachedEmoji,
201
- invalidImage = _this$state.invalidImage;
202
- var _this$props = this.props,
203
- children = _this$props.children,
204
- otherProps = (0, _objectWithoutProperties2.default)(_this$props, _excluded2);
205
- var emojiComponent;
206
-
207
- if (cachedEmoji && !invalidImage) {
208
- emojiComponent = /*#__PURE__*/_react.default.createElement(_Emoji.default, (0, _extends2.default)({}, otherProps, {
209
- emoji: cachedEmoji,
210
- onLoadError: this.handleLoadError
211
- }));
212
- } else {
213
- var _this$props2 = this.props,
214
- emoji = _this$props2.emoji,
215
- placeholderSize = _this$props2.placeholderSize,
216
- showTooltip = _this$props2.showTooltip,
217
- fitToHeight = _this$props2.fitToHeight;
218
- var shortName = emoji.shortName,
219
- representation = emoji.representation;
220
- emojiComponent = /*#__PURE__*/_react.default.createElement(_EmojiPlaceholder.default, {
221
- size: fitToHeight || placeholderSize,
222
- shortName: shortName,
223
- showTooltip: showTooltip,
224
- representation: representation
225
- });
226
- }
151
+ if (cachedEmoji && !inValidImage) {
152
+ return /*#__PURE__*/_react.default.createElement(_Emoji.default, (0, _extends2.default)({}, restProps, {
153
+ showTooltip: showTooltip,
154
+ fitToHeight: fitToHeight,
155
+ emoji: cachedEmoji,
156
+ onLoadError: handleLoadError
157
+ }));
158
+ }
227
159
 
228
- return emojiComponent;
229
- }
230
- }]);
231
- return CachingMediaEmoji;
232
- }(_react.PureComponent);
160
+ return /*#__PURE__*/_react.default.createElement(_EmojiPlaceholder.default, {
161
+ size: fitToHeight || placeholderSize,
162
+ shortName: shortName,
163
+ showTooltip: showTooltip,
164
+ representation: representation
165
+ });
166
+ };
233
167
 
234
168
  exports.CachingMediaEmoji = CachingMediaEmoji;
235
- (0, _defineProperty2.default)(CachingMediaEmoji, "contextType", _EmojiContext.EmojiContext);
236
169
  var _default = CachingEmoji;
237
170
  exports.default = _default;
@@ -158,7 +158,7 @@ var SpriteEmoji = function SpriteEmoji(props) {
158
158
  onMouseDown: function onMouseDown(event) {
159
159
  handleMouseDown(props, event);
160
160
  },
161
- onMouseMove: function onMouseMove(event) {
161
+ onMouseEnter: function onMouseEnter(event) {
162
162
  handleMouseMove(props, event);
163
163
  },
164
164
  "aria-label": emoji.shortName,
@@ -294,7 +294,7 @@ var ImageEmoji = function ImageEmoji(props) {
294
294
  onMouseDown: function onMouseDown(event) {
295
295
  handleMouseDown(props, event);
296
296
  },
297
- onMouseMove: function onMouseMove(event) {
297
+ onMouseEnter: function onMouseEnter(event) {
298
298
  handleMouseMove(props, event);
299
299
  },
300
300
  "aria-label": emoji.shortName,
@@ -7,19 +7,9 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = exports.EmojiActions = void 0;
9
9
 
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
11
 
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
-
14
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
-
16
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
-
18
- var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
-
20
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
-
22
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
23
13
 
24
14
  var _core = require("@emotion/core");
25
15
 
@@ -49,177 +39,141 @@ var _styles = require("./styles");
49
39
 
50
40
  var _styles2 = require("../picker/styles");
51
41
 
52
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
53
-
54
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
55
-
56
- var EmojiActions = /*#__PURE__*/function (_PureComponent) {
57
- (0, _inherits2.default)(EmojiActions, _PureComponent);
42
+ /** @jsx jsx */
43
+ var AddOwnEmoji = function AddOwnEmoji(props) {
44
+ var onOpenUpload = props.onOpenUpload,
45
+ uploadEnabled = props.uploadEnabled,
46
+ formatMessage = props.intl.formatMessage;
47
+ return (0, _core.jsx)(_react.Fragment, null, uploadEnabled && (0, _core.jsx)("div", {
48
+ css: _styles.addCustomEmoji
49
+ }, (0, _core.jsx)(_reactIntlNext.FormattedMessage, _i18n.messages.addCustomEmojiLabel, function (label) {
50
+ return (0, _core.jsx)(_standardButton.default, {
51
+ onClick: onOpenUpload,
52
+ iconBefore: (0, _core.jsx)(_add.default, {
53
+ label: formatMessage(_i18n.messages.addCustomEmojiLabel),
54
+ size: "small"
55
+ }),
56
+ appearance: "subtle",
57
+ css: _styles.addCustomEmojiButton,
58
+ className: _styles.emojiPickerAddEmoji
59
+ }, label);
60
+ })));
61
+ };
62
+
63
+ var TonesWrapper = function TonesWrapper(props) {
64
+ var toneEmoji = props.toneEmoji,
65
+ selectedTone = props.selectedTone,
66
+ intl = props.intl,
67
+ onToneSelected = props.onToneSelected,
68
+ onToneOpen = props.onToneOpen,
69
+ showToneSelector = props.showToneSelector;
70
+ var formatMessage = intl.formatMessage;
71
+
72
+ if (!toneEmoji) {
73
+ return null;
74
+ }
58
75
 
59
- var _super = _createSuper(EmojiActions);
76
+ var previewEmoji = toneEmoji;
60
77
 
61
- function EmojiActions() {
62
- var _this;
78
+ if (selectedTone && previewEmoji.skinVariations) {
79
+ previewEmoji = previewEmoji.skinVariations[(selectedTone || 1) - 1];
80
+ }
63
81
 
64
- (0, _classCallCheck2.default)(this, EmojiActions);
82
+ return (0, _core.jsx)("div", {
83
+ css: _styles.emojiToneSelectorContainer
84
+ }, showToneSelector && (0, _core.jsx)(_ToneSelector.default, {
85
+ emoji: toneEmoji,
86
+ onToneSelected: onToneSelected,
87
+ previewEmojiId: previewEmoji.id
88
+ }), (0, _core.jsx)(_EmojiButton.default, {
89
+ ariaExpanded: showToneSelector,
90
+ emoji: previewEmoji,
91
+ selectOnHover: true,
92
+ onSelected: onToneOpen,
93
+ ariaLabelText: formatMessage(_i18n.messages.emojiSelectSkinToneButtonAriaLabelText, {
94
+ selectedTone: "".concat((0, _setSkinToneAriaLabelText.setSkinToneAriaLabelText)(previewEmoji.name), " selected")
95
+ })
96
+ }));
97
+ };
98
+
99
+ var EmojiActions = function EmojiActions(props) {
100
+ var onToneSelected = props.onToneSelected,
101
+ onToneSelectorCancelled = props.onToneSelectorCancelled,
102
+ initialUploadName = props.initialUploadName,
103
+ onUploadCancelled = props.onUploadCancelled,
104
+ onCloseDelete = props.onCloseDelete,
105
+ onDeleteEmoji = props.onDeleteEmoji,
106
+ onUploadEmoji = props.onUploadEmoji,
107
+ uploadErrorMessage = props.uploadErrorMessage,
108
+ uploading = props.uploading,
109
+ onFileChooserClicked = props.onFileChooserClicked,
110
+ emojiToDelete = props.emojiToDelete,
111
+ onChange = props.onChange,
112
+ query = props.query;
113
+
114
+ var _useState = (0, _react.useState)(false),
115
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
116
+ showToneSelector = _useState2[0],
117
+ setShowToneSelector = _useState2[1];
118
+
119
+ var previewFooterClassnames = [_styles2.emojiPickerFooter, _styles2.emojiActionsContainerWithBottomShadow];
120
+
121
+ var onToneOpenHandler = function onToneOpenHandler() {
122
+ return setShowToneSelector(true);
123
+ };
124
+
125
+ var onToneSelectedHandler = function onToneSelectedHandler(toneValue) {
126
+ setShowToneSelector(false);
127
+
128
+ if (onToneSelected) {
129
+ onToneSelected(toneValue);
130
+ }
131
+ };
65
132
 
66
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
67
- args[_key] = arguments[_key];
133
+ var onMouseLeaveHandler = function onMouseLeaveHandler() {
134
+ if (showToneSelector && onToneSelectorCancelled) {
135
+ onToneSelectorCancelled();
68
136
  }
69
137
 
70
- _this = _super.call.apply(_super, [this].concat(args));
71
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
72
- selectingTone: false
73
- });
74
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onToneButtonClick", function () {
75
- _this.setState({
76
- selectingTone: !_this.state.selectingTone
77
- });
78
- });
79
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onToneSelected", function (toneValue) {
80
- _this.setState({
81
- selectingTone: false
82
- });
83
-
84
- if (_this.props.onToneSelected) {
85
- _this.props.onToneSelected(toneValue);
86
- }
87
- });
88
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onMouseLeave", function () {
89
- var selectingTone = _this.state.selectingTone;
90
- var onToneSelectorCancelled = _this.props.onToneSelectorCancelled;
91
-
92
- if (selectingTone && onToneSelectorCancelled) {
93
- onToneSelectorCancelled();
94
- }
95
-
96
- _this.setState({
97
- selectingTone: false
98
- });
99
- });
100
- return _this;
138
+ setShowToneSelector(false);
139
+ };
140
+
141
+ if (uploading) {
142
+ return (0, _core.jsx)("div", {
143
+ css: previewFooterClassnames
144
+ }, (0, _core.jsx)(_EmojiUploadPicker.default, {
145
+ onUploadCancelled: onUploadCancelled,
146
+ onUploadEmoji: onUploadEmoji,
147
+ onFileChooserClicked: onFileChooserClicked,
148
+ errorMessage: uploadErrorMessage,
149
+ initialUploadName: initialUploadName
150
+ }));
101
151
  }
102
152
 
103
- (0, _createClass2.default)(EmojiActions, [{
104
- key: "renderTones",
105
- value: function renderTones() {
106
- var _this$props = this.props,
107
- toneEmoji = _this$props.toneEmoji,
108
- selectedTone = _this$props.selectedTone,
109
- intl = _this$props.intl;
110
- var formatMessage = intl.formatMessage;
111
-
112
- if (!toneEmoji) {
113
- return null;
114
- }
115
-
116
- var previewEmoji = toneEmoji;
117
-
118
- if (selectedTone && previewEmoji.skinVariations) {
119
- previewEmoji = previewEmoji.skinVariations[(selectedTone || 1) - 1];
120
- }
121
-
122
- return (0, _core.jsx)("div", {
123
- css: _styles.emojiToneSelectorContainer
124
- }, this.state.selectingTone && (0, _core.jsx)(_ToneSelector.default, {
125
- emoji: toneEmoji,
126
- onToneSelected: this.onToneSelected,
127
- previewEmojiId: previewEmoji.id
128
- }), (0, _core.jsx)(_EmojiButton.default, {
129
- ariaExpanded: this.state.selectingTone,
130
- emoji: previewEmoji,
131
- selectOnHover: true,
132
- onSelected: this.onToneButtonClick,
133
- ariaLabelText: formatMessage(_i18n.messages.emojiSelectSkinToneButtonAriaLabelText, {
134
- selectedTone: "".concat((0, _setSkinToneAriaLabelText.setSkinToneAriaLabelText)(previewEmoji.name), " selected")
135
- })
136
- }));
137
- } // note: emoji-picker-add-emoji className is used by pollinator synthetic checks
138
-
139
- }, {
140
- key: "renderAddOwnEmoji",
141
- value: function renderAddOwnEmoji() {
142
- var _this$props2 = this.props,
143
- onOpenUpload = _this$props2.onOpenUpload,
144
- uploadEnabled = _this$props2.uploadEnabled,
145
- intl = _this$props2.intl;
146
- var formatMessage = intl.formatMessage;
147
-
148
- if (!uploadEnabled) {
149
- return null;
150
- }
151
-
152
- return (0, _core.jsx)("div", {
153
- css: _styles.addCustomEmoji
154
- }, (0, _core.jsx)(_reactIntlNext.FormattedMessage, _i18n.messages.addCustomEmojiLabel, function (label) {
155
- return (0, _core.jsx)(_standardButton.default, {
156
- onClick: onOpenUpload,
157
- iconBefore: (0, _core.jsx)(_add.default, {
158
- label: formatMessage(_i18n.messages.addCustomEmojiLabel),
159
- size: "small"
160
- }),
161
- appearance: "subtle",
162
- css: _styles.addCustomEmojiButton,
163
- className: _styles.emojiPickerAddEmoji
164
- }, label);
165
- }));
166
- }
167
- }, {
168
- key: "render",
169
- value: function render() {
170
- var _this$props3 = this.props,
171
- initialUploadName = _this$props3.initialUploadName,
172
- onUploadCancelled = _this$props3.onUploadCancelled,
173
- onUploadEmoji = _this$props3.onUploadEmoji,
174
- onCloseDelete = _this$props3.onCloseDelete,
175
- onDeleteEmoji = _this$props3.onDeleteEmoji,
176
- uploadErrorMessage = _this$props3.uploadErrorMessage,
177
- uploading = _this$props3.uploading,
178
- onFileChooserClicked = _this$props3.onFileChooserClicked,
179
- emojiToDelete = _this$props3.emojiToDelete,
180
- onChange = _this$props3.onChange,
181
- query = _this$props3.query;
182
- var previewFooterClassnames = [_styles2.emojiPickerFooter, _styles2.emojiActionsContainerWithBottomShadow];
183
-
184
- if (uploading) {
185
- return (0, _core.jsx)("div", {
186
- css: previewFooterClassnames
187
- }, (0, _core.jsx)(_EmojiUploadPicker.default, {
188
- onUploadCancelled: onUploadCancelled,
189
- onUploadEmoji: onUploadEmoji,
190
- onFileChooserClicked: onFileChooserClicked,
191
- errorMessage: uploadErrorMessage,
192
- initialUploadName: initialUploadName
193
- }));
194
- }
195
-
196
- if (emojiToDelete) {
197
- return (0, _core.jsx)("div", {
198
- css: previewFooterClassnames
199
- }, (0, _core.jsx)(_EmojiDeletePreview.default, {
200
- emoji: emojiToDelete,
201
- onDeleteEmoji: onDeleteEmoji,
202
- onCloseDelete: onCloseDelete
203
- }));
204
- }
205
-
206
- return (0, _core.jsx)("div", {
207
- css: previewFooterClassnames,
208
- onMouseLeave: this.onMouseLeave
209
- }, (0, _core.jsx)("div", {
210
- style: {
211
- display: 'flex',
212
- justifyContent: 'flex-end',
213
- alignItems: 'center'
214
- }
215
- }, !this.state.selectingTone && (0, _core.jsx)(_EmojiPickerListSearch.default, {
216
- onChange: onChange,
217
- query: query
218
- }), this.renderTones()), this.renderAddOwnEmoji());
219
- }
220
- }]);
221
- return EmojiActions;
222
- }(_react.PureComponent);
153
+ if (emojiToDelete) {
154
+ return (0, _core.jsx)("div", {
155
+ css: previewFooterClassnames
156
+ }, (0, _core.jsx)(_EmojiDeletePreview.default, {
157
+ emoji: emojiToDelete,
158
+ onDeleteEmoji: onDeleteEmoji,
159
+ onCloseDelete: onCloseDelete
160
+ }));
161
+ }
162
+
163
+ return (0, _core.jsx)("div", {
164
+ css: previewFooterClassnames,
165
+ onMouseLeave: onMouseLeaveHandler
166
+ }, (0, _core.jsx)("div", {
167
+ css: _styles.emojiActionsWrapper
168
+ }, !showToneSelector && (0, _core.jsx)(_EmojiPickerListSearch.default, {
169
+ onChange: onChange,
170
+ query: query
171
+ }), (0, _core.jsx)(TonesWrapper, (0, _extends2.default)({}, props, {
172
+ onToneOpen: onToneOpenHandler,
173
+ onToneSelected: onToneSelectedHandler,
174
+ showToneSelector: showToneSelector
175
+ }))), (0, _core.jsx)(AddOwnEmoji, props));
176
+ };
223
177
 
224
178
  exports.EmojiActions = EmojiActions;
225
179