@atlaskit/emoji 64.3.0 → 64.5.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 (73) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/cjs/components/common/CachingEmoji.js +8 -6
  3. package/dist/cjs/components/common/RecordSelectionDefault.js +8 -2
  4. package/dist/cjs/components/common/ResourcedEmojiComponent.js +12 -17
  5. package/dist/cjs/components/common/UploadEmoji.js +8 -0
  6. package/dist/cjs/components/picker/EmojiPicker.js +13 -2
  7. package/dist/cjs/components/picker/EmojiPickerComponent.js +38 -18
  8. package/dist/cjs/components/picker/EmojiPickerList.js +0 -20
  9. package/dist/cjs/components/typeahead/EmojiTypeAheadComponent.js +28 -16
  10. package/dist/cjs/components/typeahead/EmojiTypeAheadItem.js +4 -2
  11. package/dist/cjs/components/uploader/EmojiUploadComponent.js +13 -0
  12. package/dist/cjs/context/EmojiContext.js +11 -0
  13. package/dist/cjs/context/EmojiContextProvider.js +29 -0
  14. package/dist/cjs/context/LegacyEmojiContextProvider.js +76 -0
  15. package/dist/cjs/index.js +18 -0
  16. package/dist/cjs/types.js +23 -2
  17. package/dist/cjs/util/analytics/analytics.js +11 -41
  18. package/dist/cjs/util/analytics/index.js +16 -14
  19. package/dist/cjs/util/analytics/ufoExperiences.js +48 -0
  20. package/dist/cjs/version.json +1 -1
  21. package/dist/es2019/components/common/CachingEmoji.js +7 -5
  22. package/dist/es2019/components/common/RecordSelectionDefault.js +9 -2
  23. package/dist/es2019/components/common/ResourcedEmojiComponent.js +11 -16
  24. package/dist/es2019/components/common/UploadEmoji.js +4 -0
  25. package/dist/es2019/components/picker/EmojiPicker.js +9 -2
  26. package/dist/es2019/components/picker/EmojiPickerComponent.js +32 -18
  27. package/dist/es2019/components/picker/EmojiPickerList.js +0 -19
  28. package/dist/es2019/components/typeahead/EmojiTypeAheadComponent.js +23 -16
  29. package/dist/es2019/components/typeahead/EmojiTypeAheadItem.js +3 -2
  30. package/dist/es2019/components/uploader/EmojiUploadComponent.js +9 -0
  31. package/dist/es2019/context/EmojiContext.js +2 -0
  32. package/dist/es2019/context/EmojiContextProvider.js +11 -0
  33. package/dist/es2019/context/LegacyEmojiContextProvider.js +32 -0
  34. package/dist/es2019/index.js +3 -3
  35. package/dist/es2019/types.js +20 -1
  36. package/dist/es2019/util/analytics/analytics.js +16 -37
  37. package/dist/es2019/util/analytics/index.js +2 -1
  38. package/dist/es2019/util/analytics/ufoExperiences.js +35 -0
  39. package/dist/es2019/version.json +1 -1
  40. package/dist/esm/components/common/CachingEmoji.js +7 -5
  41. package/dist/esm/components/common/RecordSelectionDefault.js +6 -3
  42. package/dist/esm/components/common/ResourcedEmojiComponent.js +10 -16
  43. package/dist/esm/components/common/UploadEmoji.js +4 -0
  44. package/dist/esm/components/picker/EmojiPicker.js +8 -2
  45. package/dist/esm/components/picker/EmojiPickerComponent.js +33 -19
  46. package/dist/esm/components/picker/EmojiPickerList.js +0 -21
  47. package/dist/esm/components/typeahead/EmojiTypeAheadComponent.js +23 -17
  48. package/dist/esm/components/typeahead/EmojiTypeAheadItem.js +3 -2
  49. package/dist/esm/components/uploader/EmojiUploadComponent.js +10 -0
  50. package/dist/esm/context/EmojiContext.js +2 -0
  51. package/dist/esm/context/EmojiContextProvider.js +12 -0
  52. package/dist/esm/context/LegacyEmojiContextProvider.js +57 -0
  53. package/dist/esm/index.js +3 -3
  54. package/dist/esm/types.js +20 -1
  55. package/dist/esm/util/analytics/analytics.js +8 -33
  56. package/dist/esm/util/analytics/index.js +2 -1
  57. package/dist/esm/util/analytics/ufoExperiences.js +35 -0
  58. package/dist/esm/version.json +1 -1
  59. package/dist/types/components/common/CachingEmoji.d.ts +6 -8
  60. package/dist/types/components/common/ResourcedEmojiComponent.d.ts +0 -6
  61. package/dist/types/components/picker/EmojiPickerComponent.d.ts +0 -6
  62. package/dist/types/components/picker/EmojiPickerList.d.ts +0 -10
  63. package/dist/types/components/typeahead/EmojiTypeAheadComponent.d.ts +0 -6
  64. package/dist/types/components/uploader/EmojiUploadComponent.d.ts +1 -0
  65. package/dist/types/context/EmojiContext.d.ts +4 -0
  66. package/dist/types/context/EmojiContextProvider.d.ts +7 -0
  67. package/dist/types/context/LegacyEmojiContextProvider.d.ts +22 -0
  68. package/dist/types/index.d.ts +3 -3
  69. package/dist/types/types.d.ts +13 -0
  70. package/dist/types/util/analytics/analytics.d.ts +3 -7
  71. package/dist/types/util/analytics/index.d.ts +3 -2
  72. package/dist/types/util/analytics/ufoExperiences.d.ts +11 -0
  73. package/package.json +4 -3
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = void 0;
11
+
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+
14
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
+
16
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
+
18
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
19
+
20
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
21
+
22
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
23
+
24
+ var _react = _interopRequireWildcard(require("react"));
25
+
26
+ var _propTypes = _interopRequireDefault(require("prop-types"));
27
+
28
+ var _EmojiContextProvider = require("./EmojiContextProvider");
29
+
30
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
+
32
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
+
34
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
35
+
36
+ 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; } }
37
+
38
+ /**
39
+ * Legacy Context Priority Passthrough ...
40
+ * If component finds legacy context, then use it, otherwise use the passed through context
41
+ */
42
+ var LegacyEmojiContextProvider = /*#__PURE__*/function (_Component) {
43
+ (0, _inherits2.default)(LegacyEmojiContextProvider, _Component);
44
+
45
+ var _super = _createSuper(LegacyEmojiContextProvider);
46
+
47
+ function LegacyEmojiContextProvider(props, context) {
48
+ var _this;
49
+
50
+ (0, _classCallCheck2.default)(this, LegacyEmojiContextProvider);
51
+ _this = _super.call(this, props, context);
52
+ _this.state = {
53
+ prioritisedContextValue: context.emoji ? context : _this.props.emojiContextValue
54
+ };
55
+ return _this;
56
+ }
57
+
58
+ (0, _createClass2.default)(LegacyEmojiContextProvider, [{
59
+ key: "render",
60
+ value: function render() {
61
+ if (this.state.prioritisedContextValue) {
62
+ return /*#__PURE__*/_react.default.createElement(_EmojiContextProvider.EmojiContextProvider, {
63
+ emojiContextValue: this.state.prioritisedContextValue
64
+ }, this.props.children);
65
+ }
66
+
67
+ return this.props.children;
68
+ }
69
+ }]);
70
+ return LegacyEmojiContextProvider;
71
+ }(_react.Component);
72
+
73
+ exports.default = LegacyEmojiContextProvider;
74
+ (0, _defineProperty2.default)(LegacyEmojiContextProvider, "contextTypes", {
75
+ emoji: _propTypes.default.object
76
+ });
package/dist/cjs/index.js CHANGED
@@ -77,6 +77,18 @@ Object.defineProperty(exports, "SearchSort", {
77
77
  return _types.SearchSort;
78
78
  }
79
79
  });
80
+ Object.defineProperty(exports, "UfoComponentName", {
81
+ enumerable: true,
82
+ get: function get() {
83
+ return _types.UfoComponentName;
84
+ }
85
+ });
86
+ Object.defineProperty(exports, "UfoExperienceName", {
87
+ enumerable: true,
88
+ get: function get() {
89
+ return _types.UfoExperienceName;
90
+ }
91
+ });
80
92
  Object.defineProperty(exports, "UsageFrequencyTracker", {
81
93
  enumerable: true,
82
94
  get: function get() {
@@ -168,6 +180,12 @@ Object.defineProperty(exports, "toOptionalEmojiId", {
168
180
  return _typeHelpers.toOptionalEmojiId;
169
181
  }
170
182
  });
183
+ Object.defineProperty(exports, "ufoExperiences", {
184
+ enumerable: true,
185
+ get: function get() {
186
+ return _analytics.ufoExperiences;
187
+ }
188
+ });
171
189
 
172
190
  var _utilServiceSupport = require("@atlaskit/util-service-support");
173
191
 
package/dist/cjs/types.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.SearchSort = exports.ProviderTypes = void 0;
6
+ exports.UfoExperienceName = exports.UfoComponentName = exports.SearchSort = exports.ProviderTypes = void 0;
7
7
 
8
8
  /**
9
9
  * Minimum information to defined an emoji is the shortName.
@@ -51,4 +51,25 @@ exports.ProviderTypes = ProviderTypes;
51
51
  ProviderTypes["STANDARD"] = "STANDARD";
52
52
  ProviderTypes["ATLASSIAN"] = "ATLASSIAN";
53
53
  ProviderTypes["UNKNOWN"] = "UNKNOWN";
54
- })(ProviderTypes || (exports.ProviderTypes = ProviderTypes = {}));
54
+ })(ProviderTypes || (exports.ProviderTypes = ProviderTypes = {}));
55
+
56
+ var UfoExperienceName;
57
+ exports.UfoExperienceName = UfoExperienceName;
58
+
59
+ (function (UfoExperienceName) {
60
+ UfoExperienceName["EMOJI_RENDERED"] = "emoji-rendered";
61
+ UfoExperienceName["EMOJI_RESOURCE_FETCHED"] = "emoji-resource-fetched";
62
+ UfoExperienceName["EMOJI_PICKER_OPENED"] = "emoji-picker-opened";
63
+ UfoExperienceName["EMOJI_SELECTION_RECORDED"] = "emoji-selection-recorded";
64
+ UfoExperienceName["EMOJI_UPLOADED"] = "emoji-uploaded";
65
+ UfoExperienceName["EMOJI_SEARCHED"] = "emoji-searched";
66
+ })(UfoExperienceName || (exports.UfoExperienceName = UfoExperienceName = {}));
67
+
68
+ var UfoComponentName;
69
+ exports.UfoComponentName = UfoComponentName;
70
+
71
+ (function (UfoComponentName) {
72
+ UfoComponentName["EMOJI"] = "emoji";
73
+ UfoComponentName["EMOJI_PICKER"] = "emoji-picker";
74
+ UfoComponentName["EMOJI_PROVIDER"] = "emoji-provider";
75
+ })(UfoComponentName || (exports.UfoComponentName = UfoComponentName = {}));
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.uploadSucceededEvent = exports.uploadFailedEvent = exports.uploadConfirmButton = exports.uploadCancelButton = exports.uploadBeginButton = exports.ufoExperiences = exports.typeaheadSelectedEvent = exports.typeaheadRenderedEvent = exports.typeaheadCancelledEvent = exports.toneSelectorOpenedEvent = exports.toneSelectorClosedEvent = exports.toneSelectedEvent = exports.selectedFileEvent = exports.sampledUfoRenderedEmoji = exports.recordSelectionSucceededSli = exports.recordSelectionFailedSli = exports.pickerSearchedEvent = exports.pickerClickedEvent = exports.openedPickerEvent = exports.insertionSucceeded = exports.insertionFailed = exports.deleteConfirmEvent = exports.deleteCancelEvent = exports.deleteBeginEvent = exports.createAndFireEventInElementsChannel = exports.closedPickerEvent = exports.categoryClickedEvent = void 0;
8
+ exports.uploadSucceededEvent = exports.uploadFailedEvent = exports.uploadConfirmButton = exports.uploadCancelButton = exports.uploadBeginButton = exports.typeaheadSelectedEvent = exports.typeaheadRenderedEvent = exports.typeaheadCancelledEvent = exports.toneSelectorOpenedEvent = exports.toneSelectorClosedEvent = exports.toneSelectedEvent = exports.selectedFileEvent = exports.recordSucceeded = exports.recordSelectionSucceededSli = exports.recordSelectionFailedSli = exports.recordFailed = exports.pickerSearchedEvent = exports.pickerClickedEvent = exports.openedPickerEvent = exports.deleteConfirmEvent = exports.deleteCancelEvent = exports.deleteBeginEvent = exports.createAndFireEventInElementsChannel = exports.closedPickerEvent = exports.categoryClickedEvent = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
@@ -13,10 +13,6 @@ var _analyticsNext = require("@atlaskit/analytics-next");
13
13
 
14
14
  var _version = require("../../version.json");
15
15
 
16
- var _ufo = require("@atlaskit/ufo");
17
-
18
- var _samplingUfo = require("./samplingUfo");
19
-
20
16
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
21
17
 
22
18
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
@@ -27,34 +23,6 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
27
23
 
28
24
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
29
25
 
30
- var createRenderExperience = function createRenderExperience(componentName) {
31
- return {
32
- platform: {
33
- component: componentName
34
- },
35
- type: _ufo.ExperienceTypes.Load,
36
- performanceType: _ufo.ExperiencePerformanceTypes.PageSegmentLoad
37
- };
38
- }; // const createInlineExperience = (componentName: string) => {
39
- // return {
40
- // platform: { component: componentName },
41
- // type: ExperienceTypes.Experience,
42
- // performanceType: ExperiencePerformanceTypes.InlineResult,
43
- // };
44
- // };
45
-
46
-
47
- var ufoExperiences = {
48
- 'emoji-rendered': new _ufo.ConcurrentExperience('emoji-rendered', createRenderExperience('emoji')),
49
- 'emoji-resource-fetched': new _ufo.ConcurrentExperience('emoji-resource-fetched', createRenderExperience('emoji-provider'))
50
- };
51
- exports.ufoExperiences = ufoExperiences;
52
-
53
- var sampledUfoRenderedEmoji = function sampledUfoRenderedEmoji(emojiId) {
54
- return (0, _samplingUfo.withSampling)(ufoExperiences['emoji-rendered'].getInstance(emojiId.id || emojiId.shortName));
55
- };
56
-
57
- exports.sampledUfoRenderedEmoji = sampledUfoRenderedEmoji;
58
26
  var createAndFireEventInElementsChannel = (0, _analyticsNext.createAndFireEvent)('fabric-elements');
59
27
  exports.createAndFireEventInElementsChannel = createAndFireEventInElementsChannel;
60
28
 
@@ -72,21 +40,21 @@ var createEvent = function createEvent(eventType, action, actionSubject, actionS
72
40
  };
73
41
  };
74
42
 
75
- var insertionSucceeded = function insertionSucceeded(source) {
43
+ var recordSucceeded = function recordSucceeded(source) {
76
44
  return createEvent('operational', 'succeeded', 'recordEmojiSelection', undefined, {
77
45
  source: source
78
46
  });
79
47
  };
80
48
 
81
- exports.insertionSucceeded = insertionSucceeded;
49
+ exports.recordSucceeded = recordSucceeded;
82
50
 
83
- var insertionFailed = function insertionFailed(source) {
51
+ var recordFailed = function recordFailed(source) {
84
52
  return createEvent('operational', 'failed', 'recordEmojiSelection', undefined, {
85
53
  source: source
86
54
  });
87
55
  };
88
56
 
89
- exports.insertionFailed = insertionFailed;
57
+ exports.recordFailed = recordFailed;
90
58
 
91
59
  var emojiPickerEvent = function emojiPickerEvent(action) {
92
60
  var attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
@@ -296,24 +264,26 @@ var typeaheadRenderedEvent = function typeaheadRenderedEvent(duration, query, em
296
264
  return createEvent('operational', 'rendered', 'emojiTypeahead', undefined, _objectSpread({
297
265
  duration: duration
298
266
  }, extractCommonAttributes(query, emojiList)));
299
- };
267
+ }; // it's used in editor typeahead to fire success record analytics
268
+
300
269
 
301
270
  exports.typeaheadRenderedEvent = typeaheadRenderedEvent;
302
271
 
303
272
  var recordSelectionSucceededSli = function recordSelectionSucceededSli(options) {
304
273
  return function () {
305
274
  if (options && options.createAnalyticsEvent) {
306
- (0, _analyticsNext.createAndFireEvent)('editor')(insertionSucceeded('typeahead'))(options.createAnalyticsEvent);
275
+ (0, _analyticsNext.createAndFireEvent)('editor')(recordSucceeded('typeahead'))(options.createAnalyticsEvent);
307
276
  }
308
277
  };
309
- };
278
+ }; // it's used in editor typeahead to fire failure record analytics
279
+
310
280
 
311
281
  exports.recordSelectionSucceededSli = recordSelectionSucceededSli;
312
282
 
313
283
  var recordSelectionFailedSli = function recordSelectionFailedSli(options) {
314
284
  return function (err) {
315
285
  if (options && options.createAnalyticsEvent) {
316
- (0, _analyticsNext.createAndFireEvent)('editor')(insertionFailed('typeahead'))(options.createAnalyticsEvent);
286
+ (0, _analyticsNext.createAndFireEvent)('editor')(recordFailed('typeahead'))(options.createAnalyticsEvent);
317
287
  }
318
288
 
319
289
  return Promise.reject(err);
@@ -45,18 +45,6 @@ Object.defineProperty(exports, "deleteConfirmEvent", {
45
45
  return _analytics.deleteConfirmEvent;
46
46
  }
47
47
  });
48
- Object.defineProperty(exports, "insertionFailed", {
49
- enumerable: true,
50
- get: function get() {
51
- return _analytics.insertionFailed;
52
- }
53
- });
54
- Object.defineProperty(exports, "insertionSucceeded", {
55
- enumerable: true,
56
- get: function get() {
57
- return _analytics.insertionSucceeded;
58
- }
59
- });
60
48
  Object.defineProperty(exports, "isExperienceSampled", {
61
49
  enumerable: true,
62
50
  get: function get() {
@@ -81,6 +69,12 @@ Object.defineProperty(exports, "pickerSearchedEvent", {
81
69
  return _analytics.pickerSearchedEvent;
82
70
  }
83
71
  });
72
+ Object.defineProperty(exports, "recordFailed", {
73
+ enumerable: true,
74
+ get: function get() {
75
+ return _analytics.recordFailed;
76
+ }
77
+ });
84
78
  Object.defineProperty(exports, "recordSelectionFailedSli", {
85
79
  enumerable: true,
86
80
  get: function get() {
@@ -93,10 +87,16 @@ Object.defineProperty(exports, "recordSelectionSucceededSli", {
93
87
  return _analytics.recordSelectionSucceededSli;
94
88
  }
95
89
  });
90
+ Object.defineProperty(exports, "recordSucceeded", {
91
+ enumerable: true,
92
+ get: function get() {
93
+ return _analytics.recordSucceeded;
94
+ }
95
+ });
96
96
  Object.defineProperty(exports, "sampledUfoRenderedEmoji", {
97
97
  enumerable: true,
98
98
  get: function get() {
99
- return _analytics.sampledUfoRenderedEmoji;
99
+ return _ufoExperiences.sampledUfoRenderedEmoji;
100
100
  }
101
101
  });
102
102
  Object.defineProperty(exports, "selectedFileEvent", {
@@ -144,7 +144,7 @@ Object.defineProperty(exports, "typeaheadSelectedEvent", {
144
144
  Object.defineProperty(exports, "ufoExperiences", {
145
145
  enumerable: true,
146
146
  get: function get() {
147
- return _analytics.ufoExperiences;
147
+ return _ufoExperiences.ufoExperiences;
148
148
  }
149
149
  });
150
150
  Object.defineProperty(exports, "ufoExperiencesSampled", {
@@ -200,4 +200,6 @@ var _samplingUfo = require("./samplingUfo");
200
200
 
201
201
  var _analytics = require("./analytics");
202
202
 
203
+ var _ufoExperiences = require("./ufoExperiences");
204
+
203
205
  var _useSampledUFOComponentExperience = require("./useSampledUFOComponentExperience");
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ufoExperiences = exports.sampledUfoRenderedEmoji = void 0;
7
+
8
+ var _types = require("../../types");
9
+
10
+ var _ufo = require("@atlaskit/ufo");
11
+
12
+ var _samplingUfo = require("./samplingUfo");
13
+
14
+ var createRenderExperience = function createRenderExperience(componentName) {
15
+ return {
16
+ platform: {
17
+ component: componentName
18
+ },
19
+ type: _ufo.ExperienceTypes.Load,
20
+ performanceType: _ufo.ExperiencePerformanceTypes.PageSegmentLoad
21
+ };
22
+ };
23
+
24
+ var createInlineExperience = function createInlineExperience(componentName) {
25
+ return {
26
+ platform: {
27
+ component: componentName
28
+ },
29
+ type: _ufo.ExperienceTypes.Experience,
30
+ performanceType: _ufo.ExperiencePerformanceTypes.InlineResult
31
+ };
32
+ };
33
+
34
+ var ufoExperiences = {
35
+ 'emoji-rendered': new _ufo.ConcurrentExperience(_types.UfoExperienceName.EMOJI_RENDERED, createRenderExperience(_types.UfoComponentName.EMOJI)),
36
+ 'emoji-resource-fetched': new _ufo.ConcurrentExperience(_types.UfoExperienceName.EMOJI_RESOURCE_FETCHED, createRenderExperience(_types.UfoComponentName.EMOJI_PROVIDER)),
37
+ 'emoji-picker-opened': new _ufo.UFOExperience(_types.UfoExperienceName.EMOJI_PICKER_OPENED, createRenderExperience(_types.UfoComponentName.EMOJI_PICKER)),
38
+ 'emoji-selection-recorded': new _ufo.UFOExperience(_types.UfoExperienceName.EMOJI_SELECTION_RECORDED, createInlineExperience(_types.UfoComponentName.EMOJI_PROVIDER)),
39
+ 'emoji-uploaded': new _ufo.UFOExperience(_types.UfoExperienceName.EMOJI_UPLOADED, createInlineExperience(_types.UfoComponentName.EMOJI_PICKER)),
40
+ 'emoji-searched': new _ufo.UFOExperience(_types.UfoExperienceName.EMOJI_SEARCHED, createInlineExperience(_types.UfoComponentName.EMOJI_PICKER))
41
+ };
42
+ exports.ufoExperiences = ufoExperiences;
43
+
44
+ var sampledUfoRenderedEmoji = function sampledUfoRenderedEmoji(emojiId) {
45
+ return (0, _samplingUfo.withSampling)(ufoExperiences['emoji-rendered'].getInstance(emojiId.id || emojiId.shortName));
46
+ };
47
+
48
+ exports.sampledUfoRenderedEmoji = sampledUfoRenderedEmoji;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/emoji",
3
- "version": "64.3.0",
3
+ "version": "64.5.0",
4
4
  "sideEffects": false
5
5
  }
@@ -1,6 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
- import PropTypes from 'prop-types';
4
3
  import React from 'react';
5
4
  import { PureComponent } from 'react';
6
5
  import { shouldUseAltRepresentation } from '../../api/EmojiUtils';
@@ -11,6 +10,7 @@ import EmojiPlaceholder from './EmojiPlaceholder';
11
10
  import { UfoErrorBoundary } from './UfoErrorBoundary';
12
11
  import { sampledUfoRenderedEmoji, ufoExperiences, useSampledUFOComponentExperience } from '../../util/analytics';
13
12
  import { SAMPLING_RATE_EMOJI_RENDERED_EXP } from '../../util/constants';
13
+ import { EmojiContext } from '../../context/EmojiContext';
14
14
 
15
15
  /**
16
16
  * Renders an emoji from a cached image, if required.
@@ -46,7 +46,7 @@ export const CachingEmoji = props => {
46
46
 
47
47
  export class CachingMediaEmoji extends PureComponent {
48
48
  constructor(props, context) {
49
- super(props, context);
49
+ super(props);
50
50
 
51
51
  _defineProperty(this, "mounted", false);
52
52
 
@@ -95,6 +95,10 @@ export class CachingMediaEmoji extends PureComponent {
95
95
  }
96
96
 
97
97
  loadEmoji(emoji, context, forceLoad) {
98
+ if (!context) {
99
+ return;
100
+ }
101
+
98
102
  if (!context.emoji) {
99
103
  return undefined;
100
104
  }
@@ -192,8 +196,6 @@ export class CachingMediaEmoji extends PureComponent {
192
196
 
193
197
  }
194
198
 
195
- _defineProperty(CachingMediaEmoji, "contextTypes", {
196
- emoji: PropTypes.object
197
- });
199
+ _defineProperty(CachingMediaEmoji, "contextType", EmojiContext);
198
200
 
199
201
  export default CachingEmoji;
@@ -1,4 +1,4 @@
1
- import { insertionFailed, insertionSucceeded } from '../../util/analytics';
1
+ import { recordFailed, recordSucceeded, ufoExperiences } from '../../util/analytics';
2
2
 
3
3
  /**
4
4
  * A function that will wrap any configured Emoji 'onSelection' function to ensure recordSelection is always
@@ -12,7 +12,14 @@ export const createRecordSelectionDefault = (provider, onSelect, fireAnalytics)
12
12
  return (emojiId, emoji, event) => {
13
13
  try {
14
14
  if (provider.recordSelection && emoji) {
15
- provider.recordSelection(emoji).then(() => fireAnalytics && fireAnalytics(insertionSucceeded)).catch(() => fireAnalytics && fireAnalytics(insertionFailed));
15
+ ufoExperiences['emoji-selection-recorded'].start();
16
+ provider.recordSelection(emoji).then(() => {
17
+ fireAnalytics && fireAnalytics(recordSucceeded);
18
+ ufoExperiences['emoji-selection-recorded'].success();
19
+ }).catch(() => {
20
+ fireAnalytics && fireAnalytics(recordFailed);
21
+ ufoExperiences['emoji-selection-recorded'].failure();
22
+ });
16
23
  }
17
24
  } finally {
18
25
  if (onSelect) {
@@ -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
+ }
@@ -1,16 +1,19 @@
1
1
  import { supportsUploadFeature } from '../../api/EmojiResource';
2
2
  import { uploadFailedEvent, uploadSucceededEvent } from '../../util/analytics';
3
3
  import { messages } from '../i18n';
4
+ import { ufoExperiences } from '../../util/analytics/ufoExperiences';
4
5
  export const uploadEmoji = (upload, emojiProvider, errorSetter, onSuccess, fireAnalytics) => {
5
6
  const startTime = Date.now();
6
7
  errorSetter(undefined);
7
8
 
8
9
  if (supportsUploadFeature(emojiProvider)) {
10
+ ufoExperiences['emoji-uploaded'].start();
9
11
  emojiProvider.uploadCustomEmoji(upload).then(emojiDescription => {
10
12
  fireAnalytics(uploadSucceededEvent({
11
13
  duration: Date.now() - startTime
12
14
  }));
13
15
  onSuccess(emojiDescription);
16
+ ufoExperiences['emoji-uploaded'].success();
14
17
  }).catch(err => {
15
18
  errorSetter(messages.emojiUploadFailed); // eslint-disable-next-line no-console
16
19
 
@@ -19,6 +22,7 @@ export const uploadEmoji = (upload, emojiProvider, errorSetter, onSuccess, fireA
19
22
  duration: Date.now() - startTime,
20
23
  reason: messages.emojiUploadFailed.defaultMessage
21
24
  }));
25
+ ufoExperiences['emoji-uploaded'].failure();
22
26
  });
23
27
  }
24
28
  };
@@ -4,9 +4,11 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
4
  /** @jsx jsx */
5
5
  import { jsx } from '@emotion/core';
6
6
  import { withAnalyticsEvents } from '@atlaskit/analytics-next';
7
+ import { ufoExperiences } from '../../util/analytics';
7
8
  import LoadingEmojiComponent from '../common/LoadingEmojiComponent';
8
9
  import { LoadingItem } from './EmojiPickerVirtualItems';
9
10
  import { emojiPicker } from './styles';
11
+ import { UfoErrorBoundary } from '../common/UfoErrorBoundary';
10
12
 
11
13
  const emojiPickerModuleLoader = () => import(
12
14
  /* webpackChunkName:"@atlaskit-internal_emojiPickerComponent" */
@@ -23,6 +25,8 @@ export class EmojiPickerInternal extends LoadingEmojiComponent {
23
25
  _defineProperty(this, "state", {
24
26
  asyncLoadedComponent: EmojiPickerInternal.AsyncLoadedComponent
25
27
  });
28
+
29
+ ufoExperiences['emoji-picker-opened'].start();
26
30
  }
27
31
 
28
32
  asyncLoadComponent() {
@@ -41,6 +45,7 @@ export class EmojiPickerInternal extends LoadingEmojiComponent {
41
45
  }
42
46
  };
43
47
 
48
+ ufoExperiences['emoji-picker-opened'].markFMP();
44
49
  return jsx("div", {
45
50
  css: emojiPicker,
46
51
  ref: handlePickerRef
@@ -52,9 +57,11 @@ export class EmojiPickerInternal extends LoadingEmojiComponent {
52
57
  emojiProvider,
53
58
  ...otherProps
54
59
  } = this.props;
55
- return jsx(EmojiPickerComponent, _extends({
60
+ return jsx(UfoErrorBoundary, {
61
+ experiences: [ufoExperiences['emoji-picker-opened']]
62
+ }, jsx(EmojiPickerComponent, _extends({
56
63
  emojiProvider: loadedEmojiProvider
57
- }, otherProps));
64
+ }, otherProps)));
58
65
  }
59
66
 
60
67
  }