@atlaskit/emoji 67.8.8 → 67.8.9
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 +9 -0
- package/dist/cjs/components/common/EmojiDeletePreview.js +18 -4
- package/dist/cjs/components/common/LoadingEmojiComponent.js +13 -1
- package/dist/cjs/components/picker/EmojiPickerComponent.js +32 -3
- package/dist/cjs/components/picker/EmojiPickerList.js +345 -10
- package/dist/cjs/components/picker/utils.js +7 -1
- package/dist/cjs/components/typeahead/EmojiTypeAheadComponent.js +28 -8
- package/dist/cjs/components/typeahead/EmojiTypeAheadList.js +40 -16
- package/dist/cjs/util/analytics/analytics.js +1 -1
- package/dist/es2019/components/common/EmojiDeletePreview.js +16 -4
- package/dist/es2019/components/common/LoadingEmojiComponent.js +11 -1
- package/dist/es2019/components/picker/EmojiPickerComponent.js +32 -3
- package/dist/es2019/components/picker/EmojiPickerList.js +312 -4
- package/dist/es2019/components/picker/utils.js +6 -0
- package/dist/es2019/components/typeahead/EmojiTypeAheadComponent.js +26 -8
- package/dist/es2019/components/typeahead/EmojiTypeAheadList.js +43 -20
- package/dist/es2019/util/analytics/analytics.js +1 -1
- package/dist/esm/components/common/EmojiDeletePreview.js +18 -4
- package/dist/esm/components/common/LoadingEmojiComponent.js +13 -1
- package/dist/esm/components/picker/EmojiPickerComponent.js +32 -3
- package/dist/esm/components/picker/EmojiPickerList.js +342 -11
- package/dist/esm/components/picker/utils.js +6 -0
- package/dist/esm/components/typeahead/EmojiTypeAheadComponent.js +28 -8
- package/dist/esm/components/typeahead/EmojiTypeAheadList.js +40 -16
- package/dist/esm/util/analytics/analytics.js +1 -1
- package/dist/types/components/common/LoadingEmojiComponent.d.ts +1 -0
- package/dist/types/components/picker/EmojiPickerList.d.ts +10 -2
- package/dist/types/components/picker/utils.d.ts +1 -0
- package/dist/types/components/typeahead/EmojiTypeAheadComponent.d.ts +1 -0
- package/dist/types/components/typeahead/EmojiTypeAheadList.d.ts +1 -1
- package/dist/types-ts4.5/components/common/LoadingEmojiComponent.d.ts +1 -0
- package/dist/types-ts4.5/components/picker/EmojiPickerList.d.ts +10 -2
- package/dist/types-ts4.5/components/picker/utils.d.ts +1 -0
- package/dist/types-ts4.5/components/typeahead/EmojiTypeAheadComponent.d.ts +1 -0
- package/dist/types-ts4.5/components/typeahead/EmojiTypeAheadList.d.ts +1 -1
- package/package.json +6 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
# @atlaskit/emoji
|
|
2
2
|
|
|
3
|
+
## 67.8.9
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#154815](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/154815)
|
|
8
|
+
[`64d0333dd6b4b`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/64d0333dd6b4b) -
|
|
9
|
+
ED-24131 Refactors internal EmojiPickerList to a functional component and remediates usages of
|
|
10
|
+
UNSAFE lifecycle methods in elements/emoji
|
|
11
|
+
|
|
3
12
|
## 67.8.8
|
|
4
13
|
|
|
5
14
|
### Patch Changes
|
|
@@ -25,6 +25,7 @@ var _EmojiErrorMessage = _interopRequireWildcard(require("./EmojiErrorMessage"))
|
|
|
25
25
|
var _RetryableButton = _interopRequireDefault(require("./RetryableButton"));
|
|
26
26
|
var _styles = require("./styles");
|
|
27
27
|
var _visuallyHidden = _interopRequireDefault(require("@atlaskit/visually-hidden"));
|
|
28
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
28
29
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
29
30
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
30
31
|
function _createSuper(t) { var r = _isNativeReflectConstruct(); return function () { var e, o = (0, _getPrototypeOf2.default)(t); if (r) { var s = (0, _getPrototypeOf2.default)(this).constructor; e = Reflect.construct(o, arguments, s); } else e = o.apply(this, arguments); return (0, _possibleConstructorReturn2.default)(this, e); }; }
|
|
@@ -74,10 +75,23 @@ var EmojiDeletePreview = /*#__PURE__*/function (_Component) {
|
|
|
74
75
|
(0, _createClass2.default)(EmojiDeletePreview, [{
|
|
75
76
|
key: "UNSAFE_componentWillUpdate",
|
|
76
77
|
value: function UNSAFE_componentWillUpdate(nextProps) {
|
|
77
|
-
if (
|
|
78
|
-
this.
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
if (!(0, _platformFeatureFlags.fg)('platform_editor_react18_elements_emoji')) {
|
|
79
|
+
if (nextProps.emoji.id !== this.props.emoji.id) {
|
|
80
|
+
this.setState({
|
|
81
|
+
error: false
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}, {
|
|
87
|
+
key: "componentDidUpdate",
|
|
88
|
+
value: function componentDidUpdate(prevProps) {
|
|
89
|
+
if ((0, _platformFeatureFlags.fg)('platform_editor_react18_elements_emoji')) {
|
|
90
|
+
if (prevProps.emoji.id !== this.props.emoji.id) {
|
|
91
|
+
this.setState({
|
|
92
|
+
error: false
|
|
93
|
+
});
|
|
94
|
+
}
|
|
81
95
|
}
|
|
82
96
|
}
|
|
83
97
|
}, {
|
|
@@ -13,6 +13,7 @@ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime
|
|
|
13
13
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
14
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
15
|
var _react = require("react");
|
|
16
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
16
17
|
function _createSuper(t) { var r = _isNativeReflectConstruct(); return function () { var e, o = (0, _getPrototypeOf2.default)(t); if (r) { var s = (0, _getPrototypeOf2.default)(this).constructor; e = Reflect.construct(o, arguments, s); } else e = o.apply(this, arguments); return (0, _possibleConstructorReturn2.default)(this, e); }; }
|
|
17
18
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
18
19
|
/**
|
|
@@ -52,7 +53,18 @@ var LoadingEmojiComponent = exports.default = /*#__PURE__*/function (_Component)
|
|
|
52
53
|
}, {
|
|
53
54
|
key: "UNSAFE_componentWillReceiveProps",
|
|
54
55
|
value: function UNSAFE_componentWillReceiveProps(nextProps) {
|
|
55
|
-
|
|
56
|
+
if (!(0, _platformFeatureFlags.fg)('platform_editor_react18_elements_emoji')) {
|
|
57
|
+
this.loadEmojiProvider(nextProps.emojiProvider);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}, {
|
|
61
|
+
key: "componentDidUpdate",
|
|
62
|
+
value: function componentDidUpdate(prevProps) {
|
|
63
|
+
if ((0, _platformFeatureFlags.fg)('platform_editor_react18_elements_emoji')) {
|
|
64
|
+
if (this.props !== prevProps) {
|
|
65
|
+
this.loadEmojiProvider(this.props.emojiProvider);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
56
68
|
}
|
|
57
69
|
}, {
|
|
58
70
|
key: "componentWillUnmount",
|
|
@@ -22,12 +22,13 @@ var _UploadEmoji = require("../common/UploadEmoji");
|
|
|
22
22
|
var _RecordSelectionDefault = require("../common/RecordSelectionDefault");
|
|
23
23
|
var _CategorySelector = _interopRequireDefault(require("./CategorySelector"));
|
|
24
24
|
var _EmojiPickerFooter = _interopRequireDefault(require("./EmojiPickerFooter"));
|
|
25
|
-
var _EmojiPickerList =
|
|
25
|
+
var _EmojiPickerList = require("./EmojiPickerList");
|
|
26
26
|
var _analytics = require("../../util/analytics");
|
|
27
27
|
var _styles = require("./styles");
|
|
28
28
|
var _useEmoji2 = require("../../hooks/useEmoji");
|
|
29
29
|
var _useIsMounted = require("../../hooks/useIsMounted");
|
|
30
30
|
var _i18n = require("../i18n");
|
|
31
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
31
32
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
32
33
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /**
|
|
33
34
|
* @jsxRuntime classic
|
|
@@ -103,7 +104,7 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
103
104
|
toneEmoji = _useState28[0],
|
|
104
105
|
setToneEmoji = _useState28[1];
|
|
105
106
|
var emojiPickerList = (0, _react.useMemo)(function () {
|
|
106
|
-
return /*#__PURE__*/(0, _react.createRef)();
|
|
107
|
+
return (0, _platformFeatureFlags.fg)('platform_editor_react18_elements_emoji') ? /*#__PURE__*/(0, _react.createRef)() : /*#__PURE__*/(0, _react.createRef)();
|
|
107
108
|
}, []);
|
|
108
109
|
var openTime = (0, _react.useRef)(0);
|
|
109
110
|
var isMounting = (0, _react.useRef)(true);
|
|
@@ -486,7 +487,35 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
486
487
|
dynamicCategories: dynamicCategories,
|
|
487
488
|
disableCategories: disableCategories,
|
|
488
489
|
onCategorySelected: onCategorySelected
|
|
489
|
-
}), (0, _react2.jsx)(_EmojiPickerList.
|
|
490
|
+
}), (0, _platformFeatureFlags.fg)('platform_editor_react18_elements_emoji') ? (0, _react2.jsx)(_EmojiPickerList.EmojiPickerVirtualListInternalNew, {
|
|
491
|
+
emojis: filteredEmojis,
|
|
492
|
+
currentUser: currentUser,
|
|
493
|
+
onEmojiSelected: recordUsageOnSelection,
|
|
494
|
+
onEmojiActive: onEmojiActive,
|
|
495
|
+
onEmojiDelete: onTriggerDelete,
|
|
496
|
+
onCategoryActivated: onCategoryActivated,
|
|
497
|
+
onSearch: onSearch,
|
|
498
|
+
query: query,
|
|
499
|
+
selectedTone: selectedTone,
|
|
500
|
+
loading: loading,
|
|
501
|
+
ref: emojiPickerList,
|
|
502
|
+
initialUploadName: query,
|
|
503
|
+
onToneSelected: onToneSelected,
|
|
504
|
+
onToneSelectorCancelled: onToneSelectorCancelled,
|
|
505
|
+
toneEmoji: toneEmoji,
|
|
506
|
+
uploading: uploading,
|
|
507
|
+
emojiToDelete: emojiToDelete,
|
|
508
|
+
uploadErrorMessage: formattedErrorMessage,
|
|
509
|
+
uploadEnabled: isUploadSupported && !uploading,
|
|
510
|
+
onUploadEmoji: onUploadEmoji,
|
|
511
|
+
onUploadCancelled: onUploadCancelled,
|
|
512
|
+
onDeleteEmoji: onDeleteEmoji,
|
|
513
|
+
onCloseDelete: onCloseDelete,
|
|
514
|
+
onFileChooserClicked: onFileChooserClicked,
|
|
515
|
+
onOpenUpload: onOpenUpload,
|
|
516
|
+
size: size,
|
|
517
|
+
activeCategoryId: activeCategory
|
|
518
|
+
}) : (0, _react2.jsx)(_EmojiPickerList.EmojiPickerVirtualListInternalOld, {
|
|
490
519
|
emojis: filteredEmojis,
|
|
491
520
|
currentUser: currentUser,
|
|
492
521
|
onEmojiSelected: recordUsageOnSelection,
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
|
-
exports.
|
|
8
|
+
exports.RENDER_EMOJI_PICKER_LIST_TESTID = exports.EmojiPickerVirtualListInternalOld = exports.EmojiPickerVirtualListInternalNew = void 0;
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
8
10
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
11
|
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
10
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
@@ -13,7 +15,7 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
|
|
|
13
15
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
14
16
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
15
17
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
16
|
-
var _react = require("react");
|
|
18
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
17
19
|
var _react2 = require("@emotion/react");
|
|
18
20
|
var _visuallyHidden = _interopRequireDefault(require("@atlaskit/visually-hidden"));
|
|
19
21
|
var _constants = require("../../util/constants");
|
|
@@ -28,6 +30,8 @@ var _VirtualList = require("./VirtualList");
|
|
|
28
30
|
var _reactIntlNext = require("react-intl-next");
|
|
29
31
|
var _i18n = require("../i18n");
|
|
30
32
|
var _EmojiPickerListContext = require("../../context/EmojiPickerListContext");
|
|
33
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
34
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
31
35
|
function _createSuper(t) { var r = _isNativeReflectConstruct(); return function () { var e, o = (0, _getPrototypeOf2.default)(t); if (r) { var s = (0, _getPrototypeOf2.default)(this).constructor; e = Reflect.construct(o, arguments, s); } else e = o.apply(this, arguments); return (0, _possibleConstructorReturn2.default)(this, e); }; }
|
|
32
36
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /**
|
|
33
37
|
* @jsxRuntime classic
|
|
@@ -84,12 +88,12 @@ var EmojiPickerTabPanelInternal = /*#__PURE__*/function (_PureComponent) {
|
|
|
84
88
|
return EmojiPickerTabPanelInternal;
|
|
85
89
|
}(_react.PureComponent);
|
|
86
90
|
var EmojiPickerTabPanel = (0, _reactIntlNext.injectIntl)(EmojiPickerTabPanelInternal);
|
|
87
|
-
var
|
|
88
|
-
(0, _inherits2.default)(
|
|
89
|
-
var _super2 = _createSuper(
|
|
90
|
-
function
|
|
91
|
+
var EmojiPickerVirtualListInternalOld = exports.EmojiPickerVirtualListInternalOld = /*#__PURE__*/function (_PureComponent2) {
|
|
92
|
+
(0, _inherits2.default)(EmojiPickerVirtualListInternalOld, _PureComponent2);
|
|
93
|
+
var _super2 = _createSuper(EmojiPickerVirtualListInternalOld);
|
|
94
|
+
function EmojiPickerVirtualListInternalOld(_props) {
|
|
91
95
|
var _this;
|
|
92
|
-
(0, _classCallCheck2.default)(this,
|
|
96
|
+
(0, _classCallCheck2.default)(this, EmojiPickerVirtualListInternalOld);
|
|
93
97
|
_this = _super2.call(this, _props);
|
|
94
98
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "virtualItems", []);
|
|
95
99
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "categoryTracker", new _CategoryTracker.default());
|
|
@@ -295,7 +299,7 @@ var EmojiPickerVirtualListInternal = exports.default = /*#__PURE__*/function (_P
|
|
|
295
299
|
_this.buildVirtualItems(_props, _this.state);
|
|
296
300
|
return _this;
|
|
297
301
|
}
|
|
298
|
-
(0, _createClass2.default)(
|
|
302
|
+
(0, _createClass2.default)(EmojiPickerVirtualListInternalOld, [{
|
|
299
303
|
key: "UNSAFE_componentWillUpdate",
|
|
300
304
|
value: function UNSAFE_componentWillUpdate(nextProps, nextState) {
|
|
301
305
|
if (this.props.emojis !== nextProps.emojis || this.props.selectedTone !== nextProps.selectedTone || this.props.loading !== nextProps.loading || this.props.query !== nextProps.query) {
|
|
@@ -415,13 +419,344 @@ var EmojiPickerVirtualListInternal = exports.default = /*#__PURE__*/function (_P
|
|
|
415
419
|
})));
|
|
416
420
|
}
|
|
417
421
|
}]);
|
|
418
|
-
return
|
|
422
|
+
return EmojiPickerVirtualListInternalOld;
|
|
419
423
|
}(_react.PureComponent);
|
|
420
|
-
(0, _defineProperty2.default)(
|
|
424
|
+
(0, _defineProperty2.default)(EmojiPickerVirtualListInternalOld, "defaultProps", {
|
|
421
425
|
onEmojiSelected: function onEmojiSelected() {},
|
|
422
426
|
onEmojiActive: function onEmojiActive() {},
|
|
423
427
|
onEmojiDelete: function onEmojiDelete() {},
|
|
424
428
|
onCategoryActivated: function onCategoryActivated() {},
|
|
425
429
|
onSearch: function onSearch() {},
|
|
426
430
|
size: _constants.defaultEmojiPickerSize
|
|
431
|
+
});
|
|
432
|
+
var EmojiPickerVirtualListInternalNew = exports.EmojiPickerVirtualListInternalNew = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
433
|
+
var emojis = props.emojis,
|
|
434
|
+
currentUser = props.currentUser,
|
|
435
|
+
_props$onEmojiSelecte = props.onEmojiSelected,
|
|
436
|
+
onEmojiSelected = _props$onEmojiSelecte === void 0 ? function () {} : _props$onEmojiSelecte,
|
|
437
|
+
_props$onEmojiActive = props.onEmojiActive,
|
|
438
|
+
onEmojiActive = _props$onEmojiActive === void 0 ? function () {} : _props$onEmojiActive,
|
|
439
|
+
_props$onEmojiDelete = props.onEmojiDelete,
|
|
440
|
+
onEmojiDelete = _props$onEmojiDelete === void 0 ? function () {} : _props$onEmojiDelete,
|
|
441
|
+
_props$onCategoryActi = props.onCategoryActivated,
|
|
442
|
+
onCategoryActivated = _props$onCategoryActi === void 0 ? function () {} : _props$onCategoryActi,
|
|
443
|
+
_props$onSearch = props.onSearch,
|
|
444
|
+
onSearch = _props$onSearch === void 0 ? function () {} : _props$onSearch,
|
|
445
|
+
_props$size = props.size,
|
|
446
|
+
size = _props$size === void 0 ? _constants.defaultEmojiPickerSize : _props$size,
|
|
447
|
+
query = props.query,
|
|
448
|
+
loading = props.loading,
|
|
449
|
+
selectedTone = props.selectedTone,
|
|
450
|
+
onToneSelected = props.onToneSelected,
|
|
451
|
+
onToneSelectorCancelled = props.onToneSelectorCancelled,
|
|
452
|
+
toneEmoji = props.toneEmoji,
|
|
453
|
+
uploading = props.uploading,
|
|
454
|
+
uploadEnabled = props.uploadEnabled,
|
|
455
|
+
emojiToDelete = props.emojiToDelete,
|
|
456
|
+
initialUploadName = props.initialUploadName,
|
|
457
|
+
uploadErrorMessage = props.uploadErrorMessage,
|
|
458
|
+
onUploadCancelled = props.onUploadCancelled,
|
|
459
|
+
onUploadEmoji = props.onUploadEmoji,
|
|
460
|
+
onDeleteEmoji = props.onDeleteEmoji,
|
|
461
|
+
onCloseDelete = props.onCloseDelete,
|
|
462
|
+
onFileChooserClicked = props.onFileChooserClicked,
|
|
463
|
+
onOpenUpload = props.onOpenUpload,
|
|
464
|
+
activeCategoryId = props.activeCategoryId;
|
|
465
|
+
var listRef = (0, _react.useRef)(null);
|
|
466
|
+
var _useState = (0, _react.useState)([]),
|
|
467
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
468
|
+
allEmojiGroups = _useState2[0],
|
|
469
|
+
setAllEmojiGroups = _useState2[1];
|
|
470
|
+
var _useState3 = (0, _react.useState)([]),
|
|
471
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
472
|
+
virtualItems = _useState4[0],
|
|
473
|
+
setVirtualItems = _useState4[1];
|
|
474
|
+
var _useState5 = (0, _react.useState)(0),
|
|
475
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
476
|
+
lastYourUploadsRow = _useState6[0],
|
|
477
|
+
setLastYourUploadsRow = _useState6[1];
|
|
478
|
+
var categoryTracker = (0, _react.useMemo)(function () {
|
|
479
|
+
return new _CategoryTracker.default();
|
|
480
|
+
}, []);
|
|
481
|
+
var _useState7 = (0, _react.useState)(false),
|
|
482
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
483
|
+
categoriesChanged = _useState8[0],
|
|
484
|
+
setCategoriesChanged = _useState8[1];
|
|
485
|
+
var groupByCategory = (0, _react.useCallback)(function (currentUser) {
|
|
486
|
+
return function (categoryToGroupMap, emoji) {
|
|
487
|
+
addToCategoryMap(categoryToGroupMap, emoji, emoji.category);
|
|
488
|
+
// separate user emojis
|
|
489
|
+
if (emoji.category === _constants.customCategory && currentUser && emoji.creatorUserId === currentUser.id) {
|
|
490
|
+
addToCategoryMap(categoryToGroupMap, emoji, _constants.yourUploadsCategory);
|
|
491
|
+
}
|
|
492
|
+
return categoryToGroupMap;
|
|
493
|
+
};
|
|
494
|
+
}, []);
|
|
495
|
+
|
|
496
|
+
/**
|
|
497
|
+
* onRowsRendered callback function
|
|
498
|
+
*
|
|
499
|
+
* Check the category of top of rendered row and inform category selector to change active category
|
|
500
|
+
* Rove index of emoji picker list
|
|
501
|
+
*/
|
|
502
|
+
var onRowsRendered = (0, _react.useCallback)(function (indexes) {
|
|
503
|
+
var startIndex = indexes.startIndex;
|
|
504
|
+
var rowItem = virtualItems[startIndex];
|
|
505
|
+
var list = listRef.current;
|
|
506
|
+
|
|
507
|
+
// update tabIndex manually, startIndex is not 0 based here
|
|
508
|
+
if (rowItem instanceof _EmojiPickerVirtualItems.CategoryHeadingItem) {
|
|
509
|
+
// if top of row rendered is category heading, update tabIndex for the next emoji row
|
|
510
|
+
list === null || list === void 0 || list.updateFocusIndex(startIndex + 1);
|
|
511
|
+
} else if (rowItem instanceof _EmojiPickerVirtualItems.EmojisRowItem) {
|
|
512
|
+
// if top of row rendered is emoji row, update it's tabIndex.
|
|
513
|
+
list === null || list === void 0 || list.updateFocusIndex(startIndex);
|
|
514
|
+
}
|
|
515
|
+
if (!query) {
|
|
516
|
+
// Calculate category in view - only relevant if categories shown, i.e. no query
|
|
517
|
+
var currentCategory = findCategoryToActivate(rowItem);
|
|
518
|
+
if (currentCategory !== null && activeCategoryId !== currentCategory) {
|
|
519
|
+
if (onCategoryActivated) {
|
|
520
|
+
onCategoryActivated(currentCategory);
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
}, [virtualItems, query, activeCategoryId, onCategoryActivated]);
|
|
525
|
+
var buildEmojiGroupedByCategory = (0, _react.useCallback)(function (emojis, currentUser) {
|
|
526
|
+
var categoryToGroupMap = emojis.reduce(groupByCategory(currentUser), {});
|
|
527
|
+
setAllEmojiGroups(Object.keys(categoryToGroupMap).map(function (key) {
|
|
528
|
+
return categoryToGroupMap[key];
|
|
529
|
+
}).map(function (group) {
|
|
530
|
+
if (group.category !== _constants.frequentCategory) {
|
|
531
|
+
group.emojis.sort(byOrder);
|
|
532
|
+
}
|
|
533
|
+
return group;
|
|
534
|
+
}).sort(byOrder));
|
|
535
|
+
}, [groupByCategory]);
|
|
536
|
+
var addToCategoryMap = function addToCategoryMap(categoryToGroupMap, emoji, category) {
|
|
537
|
+
if (!categoryToGroupMap[category]) {
|
|
538
|
+
var categoryDefinition = _categories.CategoryDescriptionMap[category];
|
|
539
|
+
categoryToGroupMap[category] = {
|
|
540
|
+
emojis: [],
|
|
541
|
+
title: categoryDefinition.name,
|
|
542
|
+
category: category,
|
|
543
|
+
order: categoryDefinition.order
|
|
544
|
+
};
|
|
545
|
+
}
|
|
546
|
+
categoryToGroupMap[category].emojis.push(emoji);
|
|
547
|
+
return categoryToGroupMap;
|
|
548
|
+
};
|
|
549
|
+
var buildVirtualItemFromGroup = (0, _react.useCallback)(function (group) {
|
|
550
|
+
var items = [];
|
|
551
|
+
items.push(new _EmojiPickerVirtualItems.CategoryHeadingItem({
|
|
552
|
+
id: group.category,
|
|
553
|
+
title: group.title,
|
|
554
|
+
className: categoryClassname
|
|
555
|
+
}));
|
|
556
|
+
var remainingEmojis = group.emojis;
|
|
557
|
+
while (remainingEmojis.length > 0) {
|
|
558
|
+
var rowEmojis = remainingEmojis.slice(0, _EmojiPickerSizes.sizes.emojiPerRow);
|
|
559
|
+
remainingEmojis = remainingEmojis.slice(_EmojiPickerSizes.sizes.emojiPerRow);
|
|
560
|
+
items.push(new _EmojiPickerVirtualItems.EmojisRowItem({
|
|
561
|
+
category: group.category,
|
|
562
|
+
emojis: rowEmojis,
|
|
563
|
+
title: group.title,
|
|
564
|
+
showDelete: group.title === _constants.userCustomTitle,
|
|
565
|
+
onSelected: onEmojiSelected,
|
|
566
|
+
onDelete: onEmojiDelete,
|
|
567
|
+
onMouseMove: onEmojiActive,
|
|
568
|
+
onFocus: onEmojiActive
|
|
569
|
+
}));
|
|
570
|
+
}
|
|
571
|
+
return items;
|
|
572
|
+
}, [onEmojiSelected, onEmojiDelete, onEmojiActive]);
|
|
573
|
+
var buildVirtualItems = (0, _react.useCallback)(function () {
|
|
574
|
+
var items = [];
|
|
575
|
+
var prevFirstCategory = categoryTracker.getFirstCategory();
|
|
576
|
+
categoryTracker.reset();
|
|
577
|
+
if (loading) {
|
|
578
|
+
items.push(new _EmojiPickerVirtualItems.LoadingItem());
|
|
579
|
+
} else {
|
|
580
|
+
if (query) {
|
|
581
|
+
var search = _categories.CategoryDescriptionMap.SEARCH;
|
|
582
|
+
// Only a single "result" category
|
|
583
|
+
items = [].concat((0, _toConsumableArray2.default)(items), (0, _toConsumableArray2.default)(buildVirtualItemFromGroup({
|
|
584
|
+
category: _constants.searchCategory,
|
|
585
|
+
title: search.name,
|
|
586
|
+
emojis: emojis,
|
|
587
|
+
order: search.order
|
|
588
|
+
})));
|
|
589
|
+
} else {
|
|
590
|
+
// Group by category
|
|
591
|
+
|
|
592
|
+
// Not searching show in categories.
|
|
593
|
+
allEmojiGroups.forEach(function (group) {
|
|
594
|
+
// Optimisation - avoid re-rendering unaffected groups for the current selectedShortcut
|
|
595
|
+
// by not passing it to irrelevant groups
|
|
596
|
+
categoryTracker.add(group.emojis[0].category, items.length);
|
|
597
|
+
items = [].concat((0, _toConsumableArray2.default)(items), (0, _toConsumableArray2.default)(buildVirtualItemFromGroup(group)));
|
|
598
|
+
if (group.category === _constants.yourUploadsCategory) {
|
|
599
|
+
setLastYourUploadsRow(items.length - 1);
|
|
600
|
+
}
|
|
601
|
+
});
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
// make sure virtualItems is up-to-date before calling onRowsRendered
|
|
606
|
+
setVirtualItems(items);
|
|
607
|
+
if (!loading && !query) {
|
|
608
|
+
if (categoryTracker.getFirstCategory() !== prevFirstCategory) {
|
|
609
|
+
setCategoriesChanged(true);
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
613
|
+
}, [allEmojiGroups, loading, query, emojis]);
|
|
614
|
+
var findCategoryToActivate = function findCategoryToActivate(row) {
|
|
615
|
+
var category = null;
|
|
616
|
+
if (row instanceof _EmojiPickerVirtualItems.CategoryHeadingItem) {
|
|
617
|
+
category = row.props.id;
|
|
618
|
+
} else if (row instanceof _EmojiPickerVirtualItems.EmojisRowItem) {
|
|
619
|
+
category = row.props.category;
|
|
620
|
+
}
|
|
621
|
+
// your uploads is rendered, take it as upload category, so could be highlighted in category selector
|
|
622
|
+
if (category === _constants.yourUploadsCategory) {
|
|
623
|
+
return _constants.customCategory;
|
|
624
|
+
// search results is rendered, return null so won't be highlighted for category selector
|
|
625
|
+
} else if (category === _constants.searchCategory) {
|
|
626
|
+
return null;
|
|
627
|
+
}
|
|
628
|
+
return category;
|
|
629
|
+
};
|
|
630
|
+
var rowSize = function rowSize(index) {
|
|
631
|
+
var _virtualItems$index;
|
|
632
|
+
return ((_virtualItems$index = virtualItems[index]) === null || _virtualItems$index === void 0 ? void 0 : _virtualItems$index.height) || _EmojiPickerSizes.sizes.categoryHeadingHeight;
|
|
633
|
+
};
|
|
634
|
+
var renderRow = function renderRow(context) {
|
|
635
|
+
return (0, _EmojiPickerVirtualItems.virtualItemRenderer)(virtualItems, context);
|
|
636
|
+
};
|
|
637
|
+
|
|
638
|
+
/**
|
|
639
|
+
* After deleting emoji, we'll update the focus index to the first emoji of last row of your uploads, so when user navigate back focus will still work
|
|
640
|
+
* if last emoji in your uploads is deleted, the updated focus index will be outdated, as there will be no your uploads section
|
|
641
|
+
* however, it'll trigger onChange from VirtualList, which will update focus index automatically for us
|
|
642
|
+
*/
|
|
643
|
+
var handleOnCloseDelete = function handleOnCloseDelete() {
|
|
644
|
+
var list = listRef.current;
|
|
645
|
+
list === null || list === void 0 || list.updateFocusIndex(lastYourUploadsRow);
|
|
646
|
+
onCloseDelete();
|
|
647
|
+
};
|
|
648
|
+
var findEmojiRowAndColumnById = function findEmojiRowAndColumnById(emojiId) {
|
|
649
|
+
var columnIndex = -1;
|
|
650
|
+
// for most of cases, it'd be in first emoji row, so should be quite fast to find in real world
|
|
651
|
+
var rowIndex = virtualItems.findIndex(function (rowItem) {
|
|
652
|
+
if (rowItem instanceof _EmojiPickerVirtualItems.EmojisRowItem) {
|
|
653
|
+
// find uploaded emoji in each emoji row
|
|
654
|
+
columnIndex = rowItem.props.emojis.findIndex(function (emoji) {
|
|
655
|
+
return emoji.id === emojiId;
|
|
656
|
+
});
|
|
657
|
+
return columnIndex !== -1;
|
|
658
|
+
}
|
|
659
|
+
return false;
|
|
660
|
+
});
|
|
661
|
+
return {
|
|
662
|
+
rowIndex: rowIndex,
|
|
663
|
+
columnIndex: columnIndex
|
|
664
|
+
};
|
|
665
|
+
};
|
|
666
|
+
|
|
667
|
+
/**
|
|
668
|
+
* Scrolls to a category in the list view
|
|
669
|
+
*/
|
|
670
|
+
(0, _react.useImperativeHandle)(ref, function () {
|
|
671
|
+
return {
|
|
672
|
+
reveal: function reveal(category) {
|
|
673
|
+
var row = categoryTracker.getRow(category);
|
|
674
|
+
(0, _utils.scrollToRow)(listRef, row);
|
|
675
|
+
},
|
|
676
|
+
scrollToBottom: function scrollToBottom() {
|
|
677
|
+
(0, _utils.scrollToRow)(listRef, virtualItems.length);
|
|
678
|
+
},
|
|
679
|
+
scrollToTop: function scrollToTop() {
|
|
680
|
+
(0, _utils.scrollToRow)(listRef, 0);
|
|
681
|
+
},
|
|
682
|
+
scrollToRow: function scrollToRow(index) {
|
|
683
|
+
(0, _utils.scrollToRow)(listRef, index);
|
|
684
|
+
},
|
|
685
|
+
scrollToRecentlyUploaded: function scrollToRecentlyUploaded(uploadedEmoji) {
|
|
686
|
+
// when search results is shown
|
|
687
|
+
if (query) {
|
|
688
|
+
var _findEmojiRowAndColum = findEmojiRowAndColumnById(uploadedEmoji.id),
|
|
689
|
+
rowIndex = _findEmojiRowAndColum.rowIndex,
|
|
690
|
+
columnIndex = _findEmojiRowAndColum.columnIndex;
|
|
691
|
+
if (rowIndex !== -1) {
|
|
692
|
+
var _listRef$current;
|
|
693
|
+
(_listRef$current = listRef.current) === null || _listRef$current === void 0 || _listRef$current.scrollToEmojiAndFocus(rowIndex, columnIndex);
|
|
694
|
+
}
|
|
695
|
+
} else {
|
|
696
|
+
// when seeing all emojis
|
|
697
|
+
var row = lastYourUploadsRow;
|
|
698
|
+
if (row > 0) {
|
|
699
|
+
var _listRef$current2;
|
|
700
|
+
(_listRef$current2 = listRef.current) === null || _listRef$current2 === void 0 || _listRef$current2.scrollToRowAndFocusLastEmoji(lastYourUploadsRow);
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
};
|
|
705
|
+
});
|
|
706
|
+
(0, _react.useEffect)(function () {
|
|
707
|
+
if (!query) {
|
|
708
|
+
buildEmojiGroupedByCategory(emojis, currentUser);
|
|
709
|
+
}
|
|
710
|
+
}, [emojis, selectedTone, loading, query, currentUser, buildEmojiGroupedByCategory]);
|
|
711
|
+
(0, _react.useEffect)(function () {
|
|
712
|
+
buildVirtualItems();
|
|
713
|
+
}, [allEmojiGroups, buildVirtualItems]);
|
|
714
|
+
(0, _react.useEffect)(function () {
|
|
715
|
+
if (categoriesChanged) {
|
|
716
|
+
onRowsRendered({
|
|
717
|
+
startIndex: 0
|
|
718
|
+
});
|
|
719
|
+
}
|
|
720
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
721
|
+
}, [virtualItems, categoriesChanged]);
|
|
722
|
+
var virtualListHeight = (0, _react.useMemo)(function () {
|
|
723
|
+
return _EmojiPickerSizes.sizes.listHeight + (0, _utils.emojiPickerHeightOffset)(size);
|
|
724
|
+
}, [size]);
|
|
725
|
+
return (0, _react2.jsx)(EmojiPickerTabPanel, {
|
|
726
|
+
showSearchResults: !!query
|
|
727
|
+
}, (0, _react2.jsx)(_EmojiActions.default, {
|
|
728
|
+
selectedTone: selectedTone,
|
|
729
|
+
onToneSelected: onToneSelected,
|
|
730
|
+
onToneSelectorCancelled: onToneSelectorCancelled,
|
|
731
|
+
toneEmoji: toneEmoji,
|
|
732
|
+
uploading: uploading,
|
|
733
|
+
uploadEnabled: uploadEnabled,
|
|
734
|
+
emojiToDelete: emojiToDelete,
|
|
735
|
+
initialUploadName: initialUploadName,
|
|
736
|
+
uploadErrorMessage: uploadErrorMessage,
|
|
737
|
+
onUploadCancelled: onUploadCancelled,
|
|
738
|
+
onUploadEmoji: onUploadEmoji,
|
|
739
|
+
onCloseDelete: handleOnCloseDelete,
|
|
740
|
+
onDeleteEmoji: onDeleteEmoji,
|
|
741
|
+
onFileChooserClicked: onFileChooserClicked,
|
|
742
|
+
onOpenUpload: onOpenUpload,
|
|
743
|
+
query: query,
|
|
744
|
+
onChange: onSearch,
|
|
745
|
+
resultsCount: emojis.length
|
|
746
|
+
}), (0, _react2.jsx)(_EmojiPickerListContext.EmojiPickerListContextProvider, {
|
|
747
|
+
initialEmojisFocus: {
|
|
748
|
+
rowIndex: 1,
|
|
749
|
+
columnIndex: 0
|
|
750
|
+
}
|
|
751
|
+
}, (0, _react2.jsx)(_VirtualList.VirtualList, {
|
|
752
|
+
ref: listRef,
|
|
753
|
+
height: virtualListHeight,
|
|
754
|
+
overscanRowCount: 10,
|
|
755
|
+
rowCount: virtualItems.length,
|
|
756
|
+
rowHeight: rowSize,
|
|
757
|
+
rowRenderer: renderRow,
|
|
758
|
+
scrollToAlignment: "start",
|
|
759
|
+
width: _EmojiPickerSizes.sizes.listWidth,
|
|
760
|
+
onRowsRendered: onRowsRendered
|
|
761
|
+
})));
|
|
427
762
|
});
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.emojiPickerHeightOffset = void 0;
|
|
6
|
+
exports.scrollToRow = exports.emojiPickerHeightOffset = void 0;
|
|
7
7
|
var _constants = require("../../util/constants");
|
|
8
8
|
var emojiPickerHeightOffset = exports.emojiPickerHeightOffset = function emojiPickerHeightOffset(size) {
|
|
9
9
|
if (size === 'medium') {
|
|
@@ -12,4 +12,10 @@ var emojiPickerHeightOffset = exports.emojiPickerHeightOffset = function emojiPi
|
|
|
12
12
|
return _constants.sizeGap * 2;
|
|
13
13
|
}
|
|
14
14
|
return 0;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// this function is being exported so it can be mocked in unit tests
|
|
18
|
+
var scrollToRow = exports.scrollToRow = function scrollToRow(listRef, index) {
|
|
19
|
+
var _listRef$current;
|
|
20
|
+
(_listRef$current = listRef.current) === null || _listRef$current === void 0 || _listRef$current.scrollToRow(index);
|
|
15
21
|
};
|
|
@@ -25,6 +25,7 @@ var _typeHelpers = require("../../util/type-helpers");
|
|
|
25
25
|
var _RecordSelectionDefault = require("../common/RecordSelectionDefault");
|
|
26
26
|
var _EmojiTypeAheadList = _interopRequireDefault(require("./EmojiTypeAheadList"));
|
|
27
27
|
var _styles = require("./styles");
|
|
28
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
28
29
|
function _createSuper(t) { var r = _isNativeReflectConstruct(); return function () { var e, o = (0, _getPrototypeOf2.default)(t); if (r) { var s = (0, _getPrototypeOf2.default)(this).constructor; e = Reflect.construct(o, arguments, s); } else e = o.apply(this, arguments); return (0, _possibleConstructorReturn2.default)(this, e); }; }
|
|
29
30
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
30
31
|
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, 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 o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
@@ -196,14 +197,33 @@ var EmojiTypeAheadComponent = exports.default = /*#__PURE__*/function (_PureComp
|
|
|
196
197
|
}, {
|
|
197
198
|
key: "UNSAFE_componentWillReceiveProps",
|
|
198
199
|
value: function UNSAFE_componentWillReceiveProps(nextProps) {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
prevEmojiProvider
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
this.
|
|
200
|
+
if (!(0, _platformFeatureFlags.fg)('platform_editor_react18_elements_emoji')) {
|
|
201
|
+
var prevEmojiProvider = this.props.emojiProvider;
|
|
202
|
+
var nextEmojiProvider = nextProps.emojiProvider;
|
|
203
|
+
if (prevEmojiProvider !== nextEmojiProvider) {
|
|
204
|
+
prevEmojiProvider.unsubscribe(this.onProviderChange);
|
|
205
|
+
nextEmojiProvider.subscribe(this.onProviderChange);
|
|
206
|
+
this.onSearch(nextProps.query);
|
|
207
|
+
} else if (this.props.query !== nextProps.query) {
|
|
208
|
+
this.onSearch(nextProps.query);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}, {
|
|
213
|
+
key: "componentDidUpdate",
|
|
214
|
+
value: function componentDidUpdate(prevProps) {
|
|
215
|
+
if ((0, _platformFeatureFlags.fg)('platform_editor_react18_elements_emoji')) {
|
|
216
|
+
if (prevProps !== this.props) {
|
|
217
|
+
var prevEmojiProvider = prevProps.emojiProvider;
|
|
218
|
+
var nextEmojiProvider = this.props.emojiProvider;
|
|
219
|
+
if (prevEmojiProvider !== nextEmojiProvider) {
|
|
220
|
+
prevEmojiProvider.unsubscribe(this.onProviderChange);
|
|
221
|
+
nextEmojiProvider.subscribe(this.onProviderChange);
|
|
222
|
+
this.onSearch(this.props.query);
|
|
223
|
+
} else if (prevProps.query !== this.props.query) {
|
|
224
|
+
this.onSearch(this.props.query);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
207
227
|
}
|
|
208
228
|
}
|
|
209
229
|
}, {
|