@atlaskit/emoji 64.4.0 → 64.5.1

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 (62) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/cjs/api/EmojiResource.js +3 -5
  3. package/dist/cjs/components/common/CachingEmoji.js +8 -6
  4. package/dist/cjs/components/common/ResourcedEmojiComponent.js +12 -17
  5. package/dist/cjs/components/picker/EmojiPickerComponent.js +11 -16
  6. package/dist/cjs/components/picker/EmojiPickerList.js +0 -20
  7. package/dist/cjs/components/typeahead/EmojiTypeAheadComponent.js +11 -16
  8. package/dist/cjs/components/typeahead/EmojiTypeAheadItem.js +4 -2
  9. package/dist/cjs/context/EmojiContext.js +11 -0
  10. package/dist/cjs/context/EmojiContextProvider.js +29 -0
  11. package/dist/cjs/context/LegacyEmojiContextProvider.js +76 -0
  12. package/dist/cjs/index.js +12 -0
  13. package/dist/cjs/types.js +23 -2
  14. package/dist/cjs/util/analytics/ufoExperiences.js +8 -6
  15. package/dist/cjs/version.json +1 -1
  16. package/dist/es2019/api/EmojiResource.js +3 -6
  17. package/dist/es2019/components/common/CachingEmoji.js +7 -5
  18. package/dist/es2019/components/common/ResourcedEmojiComponent.js +11 -16
  19. package/dist/es2019/components/picker/EmojiPickerComponent.js +10 -15
  20. package/dist/es2019/components/picker/EmojiPickerList.js +0 -19
  21. package/dist/es2019/components/typeahead/EmojiTypeAheadComponent.js +10 -15
  22. package/dist/es2019/components/typeahead/EmojiTypeAheadItem.js +3 -2
  23. package/dist/es2019/context/EmojiContext.js +2 -0
  24. package/dist/es2019/context/EmojiContextProvider.js +11 -0
  25. package/dist/es2019/context/LegacyEmojiContextProvider.js +32 -0
  26. package/dist/es2019/index.js +1 -1
  27. package/dist/es2019/types.js +20 -1
  28. package/dist/es2019/util/analytics/ufoExperiences.js +8 -7
  29. package/dist/es2019/version.json +1 -1
  30. package/dist/esm/api/EmojiResource.js +3 -5
  31. package/dist/esm/components/common/CachingEmoji.js +7 -5
  32. package/dist/esm/components/common/ResourcedEmojiComponent.js +10 -16
  33. package/dist/esm/components/picker/EmojiPickerComponent.js +10 -16
  34. package/dist/esm/components/picker/EmojiPickerList.js +0 -21
  35. package/dist/esm/components/typeahead/EmojiTypeAheadComponent.js +10 -16
  36. package/dist/esm/components/typeahead/EmojiTypeAheadItem.js +3 -2
  37. package/dist/esm/context/EmojiContext.js +2 -0
  38. package/dist/esm/context/EmojiContextProvider.js +12 -0
  39. package/dist/esm/context/LegacyEmojiContextProvider.js +57 -0
  40. package/dist/esm/index.js +1 -1
  41. package/dist/esm/types.js +20 -1
  42. package/dist/esm/util/analytics/ufoExperiences.js +8 -7
  43. package/dist/esm/version.json +1 -1
  44. package/dist/types/api/EmojiResource.d.ts +1 -0
  45. package/dist/types/api/EmojiUtils.d.ts +1 -1
  46. package/dist/types/components/common/CachingEmoji.d.ts +6 -8
  47. package/dist/types/components/common/EmojiUploadPicker.d.ts +2 -2
  48. package/dist/types/components/common/ResourcedEmojiComponent.d.ts +0 -6
  49. package/dist/types/components/common/ToneSelector.d.ts +1 -1
  50. package/dist/types/components/picker/EmojiPicker.d.ts +1 -1
  51. package/dist/types/components/picker/EmojiPickerComponent.d.ts +2 -8
  52. package/dist/types/components/picker/EmojiPickerList.d.ts +0 -10
  53. package/dist/types/components/typeahead/EmojiTypeAheadComponent.d.ts +2 -8
  54. package/dist/types/components/uploader/EmojiUploader.d.ts +1 -1
  55. package/dist/types/context/EmojiContext.d.ts +4 -0
  56. package/dist/types/context/EmojiContextProvider.d.ts +7 -0
  57. package/dist/types/context/LegacyEmojiContextProvider.d.ts +22 -0
  58. package/dist/types/index.d.ts +1 -1
  59. package/dist/types/types.d.ts +13 -0
  60. package/dist/types/util/analytics/analytics.d.ts +21 -21
  61. package/dist/types/util/analytics/ufoExperiences.d.ts +0 -1
  62. package/package.json +6 -5
@@ -1,5 +1,4 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import PropTypes from 'prop-types';
3
2
  import React from 'react';
4
3
  import { Component } from 'react';
5
4
  import { defaultEmojiHeight } from '../../util/constants';
@@ -7,6 +6,7 @@ import { isPromise } from '../../util/type-helpers';
7
6
  import CachingEmoji from './CachingEmoji';
8
7
  import EmojiPlaceholder from './EmojiPlaceholder';
9
8
  import { sampledUfoRenderedEmoji } from '../../util/analytics';
9
+ import LegacyEmojiContextProvider from '../../context/LegacyEmojiContextProvider';
10
10
  export default class ResourcedEmojiComponent extends Component {
11
11
  constructor(props) {
12
12
  super(props);
@@ -19,14 +19,6 @@ export default class ResourcedEmojiComponent extends Component {
19
19
  };
20
20
  }
21
21
 
22
- getChildContext() {
23
- return {
24
- emoji: {
25
- emojiProvider: this.props.emojiProvider
26
- }
27
- };
28
- }
29
-
30
22
  refreshEmoji(emojiProvider, emojiId) {
31
23
  const foundEmoji = emojiProvider.findByEmojiId(emojiId);
32
24
 
@@ -126,15 +118,18 @@ export default class ResourcedEmojiComponent extends Component {
126
118
  id,
127
119
  fallback
128
120
  } = this.props.emojiId;
129
- return /*#__PURE__*/React.createElement("span", {
121
+ const emojiContextValue = {
122
+ emoji: {
123
+ emojiProvider: this.props.emojiProvider
124
+ }
125
+ };
126
+ return /*#__PURE__*/React.createElement(LegacyEmojiContextProvider, {
127
+ emojiContextValue: emojiContextValue
128
+ }, /*#__PURE__*/React.createElement("span", {
130
129
  "data-emoji-id": id,
131
130
  "data-emoji-short-name": shortName,
132
131
  "data-emoji-text": fallback || shortName
133
- }, element);
132
+ }, element));
134
133
  }
135
134
 
136
- }
137
-
138
- _defineProperty(ResourcedEmojiComponent, "childContextTypes", {
139
- emoji: PropTypes.object
140
- });
135
+ }
@@ -2,7 +2,6 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
 
3
3
  /** @jsx jsx */
4
4
  import { jsx } from '@emotion/core';
5
- import PropTypes from 'prop-types';
6
5
  import { PureComponent } from 'react';
7
6
  import { FormattedMessage } from 'react-intl-next';
8
7
  import { getEmojiVariation } from '../../api/EmojiRepository';
@@ -20,6 +19,7 @@ import EmojiPickerFooter from './EmojiPickerFooter';
20
19
  import EmojiPickerList from './EmojiPickerList';
21
20
  import { createAndFireEventInElementsChannel, categoryClickedEvent, closedPickerEvent, deleteBeginEvent, deleteCancelEvent, deleteConfirmEvent, openedPickerEvent, pickerClickedEvent, pickerSearchedEvent, selectedFileEvent, uploadBeginButton, uploadCancelButton, uploadConfirmButton, toneSelectorClosedEvent, ufoExperiences } from '../../util/analytics';
22
21
  import { emojiPicker } from './styles';
22
+ import LegacyEmojiContextProvider from '../../context/LegacyEmojiContextProvider';
23
23
  const FREQUENTLY_USED_MAX = 16;
24
24
  export default class EmojiPickerComponent extends PureComponent {
25
25
  constructor(props) {
@@ -354,14 +354,6 @@ export default class EmojiPickerComponent extends PureComponent {
354
354
  this.openTime = 0;
355
355
  }
356
356
 
357
- getChildContext() {
358
- return {
359
- emoji: {
360
- emojiProvider: this.props.emojiProvider
361
- }
362
- };
363
- }
364
-
365
357
  UNSAFE_componentWillMount() {
366
358
  this.openTime = Date.now();
367
359
  this.fireAnalytics(openedPickerEvent());
@@ -524,7 +516,14 @@ export default class EmojiPickerComponent extends PureComponent {
524
516
  } = this.state;
525
517
  const recordUsageOnSelection = createRecordSelectionDefault(emojiProvider, this.onSelectWrapper, analytic => this.fireAnalytics(analytic('picker')));
526
518
  const formattedErrorMessage = uploadErrorMessage ? jsx(FormattedMessage, uploadErrorMessage) : null;
527
- const picker = jsx("div", {
519
+ const emojiContextValue = {
520
+ emoji: {
521
+ emojiProvider: this.props.emojiProvider
522
+ }
523
+ };
524
+ const picker = jsx(LegacyEmojiContextProvider, {
525
+ emojiContextValue: emojiContextValue
526
+ }, jsx("div", {
528
527
  css: emojiPicker,
529
528
  ref: this.handlePickerRef,
530
529
  "data-emoji-picker-container": true
@@ -562,16 +561,12 @@ export default class EmojiPickerComponent extends PureComponent {
562
561
  }), jsx(EmojiPickerFooter, {
563
562
  selectedEmoji: selectedEmoji,
564
563
  isUploading: uploading
565
- }));
564
+ })));
566
565
  return picker;
567
566
  }
568
567
 
569
568
  }
570
569
 
571
- _defineProperty(EmojiPickerComponent, "childContextTypes", {
572
- emoji: PropTypes.object
573
- });
574
-
575
570
  _defineProperty(EmojiPickerComponent, "defaultProps", {
576
571
  onSelection: () => {}
577
572
  });
@@ -2,7 +2,6 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
 
3
3
  /** @jsx jsx */
4
4
  import { jsx } from '@emotion/core';
5
- import PropTypes from 'prop-types';
6
5
  import React from 'react';
7
6
  import { PureComponent } from 'react';
8
7
  import { List as VirtualList } from 'react-virtualized/dist/commonjs/List';
@@ -198,16 +197,6 @@ export default class EmojiPickerVirtualList extends PureComponent {
198
197
  this.buildVirtualItems(_props, this.state);
199
198
  }
200
199
 
201
- getChildContext() {
202
- const {
203
- emoji
204
- } = this.context;
205
- return {
206
- emoji: { ...emoji
207
- }
208
- };
209
- }
210
-
211
200
  UNSAFE_componentWillUpdate(nextProps, nextState) {
212
201
  if (this.props.emojis !== nextProps.emojis || this.props.selectedTone !== nextProps.selectedTone || this.props.loading !== nextProps.loading || this.props.query !== nextProps.query) {
213
202
  if (!nextProps.query) {
@@ -289,14 +278,6 @@ export default class EmojiPickerVirtualList extends PureComponent {
289
278
 
290
279
  }
291
280
 
292
- _defineProperty(EmojiPickerVirtualList, "contextTypes", {
293
- emoji: PropTypes.object
294
- });
295
-
296
- _defineProperty(EmojiPickerVirtualList, "childContextTypes", {
297
- emoji: PropTypes.object
298
- });
299
-
300
281
  _defineProperty(EmojiPickerVirtualList, "defaultProps", {
301
282
  onEmojiSelected: () => {},
302
283
  onEmojiActive: () => {},
@@ -3,7 +3,6 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  /** @jsx jsx */
4
4
  import { jsx } from '@emotion/core';
5
5
  import uuid from 'uuid';
6
- import PropTypes from 'prop-types';
7
6
  import { PureComponent } from 'react';
8
7
  import { defaultListLimit } from '../../util/constants';
9
8
  import { toEmojiId } from '../../util/type-helpers';
@@ -13,6 +12,7 @@ import { typeaheadCancelledEvent, typeaheadSelectedEvent, typeaheadRenderedEvent
13
12
  import { createRecordSelectionDefault } from '../common/RecordSelectionDefault';
14
13
  import EmojiList from './EmojiTypeAheadList';
15
14
  import { emojiTypeAhead } from './styles';
15
+ import LegacyEmojiContextProvider from '../../context/LegacyEmojiContextProvider';
16
16
 
17
17
  const isFullShortName = query => query && query.length > 1 && query.charAt(0) === ':' && query.charAt(query.length - 1) === ':';
18
18
 
@@ -150,14 +150,6 @@ export default class EmojiTypeAheadComponent extends PureComponent {
150
150
  this.selected = false;
151
151
  }
152
152
 
153
- getChildContext() {
154
- return {
155
- emoji: {
156
- emojiProvider: this.props.emojiProvider
157
- }
158
- };
159
- }
160
-
161
153
  componentDidMount() {
162
154
  const {
163
155
  emojiProvider
@@ -265,7 +257,14 @@ export default class EmojiTypeAheadComponent extends PureComponent {
265
257
  const style = {
266
258
  display: visible ? 'block' : 'none'
267
259
  };
268
- return jsx("div", {
260
+ const emojiContextValue = {
261
+ emoji: {
262
+ emojiProvider: this.props.emojiProvider
263
+ }
264
+ };
265
+ return jsx(LegacyEmojiContextProvider, {
266
+ emojiContextValue: emojiContextValue
267
+ }, jsx("div", {
269
268
  style: style,
270
269
  className: 'ak-emoji-typeahead',
271
270
  css: emojiTypeAhead
@@ -274,15 +273,11 @@ export default class EmojiTypeAheadComponent extends PureComponent {
274
273
  onEmojiSelected: recordUsageOnSelection,
275
274
  ref: this.onEmojiListRef,
276
275
  loading: loading
277
- }));
276
+ })));
278
277
  }
279
278
 
280
279
  }
281
280
 
282
- _defineProperty(EmojiTypeAheadComponent, "childContextTypes", {
283
- emoji: PropTypes.object
284
- });
285
-
286
281
  _defineProperty(EmojiTypeAheadComponent, "defaultProps", {
287
282
  onSelection: () => {},
288
283
  onOpen: () => {},
@@ -8,6 +8,7 @@ import { toEmojiId } from '../../util/type-helpers';
8
8
  import { leftClick } from '../../util/mouse';
9
9
  import { EmojiPreviewComponent } from '../common/EmojiPreviewComponent';
10
10
  import { typeAheadItem, selected as selectedStyles, typeAheadItemRow, typeaheadSelected } from './styles';
11
+ import LegacyEmojiContextProvider from '../../context/LegacyEmojiContextProvider';
11
12
  export default class EmojiTypeAheadItem extends PureComponent {
12
13
  constructor(...args) {
13
14
  super(...args);
@@ -42,7 +43,7 @@ export default class EmojiTypeAheadItem extends PureComponent {
42
43
  emoji
43
44
  } = this.props;
44
45
  const classes = [typeAheadItem, selected && selectedStyles];
45
- return jsx("div", {
46
+ return jsx(LegacyEmojiContextProvider, null, jsx("div", {
46
47
  className: `ak-emoji-typeahead-item ${selected ? typeaheadSelected : ''}`,
47
48
  css: classes,
48
49
  onMouseDown: this.onEmojiSelected,
@@ -52,7 +53,7 @@ export default class EmojiTypeAheadItem extends PureComponent {
52
53
  css: typeAheadItemRow
53
54
  }, emoji && jsx(EmojiPreviewComponent, {
54
55
  emoji: emoji
55
- })));
56
+ }))));
56
57
  }
57
58
 
58
59
  }
@@ -0,0 +1,2 @@
1
+ import { createContext } from 'react';
2
+ export const EmojiContext = /*#__PURE__*/createContext(null);
@@ -0,0 +1,11 @@
1
+ import React, { useMemo } from 'react';
2
+ import { EmojiContext } from './EmojiContext';
3
+ export const EmojiContextProvider = ({
4
+ children,
5
+ emojiContextValue
6
+ }) => {
7
+ const memoizedEmojiContextValue = useMemo(() => emojiContextValue, [emojiContextValue]);
8
+ return /*#__PURE__*/React.createElement(EmojiContext.Provider, {
9
+ value: memoizedEmojiContextValue
10
+ }, children);
11
+ };
@@ -0,0 +1,32 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import React, { Component } from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import { EmojiContextProvider } from './EmojiContextProvider';
5
+
6
+ /**
7
+ * Legacy Context Priority Passthrough ...
8
+ * If component finds legacy context, then use it, otherwise use the passed through context
9
+ */
10
+ export default class LegacyEmojiContextProvider extends Component {
11
+ constructor(props, context) {
12
+ super(props, context);
13
+ this.state = {
14
+ prioritisedContextValue: context.emoji ? context : this.props.emojiContextValue
15
+ };
16
+ }
17
+
18
+ render() {
19
+ if (this.state.prioritisedContextValue) {
20
+ return /*#__PURE__*/React.createElement(EmojiContextProvider, {
21
+ emojiContextValue: this.state.prioritisedContextValue
22
+ }, this.props.children);
23
+ }
24
+
25
+ return this.props.children;
26
+ }
27
+
28
+ }
29
+
30
+ _defineProperty(LegacyEmojiContextProvider, "contextTypes", {
31
+ emoji: PropTypes.object
32
+ });
@@ -21,5 +21,5 @@ AbstractResource, Emoji, EmojiPlaceholder, EmojiLoader, EmojiPicker, EmojiUpload
21
21
  denormaliseEmojiServiceResponse, toEmojiId, toOptionalEmojiId, recordSelectionFailedSli, recordSelectionSucceededSli, ufoExperiences, // Constants
22
22
  emojiPickerWidth, emojiPickerHeight, defaultEmojiHeight, customCategory, UsageFrequencyTracker, EmojiTypeAheadItem };
23
23
  export { // Enums
24
- SearchSort } from './types';
24
+ SearchSort, UfoExperienceName, UfoComponentName } from './types';
25
25
  export default EmojiPicker;
@@ -42,4 +42,23 @@ export let ProviderTypes;
42
42
  ProviderTypes["STANDARD"] = "STANDARD";
43
43
  ProviderTypes["ATLASSIAN"] = "ATLASSIAN";
44
44
  ProviderTypes["UNKNOWN"] = "UNKNOWN";
45
- })(ProviderTypes || (ProviderTypes = {}));
45
+ })(ProviderTypes || (ProviderTypes = {}));
46
+
47
+ export let UfoExperienceName;
48
+
49
+ (function (UfoExperienceName) {
50
+ UfoExperienceName["EMOJI_RENDERED"] = "emoji-rendered";
51
+ UfoExperienceName["EMOJI_RESOURCE_FETCHED"] = "emoji-resource-fetched";
52
+ UfoExperienceName["EMOJI_PICKER_OPENED"] = "emoji-picker-opened";
53
+ UfoExperienceName["EMOJI_SELECTION_RECORDED"] = "emoji-selection-recorded";
54
+ UfoExperienceName["EMOJI_UPLOADED"] = "emoji-uploaded";
55
+ UfoExperienceName["EMOJI_SEARCHED"] = "emoji-searched";
56
+ })(UfoExperienceName || (UfoExperienceName = {}));
57
+
58
+ export let UfoComponentName;
59
+
60
+ (function (UfoComponentName) {
61
+ UfoComponentName["EMOJI"] = "emoji";
62
+ UfoComponentName["EMOJI_PICKER"] = "emoji-picker";
63
+ UfoComponentName["EMOJI_PROVIDER"] = "emoji-provider";
64
+ })(UfoComponentName || (UfoComponentName = {}));
@@ -1,5 +1,6 @@
1
+ import { UfoComponentName, UfoExperienceName } from '../../types';
1
2
  import { ExperiencePerformanceTypes, ExperienceTypes, ConcurrentExperience, UFOExperience } from '@atlaskit/ufo';
2
- import { withSampling } from './samplingUfo'; // TODO: clean up as not needed
3
+ import { withSampling } from './samplingUfo';
3
4
 
4
5
  const createRenderExperience = componentName => {
5
6
  return {
@@ -22,12 +23,12 @@ const createInlineExperience = componentName => {
22
23
  };
23
24
 
24
25
  export const ufoExperiences = {
25
- 'emoji-rendered': new ConcurrentExperience('emoji-rendered', createRenderExperience('emoji')),
26
- 'emoji-resource-fetched': new ConcurrentExperience('emoji-resource-fetched', createRenderExperience('emoji-provider')),
27
- 'emoji-picker-opened': new UFOExperience('emoji-picker-opened', createRenderExperience('emoji-picker')),
28
- 'emoji-selection-recorded': new UFOExperience('emoji-selection-recorded', createInlineExperience('emoji-picker')),
29
- 'emoji-uploaded': new UFOExperience('emoji-uploaded', createInlineExperience('emoji-picker')),
30
- 'emoji-searched': new UFOExperience('emoji-searched', createInlineExperience('emoji-picker'))
26
+ 'emoji-rendered': new ConcurrentExperience(UfoExperienceName.EMOJI_RENDERED, createRenderExperience(UfoComponentName.EMOJI)),
27
+ 'emoji-resource-fetched': new ConcurrentExperience(UfoExperienceName.EMOJI_RESOURCE_FETCHED, createRenderExperience(UfoComponentName.EMOJI_PROVIDER)),
28
+ 'emoji-picker-opened': new UFOExperience(UfoExperienceName.EMOJI_PICKER_OPENED, createRenderExperience(UfoComponentName.EMOJI_PICKER)),
29
+ 'emoji-selection-recorded': new UFOExperience(UfoExperienceName.EMOJI_SELECTION_RECORDED, createInlineExperience(UfoComponentName.EMOJI_PROVIDER)),
30
+ 'emoji-uploaded': new UFOExperience(UfoExperienceName.EMOJI_UPLOADED, createInlineExperience(UfoComponentName.EMOJI_PICKER)),
31
+ 'emoji-searched': new UFOExperience(UfoExperienceName.EMOJI_SEARCHED, createInlineExperience(UfoComponentName.EMOJI_PICKER))
31
32
  };
32
33
  export const sampledUfoRenderedEmoji = emojiId => {
33
34
  return withSampling(ufoExperiences['emoji-rendered'].getInstance(emojiId.id || emojiId.shortName));
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/emoji",
3
- "version": "64.4.0",
3
+ "version": "64.5.1",
4
4
  "sideEffects": false
5
5
  }
@@ -27,13 +27,11 @@ import { ufoExperiences } from '../util/analytics';
27
27
  *
28
28
  * Follow this up with an isUploadSupported() check to see if the provider is actually
29
29
  * configured to support uploads.
30
+ * https://www.typescriptlang.org/docs/handbook/2/narrowing.html#using-type-predicates
30
31
  */
31
32
  export var supportsUploadFeature = function supportsUploadFeature(emojiProvider) {
32
- var _ref = emojiProvider,
33
- isUploadSupported = _ref.isUploadSupported,
34
- prepareForUpload = _ref.prepareForUpload,
35
- uploadCustomEmoji = _ref.uploadCustomEmoji;
36
- return !!(isUploadSupported && prepareForUpload && uploadCustomEmoji);
33
+ var emojiUploadProvider = emojiProvider;
34
+ return !!emojiUploadProvider.isUploadSupported && !!emojiUploadProvider.uploadCustomEmoji && !!emojiUploadProvider.prepareForUpload;
37
35
  };
38
36
  export var EmojiResource = /*#__PURE__*/function (_AbstractResource) {
39
37
  _inherits(EmojiResource, _AbstractResource);
@@ -14,7 +14,6 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
14
14
 
15
15
  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; } }
16
16
 
17
- import PropTypes from 'prop-types';
18
17
  import React from 'react';
19
18
  import { PureComponent } from 'react';
20
19
  import { shouldUseAltRepresentation } from '../../api/EmojiUtils';
@@ -25,6 +24,7 @@ import EmojiPlaceholder from './EmojiPlaceholder';
25
24
  import { UfoErrorBoundary } from './UfoErrorBoundary';
26
25
  import { sampledUfoRenderedEmoji, ufoExperiences, useSampledUFOComponentExperience } from '../../util/analytics';
27
26
  import { SAMPLING_RATE_EMOJI_RENDERED_EXP } from '../../util/constants';
27
+ import { EmojiContext } from '../../context/EmojiContext';
28
28
 
29
29
  /**
30
30
  * Renders an emoji from a cached image, if required.
@@ -67,7 +67,7 @@ export var CachingMediaEmoji = /*#__PURE__*/function (_PureComponent) {
67
67
 
68
68
  _classCallCheck(this, CachingMediaEmoji);
69
69
 
70
- _this = _super.call(this, props, context);
70
+ _this = _super.call(this, props);
71
71
 
72
72
  _defineProperty(_assertThisInitialized(_this), "mounted", false);
73
73
 
@@ -122,6 +122,10 @@ export var CachingMediaEmoji = /*#__PURE__*/function (_PureComponent) {
122
122
  value: function loadEmoji(emoji, context, forceLoad) {
123
123
  var _this2 = this;
124
124
 
125
+ if (!context) {
126
+ return;
127
+ }
128
+
125
129
  if (!context.emoji) {
126
130
  return undefined;
127
131
  }
@@ -215,8 +219,6 @@ export var CachingMediaEmoji = /*#__PURE__*/function (_PureComponent) {
215
219
  return CachingMediaEmoji;
216
220
  }(PureComponent);
217
221
 
218
- _defineProperty(CachingMediaEmoji, "contextTypes", {
219
- emoji: PropTypes.object
220
- });
222
+ _defineProperty(CachingMediaEmoji, "contextType", EmojiContext);
221
223
 
222
224
  export default CachingEmoji;
@@ -10,7 +10,6 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
10
10
 
11
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; } }
12
12
 
13
- import PropTypes from 'prop-types';
14
13
  import React from 'react';
15
14
  import { Component } from 'react';
16
15
  import { defaultEmojiHeight } from '../../util/constants';
@@ -18,6 +17,7 @@ import { isPromise } from '../../util/type-helpers';
18
17
  import CachingEmoji from './CachingEmoji';
19
18
  import EmojiPlaceholder from './EmojiPlaceholder';
20
19
  import { sampledUfoRenderedEmoji } from '../../util/analytics';
20
+ import LegacyEmojiContextProvider from '../../context/LegacyEmojiContextProvider';
21
21
 
22
22
  var ResourcedEmojiComponent = /*#__PURE__*/function (_Component) {
23
23
  _inherits(ResourcedEmojiComponent, _Component);
@@ -41,15 +41,6 @@ var ResourcedEmojiComponent = /*#__PURE__*/function (_Component) {
41
41
  }
42
42
 
43
43
  _createClass(ResourcedEmojiComponent, [{
44
- key: "getChildContext",
45
- value: function getChildContext() {
46
- return {
47
- emoji: {
48
- emojiProvider: this.props.emojiProvider
49
- }
50
- };
51
- }
52
- }, {
53
44
  key: "refreshEmoji",
54
45
  value: function refreshEmoji(emojiProvider, emojiId) {
55
46
  var _this2 = this;
@@ -153,19 +144,22 @@ var ResourcedEmojiComponent = /*#__PURE__*/function (_Component) {
153
144
  shortName = _this$props$emojiId.shortName,
154
145
  id = _this$props$emojiId.id,
155
146
  fallback = _this$props$emojiId.fallback;
156
- return /*#__PURE__*/React.createElement("span", {
147
+ var emojiContextValue = {
148
+ emoji: {
149
+ emojiProvider: this.props.emojiProvider
150
+ }
151
+ };
152
+ return /*#__PURE__*/React.createElement(LegacyEmojiContextProvider, {
153
+ emojiContextValue: emojiContextValue
154
+ }, /*#__PURE__*/React.createElement("span", {
157
155
  "data-emoji-id": id,
158
156
  "data-emoji-short-name": shortName,
159
157
  "data-emoji-text": fallback || shortName
160
- }, element);
158
+ }, element));
161
159
  }
162
160
  }]);
163
161
 
164
162
  return ResourcedEmojiComponent;
165
163
  }(Component);
166
164
 
167
- _defineProperty(ResourcedEmojiComponent, "childContextTypes", {
168
- emoji: PropTypes.object
169
- });
170
-
171
165
  export { ResourcedEmojiComponent as default };
@@ -17,7 +17,6 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
17
17
 
18
18
  /** @jsx jsx */
19
19
  import { jsx } from '@emotion/core';
20
- import PropTypes from 'prop-types';
21
20
  import { PureComponent } from 'react';
22
21
  import { FormattedMessage } from 'react-intl-next';
23
22
  import { getEmojiVariation } from '../../api/EmojiRepository';
@@ -35,6 +34,7 @@ import EmojiPickerFooter from './EmojiPickerFooter';
35
34
  import EmojiPickerList from './EmojiPickerList';
36
35
  import { createAndFireEventInElementsChannel, categoryClickedEvent, closedPickerEvent, deleteBeginEvent, deleteCancelEvent, deleteConfirmEvent, openedPickerEvent, pickerClickedEvent, pickerSearchedEvent, selectedFileEvent, uploadBeginButton, uploadCancelButton, uploadConfirmButton, toneSelectorClosedEvent, ufoExperiences } from '../../util/analytics';
37
36
  import { emojiPicker } from './styles';
37
+ import LegacyEmojiContextProvider from '../../context/LegacyEmojiContextProvider';
38
38
  var FREQUENTLY_USED_MAX = 16;
39
39
 
40
40
  var EmojiPickerComponent = /*#__PURE__*/function (_PureComponent) {
@@ -378,15 +378,6 @@ var EmojiPickerComponent = /*#__PURE__*/function (_PureComponent) {
378
378
  }
379
379
 
380
380
  _createClass(EmojiPickerComponent, [{
381
- key: "getChildContext",
382
- value: function getChildContext() {
383
- return {
384
- emoji: {
385
- emojiProvider: this.props.emojiProvider
386
- }
387
- };
388
- }
389
- }, {
390
381
  key: "UNSAFE_componentWillMount",
391
382
  value: function UNSAFE_componentWillMount() {
392
383
  this.openTime = Date.now();
@@ -561,7 +552,14 @@ var EmojiPickerComponent = /*#__PURE__*/function (_PureComponent) {
561
552
  return _this4.fireAnalytics(analytic('picker'));
562
553
  });
563
554
  var formattedErrorMessage = uploadErrorMessage ? jsx(FormattedMessage, uploadErrorMessage) : null;
564
- var picker = jsx("div", {
555
+ var emojiContextValue = {
556
+ emoji: {
557
+ emojiProvider: this.props.emojiProvider
558
+ }
559
+ };
560
+ var picker = jsx(LegacyEmojiContextProvider, {
561
+ emojiContextValue: emojiContextValue
562
+ }, jsx("div", {
565
563
  css: emojiPicker,
566
564
  ref: this.handlePickerRef,
567
565
  "data-emoji-picker-container": true
@@ -599,7 +597,7 @@ var EmojiPickerComponent = /*#__PURE__*/function (_PureComponent) {
599
597
  }), jsx(EmojiPickerFooter, {
600
598
  selectedEmoji: selectedEmoji,
601
599
  isUploading: uploading
602
- }));
600
+ })));
603
601
  return picker;
604
602
  }
605
603
  }]);
@@ -607,10 +605,6 @@ var EmojiPickerComponent = /*#__PURE__*/function (_PureComponent) {
607
605
  return EmojiPickerComponent;
608
606
  }(PureComponent);
609
607
 
610
- _defineProperty(EmojiPickerComponent, "childContextTypes", {
611
- emoji: PropTypes.object
612
- });
613
-
614
608
  _defineProperty(EmojiPickerComponent, "defaultProps", {
615
609
  onSelection: function onSelection() {}
616
610
  });
@@ -7,17 +7,12 @@ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstruct
7
7
  import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
8
8
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
9
9
 
10
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
11
-
12
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
13
-
14
10
  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); }; }
15
11
 
16
12
  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; } }
17
13
 
18
14
  /** @jsx jsx */
19
15
  import { jsx } from '@emotion/core';
20
- import PropTypes from 'prop-types';
21
16
  import React from 'react';
22
17
  import { PureComponent } from 'react';
23
18
  import { List as VirtualList } from 'react-virtualized/dist/commonjs/List';
@@ -233,14 +228,6 @@ var EmojiPickerVirtualList = /*#__PURE__*/function (_PureComponent) {
233
228
  }
234
229
 
235
230
  _createClass(EmojiPickerVirtualList, [{
236
- key: "getChildContext",
237
- value: function getChildContext() {
238
- var emoji = this.context.emoji;
239
- return {
240
- emoji: _objectSpread({}, emoji)
241
- };
242
- }
243
- }, {
244
231
  key: "UNSAFE_componentWillUpdate",
245
232
  value: function UNSAFE_componentWillUpdate(nextProps, nextState) {
246
233
  if (this.props.emojis !== nextProps.emojis || this.props.selectedTone !== nextProps.selectedTone || this.props.loading !== nextProps.loading || this.props.query !== nextProps.query) {
@@ -328,14 +315,6 @@ var EmojiPickerVirtualList = /*#__PURE__*/function (_PureComponent) {
328
315
  return EmojiPickerVirtualList;
329
316
  }(PureComponent);
330
317
 
331
- _defineProperty(EmojiPickerVirtualList, "contextTypes", {
332
- emoji: PropTypes.object
333
- });
334
-
335
- _defineProperty(EmojiPickerVirtualList, "childContextTypes", {
336
- emoji: PropTypes.object
337
- });
338
-
339
318
  _defineProperty(EmojiPickerVirtualList, "defaultProps", {
340
319
  onEmojiSelected: function onEmojiSelected() {},
341
320
  onEmojiActive: function onEmojiActive() {},