@atlaskit/emoji 64.2.0 → 64.2.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 (50) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/cjs/api/EmojiResource.js +36 -1
  3. package/dist/cjs/components/common/CachingEmoji.js +33 -5
  4. package/dist/cjs/components/common/Emoji.js +9 -2
  5. package/dist/cjs/components/common/ResourcedEmoji.js +25 -9
  6. package/dist/cjs/components/common/ResourcedEmojiComponent.js +17 -0
  7. package/dist/cjs/components/common/UfoErrorBoundary.js +52 -0
  8. package/dist/cjs/types.js +12 -2
  9. package/dist/cjs/util/{analytics.js → analytics/analytics.js} +34 -2
  10. package/dist/cjs/util/analytics/index.js +203 -0
  11. package/dist/cjs/util/analytics/samplingUfo.js +278 -0
  12. package/dist/cjs/util/analytics/useSampledUFOComponentExperience.js +49 -0
  13. package/dist/cjs/util/constants.js +10 -3
  14. package/dist/cjs/version.json +1 -1
  15. package/dist/es2019/api/EmojiResource.js +28 -1
  16. package/dist/es2019/components/common/CachingEmoji.js +29 -5
  17. package/dist/es2019/components/common/Emoji.js +8 -2
  18. package/dist/es2019/components/common/ResourcedEmoji.js +22 -5
  19. package/dist/es2019/components/common/ResourcedEmojiComponent.js +16 -0
  20. package/dist/es2019/components/common/UfoErrorBoundary.js +11 -0
  21. package/dist/es2019/types.js +10 -1
  22. package/dist/es2019/util/{analytics.js → analytics/analytics.js} +28 -1
  23. package/dist/es2019/util/analytics/index.js +3 -0
  24. package/dist/es2019/util/analytics/samplingUfo.js +147 -0
  25. package/dist/es2019/util/analytics/useSampledUFOComponentExperience.js +39 -0
  26. package/dist/es2019/util/constants.js +5 -1
  27. package/dist/es2019/version.json +1 -1
  28. package/dist/esm/api/EmojiResource.js +32 -1
  29. package/dist/esm/components/common/CachingEmoji.js +31 -5
  30. package/dist/esm/components/common/Emoji.js +8 -2
  31. package/dist/esm/components/common/ResourcedEmoji.js +22 -9
  32. package/dist/esm/components/common/ResourcedEmojiComponent.js +16 -0
  33. package/dist/esm/components/common/UfoErrorBoundary.js +38 -0
  34. package/dist/esm/types.js +10 -1
  35. package/dist/esm/util/{analytics.js → analytics/analytics.js} +28 -1
  36. package/dist/esm/util/analytics/index.js +3 -0
  37. package/dist/esm/util/analytics/samplingUfo.js +259 -0
  38. package/dist/esm/util/analytics/useSampledUFOComponentExperience.js +39 -0
  39. package/dist/esm/util/constants.js +5 -1
  40. package/dist/esm/version.json +1 -1
  41. package/dist/types/api/EmojiResource.d.ts +1 -0
  42. package/dist/types/components/common/ResourcedEmoji.d.ts +2 -0
  43. package/dist/types/components/common/UfoErrorBoundary.d.ts +8 -0
  44. package/dist/types/types.d.ts +6 -0
  45. package/dist/types/util/{analytics.d.ts → analytics/analytics.d.ts} +9 -5
  46. package/dist/types/util/analytics/index.d.ts +5 -0
  47. package/dist/types/util/analytics/samplingUfo.d.ts +31 -0
  48. package/dist/types/util/analytics/useSampledUFOComponentExperience.d.ts +8 -0
  49. package/dist/types/util/constants.d.ts +2 -0
  50. package/package.json +3 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @atlaskit/emoji
2
2
 
3
+ ## 64.2.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`85397ad6786`](https://bitbucket.org/atlassian/atlassian-frontend/commits/85397ad6786) - add emoji-rendered and emoji-resource-fetched UFO experiences
8
+
3
9
  ## 64.2.0
4
10
 
5
11
  ### Minor Changes
@@ -31,6 +31,8 @@ var _typeHelpers = require("../util/type-helpers");
31
31
 
32
32
  var _storageAvailable = _interopRequireDefault(require("../util/storage-available"));
33
33
 
34
+ var _types = require("../types");
35
+
34
36
  var _logger = _interopRequireDefault(require("../util/logger"));
35
37
 
36
38
  var _EmojiLoader = _interopRequireDefault(require("./EmojiLoader"));
@@ -39,6 +41,8 @@ var _EmojiRepository = _interopRequireDefault(require("./EmojiRepository"));
39
41
 
40
42
  var _SiteEmojiResource = _interopRequireDefault(require("./media/SiteEmojiResource"));
41
43
 
44
+ var _analytics = require("../util/analytics");
45
+
42
46
  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); }; }
43
47
 
44
48
  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; } }
@@ -80,6 +84,14 @@ var EmojiResource = /*#__PURE__*/function (_AbstractResource) {
80
84
  var emojiResponses = [];
81
85
  _this.activeLoaders = config.providers.length;
82
86
  config.providers.forEach(function (provider, index) {
87
+ var providerType = _this.getProviderType(provider);
88
+
89
+ _analytics.ufoExperiences['emoji-resource-fetched'].getInstance(providerType).start();
90
+
91
+ _analytics.ufoExperiences['emoji-resource-fetched'].getInstance(providerType).addMetadata({
92
+ type: providerType
93
+ });
94
+
83
95
  var loader = new _EmojiLoader.default(provider);
84
96
  var emojis = loader.loadEmoji();
85
97
  emojis.then(function (emojiResponse) {
@@ -92,12 +104,22 @@ var EmojiResource = /*#__PURE__*/function (_AbstractResource) {
92
104
 
93
105
  _this.performRetries();
94
106
 
95
- _this.refreshLastFilter();
107
+ _this.refreshLastFilter(); // if not site emoji it would still resolve
108
+ // TODO: improve the logic in future
109
+
110
+
111
+ _analytics.ufoExperiences['emoji-resource-fetched'].getInstance(providerType).success();
96
112
  });
97
113
  }).catch(function (reason) {
98
114
  _this.activeLoaders--;
99
115
 
100
116
  _this.notifyError(reason);
117
+
118
+ _analytics.ufoExperiences['emoji-resource-fetched'].getInstance(providerType).failure({
119
+ metadata: {
120
+ reason: reason
121
+ }
122
+ });
101
123
  });
102
124
  });
103
125
 
@@ -113,6 +135,19 @@ var EmojiResource = /*#__PURE__*/function (_AbstractResource) {
113
135
  }
114
136
 
115
137
  (0, _createClass2.default)(EmojiResource, [{
138
+ key: "getProviderType",
139
+ value: function getProviderType(provider) {
140
+ if (provider.url.includes('/site')) {
141
+ return _types.ProviderTypes.SITE;
142
+ } else if (provider.url.includes('/standard')) {
143
+ return _types.ProviderTypes.STANDARD;
144
+ } else if (provider.url.includes('/atlassian')) {
145
+ return _types.ProviderTypes.ATLASSIAN;
146
+ }
147
+
148
+ return _types.ProviderTypes.UNKNOWN;
149
+ }
150
+ }, {
116
151
  key: "initEmojiRepository",
117
152
  value: function initEmojiRepository(emojiResponses) {
118
153
  var emojis = [];
@@ -41,6 +41,12 @@ var _EmojiPlaceholder = _interopRequireDefault(require("./EmojiPlaceholder"));
41
41
 
42
42
  var _EmojiContext = require("../../context/EmojiContext");
43
43
 
44
+ var _UfoErrorBoundary = require("./UfoErrorBoundary");
45
+
46
+ var _analytics = require("../../util/analytics");
47
+
48
+ var _constants = require("../../util/constants");
49
+
44
50
  var _excluded = ["placeholderSize"],
45
51
  _excluded2 = ["children", "placeholderSize"];
46
52
 
@@ -59,13 +65,23 @@ var CachingEmoji = function CachingEmoji(props) {
59
65
  // Optimisation to only render the class based CachingMediaEmoji if necessary
60
66
  // slight performance hit, which accumulates for a large number of emoji.
61
67
  var placeholderSize = props.placeholderSize,
62
- emojiProps = (0, _objectWithoutProperties2.default)(props, _excluded);
68
+ emojiProps = (0, _objectWithoutProperties2.default)(props, _excluded); // start emoji rendered experience, it may have already started earlier in ResourcedEmoji
63
69
 
64
- if ((0, _typeHelpers.isMediaEmoji)(props.emoji)) {
65
- return /*#__PURE__*/_react.default.createElement(CachingMediaEmoji, props);
66
- }
70
+ (0, _analytics.useSampledUFOComponentExperience)(_analytics.ufoExperiences['emoji-rendered'].getInstance(emojiProps.emoji.id || emojiProps.emoji.shortName), _constants.SAMPLING_RATE_EMOJI_RENDERED_EXP, {
71
+ source: 'caching-emoji'
72
+ });
73
+
74
+ var emojiNode = function emojiNode() {
75
+ if ((0, _typeHelpers.isMediaEmoji)(props.emoji)) {
76
+ return /*#__PURE__*/_react.default.createElement(CachingMediaEmoji, props);
77
+ }
67
78
 
68
- return /*#__PURE__*/_react.default.createElement(_Emoji.default, emojiProps);
79
+ return /*#__PURE__*/_react.default.createElement(_Emoji.default, emojiProps);
80
+ };
81
+
82
+ return /*#__PURE__*/_react.default.createElement(_UfoErrorBoundary.UfoErrorBoundary, {
83
+ experiences: [_analytics.ufoExperiences['emoji-rendered'].getInstance(props.emoji.id || props.emoji.shortName)]
84
+ }, emojiNode());
69
85
  };
70
86
  /**
71
87
  * Rendering a media emoji image from a cache for media emoji, with different
@@ -88,6 +104,11 @@ var CachingMediaEmoji = /*#__PURE__*/function (_PureComponent) {
88
104
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mounted", false);
89
105
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleLoadError", function (_emojiId, emoji) {
90
106
  var invalidImage = _this.state.invalidImage;
107
+ (0, _analytics.sampledUfoRenderedEmoji)(_emojiId).failure({
108
+ metadata: {
109
+ reason: 'load error'
110
+ }
111
+ });
91
112
 
92
113
  if (invalidImage || !emoji) {
93
114
  // do nothing, bad image
@@ -108,6 +129,7 @@ var CachingMediaEmoji = /*#__PURE__*/function (_PureComponent) {
108
129
  key: "componentDidMount",
109
130
  value: function componentDidMount() {
110
131
  this.mounted = true;
132
+ (0, _analytics.sampledUfoRenderedEmoji)(this.props.emoji).markFMP();
111
133
  }
112
134
  }, {
113
135
  key: "componentWillUnmount",
@@ -170,6 +192,12 @@ var CachingMediaEmoji = /*#__PURE__*/function (_PureComponent) {
170
192
  cachedEmoji: undefined,
171
193
  invalidImage: true
172
194
  });
195
+
196
+ (0, _analytics.sampledUfoRenderedEmoji)(emoji).failure({
197
+ metadata: {
198
+ reason: 'failed to load media emoji'
199
+ }
200
+ });
173
201
  }
174
202
  });
175
203
  return undefined;
@@ -29,6 +29,8 @@ var styles = _interopRequireWildcard(require("./styles"));
29
29
 
30
30
  var _DeleteButton = _interopRequireDefault(require("./DeleteButton"));
31
31
 
32
+ var _analytics = require("../../util/analytics");
33
+
32
34
  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); }
33
35
 
34
36
  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; }
@@ -215,6 +217,10 @@ var renderAsImage = function renderAsImage(props) {
215
217
 
216
218
  var onError = function onError(event) {
217
219
  handleImageError(props, event);
220
+ };
221
+
222
+ var onLoad = function onLoad() {
223
+ (0, _analytics.sampledUfoRenderedEmoji)(emoji).success();
218
224
  }; // Pass src attribute as key to force React to rerender img node since browser does not
219
225
  // change preview image until loaded
220
226
  // We currently have the following error: property 'loading' does not exist on type 'DetailedHTMLProps<ImgHTMLAttributes, HTMLImageElement>'
@@ -235,7 +241,8 @@ var renderAsImage = function renderAsImage(props) {
235
241
  style: {
236
242
  visibility: 'visible'
237
243
  },
238
- onError: onError
244
+ onError: onError,
245
+ onLoad: onLoad
239
246
  }, sizing));
240
247
 
241
248
  return /*#__PURE__*/_react.default.createElement("span", {
@@ -257,7 +264,7 @@ var renderAsImage = function renderAsImage(props) {
257
264
  };
258
265
 
259
266
  var Emoji = function Emoji(props) {
260
- var emoji = props.emoji;
267
+ var emoji = props.emoji; // TODO: We always prefer render as image as having accessibility issues with sprite representation
261
268
 
262
269
  if ((0, _typeHelpers.isSpriteRepresentation)(emoji.representation)) {
263
270
  return renderAsSprite(props);
@@ -35,6 +35,10 @@ var _EmojiPlaceholder = _interopRequireDefault(require("./EmojiPlaceholder"));
35
35
 
36
36
  var _LoadingEmojiComponent = _interopRequireDefault(require("./LoadingEmojiComponent"));
37
37
 
38
+ var _analytics = require("../../util/analytics");
39
+
40
+ var _UfoErrorBoundary = require("./UfoErrorBoundary");
41
+
38
42
  var _excluded = ["emojiProvider"];
39
43
 
40
44
  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); }; }
@@ -62,23 +66,33 @@ var ResourcedEmoji = /*#__PURE__*/function (_LoadingEmojiComponen) {
62
66
 
63
67
  var _super = _createSuper(ResourcedEmoji);
64
68
 
65
- function ResourcedEmoji() {
69
+ // state initialised with static component to prevent
70
+ // rerender when the module has already been loaded
71
+ function ResourcedEmoji(props) {
66
72
  var _this;
67
73
 
68
74
  (0, _classCallCheck2.default)(this, ResourcedEmoji);
69
-
70
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
71
- args[_key] = arguments[_key];
72
- }
73
-
74
- _this = _super.call.apply(_super, [this].concat(args));
75
+ _this = _super.call(this, props, {});
75
76
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
76
77
  asyncLoadedComponent: ResourcedEmoji.AsyncLoadedComponent
77
78
  });
79
+ (0, _analytics.sampledUfoRenderedEmoji)(props.emojiId).start({
80
+ samplingRate: _constants.SAMPLING_RATE_EMOJI_RENDERED_EXP_RESOURCEEMOJI
81
+ });
82
+
83
+ _analytics.ufoExperiences['emoji-rendered'].getInstance(props.emojiId.id || props.emojiId.shortName).addMetadata({
84
+ source: 'resourced-emoji'
85
+ });
86
+
78
87
  return _this;
79
88
  }
80
89
 
81
90
  (0, _createClass2.default)(ResourcedEmoji, [{
91
+ key: "componentWillUnmount",
92
+ value: function componentWillUnmount() {
93
+ (0, _analytics.sampledUfoRenderedEmoji)(this.props.emojiId).abort();
94
+ }
95
+ }, {
82
96
  key: "asyncLoadComponent",
83
97
  value: function asyncLoadComponent() {
84
98
  var _this2 = this;
@@ -108,9 +122,11 @@ var ResourcedEmoji = /*#__PURE__*/function (_LoadingEmojiComponen) {
108
122
  var _this$props2 = this.props,
109
123
  emojiProvider = _this$props2.emojiProvider,
110
124
  otherProps = (0, _objectWithoutProperties2.default)(_this$props2, _excluded);
111
- return /*#__PURE__*/_react.default.createElement(ResourcedEmojiComponent, (0, _extends2.default)({}, otherProps, {
125
+ return /*#__PURE__*/_react.default.createElement(_UfoErrorBoundary.UfoErrorBoundary, {
126
+ experiences: [_analytics.ufoExperiences['emoji-rendered'].getInstance(this.props.emojiId.id || this.props.emojiId.shortName)]
127
+ }, /*#__PURE__*/_react.default.createElement(ResourcedEmojiComponent, (0, _extends2.default)({}, otherProps, {
112
128
  emojiProvider: loadedEmojiProvider
113
- }));
129
+ })));
114
130
  }
115
131
  }]);
116
132
  return ResourcedEmoji;
@@ -35,6 +35,8 @@ var _EmojiPlaceholder = _interopRequireDefault(require("./EmojiPlaceholder"));
35
35
 
36
36
  var _EmojiContextProvider = require("../../context/EmojiContextProvider");
37
37
 
38
+ var _analytics = require("../../util/analytics");
39
+
38
40
  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); }
39
41
 
40
42
  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; }
@@ -79,7 +81,22 @@ var ResourcedEmojiComponent = /*#__PURE__*/function (_Component) {
79
81
  emoji: emoji,
80
82
  loaded: true
81
83
  });
84
+
85
+ if (!emoji) {
86
+ // emoji is undefined
87
+ (0, _analytics.sampledUfoRenderedEmoji)(emojiId).failure({
88
+ metadata: {
89
+ reason: 'failed to find'
90
+ }
91
+ });
92
+ }
82
93
  }
94
+ }).catch(function () {
95
+ (0, _analytics.sampledUfoRenderedEmoji)(emojiId).failure({
96
+ metadata: {
97
+ reason: 'failed to load'
98
+ }
99
+ });
83
100
  });
84
101
  } else {
85
102
  // loaded
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.UfoErrorBoundary = void 0;
9
+
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
+
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+
14
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
+
16
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
17
+
18
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
19
+
20
+ var _react = _interopRequireDefault(require("react"));
21
+
22
+ 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); }; }
23
+
24
+ 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; } }
25
+
26
+ var UfoErrorBoundary = /*#__PURE__*/function (_React$Component) {
27
+ (0, _inherits2.default)(UfoErrorBoundary, _React$Component);
28
+
29
+ var _super = _createSuper(UfoErrorBoundary);
30
+
31
+ function UfoErrorBoundary() {
32
+ (0, _classCallCheck2.default)(this, UfoErrorBoundary);
33
+ return _super.apply(this, arguments);
34
+ }
35
+
36
+ (0, _createClass2.default)(UfoErrorBoundary, [{
37
+ key: "componentDidCatch",
38
+ value: function componentDidCatch() {
39
+ this.props.experiences.forEach(function (e) {
40
+ return e.failure();
41
+ });
42
+ }
43
+ }, {
44
+ key: "render",
45
+ value: function render() {
46
+ return this.props.children;
47
+ }
48
+ }]);
49
+ return UfoErrorBoundary;
50
+ }(_react.default.Component);
51
+
52
+ exports.UfoErrorBoundary = UfoErrorBoundary;
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 = void 0;
6
+ exports.SearchSort = exports.ProviderTypes = void 0;
7
7
 
8
8
  /**
9
9
  * Minimum information to defined an emoji is the shortName.
@@ -41,4 +41,14 @@ exports.SearchSort = SearchSort;
41
41
  SearchSort[SearchSort["None"] = 0] = "None";
42
42
  SearchSort[SearchSort["Default"] = 1] = "Default";
43
43
  SearchSort[SearchSort["UsageFrequency"] = 2] = "UsageFrequency";
44
- })(SearchSort || (exports.SearchSort = SearchSort = {}));
44
+ })(SearchSort || (exports.SearchSort = SearchSort = {}));
45
+
46
+ var ProviderTypes;
47
+ exports.ProviderTypes = ProviderTypes;
48
+
49
+ (function (ProviderTypes) {
50
+ ProviderTypes["SITE"] = "SITE";
51
+ ProviderTypes["STANDARD"] = "STANDARD";
52
+ ProviderTypes["ATLASSIAN"] = "ATLASSIAN";
53
+ ProviderTypes["UNKNOWN"] = "UNKNOWN";
54
+ })(ProviderTypes || (exports.ProviderTypes = ProviderTypes = {}));
@@ -5,13 +5,17 @@ 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.typeaheadSelectedEvent = exports.typeaheadRenderedEvent = exports.typeaheadCancelledEvent = exports.toneSelectorOpenedEvent = exports.toneSelectorClosedEvent = exports.toneSelectedEvent = exports.selectedFileEvent = 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.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;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
12
12
  var _analyticsNext = require("@atlaskit/analytics-next");
13
13
 
14
- var _version = require("../version.json");
14
+ var _version = require("../../version.json");
15
+
16
+ var _ufo = require("@atlaskit/ufo");
17
+
18
+ var _samplingUfo = require("./samplingUfo");
15
19
 
16
20
  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; } } }; }
17
21
 
@@ -23,6 +27,34 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
23
27
 
24
28
  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; }
25
29
 
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;
26
58
  var createAndFireEventInElementsChannel = (0, _analyticsNext.createAndFireEvent)('fabric-elements');
27
59
  exports.createAndFireEventInElementsChannel = createAndFireEventInElementsChannel;
28
60
 
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "categoryClickedEvent", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _analytics.categoryClickedEvent;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "clearSampled", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _samplingUfo.clearSampled;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "closedPickerEvent", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _analytics.closedPickerEvent;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "createAndFireEventInElementsChannel", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _analytics.createAndFireEventInElementsChannel;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "deleteBeginEvent", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _analytics.deleteBeginEvent;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "deleteCancelEvent", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _analytics.deleteCancelEvent;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "deleteConfirmEvent", {
43
+ enumerable: true,
44
+ get: function get() {
45
+ return _analytics.deleteConfirmEvent;
46
+ }
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
+ Object.defineProperty(exports, "isExperienceSampled", {
61
+ enumerable: true,
62
+ get: function get() {
63
+ return _samplingUfo.isExperienceSampled;
64
+ }
65
+ });
66
+ Object.defineProperty(exports, "openedPickerEvent", {
67
+ enumerable: true,
68
+ get: function get() {
69
+ return _analytics.openedPickerEvent;
70
+ }
71
+ });
72
+ Object.defineProperty(exports, "pickerClickedEvent", {
73
+ enumerable: true,
74
+ get: function get() {
75
+ return _analytics.pickerClickedEvent;
76
+ }
77
+ });
78
+ Object.defineProperty(exports, "pickerSearchedEvent", {
79
+ enumerable: true,
80
+ get: function get() {
81
+ return _analytics.pickerSearchedEvent;
82
+ }
83
+ });
84
+ Object.defineProperty(exports, "recordSelectionFailedSli", {
85
+ enumerable: true,
86
+ get: function get() {
87
+ return _analytics.recordSelectionFailedSli;
88
+ }
89
+ });
90
+ Object.defineProperty(exports, "recordSelectionSucceededSli", {
91
+ enumerable: true,
92
+ get: function get() {
93
+ return _analytics.recordSelectionSucceededSli;
94
+ }
95
+ });
96
+ Object.defineProperty(exports, "sampledUfoRenderedEmoji", {
97
+ enumerable: true,
98
+ get: function get() {
99
+ return _analytics.sampledUfoRenderedEmoji;
100
+ }
101
+ });
102
+ Object.defineProperty(exports, "selectedFileEvent", {
103
+ enumerable: true,
104
+ get: function get() {
105
+ return _analytics.selectedFileEvent;
106
+ }
107
+ });
108
+ Object.defineProperty(exports, "toneSelectedEvent", {
109
+ enumerable: true,
110
+ get: function get() {
111
+ return _analytics.toneSelectedEvent;
112
+ }
113
+ });
114
+ Object.defineProperty(exports, "toneSelectorClosedEvent", {
115
+ enumerable: true,
116
+ get: function get() {
117
+ return _analytics.toneSelectorClosedEvent;
118
+ }
119
+ });
120
+ Object.defineProperty(exports, "toneSelectorOpenedEvent", {
121
+ enumerable: true,
122
+ get: function get() {
123
+ return _analytics.toneSelectorOpenedEvent;
124
+ }
125
+ });
126
+ Object.defineProperty(exports, "typeaheadCancelledEvent", {
127
+ enumerable: true,
128
+ get: function get() {
129
+ return _analytics.typeaheadCancelledEvent;
130
+ }
131
+ });
132
+ Object.defineProperty(exports, "typeaheadRenderedEvent", {
133
+ enumerable: true,
134
+ get: function get() {
135
+ return _analytics.typeaheadRenderedEvent;
136
+ }
137
+ });
138
+ Object.defineProperty(exports, "typeaheadSelectedEvent", {
139
+ enumerable: true,
140
+ get: function get() {
141
+ return _analytics.typeaheadSelectedEvent;
142
+ }
143
+ });
144
+ Object.defineProperty(exports, "ufoExperiences", {
145
+ enumerable: true,
146
+ get: function get() {
147
+ return _analytics.ufoExperiences;
148
+ }
149
+ });
150
+ Object.defineProperty(exports, "ufoExperiencesSampled", {
151
+ enumerable: true,
152
+ get: function get() {
153
+ return _samplingUfo.ufoExperiencesSampled;
154
+ }
155
+ });
156
+ Object.defineProperty(exports, "uploadBeginButton", {
157
+ enumerable: true,
158
+ get: function get() {
159
+ return _analytics.uploadBeginButton;
160
+ }
161
+ });
162
+ Object.defineProperty(exports, "uploadCancelButton", {
163
+ enumerable: true,
164
+ get: function get() {
165
+ return _analytics.uploadCancelButton;
166
+ }
167
+ });
168
+ Object.defineProperty(exports, "uploadConfirmButton", {
169
+ enumerable: true,
170
+ get: function get() {
171
+ return _analytics.uploadConfirmButton;
172
+ }
173
+ });
174
+ Object.defineProperty(exports, "uploadFailedEvent", {
175
+ enumerable: true,
176
+ get: function get() {
177
+ return _analytics.uploadFailedEvent;
178
+ }
179
+ });
180
+ Object.defineProperty(exports, "uploadSucceededEvent", {
181
+ enumerable: true,
182
+ get: function get() {
183
+ return _analytics.uploadSucceededEvent;
184
+ }
185
+ });
186
+ Object.defineProperty(exports, "useSampledUFOComponentExperience", {
187
+ enumerable: true,
188
+ get: function get() {
189
+ return _useSampledUFOComponentExperience.useSampledUFOComponentExperience;
190
+ }
191
+ });
192
+ Object.defineProperty(exports, "withSampling", {
193
+ enumerable: true,
194
+ get: function get() {
195
+ return _samplingUfo.withSampling;
196
+ }
197
+ });
198
+
199
+ var _samplingUfo = require("./samplingUfo");
200
+
201
+ var _analytics = require("./analytics");
202
+
203
+ var _useSampledUFOComponentExperience = require("./useSampledUFOComponentExperience");