@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
@@ -1,18 +1,9 @@
1
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
- import _createClass from "@babel/runtime/helpers/createClass";
3
- import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
4
- import _inherits from "@babel/runtime/helpers/inherits";
5
- import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
6
- import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
8
-
9
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
10
-
11
- 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; } }
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
12
3
 
13
4
  /** @jsx jsx */
14
5
  import { jsx } from '@emotion/core';
15
- import { PureComponent } from 'react';
6
+ import { Fragment, useState } from 'react';
16
7
  import { FormattedMessage, injectIntl } from 'react-intl-next';
17
8
  import EmojiDeletePreview from '../common/EmojiDeletePreview';
18
9
  import EmojiUploadPicker from '../common/EmojiUploadPicker';
@@ -23,179 +14,141 @@ import { messages } from '../i18n';
23
14
  import AkButton from '@atlaskit/button/standard-button';
24
15
  import AddIcon from '@atlaskit/icon/glyph/add';
25
16
  import { setSkinToneAriaLabelText } from './setSkinToneAriaLabelText';
26
- import { addCustomEmoji, addCustomEmojiButton, emojiPickerAddEmoji, emojiToneSelectorContainer } from './styles';
17
+ import { addCustomEmoji, addCustomEmojiButton, emojiActionsWrapper, emojiPickerAddEmoji, emojiToneSelectorContainer } from './styles';
27
18
  import { emojiActionsContainerWithBottomShadow, emojiPickerFooter } from '../picker/styles';
28
- export var EmojiActions = /*#__PURE__*/function (_PureComponent) {
29
- _inherits(EmojiActions, _PureComponent);
30
19
 
31
- var _super = _createSuper(EmojiActions);
20
+ var AddOwnEmoji = function AddOwnEmoji(props) {
21
+ var onOpenUpload = props.onOpenUpload,
22
+ uploadEnabled = props.uploadEnabled,
23
+ formatMessage = props.intl.formatMessage;
24
+ return jsx(Fragment, null, uploadEnabled && jsx("div", {
25
+ css: addCustomEmoji
26
+ }, jsx(FormattedMessage, messages.addCustomEmojiLabel, function (label) {
27
+ return jsx(AkButton, {
28
+ onClick: onOpenUpload,
29
+ iconBefore: jsx(AddIcon, {
30
+ label: formatMessage(messages.addCustomEmojiLabel),
31
+ size: "small"
32
+ }),
33
+ appearance: "subtle",
34
+ css: addCustomEmojiButton,
35
+ className: emojiPickerAddEmoji
36
+ }, label);
37
+ })));
38
+ };
39
+
40
+ var TonesWrapper = function TonesWrapper(props) {
41
+ var toneEmoji = props.toneEmoji,
42
+ selectedTone = props.selectedTone,
43
+ intl = props.intl,
44
+ onToneSelected = props.onToneSelected,
45
+ onToneOpen = props.onToneOpen,
46
+ showToneSelector = props.showToneSelector;
47
+ var formatMessage = intl.formatMessage;
48
+
49
+ if (!toneEmoji) {
50
+ return null;
51
+ }
32
52
 
33
- function EmojiActions() {
34
- var _this;
53
+ var previewEmoji = toneEmoji;
35
54
 
36
- _classCallCheck(this, EmojiActions);
55
+ if (selectedTone && previewEmoji.skinVariations) {
56
+ previewEmoji = previewEmoji.skinVariations[(selectedTone || 1) - 1];
57
+ }
37
58
 
38
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
39
- args[_key] = arguments[_key];
59
+ return jsx("div", {
60
+ css: emojiToneSelectorContainer
61
+ }, showToneSelector && jsx(ToneSelector, {
62
+ emoji: toneEmoji,
63
+ onToneSelected: onToneSelected,
64
+ previewEmojiId: previewEmoji.id
65
+ }), jsx(EmojiButton, {
66
+ ariaExpanded: showToneSelector,
67
+ emoji: previewEmoji,
68
+ selectOnHover: true,
69
+ onSelected: onToneOpen,
70
+ ariaLabelText: formatMessage(messages.emojiSelectSkinToneButtonAriaLabelText, {
71
+ selectedTone: "".concat(setSkinToneAriaLabelText(previewEmoji.name), " selected")
72
+ })
73
+ }));
74
+ };
75
+
76
+ export var EmojiActions = function EmojiActions(props) {
77
+ var onToneSelected = props.onToneSelected,
78
+ onToneSelectorCancelled = props.onToneSelectorCancelled,
79
+ initialUploadName = props.initialUploadName,
80
+ onUploadCancelled = props.onUploadCancelled,
81
+ onCloseDelete = props.onCloseDelete,
82
+ onDeleteEmoji = props.onDeleteEmoji,
83
+ onUploadEmoji = props.onUploadEmoji,
84
+ uploadErrorMessage = props.uploadErrorMessage,
85
+ uploading = props.uploading,
86
+ onFileChooserClicked = props.onFileChooserClicked,
87
+ emojiToDelete = props.emojiToDelete,
88
+ onChange = props.onChange,
89
+ query = props.query;
90
+
91
+ var _useState = useState(false),
92
+ _useState2 = _slicedToArray(_useState, 2),
93
+ showToneSelector = _useState2[0],
94
+ setShowToneSelector = _useState2[1];
95
+
96
+ var previewFooterClassnames = [emojiPickerFooter, emojiActionsContainerWithBottomShadow];
97
+
98
+ var onToneOpenHandler = function onToneOpenHandler() {
99
+ return setShowToneSelector(true);
100
+ };
101
+
102
+ var onToneSelectedHandler = function onToneSelectedHandler(toneValue) {
103
+ setShowToneSelector(false);
104
+
105
+ if (onToneSelected) {
106
+ onToneSelected(toneValue);
40
107
  }
108
+ };
41
109
 
42
- _this = _super.call.apply(_super, [this].concat(args));
43
-
44
- _defineProperty(_assertThisInitialized(_this), "state", {
45
- selectingTone: false
46
- });
47
-
48
- _defineProperty(_assertThisInitialized(_this), "onToneButtonClick", function () {
49
- _this.setState({
50
- selectingTone: !_this.state.selectingTone
51
- });
52
- });
53
-
54
- _defineProperty(_assertThisInitialized(_this), "onToneSelected", function (toneValue) {
55
- _this.setState({
56
- selectingTone: false
57
- });
58
-
59
- if (_this.props.onToneSelected) {
60
- _this.props.onToneSelected(toneValue);
61
- }
62
- });
63
-
64
- _defineProperty(_assertThisInitialized(_this), "onMouseLeave", function () {
65
- var selectingTone = _this.state.selectingTone;
66
- var onToneSelectorCancelled = _this.props.onToneSelectorCancelled;
67
-
68
- if (selectingTone && onToneSelectorCancelled) {
69
- onToneSelectorCancelled();
70
- }
71
-
72
- _this.setState({
73
- selectingTone: false
74
- });
75
- });
110
+ var onMouseLeaveHandler = function onMouseLeaveHandler() {
111
+ if (showToneSelector && onToneSelectorCancelled) {
112
+ onToneSelectorCancelled();
113
+ }
76
114
 
77
- return _this;
115
+ setShowToneSelector(false);
116
+ };
117
+
118
+ if (uploading) {
119
+ return jsx("div", {
120
+ css: previewFooterClassnames
121
+ }, jsx(EmojiUploadPicker, {
122
+ onUploadCancelled: onUploadCancelled,
123
+ onUploadEmoji: onUploadEmoji,
124
+ onFileChooserClicked: onFileChooserClicked,
125
+ errorMessage: uploadErrorMessage,
126
+ initialUploadName: initialUploadName
127
+ }));
78
128
  }
79
129
 
80
- _createClass(EmojiActions, [{
81
- key: "renderTones",
82
- value: function renderTones() {
83
- var _this$props = this.props,
84
- toneEmoji = _this$props.toneEmoji,
85
- selectedTone = _this$props.selectedTone,
86
- intl = _this$props.intl;
87
- var formatMessage = intl.formatMessage;
88
-
89
- if (!toneEmoji) {
90
- return null;
91
- }
92
-
93
- var previewEmoji = toneEmoji;
94
-
95
- if (selectedTone && previewEmoji.skinVariations) {
96
- previewEmoji = previewEmoji.skinVariations[(selectedTone || 1) - 1];
97
- }
98
-
99
- return jsx("div", {
100
- css: emojiToneSelectorContainer
101
- }, this.state.selectingTone && jsx(ToneSelector, {
102
- emoji: toneEmoji,
103
- onToneSelected: this.onToneSelected,
104
- previewEmojiId: previewEmoji.id
105
- }), jsx(EmojiButton, {
106
- ariaExpanded: this.state.selectingTone,
107
- emoji: previewEmoji,
108
- selectOnHover: true,
109
- onSelected: this.onToneButtonClick,
110
- ariaLabelText: formatMessage(messages.emojiSelectSkinToneButtonAriaLabelText, {
111
- selectedTone: "".concat(setSkinToneAriaLabelText(previewEmoji.name), " selected")
112
- })
113
- }));
114
- } // note: emoji-picker-add-emoji className is used by pollinator synthetic checks
115
-
116
- }, {
117
- key: "renderAddOwnEmoji",
118
- value: function renderAddOwnEmoji() {
119
- var _this$props2 = this.props,
120
- onOpenUpload = _this$props2.onOpenUpload,
121
- uploadEnabled = _this$props2.uploadEnabled,
122
- intl = _this$props2.intl;
123
- var formatMessage = intl.formatMessage;
124
-
125
- if (!uploadEnabled) {
126
- return null;
127
- }
128
-
129
- return jsx("div", {
130
- css: addCustomEmoji
131
- }, jsx(FormattedMessage, messages.addCustomEmojiLabel, function (label) {
132
- return jsx(AkButton, {
133
- onClick: onOpenUpload,
134
- iconBefore: jsx(AddIcon, {
135
- label: formatMessage(messages.addCustomEmojiLabel),
136
- size: "small"
137
- }),
138
- appearance: "subtle",
139
- css: addCustomEmojiButton,
140
- className: emojiPickerAddEmoji
141
- }, label);
142
- }));
143
- }
144
- }, {
145
- key: "render",
146
- value: function render() {
147
- var _this$props3 = this.props,
148
- initialUploadName = _this$props3.initialUploadName,
149
- onUploadCancelled = _this$props3.onUploadCancelled,
150
- onUploadEmoji = _this$props3.onUploadEmoji,
151
- onCloseDelete = _this$props3.onCloseDelete,
152
- onDeleteEmoji = _this$props3.onDeleteEmoji,
153
- uploadErrorMessage = _this$props3.uploadErrorMessage,
154
- uploading = _this$props3.uploading,
155
- onFileChooserClicked = _this$props3.onFileChooserClicked,
156
- emojiToDelete = _this$props3.emojiToDelete,
157
- onChange = _this$props3.onChange,
158
- query = _this$props3.query;
159
- var previewFooterClassnames = [emojiPickerFooter, emojiActionsContainerWithBottomShadow];
160
-
161
- if (uploading) {
162
- return jsx("div", {
163
- css: previewFooterClassnames
164
- }, jsx(EmojiUploadPicker, {
165
- onUploadCancelled: onUploadCancelled,
166
- onUploadEmoji: onUploadEmoji,
167
- onFileChooserClicked: onFileChooserClicked,
168
- errorMessage: uploadErrorMessage,
169
- initialUploadName: initialUploadName
170
- }));
171
- }
172
-
173
- if (emojiToDelete) {
174
- return jsx("div", {
175
- css: previewFooterClassnames
176
- }, jsx(EmojiDeletePreview, {
177
- emoji: emojiToDelete,
178
- onDeleteEmoji: onDeleteEmoji,
179
- onCloseDelete: onCloseDelete
180
- }));
181
- }
182
-
183
- return jsx("div", {
184
- css: previewFooterClassnames,
185
- onMouseLeave: this.onMouseLeave
186
- }, jsx("div", {
187
- style: {
188
- display: 'flex',
189
- justifyContent: 'flex-end',
190
- alignItems: 'center'
191
- }
192
- }, !this.state.selectingTone && jsx(EmojiPickerListSearch, {
193
- onChange: onChange,
194
- query: query
195
- }), this.renderTones()), this.renderAddOwnEmoji());
196
- }
197
- }]);
130
+ if (emojiToDelete) {
131
+ return jsx("div", {
132
+ css: previewFooterClassnames
133
+ }, jsx(EmojiDeletePreview, {
134
+ emoji: emojiToDelete,
135
+ onDeleteEmoji: onDeleteEmoji,
136
+ onCloseDelete: onCloseDelete
137
+ }));
138
+ }
198
139
 
199
- return EmojiActions;
200
- }(PureComponent);
140
+ return jsx("div", {
141
+ css: previewFooterClassnames,
142
+ onMouseLeave: onMouseLeaveHandler
143
+ }, jsx("div", {
144
+ css: emojiActionsWrapper
145
+ }, !showToneSelector && jsx(EmojiPickerListSearch, {
146
+ onChange: onChange,
147
+ query: query
148
+ }), jsx(TonesWrapper, _extends({}, props, {
149
+ onToneOpen: onToneOpenHandler,
150
+ onToneSelected: onToneSelectedHandler,
151
+ showToneSelector: showToneSelector
152
+ }))), jsx(AddOwnEmoji, props));
153
+ };
201
154
  export default injectIntl(EmojiActions);
@@ -1,61 +1,26 @@
1
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
- import _createClass from "@babel/runtime/helpers/createClass";
3
- import _inherits from "@babel/runtime/helpers/inherits";
4
- import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
5
- import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
6
-
7
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
8
-
9
- 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; } }
10
-
11
1
  /** @jsx jsx */
12
2
  import { jsx } from '@emotion/core';
13
3
  import ErrorIcon from '@atlaskit/icon/glyph/error';
14
- import { PureComponent } from 'react';
15
4
  import Tooltip from '@atlaskit/tooltip';
16
5
 
17
- var EmojiErrorMessage = /*#__PURE__*/function (_PureComponent) {
18
- _inherits(EmojiErrorMessage, _PureComponent);
19
-
20
- var _super = _createSuper(EmojiErrorMessage);
21
-
22
- function EmojiErrorMessage() {
23
- _classCallCheck(this, EmojiErrorMessage);
24
-
25
- return _super.apply(this, arguments);
26
- }
27
-
28
- _createClass(EmojiErrorMessage, [{
29
- key: "renderWithTooltip",
30
- value: function renderWithTooltip() {
31
- return jsx("div", {
32
- css: this.props.messageStyles
33
- }, jsx(Tooltip, {
34
- content: this.props.message,
35
- position: "top"
36
- }, jsx(ErrorIcon, {
37
- label: "Error",
38
- size: "medium"
39
- })));
40
- }
41
- }, {
42
- key: "renderInline",
43
- value: function renderInline() {
44
- return jsx("div", {
45
- css: this.props.messageStyles
46
- }, jsx(ErrorIcon, {
47
- label: "Error",
48
- size: "small"
49
- }), " ", this.props.message);
50
- }
51
- }, {
52
- key: "render",
53
- value: function render() {
54
- return this.props.tooltip ? this.renderWithTooltip() : this.renderInline();
55
- }
56
- }]);
57
-
58
- return EmojiErrorMessage;
59
- }(PureComponent);
60
-
61
- export { EmojiErrorMessage as default };
6
+ var EmojiErrorMessage = function EmojiErrorMessage(props) {
7
+ var messageStyles = props.messageStyles,
8
+ message = props.message,
9
+ tooltip = props.tooltip;
10
+ return tooltip ? jsx("div", {
11
+ css: messageStyles
12
+ }, jsx(Tooltip, {
13
+ content: message,
14
+ position: "top"
15
+ }, jsx(ErrorIcon, {
16
+ label: "Error",
17
+ size: "medium"
18
+ }))) : jsx("div", {
19
+ css: messageStyles
20
+ }, jsx(ErrorIcon, {
21
+ label: "Error",
22
+ size: "small"
23
+ }), " ", message);
24
+ };
25
+
26
+ export default EmojiErrorMessage;
@@ -9,6 +9,7 @@ export var EmojiPreviewComponent = function EmojiPreviewComponent(_ref) {
9
9
  }, jsx("span", {
10
10
  css: previewImg
11
11
  }, jsx(CachingEmoji, {
12
+ key: emoji.id || emoji.shortName,
12
13
  emoji: emoji
13
14
  })), jsx("div", {
14
15
  css: previewText