@atlaskit/emoji 64.3.0 → 64.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/cjs/components/common/RecordSelectionDefault.js +8 -2
- package/dist/cjs/components/common/UploadEmoji.js +8 -0
- package/dist/cjs/components/picker/EmojiPicker.js +13 -2
- package/dist/cjs/components/picker/EmojiPickerComponent.js +27 -2
- package/dist/cjs/components/typeahead/EmojiTypeAheadComponent.js +17 -0
- package/dist/cjs/components/uploader/EmojiUploadComponent.js +13 -0
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/util/analytics/analytics.js +11 -41
- package/dist/cjs/util/analytics/index.js +16 -14
- package/dist/cjs/util/analytics/ufoExperiences.js +46 -0
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/components/common/RecordSelectionDefault.js +9 -2
- package/dist/es2019/components/common/UploadEmoji.js +4 -0
- package/dist/es2019/components/picker/EmojiPicker.js +9 -2
- package/dist/es2019/components/picker/EmojiPickerComponent.js +22 -3
- package/dist/es2019/components/typeahead/EmojiTypeAheadComponent.js +13 -1
- package/dist/es2019/components/uploader/EmojiUploadComponent.js +9 -0
- package/dist/es2019/index.js +2 -2
- package/dist/es2019/util/analytics/analytics.js +16 -37
- package/dist/es2019/util/analytics/index.js +2 -1
- package/dist/es2019/util/analytics/ufoExperiences.js +34 -0
- package/dist/es2019/version.json +1 -1
- package/dist/esm/components/common/RecordSelectionDefault.js +6 -3
- package/dist/esm/components/common/UploadEmoji.js +4 -0
- package/dist/esm/components/picker/EmojiPicker.js +8 -2
- package/dist/esm/components/picker/EmojiPickerComponent.js +23 -3
- package/dist/esm/components/typeahead/EmojiTypeAheadComponent.js +13 -1
- package/dist/esm/components/uploader/EmojiUploadComponent.js +10 -0
- package/dist/esm/index.js +2 -2
- package/dist/esm/util/analytics/analytics.js +8 -33
- package/dist/esm/util/analytics/index.js +2 -1
- package/dist/esm/util/analytics/ufoExperiences.js +34 -0
- package/dist/esm/version.json +1 -1
- package/dist/types/components/uploader/EmojiUploadComponent.d.ts +1 -0
- package/dist/types/index.d.ts +2 -2
- package/dist/types/util/analytics/analytics.d.ts +3 -7
- package/dist/types/util/analytics/index.d.ts +3 -2
- package/dist/types/util/analytics/ufoExperiences.d.ts +12 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -19,10 +19,16 @@ var createRecordSelectionDefault = function createRecordSelectionDefault(provide
|
|
|
19
19
|
return function (emojiId, emoji, event) {
|
|
20
20
|
try {
|
|
21
21
|
if (provider.recordSelection && emoji) {
|
|
22
|
+
_analytics.ufoExperiences['emoji-selection-recorded'].start();
|
|
23
|
+
|
|
22
24
|
provider.recordSelection(emoji).then(function () {
|
|
23
|
-
|
|
25
|
+
fireAnalytics && fireAnalytics(_analytics.recordSucceeded);
|
|
26
|
+
|
|
27
|
+
_analytics.ufoExperiences['emoji-selection-recorded'].success();
|
|
24
28
|
}).catch(function () {
|
|
25
|
-
|
|
29
|
+
fireAnalytics && fireAnalytics(_analytics.recordFailed);
|
|
30
|
+
|
|
31
|
+
_analytics.ufoExperiences['emoji-selection-recorded'].failure();
|
|
26
32
|
});
|
|
27
33
|
}
|
|
28
34
|
} finally {
|
|
@@ -11,16 +11,22 @@ var _analytics = require("../../util/analytics");
|
|
|
11
11
|
|
|
12
12
|
var _i18n = require("../i18n");
|
|
13
13
|
|
|
14
|
+
var _ufoExperiences = require("../../util/analytics/ufoExperiences");
|
|
15
|
+
|
|
14
16
|
var uploadEmoji = function uploadEmoji(upload, emojiProvider, errorSetter, onSuccess, fireAnalytics) {
|
|
15
17
|
var startTime = Date.now();
|
|
16
18
|
errorSetter(undefined);
|
|
17
19
|
|
|
18
20
|
if ((0, _EmojiResource.supportsUploadFeature)(emojiProvider)) {
|
|
21
|
+
_ufoExperiences.ufoExperiences['emoji-uploaded'].start();
|
|
22
|
+
|
|
19
23
|
emojiProvider.uploadCustomEmoji(upload).then(function (emojiDescription) {
|
|
20
24
|
fireAnalytics((0, _analytics.uploadSucceededEvent)({
|
|
21
25
|
duration: Date.now() - startTime
|
|
22
26
|
}));
|
|
23
27
|
onSuccess(emojiDescription);
|
|
28
|
+
|
|
29
|
+
_ufoExperiences.ufoExperiences['emoji-uploaded'].success();
|
|
24
30
|
}).catch(function (err) {
|
|
25
31
|
errorSetter(_i18n.messages.emojiUploadFailed); // eslint-disable-next-line no-console
|
|
26
32
|
|
|
@@ -29,6 +35,8 @@ var uploadEmoji = function uploadEmoji(upload, emojiProvider, errorSetter, onSuc
|
|
|
29
35
|
duration: Date.now() - startTime,
|
|
30
36
|
reason: _i18n.messages.emojiUploadFailed.defaultMessage
|
|
31
37
|
}));
|
|
38
|
+
|
|
39
|
+
_ufoExperiences.ufoExperiences['emoji-uploaded'].failure();
|
|
32
40
|
});
|
|
33
41
|
}
|
|
34
42
|
};
|
|
@@ -31,12 +31,16 @@ var _core = require("@emotion/core");
|
|
|
31
31
|
|
|
32
32
|
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
33
33
|
|
|
34
|
+
var _analytics = require("../../util/analytics");
|
|
35
|
+
|
|
34
36
|
var _LoadingEmojiComponent = _interopRequireDefault(require("../common/LoadingEmojiComponent"));
|
|
35
37
|
|
|
36
38
|
var _EmojiPickerVirtualItems = require("./EmojiPickerVirtualItems");
|
|
37
39
|
|
|
38
40
|
var _styles = require("./styles");
|
|
39
41
|
|
|
42
|
+
var _UfoErrorBoundary = require("../common/UfoErrorBoundary");
|
|
43
|
+
|
|
40
44
|
var _excluded = ["emojiProvider"];
|
|
41
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); }; }
|
|
@@ -74,6 +78,9 @@ var EmojiPickerInternal = /*#__PURE__*/function (_LoadingEmojiComponen) {
|
|
|
74
78
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "state", {
|
|
75
79
|
asyncLoadedComponent: EmojiPickerInternal.AsyncLoadedComponent
|
|
76
80
|
});
|
|
81
|
+
|
|
82
|
+
_analytics.ufoExperiences['emoji-picker-opened'].start();
|
|
83
|
+
|
|
77
84
|
return _this;
|
|
78
85
|
}
|
|
79
86
|
|
|
@@ -101,6 +108,8 @@ var EmojiPickerInternal = /*#__PURE__*/function (_LoadingEmojiComponen) {
|
|
|
101
108
|
}
|
|
102
109
|
};
|
|
103
110
|
|
|
111
|
+
_analytics.ufoExperiences['emoji-picker-opened'].markFMP();
|
|
112
|
+
|
|
104
113
|
return (0, _core.jsx)("div", {
|
|
105
114
|
css: _styles.emojiPicker,
|
|
106
115
|
ref: handlePickerRef
|
|
@@ -112,9 +121,11 @@ var EmojiPickerInternal = /*#__PURE__*/function (_LoadingEmojiComponen) {
|
|
|
112
121
|
var _this$props = this.props,
|
|
113
122
|
emojiProvider = _this$props.emojiProvider,
|
|
114
123
|
otherProps = (0, _objectWithoutProperties2.default)(_this$props, _excluded);
|
|
115
|
-
return (0, _core.jsx)(
|
|
124
|
+
return (0, _core.jsx)(_UfoErrorBoundary.UfoErrorBoundary, {
|
|
125
|
+
experiences: [_analytics.ufoExperiences['emoji-picker-opened']]
|
|
126
|
+
}, (0, _core.jsx)(EmojiPickerComponent, (0, _extends2.default)({
|
|
116
127
|
emojiProvider: loadedEmojiProvider
|
|
117
|
-
}, otherProps));
|
|
128
|
+
}, otherProps)));
|
|
118
129
|
}
|
|
119
130
|
}]);
|
|
120
131
|
return EmojiPickerInternal;
|
|
@@ -146,9 +146,20 @@ var EmojiPickerComponent = /*#__PURE__*/function (_PureComponent) {
|
|
|
146
146
|
});
|
|
147
147
|
});
|
|
148
148
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onSearch", function (query) {
|
|
149
|
-
|
|
149
|
+
var options = {
|
|
150
150
|
skinTone: _this.state.selectedTone
|
|
151
|
-
}
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
if (query !== _this.state.query) {
|
|
154
|
+
_analytics.ufoExperiences['emoji-searched'].start();
|
|
155
|
+
|
|
156
|
+
_analytics.ufoExperiences['emoji-searched'].addMetadata({
|
|
157
|
+
queryLength: query.length,
|
|
158
|
+
source: 'picker'
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
_this.updateEmojis(query, options);
|
|
152
163
|
});
|
|
153
164
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onSearchResult", function (searchResults) {
|
|
154
165
|
var frequentlyUsedEmoji = _this.state.frequentlyUsedEmojis || [];
|
|
@@ -161,6 +172,12 @@ var EmojiPickerComponent = /*#__PURE__*/function (_PureComponent) {
|
|
|
161
172
|
queryLength: searchQuery.length,
|
|
162
173
|
numMatches: emojiToRender.length
|
|
163
174
|
}));
|
|
175
|
+
|
|
176
|
+
_analytics.ufoExperiences['emoji-searched'].success({
|
|
177
|
+
metadata: {
|
|
178
|
+
emojisLength: emojiToRender.length
|
|
179
|
+
}
|
|
180
|
+
});
|
|
164
181
|
}
|
|
165
182
|
|
|
166
183
|
_this.setStateAfterEmojiChange(searchQuery, emojiToRender, searchResults.emojis, frequentlyUsedEmoji);
|
|
@@ -385,6 +402,8 @@ var EmojiPickerComponent = /*#__PURE__*/function (_PureComponent) {
|
|
|
385
402
|
value: function componentDidMount() {
|
|
386
403
|
var _this2 = this;
|
|
387
404
|
|
|
405
|
+
_analytics.ufoExperiences['emoji-picker-opened'].success();
|
|
406
|
+
|
|
388
407
|
var _this$props = this.props,
|
|
389
408
|
emojiProvider = _this$props.emojiProvider,
|
|
390
409
|
hideToneSelector = _this$props.hideToneSelector;
|
|
@@ -419,6 +438,12 @@ var EmojiPickerComponent = /*#__PURE__*/function (_PureComponent) {
|
|
|
419
438
|
this.fireAnalytics((0, _analytics.closedPickerEvent)({
|
|
420
439
|
duration: this.calculateElapsedTime()
|
|
421
440
|
}));
|
|
441
|
+
|
|
442
|
+
_analytics.ufoExperiences['emoji-picker-opened'].abort();
|
|
443
|
+
|
|
444
|
+
_analytics.ufoExperiences['emoji-searched'].abort();
|
|
445
|
+
|
|
446
|
+
_analytics.ufoExperiences['emoji-selection-recorded'].abort();
|
|
422
447
|
}
|
|
423
448
|
}, {
|
|
424
449
|
key: "UNSAFE_componentWillReceiveProps",
|
|
@@ -139,6 +139,12 @@ var EmojiTypeAheadComponent = /*#__PURE__*/function (_PureComponent) {
|
|
|
139
139
|
|
|
140
140
|
_this.fireAnalyticsEvent((0, _analytics.typeaheadRenderedEvent)(Date.now() - _this.renderStartTime, query, emojis));
|
|
141
141
|
|
|
142
|
+
_analytics.ufoExperiences['emoji-searched'].success({
|
|
143
|
+
metadata: {
|
|
144
|
+
emojisLength: emojis.length
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
|
|
142
148
|
(0, _logger.default)('emoji-typeahead.applyPropChanges', emojis.length, wasVisible, visible);
|
|
143
149
|
|
|
144
150
|
_this.setState({
|
|
@@ -227,6 +233,10 @@ var EmojiTypeAheadComponent = /*#__PURE__*/function (_PureComponent) {
|
|
|
227
233
|
this.fireAnalyticsEvent((0, _analytics.typeaheadCancelledEvent)(Date.now() - this.openTime, query, emojis));
|
|
228
234
|
}
|
|
229
235
|
|
|
236
|
+
_analytics.ufoExperiences['emoji-searched'].abort();
|
|
237
|
+
|
|
238
|
+
_analytics.ufoExperiences['emoji-selection-recorded'].abort();
|
|
239
|
+
|
|
230
240
|
this.sessionId = (0, _uuid.default)();
|
|
231
241
|
this.selected = false;
|
|
232
242
|
}
|
|
@@ -272,6 +282,13 @@ var EmojiTypeAheadComponent = /*#__PURE__*/function (_PureComponent) {
|
|
|
272
282
|
options.sort = _types.SearchSort.UsageFrequency;
|
|
273
283
|
}
|
|
274
284
|
|
|
285
|
+
_analytics.ufoExperiences['emoji-searched'].start();
|
|
286
|
+
|
|
287
|
+
_analytics.ufoExperiences['emoji-searched'].addMetadata({
|
|
288
|
+
queryLength: (query === null || query === void 0 ? void 0 : query.length) || 0,
|
|
289
|
+
source: 'typeahead'
|
|
290
|
+
});
|
|
291
|
+
|
|
275
292
|
this.renderStartTime = Date.now();
|
|
276
293
|
emojiProvider.filter(query, options);
|
|
277
294
|
}
|
|
@@ -37,6 +37,8 @@ var _analytics = require("../../util/analytics");
|
|
|
37
37
|
|
|
38
38
|
var _styles = require("./styles");
|
|
39
39
|
|
|
40
|
+
var _ufoExperiences = require("../../util/analytics/ufoExperiences");
|
|
41
|
+
|
|
40
42
|
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); }; }
|
|
41
43
|
|
|
42
44
|
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; } }
|
|
@@ -54,6 +56,12 @@ var EmojiUploadComponent = /*#__PURE__*/function (_PureComponent) {
|
|
|
54
56
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onUploadEmoji", function (upload, retry) {
|
|
55
57
|
var emojiProvider = _this.props.emojiProvider;
|
|
56
58
|
|
|
59
|
+
_ufoExperiences.ufoExperiences['emoji-uploaded'].start();
|
|
60
|
+
|
|
61
|
+
_ufoExperiences.ufoExperiences['emoji-uploaded'].addMetadata({
|
|
62
|
+
retry: retry
|
|
63
|
+
});
|
|
64
|
+
|
|
57
65
|
_this.fireAnalytics((0, _analytics.uploadConfirmButton)({
|
|
58
66
|
retry: retry
|
|
59
67
|
}));
|
|
@@ -109,6 +117,11 @@ var EmojiUploadComponent = /*#__PURE__*/function (_PureComponent) {
|
|
|
109
117
|
}
|
|
110
118
|
|
|
111
119
|
(0, _createClass2.default)(EmojiUploadComponent, [{
|
|
120
|
+
key: "componentWillUnmount",
|
|
121
|
+
value: function componentWillUnmount() {
|
|
122
|
+
_ufoExperiences.ufoExperiences['emoji-uploaded'].abort();
|
|
123
|
+
}
|
|
124
|
+
}, {
|
|
112
125
|
key: "render",
|
|
113
126
|
value: function render() {
|
|
114
127
|
var uploadErrorMessage = this.state.uploadErrorMessage;
|
package/dist/cjs/index.js
CHANGED
|
@@ -168,6 +168,12 @@ Object.defineProperty(exports, "toOptionalEmojiId", {
|
|
|
168
168
|
return _typeHelpers.toOptionalEmojiId;
|
|
169
169
|
}
|
|
170
170
|
});
|
|
171
|
+
Object.defineProperty(exports, "ufoExperiences", {
|
|
172
|
+
enumerable: true,
|
|
173
|
+
get: function get() {
|
|
174
|
+
return _analytics.ufoExperiences;
|
|
175
|
+
}
|
|
176
|
+
});
|
|
171
177
|
|
|
172
178
|
var _utilServiceSupport = require("@atlaskit/util-service-support");
|
|
173
179
|
|
|
@@ -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.
|
|
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
|
|
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.
|
|
49
|
+
exports.recordSucceeded = recordSucceeded;
|
|
82
50
|
|
|
83
|
-
var
|
|
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.
|
|
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')(
|
|
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')(
|
|
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
|
|
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
|
|
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,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ufoExperiences = exports.sampledUfoRenderedEmoji = void 0;
|
|
7
|
+
|
|
8
|
+
var _ufo = require("@atlaskit/ufo");
|
|
9
|
+
|
|
10
|
+
var _samplingUfo = require("./samplingUfo");
|
|
11
|
+
|
|
12
|
+
var createRenderExperience = function createRenderExperience(componentName) {
|
|
13
|
+
return {
|
|
14
|
+
platform: {
|
|
15
|
+
component: componentName
|
|
16
|
+
},
|
|
17
|
+
type: _ufo.ExperienceTypes.Load,
|
|
18
|
+
performanceType: _ufo.ExperiencePerformanceTypes.PageSegmentLoad
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
var createInlineExperience = function createInlineExperience(componentName) {
|
|
23
|
+
return {
|
|
24
|
+
platform: {
|
|
25
|
+
component: componentName
|
|
26
|
+
},
|
|
27
|
+
type: _ufo.ExperienceTypes.Experience,
|
|
28
|
+
performanceType: _ufo.ExperiencePerformanceTypes.InlineResult
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
var ufoExperiences = {
|
|
33
|
+
'emoji-rendered': new _ufo.ConcurrentExperience('emoji-rendered', createRenderExperience('emoji')),
|
|
34
|
+
'emoji-resource-fetched': new _ufo.ConcurrentExperience('emoji-resource-fetched', createRenderExperience('emoji-provider')),
|
|
35
|
+
'emoji-picker-opened': new _ufo.UFOExperience('emoji-picker-opened', createRenderExperience('emoji-picker')),
|
|
36
|
+
'emoji-selection-recorded': new _ufo.UFOExperience('emoji-selection-recorded', createInlineExperience('emoji-picker')),
|
|
37
|
+
'emoji-uploaded': new _ufo.UFOExperience('emoji-uploaded', createInlineExperience('emoji-picker')),
|
|
38
|
+
'emoji-searched': new _ufo.UFOExperience('emoji-searched', createInlineExperience('emoji-picker'))
|
|
39
|
+
};
|
|
40
|
+
exports.ufoExperiences = ufoExperiences;
|
|
41
|
+
|
|
42
|
+
var sampledUfoRenderedEmoji = function sampledUfoRenderedEmoji(emojiId) {
|
|
43
|
+
return (0, _samplingUfo.withSampling)(ufoExperiences['emoji-rendered'].getInstance(emojiId.id || emojiId.shortName));
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
exports.sampledUfoRenderedEmoji = sampledUfoRenderedEmoji;
|
package/dist/cjs/version.json
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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
|
-
|
|
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,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(
|
|
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
|
}
|
|
@@ -18,7 +18,7 @@ import { createRecordSelectionDefault } from '../common/RecordSelectionDefault';
|
|
|
18
18
|
import CategorySelector from './CategorySelector';
|
|
19
19
|
import EmojiPickerFooter from './EmojiPickerFooter';
|
|
20
20
|
import EmojiPickerList from './EmojiPickerList';
|
|
21
|
-
import { createAndFireEventInElementsChannel, categoryClickedEvent, closedPickerEvent, deleteBeginEvent, deleteCancelEvent, deleteConfirmEvent, openedPickerEvent, pickerClickedEvent, pickerSearchedEvent, selectedFileEvent, uploadBeginButton, uploadCancelButton, uploadConfirmButton, toneSelectorClosedEvent } from '../../util/analytics';
|
|
21
|
+
import { createAndFireEventInElementsChannel, categoryClickedEvent, closedPickerEvent, deleteBeginEvent, deleteCancelEvent, deleteConfirmEvent, openedPickerEvent, pickerClickedEvent, pickerSearchedEvent, selectedFileEvent, uploadBeginButton, uploadCancelButton, uploadConfirmButton, toneSelectorClosedEvent, ufoExperiences } from '../../util/analytics';
|
|
22
22
|
import { emojiPicker } from './styles';
|
|
23
23
|
const FREQUENTLY_USED_MAX = 16;
|
|
24
24
|
export default class EmojiPickerComponent extends PureComponent {
|
|
@@ -106,9 +106,19 @@ export default class EmojiPickerComponent extends PureComponent {
|
|
|
106
106
|
});
|
|
107
107
|
|
|
108
108
|
_defineProperty(this, "onSearch", query => {
|
|
109
|
-
|
|
109
|
+
const options = {
|
|
110
110
|
skinTone: this.state.selectedTone
|
|
111
|
-
}
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
if (query !== this.state.query) {
|
|
114
|
+
ufoExperiences['emoji-searched'].start();
|
|
115
|
+
ufoExperiences['emoji-searched'].addMetadata({
|
|
116
|
+
queryLength: query.length,
|
|
117
|
+
source: 'picker'
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
this.updateEmojis(query, options);
|
|
112
122
|
});
|
|
113
123
|
|
|
114
124
|
_defineProperty(this, "onSearchResult", searchResults => {
|
|
@@ -121,6 +131,11 @@ export default class EmojiPickerComponent extends PureComponent {
|
|
|
121
131
|
queryLength: searchQuery.length,
|
|
122
132
|
numMatches: emojiToRender.length
|
|
123
133
|
}));
|
|
134
|
+
ufoExperiences['emoji-searched'].success({
|
|
135
|
+
metadata: {
|
|
136
|
+
emojisLength: emojiToRender.length
|
|
137
|
+
}
|
|
138
|
+
});
|
|
124
139
|
}
|
|
125
140
|
|
|
126
141
|
this.setStateAfterEmojiChange(searchQuery, emojiToRender, searchResults.emojis, frequentlyUsedEmoji);
|
|
@@ -353,6 +368,7 @@ export default class EmojiPickerComponent extends PureComponent {
|
|
|
353
368
|
}
|
|
354
369
|
|
|
355
370
|
componentDidMount() {
|
|
371
|
+
ufoExperiences['emoji-picker-opened'].success();
|
|
356
372
|
const {
|
|
357
373
|
emojiProvider,
|
|
358
374
|
hideToneSelector
|
|
@@ -387,6 +403,9 @@ export default class EmojiPickerComponent extends PureComponent {
|
|
|
387
403
|
this.fireAnalytics(closedPickerEvent({
|
|
388
404
|
duration: this.calculateElapsedTime()
|
|
389
405
|
}));
|
|
406
|
+
ufoExperiences['emoji-picker-opened'].abort();
|
|
407
|
+
ufoExperiences['emoji-searched'].abort();
|
|
408
|
+
ufoExperiences['emoji-selection-recorded'].abort();
|
|
390
409
|
}
|
|
391
410
|
|
|
392
411
|
UNSAFE_componentWillReceiveProps(nextProps) {
|