@atlaskit/emoji 64.2.0 → 64.4.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 (184) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/cjs/api/EmojiResource.js +36 -1
  3. package/dist/cjs/api/media/SiteEmojiResource.js +10 -2
  4. package/dist/cjs/components/common/CachingEmoji.js +38 -12
  5. package/dist/cjs/components/common/DeleteButton.js +9 -13
  6. package/dist/cjs/components/common/Emoji.js +25 -36
  7. package/dist/cjs/components/common/EmojiActions.js +26 -31
  8. package/dist/cjs/components/common/EmojiButton.js +7 -7
  9. package/dist/cjs/components/common/EmojiDeletePreview.js +20 -26
  10. package/dist/cjs/components/common/EmojiErrorMessage.js +10 -14
  11. package/dist/cjs/components/common/EmojiPlaceholder.js +5 -12
  12. package/dist/cjs/components/common/EmojiPreview.js +20 -40
  13. package/dist/cjs/components/common/EmojiPreviewComponent.js +34 -0
  14. package/dist/cjs/components/common/EmojiUploadPicker.js +26 -24
  15. package/dist/cjs/components/common/EmojiUploadPreview.js +22 -28
  16. package/dist/cjs/components/common/RecordSelectionDefault.js +8 -2
  17. package/dist/cjs/components/common/ResourcedEmoji.js +25 -9
  18. package/dist/cjs/components/common/ResourcedEmojiComponent.js +33 -11
  19. package/dist/cjs/components/common/RetryableButton.js +12 -18
  20. package/dist/cjs/components/common/Scrollable.js +5 -10
  21. package/dist/cjs/components/common/UfoErrorBoundary.js +52 -0
  22. package/dist/cjs/components/common/UploadEmoji.js +8 -0
  23. package/dist/cjs/components/common/styles.js +210 -266
  24. package/dist/cjs/components/picker/CategorySelector.js +13 -12
  25. package/dist/cjs/components/picker/EmojiPicker.js +17 -6
  26. package/dist/cjs/components/picker/EmojiPickerCategoryHeading.js +8 -14
  27. package/dist/cjs/components/picker/EmojiPickerComponent.js +51 -30
  28. package/dist/cjs/components/picker/EmojiPickerEmojiRow.js +8 -12
  29. package/dist/cjs/components/picker/EmojiPickerFooter.js +8 -14
  30. package/dist/cjs/components/picker/EmojiPickerList.js +28 -9
  31. package/dist/cjs/components/picker/EmojiPickerListSearch.js +10 -8
  32. package/dist/cjs/components/picker/EmojiPickerVirtualItems.js +9 -15
  33. package/dist/cjs/components/picker/styles.js +113 -161
  34. package/dist/cjs/components/typeahead/EmojiTypeAheadComponent.js +40 -24
  35. package/dist/cjs/components/typeahead/EmojiTypeAheadItem.js +10 -13
  36. package/dist/cjs/components/typeahead/EmojiTypeAheadList.js +17 -22
  37. package/dist/cjs/components/typeahead/styles.js +17 -19
  38. package/dist/cjs/components/uploader/EmojiUploadComponent.js +22 -15
  39. package/dist/cjs/components/uploader/styles.js +4 -4
  40. package/dist/cjs/index.js +9 -3
  41. package/dist/cjs/types.js +12 -2
  42. package/dist/cjs/util/{analytics.js → analytics/analytics.js} +12 -10
  43. package/dist/cjs/util/analytics/index.js +205 -0
  44. package/dist/cjs/util/analytics/samplingUfo.js +278 -0
  45. package/dist/cjs/util/analytics/ufoExperiences.js +46 -0
  46. package/dist/cjs/util/analytics/useSampledUFOComponentExperience.js +49 -0
  47. package/dist/cjs/util/constants.js +10 -3
  48. package/dist/cjs/version.json +1 -1
  49. package/dist/es2019/api/EmojiResource.js +28 -1
  50. package/dist/es2019/api/media/SiteEmojiResource.js +10 -2
  51. package/dist/es2019/components/common/CachingEmoji.js +34 -12
  52. package/dist/es2019/components/common/DeleteButton.js +8 -6
  53. package/dist/es2019/components/common/Emoji.js +27 -36
  54. package/dist/es2019/components/common/EmojiActions.js +26 -24
  55. package/dist/es2019/components/common/EmojiButton.js +6 -6
  56. package/dist/es2019/components/common/EmojiDeletePreview.js +20 -20
  57. package/dist/es2019/components/common/EmojiErrorMessage.js +9 -8
  58. package/dist/es2019/components/common/EmojiPlaceholder.js +5 -8
  59. package/dist/es2019/components/common/EmojiPreview.js +19 -35
  60. package/dist/es2019/components/common/EmojiPreviewComponent.js +21 -0
  61. package/dist/es2019/components/common/EmojiUploadPicker.js +25 -22
  62. package/dist/es2019/components/common/EmojiUploadPreview.js +22 -22
  63. package/dist/es2019/components/common/RecordSelectionDefault.js +9 -2
  64. package/dist/es2019/components/common/ResourcedEmoji.js +22 -5
  65. package/dist/es2019/components/common/ResourcedEmojiComponent.js +32 -11
  66. package/dist/es2019/components/common/RetryableButton.js +10 -11
  67. package/dist/es2019/components/common/Scrollable.js +6 -10
  68. package/dist/es2019/components/common/UfoErrorBoundary.js +11 -0
  69. package/dist/es2019/components/common/UploadEmoji.js +4 -0
  70. package/dist/es2019/components/common/styles.js +195 -262
  71. package/dist/es2019/components/picker/CategorySelector.js +15 -12
  72. package/dist/es2019/components/picker/EmojiPicker.js +15 -6
  73. package/dist/es2019/components/picker/EmojiPickerCategoryHeading.js +8 -8
  74. package/dist/es2019/components/picker/EmojiPickerComponent.js +46 -22
  75. package/dist/es2019/components/picker/EmojiPickerEmojiRow.js +8 -7
  76. package/dist/es2019/components/picker/EmojiPickerFooter.js +8 -8
  77. package/dist/es2019/components/picker/EmojiPickerList.js +28 -8
  78. package/dist/es2019/components/picker/EmojiPickerListSearch.js +11 -8
  79. package/dist/es2019/components/picker/EmojiPickerVirtualItems.js +10 -8
  80. package/dist/es2019/components/picker/styles.js +112 -160
  81. package/dist/es2019/components/typeahead/EmojiTypeAheadComponent.js +35 -17
  82. package/dist/es2019/components/typeahead/EmojiTypeAheadItem.js +12 -13
  83. package/dist/es2019/components/typeahead/EmojiTypeAheadList.js +18 -19
  84. package/dist/es2019/components/typeahead/styles.js +14 -15
  85. package/dist/es2019/components/uploader/EmojiUploadComponent.js +19 -9
  86. package/dist/es2019/components/uploader/styles.js +4 -4
  87. package/dist/es2019/index.js +4 -3
  88. package/dist/es2019/types.js +10 -1
  89. package/dist/es2019/util/{analytics.js → analytics/analytics.js} +17 -11
  90. package/dist/es2019/util/analytics/index.js +4 -0
  91. package/dist/es2019/util/analytics/samplingUfo.js +147 -0
  92. package/dist/es2019/util/analytics/ufoExperiences.js +34 -0
  93. package/dist/es2019/util/analytics/useSampledUFOComponentExperience.js +39 -0
  94. package/dist/es2019/util/constants.js +5 -1
  95. package/dist/es2019/version.json +1 -1
  96. package/dist/esm/api/EmojiResource.js +32 -1
  97. package/dist/esm/api/media/SiteEmojiResource.js +10 -2
  98. package/dist/esm/components/common/CachingEmoji.js +36 -12
  99. package/dist/esm/components/common/DeleteButton.js +8 -6
  100. package/dist/esm/components/common/Emoji.js +26 -29
  101. package/dist/esm/components/common/EmojiActions.js +26 -25
  102. package/dist/esm/components/common/EmojiButton.js +6 -6
  103. package/dist/esm/components/common/EmojiDeletePreview.js +19 -20
  104. package/dist/esm/components/common/EmojiErrorMessage.js +9 -8
  105. package/dist/esm/components/common/EmojiPlaceholder.js +5 -8
  106. package/dist/esm/components/common/EmojiPreview.js +19 -33
  107. package/dist/esm/components/common/EmojiPreviewComponent.js +20 -0
  108. package/dist/esm/components/common/EmojiUploadPicker.js +27 -25
  109. package/dist/esm/components/common/EmojiUploadPreview.js +21 -22
  110. package/dist/esm/components/common/RecordSelectionDefault.js +6 -3
  111. package/dist/esm/components/common/ResourcedEmoji.js +22 -9
  112. package/dist/esm/components/common/ResourcedEmojiComponent.js +32 -10
  113. package/dist/esm/components/common/RetryableButton.js +11 -12
  114. package/dist/esm/components/common/Scrollable.js +6 -10
  115. package/dist/esm/components/common/UfoErrorBoundary.js +38 -0
  116. package/dist/esm/components/common/UploadEmoji.js +4 -0
  117. package/dist/esm/components/common/styles.js +192 -242
  118. package/dist/esm/components/picker/CategorySelector.js +14 -12
  119. package/dist/esm/components/picker/EmojiPicker.js +13 -6
  120. package/dist/esm/components/picker/EmojiPickerCategoryHeading.js +8 -8
  121. package/dist/esm/components/picker/EmojiPickerComponent.js +47 -22
  122. package/dist/esm/components/picker/EmojiPickerEmojiRow.js +8 -7
  123. package/dist/esm/components/picker/EmojiPickerFooter.js +8 -8
  124. package/dist/esm/components/picker/EmojiPickerList.js +29 -8
  125. package/dist/esm/components/picker/EmojiPickerListSearch.js +10 -8
  126. package/dist/esm/components/picker/EmojiPickerVirtualItems.js +9 -8
  127. package/dist/esm/components/picker/styles.js +108 -149
  128. package/dist/esm/components/typeahead/EmojiTypeAheadComponent.js +35 -17
  129. package/dist/esm/components/typeahead/EmojiTypeAheadItem.js +11 -13
  130. package/dist/esm/components/typeahead/EmojiTypeAheadList.js +17 -19
  131. package/dist/esm/components/typeahead/styles.js +14 -14
  132. package/dist/esm/components/uploader/EmojiUploadComponent.js +19 -9
  133. package/dist/esm/components/uploader/styles.js +4 -4
  134. package/dist/esm/index.js +4 -3
  135. package/dist/esm/types.js +10 -1
  136. package/dist/esm/util/{analytics.js → analytics/analytics.js} +9 -7
  137. package/dist/esm/util/analytics/index.js +4 -0
  138. package/dist/esm/util/analytics/samplingUfo.js +259 -0
  139. package/dist/esm/util/analytics/ufoExperiences.js +34 -0
  140. package/dist/esm/util/analytics/useSampledUFOComponentExperience.js +39 -0
  141. package/dist/esm/util/constants.js +5 -1
  142. package/dist/esm/version.json +1 -1
  143. package/dist/types/api/EmojiResource.d.ts +1 -0
  144. package/dist/types/components/common/CachingEmoji.d.ts +8 -6
  145. package/dist/types/components/common/EmojiActions.d.ts +2 -3
  146. package/dist/types/components/common/EmojiDeletePreview.d.ts +3 -3
  147. package/dist/types/components/common/EmojiErrorMessage.d.ts +2 -1
  148. package/dist/types/components/common/EmojiPreview.d.ts +2 -3
  149. package/dist/types/components/common/EmojiPreviewComponent.d.ts +7 -0
  150. package/dist/types/components/common/EmojiUploadPreview.d.ts +3 -3
  151. package/dist/types/components/common/ResourcedEmoji.d.ts +2 -0
  152. package/dist/types/components/common/ResourcedEmojiComponent.d.ts +6 -0
  153. package/dist/types/components/common/RetryableButton.d.ts +0 -2
  154. package/dist/types/components/common/UfoErrorBoundary.d.ts +8 -0
  155. package/dist/types/components/common/styles.d.ts +44 -44
  156. package/dist/types/components/picker/EmojiPicker.d.ts +2 -3
  157. package/dist/types/components/picker/EmojiPickerComponent.d.ts +6 -0
  158. package/dist/types/components/picker/EmojiPickerList.d.ts +10 -0
  159. package/dist/types/components/picker/styles.d.ts +17 -18
  160. package/dist/types/components/typeahead/EmojiTypeAheadComponent.d.ts +6 -0
  161. package/dist/types/components/typeahead/styles.d.ts +8 -7
  162. package/dist/types/components/uploader/EmojiUploadComponent.d.ts +1 -0
  163. package/dist/types/components/uploader/styles.d.ts +2 -2
  164. package/dist/types/index.d.ts +3 -3
  165. package/dist/types/types.d.ts +6 -0
  166. package/dist/types/util/{analytics.d.ts → analytics/analytics.d.ts} +7 -7
  167. package/dist/types/util/analytics/index.d.ts +6 -0
  168. package/dist/types/util/analytics/samplingUfo.d.ts +31 -0
  169. package/dist/types/util/analytics/ufoExperiences.d.ts +12 -0
  170. package/dist/types/util/analytics/useSampledUFOComponentExperience.d.ts +8 -0
  171. package/dist/types/util/constants.d.ts +2 -0
  172. package/package.json +10 -9
  173. package/dist/cjs/components/picker/EmojiPickerPreview.js +0 -87
  174. package/dist/cjs/context/EmojiContext.js +0 -11
  175. package/dist/cjs/context/EmojiContextProvider.js +0 -22
  176. package/dist/es2019/components/picker/EmojiPickerPreview.js +0 -43
  177. package/dist/es2019/context/EmojiContext.js +0 -2
  178. package/dist/es2019/context/EmojiContextProvider.js +0 -10
  179. package/dist/esm/components/picker/EmojiPickerPreview.js +0 -67
  180. package/dist/esm/context/EmojiContext.js +0 -2
  181. package/dist/esm/context/EmojiContextProvider.js +0 -9
  182. package/dist/types/components/picker/EmojiPickerPreview.d.ts +0 -9
  183. package/dist/types/context/EmojiContext.d.ts +0 -4
  184. package/dist/types/context/EmojiContextProvider.d.ts +0 -7
@@ -1,12 +1,15 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- import classNames from 'classnames';
2
+
3
+ /** @jsx jsx */
4
+ import { jsx } from '@emotion/core';
3
5
  import React from 'react';
4
6
  import { shouldUseAltRepresentation } from '../../api/EmojiUtils';
5
7
  import { deleteEmojiLabel } from '../../util/constants';
6
8
  import { isImageRepresentation, isMediaRepresentation, isSpriteRepresentation, toEmojiId } from '../../util/type-helpers';
7
9
  import { leftClick } from '../../util/mouse';
8
- import * as styles from './styles';
9
10
  import DeleteButton from './DeleteButton';
11
+ import { emojiContainer, emojiNodeStyles, commonSelectedStyles, selectOnHoverStyles, emojiSprite, emojiMainStyle, emojiStyles, emojiImage } from './styles';
12
+ import { sampledUfoRenderedEmoji } from '../../util/analytics';
10
13
 
11
14
  const handleMouseDown = (props, event) => {
12
15
  // Clicked emoji delete button
@@ -94,23 +97,15 @@ const renderAsSprite = props => {
94
97
  } = props;
95
98
  const representation = emoji.representation;
96
99
  const sprite = representation.sprite;
97
- const classes = {
98
- [styles.emojiContainer]: true,
99
- [styles.emojiNode]: true,
100
- [styles.selected]: selected,
101
- [styles.selectOnHover]: selectOnHover
102
- };
103
-
104
- if (className) {
105
- classes[className] = true;
106
- }
107
-
100
+ const classes = `${emojiNodeStyles} ${selected ? commonSelectedStyles : ''} ${selectOnHover ? selectOnHoverStyles : ''} ${className ? className : ''}`;
108
101
  let sizing = {};
109
102
 
110
103
  if (fitToHeight) {
111
104
  sizing = {
112
105
  width: `${fitToHeight}px`,
113
- height: `${fitToHeight}px`
106
+ height: `${fitToHeight}px`,
107
+ minHeight: `${fitToHeight}px`,
108
+ minWidth: `${fitToHeight}px`
114
109
  };
115
110
  }
116
111
 
@@ -122,14 +117,15 @@ const renderAsSprite = props => {
122
117
  backgroundSize: `${sprite.column * 100}% ${sprite.row * 100}%`,
123
118
  ...sizing
124
119
  };
125
- const emojiNode = /*#__PURE__*/React.createElement("span", {
126
- className: styles.emojiSprite,
120
+ const emojiNode = jsx("span", {
121
+ className: emojiSprite,
127
122
  style: style
128
123
  }, "\xA0");
129
- return /*#__PURE__*/React.createElement("span", {
124
+ return jsx("span", {
130
125
  tabIndex: shouldBeInteractive ? 0 : undefined,
131
126
  role: shouldBeInteractive ? 'button' : undefined,
132
- className: classNames(classes),
127
+ css: emojiContainer,
128
+ className: classes,
133
129
  onKeyPress: event => handleKeyPress(props, event),
134
130
  onMouseDown: event => {
135
131
  handleMouseDown(props, event);
@@ -154,18 +150,7 @@ const renderAsImage = props => {
154
150
  showDelete,
155
151
  shouldBeInteractive
156
152
  } = props;
157
- const classes = {
158
- [styles.emoji]: true,
159
- [styles.emojiNode]: true,
160
- [styles.selected]: selected,
161
- [styles.selectOnHover]: selectOnHover,
162
- [styles.emojiImage]: true
163
- };
164
-
165
- if (className) {
166
- classes[className] = true;
167
- }
168
-
153
+ const classes = `${emojiMainStyle} ${emojiNodeStyles} ${selected ? commonSelectedStyles : ''} ${selectOnHover ? selectOnHoverStyles : ''} ${emojiImage} ${className ? className : ''}`;
169
154
  let width;
170
155
  let height;
171
156
  let src;
@@ -184,7 +169,7 @@ const renderAsImage = props => {
184
169
  let deleteButton;
185
170
 
186
171
  if (showDelete) {
187
- deleteButton = /*#__PURE__*/React.createElement(DeleteButton, {
172
+ deleteButton = jsx(DeleteButton, {
188
173
  onClick: event => handleDelete(props, event)
189
174
  });
190
175
  }
@@ -201,6 +186,10 @@ const renderAsImage = props => {
201
186
 
202
187
  const onError = event => {
203
188
  handleImageError(props, event);
189
+ };
190
+
191
+ const onLoad = () => {
192
+ sampledUfoRenderedEmoji(emoji).success();
204
193
  }; // Pass src attribute as key to force React to rerender img node since browser does not
205
194
  // change preview image until loaded
206
195
  // We currently have the following error: property 'loading' does not exist on type 'DetailedHTMLProps<ImgHTMLAttributes, HTMLImageElement>'
@@ -208,7 +197,7 @@ const renderAsImage = props => {
208
197
  // TODO: remove @ts-ignore for the <img> below when the @types/react will be bumped from v16.8.0 to v16.9.20 or higher.
209
198
 
210
199
 
211
- const emojiNode = /*#__PURE__*/React.createElement("img", _extends({
200
+ const emojiNode = jsx("img", _extends({
212
201
  // @ts-ignore
213
202
  loading: "lazy",
214
203
  src: src,
@@ -221,12 +210,14 @@ const renderAsImage = props => {
221
210
  style: {
222
211
  visibility: 'visible'
223
212
  },
224
- onError: onError
213
+ onError: onError,
214
+ onLoad: onLoad
225
215
  }, sizing));
226
- return /*#__PURE__*/React.createElement("span", {
216
+ return jsx("span", {
217
+ css: emojiStyles,
227
218
  tabIndex: shouldBeInteractive ? 0 : undefined,
228
219
  role: shouldBeInteractive ? 'button' : undefined,
229
- className: classNames(classes),
220
+ className: classes,
230
221
  onKeyPress: event => handleKeyPress(props, event),
231
222
  onMouseDown: event => {
232
223
  handleMouseDown(props, event);
@@ -242,7 +233,7 @@ const renderAsImage = props => {
242
233
  export const Emoji = props => {
243
234
  const {
244
235
  emoji
245
- } = props;
236
+ } = props; // TODO: We always prefer render as image as having accessibility issues with sprite representation
246
237
 
247
238
  if (isSpriteRepresentation(emoji.representation)) {
248
239
  return renderAsSprite(props);
@@ -1,12 +1,11 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import classNames from 'classnames';
3
- import React from 'react';
2
+
3
+ /** @jsx jsx */
4
+ import { jsx } from '@emotion/core';
4
5
  import { PureComponent } from 'react';
5
6
  import { FormattedMessage, injectIntl } from 'react-intl-next';
6
7
  import EmojiDeletePreview from '../common/EmojiDeletePreview';
7
8
  import EmojiUploadPicker from '../common/EmojiUploadPicker';
8
- import * as styles from './styles';
9
- import * as footerStyles from '../picker/styles';
10
9
  import EmojiPickerListSearch from '../picker/EmojiPickerListSearch';
11
10
  import ToneSelector from './ToneSelector';
12
11
  import EmojiButton from './EmojiButton';
@@ -14,6 +13,8 @@ import { messages } from '../i18n';
14
13
  import AkButton from '@atlaskit/button/standard-button';
15
14
  import AddIcon from '@atlaskit/icon/glyph/add';
16
15
  import { setSkinToneAriaLabelText } from './setSkinToneAriaLabelText';
16
+ import { addCustomEmoji, addCustomEmojiButton, emojiPickerAddEmoji, emojiToneSelectorContainer } from './styles';
17
+ import { emojiActionsContainerWithBottomShadow, emojiPickerFooter } from '../picker/styles';
17
18
  export class EmojiActions extends PureComponent {
18
19
  constructor(...args) {
19
20
  super(...args);
@@ -76,13 +77,13 @@ export class EmojiActions extends PureComponent {
76
77
  previewEmoji = previewEmoji.skinVariations[(selectedTone || 1) - 1];
77
78
  }
78
79
 
79
- return /*#__PURE__*/React.createElement("div", {
80
- className: styles.emojiToneSelectorContainer
81
- }, this.state.selectingTone && /*#__PURE__*/React.createElement(ToneSelector, {
80
+ return jsx("div", {
81
+ css: emojiToneSelectorContainer
82
+ }, this.state.selectingTone && jsx(ToneSelector, {
82
83
  emoji: toneEmoji,
83
84
  onToneSelected: this.onToneSelected,
84
85
  previewEmojiId: previewEmoji.id
85
- }), /*#__PURE__*/React.createElement(EmojiButton, {
86
+ }), jsx(EmojiButton, {
86
87
  ariaExpanded: this.state.selectingTone,
87
88
  emoji: previewEmoji,
88
89
  selectOnHover: true,
@@ -108,16 +109,17 @@ export class EmojiActions extends PureComponent {
108
109
  return null;
109
110
  }
110
111
 
111
- return /*#__PURE__*/React.createElement("div", {
112
- className: styles.AddCustomEmoji
113
- }, /*#__PURE__*/React.createElement(FormattedMessage, messages.addCustomEmojiLabel, label => /*#__PURE__*/React.createElement(AkButton, {
112
+ return jsx("div", {
113
+ css: addCustomEmoji
114
+ }, jsx(FormattedMessage, messages.addCustomEmojiLabel, label => jsx(AkButton, {
114
115
  onClick: onOpenUpload,
115
- iconBefore: /*#__PURE__*/React.createElement(AddIcon, {
116
+ iconBefore: jsx(AddIcon, {
116
117
  label: formatMessage(messages.addCustomEmojiLabel),
117
118
  size: "small"
118
119
  }),
119
120
  appearance: "subtle",
120
- className: styles.addCustomEmojiButton + ' emoji-picker-add-emoji'
121
+ css: addCustomEmojiButton,
122
+ className: emojiPickerAddEmoji
121
123
  }, label)));
122
124
  }
123
125
 
@@ -135,12 +137,12 @@ export class EmojiActions extends PureComponent {
135
137
  onChange,
136
138
  query
137
139
  } = this.props;
138
- const previewFooterClassnames = classNames([footerStyles.emojiPickerFooter, footerStyles.emojiActionsContainerWithBottomShadow]);
140
+ const previewFooterClassnames = [emojiPickerFooter, emojiActionsContainerWithBottomShadow];
139
141
 
140
142
  if (uploading) {
141
- return /*#__PURE__*/React.createElement("div", {
142
- className: previewFooterClassnames
143
- }, /*#__PURE__*/React.createElement(EmojiUploadPicker, {
143
+ return jsx("div", {
144
+ css: previewFooterClassnames
145
+ }, jsx(EmojiUploadPicker, {
144
146
  onUploadCancelled: onUploadCancelled,
145
147
  onUploadEmoji: onUploadEmoji,
146
148
  onFileChooserClicked: onFileChooserClicked,
@@ -150,25 +152,25 @@ export class EmojiActions extends PureComponent {
150
152
  }
151
153
 
152
154
  if (emojiToDelete) {
153
- return /*#__PURE__*/React.createElement("div", {
154
- className: previewFooterClassnames
155
- }, /*#__PURE__*/React.createElement(EmojiDeletePreview, {
155
+ return jsx("div", {
156
+ css: previewFooterClassnames
157
+ }, jsx(EmojiDeletePreview, {
156
158
  emoji: emojiToDelete,
157
159
  onDeleteEmoji: onDeleteEmoji,
158
160
  onCloseDelete: onCloseDelete
159
161
  }));
160
162
  }
161
163
 
162
- return /*#__PURE__*/React.createElement("div", {
163
- className: previewFooterClassnames,
164
+ return jsx("div", {
165
+ css: previewFooterClassnames,
164
166
  onMouseLeave: this.onMouseLeave
165
- }, /*#__PURE__*/React.createElement("div", {
167
+ }, jsx("div", {
166
168
  style: {
167
169
  display: 'flex',
168
170
  justifyContent: 'flex-end',
169
171
  alignItems: 'center'
170
172
  }
171
- }, !this.state.selectingTone && /*#__PURE__*/React.createElement(EmojiPickerListSearch, {
173
+ }, !this.state.selectingTone && jsx(EmojiPickerListSearch, {
172
174
  onChange: onChange,
173
175
  query: query
174
176
  }), this.renderTones()), this.renderAddOwnEmoji());
@@ -1,8 +1,9 @@
1
- import classNames from 'classnames';
1
+ /** @jsx jsx */
2
+ import { jsx } from '@emotion/core';
2
3
  import React, { forwardRef } from 'react';
3
- import * as styles from './styles';
4
4
  import Emoji from './Emoji';
5
5
  import { leftClick } from '../../util/mouse';
6
+ import { emojiButton, hiddenToneButton } from './styles';
6
7
 
7
8
  const handleMouseDown = (props, event) => {
8
9
  const {
@@ -34,11 +35,10 @@ export const EmojiButton = /*#__PURE__*/forwardRef((props, ref) => {
34
35
  ariaExpanded,
35
36
  shouldHideButton
36
37
  } = props;
37
- const classes = [shouldHideButton ? styles.hiddenToneButton : styles.emojiButton];
38
- return /*#__PURE__*/React.createElement("button", {
38
+ return jsx("button", {
39
39
  ref: ref,
40
40
  "aria-expanded": ariaExpanded,
41
- className: classNames(classes),
41
+ css: shouldHideButton ? hiddenToneButton : emojiButton,
42
42
  onMouseDown: event => {
43
43
  handleMouseDown(props, event);
44
44
  },
@@ -46,7 +46,7 @@ export const EmojiButton = /*#__PURE__*/forwardRef((props, ref) => {
46
46
  handleKeyPress(props, event);
47
47
  },
48
48
  "aria-label": ariaLabelText
49
- }, /*#__PURE__*/React.createElement(Emoji, {
49
+ }, jsx(Emoji, {
50
50
  emoji: emoji,
51
51
  selectOnHover: selectOnHover
52
52
  }));
@@ -1,14 +1,16 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+
4
+ /** @jsx jsx */
5
+ import { jsx } from '@emotion/core';
3
6
  import AkButton from '@atlaskit/button/custom-theme-button';
4
- import React from 'react';
5
7
  import { Component } from 'react';
6
8
  import { FormattedMessage, injectIntl } from 'react-intl-next';
7
9
  import { messages } from '../i18n';
8
10
  import CachingEmoji from './CachingEmoji';
9
11
  import EmojiErrorMessage from './EmojiErrorMessage';
10
12
  import RetryableButton from './RetryableButton';
11
- import * as styles from './styles';
13
+ import { cancelButton, deleteFooter, deletePreview, deleteText, emojiDeleteErrorMessage, previewButtonGroup } from './styles';
12
14
 
13
15
  class EmojiDeletePreview extends Component {
14
16
  constructor(props) {
@@ -69,37 +71,35 @@ class EmojiDeletePreview extends Component {
69
71
  const {
70
72
  formatMessage
71
73
  } = intl;
72
- return /*#__PURE__*/React.createElement("div", {
73
- className: styles.deletePreview
74
- }, /*#__PURE__*/React.createElement("div", {
75
- className: styles.deleteText
76
- }, /*#__PURE__*/React.createElement("h5", null, /*#__PURE__*/React.createElement(FormattedMessage, messages.deleteEmojiTitle)), /*#__PURE__*/React.createElement(FormattedMessage, _extends({}, messages.deleteEmojiDescription, {
74
+ return jsx("div", {
75
+ css: deletePreview
76
+ }, jsx("div", {
77
+ css: deleteText
78
+ }, jsx("h5", null, jsx(FormattedMessage, messages.deleteEmojiTitle)), jsx(FormattedMessage, _extends({}, messages.deleteEmojiDescription, {
77
79
  values: {
78
80
  emojiShortName: emoji.shortName
79
81
  }
80
- }))), /*#__PURE__*/React.createElement("div", {
81
- className: styles.deleteFooter
82
- }, /*#__PURE__*/React.createElement(CachingEmoji, {
82
+ }))), jsx("div", {
83
+ css: deleteFooter
84
+ }, jsx(CachingEmoji, {
83
85
  emoji: emoji
84
- }), /*#__PURE__*/React.createElement("div", {
85
- className: styles.previewButtonGroup
86
- }, error ? !loading ? /*#__PURE__*/React.createElement(EmojiErrorMessage, {
86
+ }), jsx("div", {
87
+ css: previewButtonGroup
88
+ }, error ? !loading ? jsx(EmojiErrorMessage, {
87
89
  message: formatMessage(messages.deleteEmojiFailed),
88
- className: styles.emojiDeleteErrorMessage,
90
+ messageStyles: emojiDeleteErrorMessage,
89
91
  tooltip: true
90
- }) : null : null, /*#__PURE__*/React.createElement(RetryableButton, {
91
- className: styles.uploadEmojiButton,
92
- retryClassName: styles.uploadRetryButton,
92
+ }) : null : null, jsx(RetryableButton, {
93
93
  label: formatMessage(messages.deleteEmojiLabel),
94
94
  onSubmit: this.onSubmit,
95
95
  appearance: "danger",
96
96
  loading: loading,
97
97
  error: error
98
- }), /*#__PURE__*/React.createElement(AkButton, {
98
+ }), jsx(AkButton, {
99
99
  appearance: "subtle",
100
100
  onClick: this.onCancel,
101
- className: styles.cancelButton
102
- }, /*#__PURE__*/React.createElement(FormattedMessage, messages.cancelLabel)))));
101
+ css: cancelButton
102
+ }, jsx(FormattedMessage, messages.cancelLabel)))));
103
103
  }
104
104
 
105
105
  }
@@ -1,24 +1,25 @@
1
+ /** @jsx jsx */
2
+ import { jsx } from '@emotion/core';
1
3
  import ErrorIcon from '@atlaskit/icon/glyph/error';
2
- import React from 'react';
3
4
  import { PureComponent } from 'react';
4
5
  import Tooltip from '@atlaskit/tooltip';
5
6
  export default class EmojiErrorMessage extends PureComponent {
6
7
  renderWithTooltip() {
7
- return /*#__PURE__*/React.createElement("div", {
8
- className: this.props.className
9
- }, /*#__PURE__*/React.createElement(Tooltip, {
8
+ return jsx("div", {
9
+ css: this.props.messageStyles
10
+ }, jsx(Tooltip, {
10
11
  content: this.props.message,
11
12
  position: "top"
12
- }, /*#__PURE__*/React.createElement(ErrorIcon, {
13
+ }, jsx(ErrorIcon, {
13
14
  label: "Error",
14
15
  size: "medium"
15
16
  })));
16
17
  }
17
18
 
18
19
  renderInline() {
19
- return /*#__PURE__*/React.createElement("div", {
20
- className: this.props.className
21
- }, /*#__PURE__*/React.createElement(ErrorIcon, {
20
+ return jsx("div", {
21
+ css: this.props.messageStyles
22
+ }, jsx(ErrorIcon, {
22
23
  label: "Error",
23
24
  size: "small"
24
25
  }), " ", this.props.message);
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
- import classNames from 'classnames';
1
+ /** @jsx jsx */
2
+ import { jsx } from '@emotion/core';
3
3
  import { placeholder, placeholderContainer } from './styles';
4
4
  import { defaultEmojiHeight } from '../../util/constants';
5
5
  import { isImageRepresentation, isMediaRepresentation } from '../../util/type-helpers';
@@ -31,13 +31,10 @@ const EmojiPlaceholder = props => {
31
31
  width: `${width}px`,
32
32
  height: `${height}px`
33
33
  };
34
- const classes = {
35
- [placeholder]: true,
36
- [placeholderContainer]: true
37
- };
38
- return /*#__PURE__*/React.createElement("span", {
34
+ return jsx("span", {
39
35
  "aria-label": shortName,
40
- className: classNames(classes),
36
+ className: placeholder,
37
+ css: placeholderContainer,
41
38
  style: style,
42
39
  title: showTooltip ? shortName : ''
43
40
  });
@@ -1,16 +1,17 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+
3
+ /** @jsx jsx */
4
+ import { jsx } from '@emotion/core';
2
5
  import AkButton from '@atlaskit/button/standard-button';
3
6
  import AddIcon from '@atlaskit/icon/glyph/add';
4
- import classNames from 'classnames';
5
- import React from 'react';
6
7
  import { PureComponent } from 'react';
7
8
  import { FormattedMessage, injectIntl } from 'react-intl-next';
8
- import CachingEmoji from '../../components/common/CachingEmoji';
9
9
  import EmojiButton from '../../components/common/EmojiButton';
10
10
  import { messages } from '../i18n';
11
- import * as styles from './styles';
12
11
  import ToneSelector from './ToneSelector';
13
12
  import { setSkinToneAriaLabelText } from './setSkinToneAriaLabelText';
13
+ import { addCustomEmoji, addCustomEmojiButton, emojiPickerAddEmoji, emojiPreview, toneSelectorContainer } from './styles';
14
+ import { EmojiPreviewComponent } from './EmojiPreviewComponent';
14
15
  export class EmojiPreview extends PureComponent {
15
16
  constructor(...args) {
16
17
  super(...args);
@@ -73,13 +74,13 @@ export class EmojiPreview extends PureComponent {
73
74
  previewEmoji = previewEmoji.skinVariations[(selectedTone || 1) - 1];
74
75
  }
75
76
 
76
- return /*#__PURE__*/React.createElement("div", {
77
- className: styles.toneSelectorContainer
78
- }, this.state.selectingTone && /*#__PURE__*/React.createElement(ToneSelector, {
77
+ return jsx("div", {
78
+ className: toneSelectorContainer
79
+ }, this.state.selectingTone && jsx(ToneSelector, {
79
80
  emoji: toneEmoji,
80
81
  onToneSelected: this.onToneSelected,
81
82
  previewEmojiId: previewEmoji.id
82
- }), /*#__PURE__*/React.createElement(EmojiButton, {
83
+ }), jsx(EmojiButton, {
83
84
  ariaExpanded: this.state.selectingTone,
84
85
  emoji: previewEmoji,
85
86
  selectOnHover: true,
@@ -103,26 +104,9 @@ export class EmojiPreview extends PureComponent {
103
104
  return null;
104
105
  }
105
106
 
106
- const previewClasses = classNames({
107
- [styles.preview]: true
108
- });
109
- const previewTextClasses = classNames({
110
- [styles.previewText]: true,
111
- [styles.previewSingleLine]: !emoji.name
112
- });
113
- return /*#__PURE__*/React.createElement("div", {
114
- className: previewClasses
115
- }, /*#__PURE__*/React.createElement("span", {
116
- className: styles.previewImg
117
- }, /*#__PURE__*/React.createElement(CachingEmoji, {
107
+ return jsx(EmojiPreviewComponent, {
118
108
  emoji: emoji
119
- })), /*#__PURE__*/React.createElement("div", {
120
- className: previewTextClasses
121
- }, /*#__PURE__*/React.createElement("span", {
122
- className: styles.name
123
- }, emoji.name), /*#__PURE__*/React.createElement("span", {
124
- className: styles.shortName
125
- }, emoji.shortName)));
109
+ });
126
110
  } // note: emoji-picker-add-emoji className is used by pollinator synthetic checks
127
111
 
128
112
 
@@ -143,23 +127,23 @@ export class EmojiPreview extends PureComponent {
143
127
  return null;
144
128
  }
145
129
 
146
- return /*#__PURE__*/React.createElement("div", {
147
- className: styles.AddCustomEmoji
148
- }, /*#__PURE__*/React.createElement(FormattedMessage, messages.addCustomEmojiLabel, label => /*#__PURE__*/React.createElement(AkButton, {
130
+ return jsx("div", {
131
+ css: addCustomEmoji
132
+ }, jsx(FormattedMessage, messages.addCustomEmojiLabel, label => jsx(AkButton, {
149
133
  onClick: onOpenUpload,
150
- iconBefore: /*#__PURE__*/React.createElement(AddIcon, {
134
+ iconBefore: jsx(AddIcon, {
151
135
  label: formatMessage(messages.addCustomEmojiLabel),
152
136
  size: "small"
153
137
  }),
154
138
  appearance: "subtle",
155
- className: styles.addCustomEmojiButton + ' emoji-picker-add-emoji'
139
+ css: addCustomEmojiButton,
140
+ className: emojiPickerAddEmoji
156
141
  }, label)));
157
142
  }
158
143
 
159
144
  render() {
160
- const sectionClasses = classNames([styles.emojiPreview, styles.emojiPreviewSection]);
161
- return /*#__PURE__*/React.createElement("div", {
162
- className: sectionClasses,
145
+ return jsx("div", {
146
+ css: emojiPreview,
163
147
  onMouseLeave: this.onMouseLeave
164
148
  }, this.renderAddOwnEmoji(), this.renderEmojiPreview(), this.renderTones());
165
149
  }
@@ -0,0 +1,21 @@
1
+ /** @jsx jsx */
2
+ import { jsx } from '@emotion/core';
3
+ import CachingEmoji from './CachingEmoji';
4
+ import { emojiName, emojiShortName, preview, previewImg, previewText } from './styles';
5
+ export const EmojiPreviewComponent = ({
6
+ emoji
7
+ }) => {
8
+ return jsx("div", {
9
+ css: preview
10
+ }, jsx("span", {
11
+ css: previewImg
12
+ }, jsx(CachingEmoji, {
13
+ emoji: emoji
14
+ })), jsx("div", {
15
+ css: previewText
16
+ }, emoji.name && jsx("div", {
17
+ css: emojiName
18
+ }, emoji.name), jsx("div", {
19
+ css: emojiShortName
20
+ }, emoji.shortName)));
21
+ };
@@ -1,5 +1,8 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import React from 'react';
2
+
3
+ /** @jsx jsx */
4
+ import { jsx } from '@emotion/core';
5
+ import React, { Fragment } from 'react';
3
6
  import { PureComponent } from 'react';
4
7
  import { FormattedMessage, injectIntl } from 'react-intl-next';
5
8
  import TextField from '@atlaskit/textfield';
@@ -10,7 +13,7 @@ import EmojiErrorMessage from './EmojiErrorMessage';
10
13
  import EmojiUploadPreview from './EmojiUploadPreview';
11
14
  import FileChooser from './FileChooser';
12
15
  import { UploadStatus } from './internal-types';
13
- import * as styles from './styles';
16
+ import { emojiChooseFileErrorMessage, emojiUpload, emojiUploadBottom, uploadChooseFileBrowse, uploadChooseFileEmojiName, uploadChooseFileMessage, uploadChooseFileRow } from './styles';
14
17
  const disallowedReplacementsMap = new Map([[':', ''], ['!', ''], ['@', ''], ['#', ''], ['%', ''], ['^', ''], ['&', ''], ['*', ''], ['(', ''], [')', ''], [' ', '_']]);
15
18
 
16
19
  const sanitizeName = name => {
@@ -54,15 +57,15 @@ class ChooseEmojiFile extends PureComponent {
54
57
  const disableChooser = !name;
55
58
  const fileChooserButtonDescriptionId = 'choose.emoji.file.button.screen.reader.description.id'; // Note: FileChooser.accept does not work in Electron due to a bug: https://product-fabric.atlassian.net/browse/FS-1626
56
59
 
57
- return /*#__PURE__*/React.createElement("div", {
58
- className: styles.emojiUpload
59
- }, /*#__PURE__*/React.createElement("div", {
60
- className: styles.uploadChooseFileMessage
61
- }, /*#__PURE__*/React.createElement(FormattedMessage, messages.addCustomEmojiLabel, message => /*#__PURE__*/React.createElement("h5", null, message))), /*#__PURE__*/React.createElement("div", {
62
- className: styles.uploadChooseFileRow
63
- }, /*#__PURE__*/React.createElement("span", {
64
- className: styles.uploadChooseFileEmojiName
65
- }, /*#__PURE__*/React.createElement(TextField, {
60
+ return jsx("div", {
61
+ css: emojiUpload
62
+ }, jsx("div", {
63
+ css: uploadChooseFileMessage
64
+ }, jsx(FormattedMessage, messages.addCustomEmojiLabel, message => jsx("h5", null, message))), jsx("div", {
65
+ css: uploadChooseFileRow
66
+ }, jsx("span", {
67
+ css: uploadChooseFileEmojiName
68
+ }, jsx(TextField, {
66
69
  placeholder: formatMessage(messages.emojiPlaceholder),
67
70
  "aria-label": formatMessage(messages.emojiNameAriaLabel),
68
71
  maxLength: maxNameLength,
@@ -71,22 +74,22 @@ class ChooseEmojiFile extends PureComponent {
71
74
  value: name,
72
75
  isCompact: true,
73
76
  autoFocus: true
74
- })), /*#__PURE__*/React.createElement("span", {
75
- className: styles.uploadChooseFileBrowse
76
- }, /*#__PURE__*/React.createElement(FormattedMessage, messages.emojiChooseFileScreenReaderDescription, screenReaderDescription => /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
77
+ })), jsx("span", {
78
+ css: uploadChooseFileBrowse
79
+ }, jsx(FormattedMessage, messages.emojiChooseFileScreenReaderDescription, screenReaderDescription => jsx(Fragment, null, jsx("span", {
77
80
  hidden: true,
78
81
  id: fileChooserButtonDescriptionId
79
- }, screenReaderDescription), /*#__PURE__*/React.createElement(FileChooser, {
82
+ }, screenReaderDescription), jsx(FileChooser, {
80
83
  label: formatMessage(messages.emojiChooseFileTitle),
81
84
  onChange: onChooseFile,
82
85
  onClick: onClick,
83
86
  accept: "image/png,image/jpeg,image/gif",
84
87
  ariaDescribedBy: fileChooserButtonDescriptionId,
85
88
  isDisabled: disableChooser
86
- }))))), /*#__PURE__*/React.createElement("div", {
87
- className: styles.emojiUploadBottom
88
- }, !errorMessage ? /*#__PURE__*/React.createElement("p", null, /*#__PURE__*/React.createElement(FormattedMessage, messages.emojiImageRequirements)) : /*#__PURE__*/React.createElement(EmojiErrorMessage, {
89
- className: styles.emojiChooseFileErrorMessage,
89
+ }))))), jsx("div", {
90
+ css: emojiUploadBottom
91
+ }, !errorMessage ? jsx("p", null, jsx(FormattedMessage, messages.emojiImageRequirements)) : jsx(EmojiErrorMessage, {
92
+ messageStyles: emojiChooseFileErrorMessage,
90
93
  message: errorMessage
91
94
  })));
92
95
  }
@@ -269,7 +272,7 @@ export class EmojiUploadPicker extends PureComponent {
269
272
  };
270
273
 
271
274
  if (name && previewImage) {
272
- return /*#__PURE__*/React.createElement(EmojiUploadPreview, {
275
+ return jsx(EmojiUploadPreview, {
273
276
  errorMessage: errorMessage,
274
277
  name: name,
275
278
  onAddEmoji: this.onAddEmoji,
@@ -279,13 +282,13 @@ export class EmojiUploadPicker extends PureComponent {
279
282
  });
280
283
  }
281
284
 
282
- return /*#__PURE__*/React.createElement(ChooseEmojiFile, {
285
+ return jsx(ChooseEmojiFile, {
283
286
  name: name,
284
287
  onChooseFile: this.onChooseFile,
285
288
  onClick: this.props.onFileChooserClicked,
286
289
  onNameChange: this.onNameChange,
287
290
  onUploadCancelled: cancelUpload,
288
- errorMessage: chooseEmojiErrorMessage ? /*#__PURE__*/React.createElement(FormattedMessage, chooseEmojiErrorMessage) : undefined,
291
+ errorMessage: chooseEmojiErrorMessage ? jsx(FormattedMessage, chooseEmojiErrorMessage) : undefined,
289
292
  intl: intl
290
293
  });
291
294
  }