@atlaskit/emoji 67.1.0 → 67.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.
- package/CHANGELOG.md +29 -0
- package/dist/cjs/api/EmojiResource.js +29 -24
- package/dist/cjs/api/media/TokenManager.js +4 -4
- package/dist/cjs/components/common/CachingEmoji.js +14 -6
- package/dist/cjs/components/common/Emoji.js +48 -12
- package/dist/cjs/components/common/EmojiActions.js +60 -24
- package/dist/cjs/components/common/EmojiErrorMessage.js +12 -7
- package/dist/cjs/components/common/EmojiPlaceholder.js +1 -0
- package/dist/cjs/components/common/{EmojiButton.js → EmojiRadioButton.js} +28 -19
- package/dist/cjs/components/common/EmojiUploadPicker.js +80 -37
- package/dist/cjs/components/common/EmojiUploadPreview.js +11 -2
- package/dist/cjs/components/common/FileChooser.js +2 -2
- package/dist/cjs/components/common/ResourcedEmoji.js +5 -3
- package/dist/cjs/components/common/ResourcedEmojiComponent.js +4 -0
- package/dist/cjs/components/common/RetryableButton.js +7 -3
- package/dist/cjs/components/common/TonePreviewButton.js +44 -0
- package/dist/cjs/components/common/ToneSelector.js +53 -25
- package/dist/cjs/components/common/styles.js +45 -16
- package/dist/cjs/components/i18n.js +44 -4
- package/dist/cjs/components/picker/CategorySelector.js +112 -90
- package/dist/cjs/components/picker/CategoryTracker.js +0 -28
- package/dist/cjs/components/picker/EmojiPickerCategoryHeading.js +2 -1
- package/dist/cjs/components/picker/EmojiPickerComponent.js +13 -7
- package/dist/cjs/components/picker/EmojiPickerEmojiRow.js +32 -4
- package/dist/cjs/components/picker/EmojiPickerList.js +140 -51
- package/dist/cjs/components/picker/EmojiPickerListSearch.js +16 -3
- package/dist/cjs/components/picker/EmojiPickerVirtualItems.js +5 -2
- package/dist/cjs/components/picker/VirtualList.js +196 -14
- package/dist/cjs/components/picker/styles.js +43 -51
- package/dist/cjs/context/EmojiPickerListContext.js +33 -0
- package/dist/cjs/hooks/useEmojiPickerListContext.js +12 -0
- package/dist/cjs/util/constants.js +40 -1
- package/dist/cjs/util/shared-styles.js +3 -4
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/api/EmojiResource.js +29 -24
- package/dist/es2019/api/media/TokenManager.js +4 -4
- package/dist/es2019/components/common/CachingEmoji.js +10 -3
- package/dist/es2019/components/common/Emoji.js +44 -11
- package/dist/es2019/components/common/EmojiActions.js +54 -23
- package/dist/es2019/components/common/EmojiErrorMessage.js +7 -3
- package/dist/es2019/components/common/EmojiPlaceholder.js +1 -0
- package/dist/es2019/components/common/EmojiRadioButton.js +54 -0
- package/dist/es2019/components/common/EmojiUploadPicker.js +75 -36
- package/dist/es2019/components/common/EmojiUploadPreview.js +11 -2
- package/dist/es2019/components/common/FileChooser.js +1 -1
- package/dist/es2019/components/common/ResourcedEmoji.js +5 -3
- package/dist/es2019/components/common/ResourcedEmojiComponent.js +4 -0
- package/dist/es2019/components/common/RetryableButton.js +7 -3
- package/dist/es2019/components/common/TonePreviewButton.js +34 -0
- package/dist/es2019/components/common/ToneSelector.js +55 -21
- package/dist/es2019/components/common/styles.js +41 -10
- package/dist/es2019/components/i18n.js +44 -4
- package/dist/es2019/components/picker/CategorySelector.js +114 -89
- package/dist/es2019/components/picker/CategoryTracker.js +0 -24
- package/dist/es2019/components/picker/EmojiPickerCategoryHeading.js +2 -2
- package/dist/es2019/components/picker/EmojiPickerComponent.js +14 -7
- package/dist/es2019/components/picker/EmojiPickerEmojiRow.js +51 -21
- package/dist/es2019/components/picker/EmojiPickerList.js +102 -21
- package/dist/es2019/components/picker/EmojiPickerListSearch.js +14 -4
- package/dist/es2019/components/picker/EmojiPickerVirtualItems.js +4 -1
- package/dist/es2019/components/picker/VirtualList.js +193 -12
- package/dist/es2019/components/picker/styles.js +20 -28
- package/dist/es2019/context/EmojiPickerListContext.js +17 -0
- package/dist/es2019/hooks/useEmojiPickerListContext.js +3 -0
- package/dist/es2019/util/constants.js +31 -0
- package/dist/es2019/util/shared-styles.js +1 -2
- package/dist/es2019/version.json +1 -1
- package/dist/esm/api/EmojiResource.js +29 -24
- package/dist/esm/api/media/TokenManager.js +4 -4
- package/dist/esm/components/common/CachingEmoji.js +14 -6
- package/dist/esm/components/common/Emoji.js +48 -12
- package/dist/esm/components/common/EmojiActions.js +61 -25
- package/dist/esm/components/common/EmojiErrorMessage.js +7 -3
- package/dist/esm/components/common/EmojiPlaceholder.js +1 -0
- package/dist/esm/components/common/EmojiRadioButton.js +52 -0
- package/dist/esm/components/common/EmojiUploadPicker.js +77 -36
- package/dist/esm/components/common/EmojiUploadPreview.js +11 -2
- package/dist/esm/components/common/FileChooser.js +1 -1
- package/dist/esm/components/common/ResourcedEmoji.js +5 -3
- package/dist/esm/components/common/ResourcedEmojiComponent.js +4 -0
- package/dist/esm/components/common/RetryableButton.js +7 -3
- package/dist/esm/components/common/TonePreviewButton.js +33 -0
- package/dist/esm/components/common/ToneSelector.js +49 -18
- package/dist/esm/components/common/styles.js +40 -12
- package/dist/esm/components/i18n.js +44 -4
- package/dist/esm/components/picker/CategorySelector.js +114 -95
- package/dist/esm/components/picker/CategoryTracker.js +0 -28
- package/dist/esm/components/picker/EmojiPickerCategoryHeading.js +2 -2
- package/dist/esm/components/picker/EmojiPickerComponent.js +13 -7
- package/dist/esm/components/picker/EmojiPickerEmojiRow.js +32 -4
- package/dist/esm/components/picker/EmojiPickerList.js +141 -52
- package/dist/esm/components/picker/EmojiPickerListSearch.js +17 -4
- package/dist/esm/components/picker/EmojiPickerVirtualItems.js +5 -2
- package/dist/esm/components/picker/VirtualList.js +195 -12
- package/dist/esm/components/picker/styles.js +37 -45
- package/dist/esm/context/EmojiPickerListContext.js +21 -0
- package/dist/esm/hooks/useEmojiPickerListContext.js +5 -0
- package/dist/esm/util/constants.js +31 -0
- package/dist/esm/util/shared-styles.js +1 -2
- package/dist/esm/version.json +1 -1
- package/dist/types/api/EmojiResource.d.ts +2 -0
- package/dist/types/components/common/Emoji.d.ts +7 -1
- package/dist/types/components/common/EmojiActions.d.ts +3 -2
- package/dist/types/components/common/{EmojiButton.d.ts → EmojiRadioButton.d.ts} +3 -4
- package/dist/types/components/common/EmojiUploadPicker.d.ts +6 -4
- package/dist/types/components/common/RetryableButton.d.ts +1 -0
- package/dist/types/components/common/TonePreviewButton.d.ts +14 -0
- package/dist/types/components/common/ToneSelector.d.ts +8 -5
- package/dist/types/components/common/internal-types.d.ts +9 -0
- package/dist/types/components/common/styles.d.ts +2 -1
- package/dist/types/components/i18n.d.ts +40 -0
- package/dist/types/components/picker/CategorySelector.d.ts +3 -10
- package/dist/types/components/picker/CategoryTracker.d.ts +0 -2
- package/dist/types/components/picker/EmojiPickerCategoryHeading.d.ts +2 -1
- package/dist/types/components/picker/EmojiPickerEmojiRow.d.ts +5 -0
- package/dist/types/components/picker/EmojiPickerList.d.ts +10 -5
- package/dist/types/components/picker/EmojiPickerListSearch.d.ts +1 -0
- package/dist/types/components/picker/EmojiPickerVirtualItems.d.ts +1 -1
- package/dist/types/components/picker/VirtualList.d.ts +2 -0
- package/dist/types/components/picker/styles.d.ts +1 -1
- package/dist/types/context/EmojiPickerListContext.d.ts +10 -0
- package/dist/types/hooks/useEmojiPickerListContext.d.ts +1 -0
- package/dist/types/util/constants.d.ts +27 -0
- package/dist/types/util/shared-styles.d.ts +1 -1
- package/dist/types/util/type-helpers.d.ts +1 -1
- package/package.json +9 -6
- package/report.api.md +52 -1
- package/README.md +0 -3
- package/dist/es2019/components/common/EmojiButton.js +0 -49
- package/dist/esm/components/common/EmojiButton.js +0 -43
- /package/dist/cjs/{components/hooks.js → hooks/useIsMounted.js} +0 -0
- /package/dist/es2019/{components/hooks.js → hooks/useIsMounted.js} +0 -0
- /package/dist/esm/{components/hooks.js → hooks/useIsMounted.js} +0 -0
- /package/dist/types/{components/hooks.d.ts → hooks/useIsMounted.d.ts} +0 -0
|
@@ -26,7 +26,8 @@ var _EmojiPickerList = _interopRequireDefault(require("./EmojiPickerList"));
|
|
|
26
26
|
var _analytics = require("../../util/analytics");
|
|
27
27
|
var _styles = require("./styles");
|
|
28
28
|
var _useEmoji2 = require("../../hooks/useEmoji");
|
|
29
|
-
var
|
|
29
|
+
var _useIsMounted = require("../../hooks/useIsMounted");
|
|
30
|
+
var _i18n = require("../i18n");
|
|
30
31
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
31
32
|
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; }
|
|
32
33
|
var FREQUENTLY_USED_MAX = 16;
|
|
@@ -37,6 +38,8 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
37
38
|
createAnalyticsEvent = _ref.createAnalyticsEvent,
|
|
38
39
|
_ref$size = _ref.size,
|
|
39
40
|
size = _ref$size === void 0 ? _constants.defaultEmojiPickerSize : _ref$size;
|
|
41
|
+
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
42
|
+
formatMessage = _useIntl.formatMessage;
|
|
40
43
|
var _useEmoji = (0, _useEmoji2.useEmoji)(),
|
|
41
44
|
emojiProvider = _useEmoji.emojiProvider,
|
|
42
45
|
isUploadSupported = _useEmoji.isUploadSupported;
|
|
@@ -105,7 +108,7 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
105
108
|
var currentUser = (0, _react.useMemo)(function () {
|
|
106
109
|
return emojiProvider.getCurrentUser();
|
|
107
110
|
}, [emojiProvider]);
|
|
108
|
-
var isMounted = (0,
|
|
111
|
+
var isMounted = (0, _useIsMounted.useIsMounted)();
|
|
109
112
|
var fireAnalytics = (0, _react.useCallback)(function (analyticsEvent) {
|
|
110
113
|
if (createAnalyticsEvent) {
|
|
111
114
|
(0, _analytics.createAndFireEventInElementsChannel)(analyticsEvent)(createAnalyticsEvent);
|
|
@@ -330,12 +333,12 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
330
333
|
});
|
|
331
334
|
fireAnalytics((0, _analytics.uploadBeginButton)());
|
|
332
335
|
}, [emojiProvider, fireAnalytics]);
|
|
333
|
-
var
|
|
336
|
+
var scrollToUploadedEmoji = (0, _react.useCallback)(function () {
|
|
334
337
|
if (emojiPickerList.current) {
|
|
335
338
|
// Wait a tick to ensure repaint and updated height for picker list
|
|
336
339
|
window.setTimeout(function () {
|
|
337
340
|
var _emojiPickerList$curr2;
|
|
338
|
-
(_emojiPickerList$curr2 = emojiPickerList.current) === null || _emojiPickerList$curr2 === void 0 ? void 0 : _emojiPickerList$curr2.
|
|
341
|
+
(_emojiPickerList$curr2 = emojiPickerList.current) === null || _emojiPickerList$curr2 === void 0 ? void 0 : _emojiPickerList$curr2.scrollToRecentlyUploaded();
|
|
339
342
|
}, 0);
|
|
340
343
|
}
|
|
341
344
|
}, [emojiPickerList]);
|
|
@@ -352,10 +355,10 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
352
355
|
setSelectedEmoji(emojiDescription);
|
|
353
356
|
setUploading(false);
|
|
354
357
|
});
|
|
355
|
-
|
|
358
|
+
scrollToUploadedEmoji();
|
|
356
359
|
};
|
|
357
360
|
(0, _UploadEmoji.uploadEmoji)(upload, emojiProvider, errorSetter, onSuccess, fireAnalytics, retry);
|
|
358
|
-
}, [emojiProvider, fireAnalytics,
|
|
361
|
+
}, [emojiProvider, fireAnalytics, scrollToUploadedEmoji]);
|
|
359
362
|
var onTriggerDelete = (0, _react.useCallback)(function (_emojiId, emoji) {
|
|
360
363
|
if (_emojiId) {
|
|
361
364
|
fireAnalytics((0, _analytics.deleteBeginEvent)({
|
|
@@ -455,7 +458,10 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
455
458
|
return (0, _react2.jsx)("div", {
|
|
456
459
|
css: (0, _styles.emojiPicker)(showPreview, size),
|
|
457
460
|
ref: onPickerRef,
|
|
458
|
-
"data-emoji-picker-container": true
|
|
461
|
+
"data-emoji-picker-container": true,
|
|
462
|
+
role: "dialog",
|
|
463
|
+
"aria-label": formatMessage(_i18n.messages.emojiPickerTitle),
|
|
464
|
+
"aria-modal": true
|
|
459
465
|
}, (0, _react2.jsx)(_CategorySelector.default, {
|
|
460
466
|
activeCategoryId: activeCategory,
|
|
461
467
|
dynamicCategories: dynamicCategories,
|
|
@@ -7,34 +7,62 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _react = require("react");
|
|
9
9
|
var _react2 = require("@emotion/react");
|
|
10
|
+
var _reactIntlNext = require("react-intl-next");
|
|
10
11
|
var _CachingEmoji = _interopRequireDefault(require("../common/CachingEmoji"));
|
|
11
12
|
var _styles = require("./styles");
|
|
13
|
+
var _useEmojiPickerListContext = require("../../hooks/useEmojiPickerListContext");
|
|
14
|
+
var _i18n = require("../i18n");
|
|
12
15
|
/** @jsx jsx */
|
|
13
16
|
|
|
14
17
|
var EmojiPickerEmojiRow = function EmojiPickerEmojiRow(_ref) {
|
|
15
18
|
var emojis = _ref.emojis,
|
|
16
19
|
onSelected = _ref.onSelected,
|
|
17
20
|
onMouseMove = _ref.onMouseMove,
|
|
21
|
+
onFocus = _ref.onFocus,
|
|
18
22
|
title = _ref.title,
|
|
19
23
|
showDelete = _ref.showDelete,
|
|
20
|
-
onDelete = _ref.onDelete
|
|
24
|
+
onDelete = _ref.onDelete,
|
|
25
|
+
virtualItemContext = _ref.virtualItemContext;
|
|
26
|
+
var _useEmojiPickerListCo = (0, _useEmojiPickerListContext.useEmojiPickerListContext)(),
|
|
27
|
+
currentEmojisFocus = _useEmojiPickerListCo.currentEmojisFocus,
|
|
28
|
+
setEmojisFocus = _useEmojiPickerListCo.setEmojisFocus;
|
|
29
|
+
var rowIndex = (virtualItemContext === null || virtualItemContext === void 0 ? void 0 : virtualItemContext.index) || 0;
|
|
30
|
+
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
31
|
+
formatMessage = _useIntl.formatMessage;
|
|
32
|
+
var handleFocus = function handleFocus(index) {
|
|
33
|
+
return function (emojiId, emoji, event) {
|
|
34
|
+
setEmojisFocus({
|
|
35
|
+
rowIndex: rowIndex,
|
|
36
|
+
columnIndex: index
|
|
37
|
+
});
|
|
38
|
+
onFocus && onFocus(emojiId, emoji, event);
|
|
39
|
+
};
|
|
40
|
+
};
|
|
21
41
|
return (0, _react2.jsx)("div", {
|
|
22
|
-
css: _styles.emojiPickerRow
|
|
23
|
-
|
|
42
|
+
css: _styles.emojiPickerRow,
|
|
43
|
+
role: "presentation"
|
|
44
|
+
}, emojis.map(function (emoji, index) {
|
|
24
45
|
var shortName = emoji.shortName,
|
|
25
46
|
id = emoji.id;
|
|
26
47
|
var key = id ? "".concat(id, "-").concat(title) : "".concat(shortName, "-").concat(title);
|
|
48
|
+
var focus = currentEmojisFocus.rowIndex === rowIndex && currentEmojisFocus.columnIndex === index;
|
|
27
49
|
return (0, _react2.jsx)("span", {
|
|
28
50
|
css: _styles.emojiItem,
|
|
29
|
-
key: key
|
|
51
|
+
key: key,
|
|
52
|
+
role: "gridcell",
|
|
53
|
+
"aria-colindex": index + 1 // aria-colindex is 1 based
|
|
30
54
|
}, (0, _react2.jsx)(_CachingEmoji.default, {
|
|
31
55
|
emoji: emoji,
|
|
32
56
|
selectOnHover: true,
|
|
33
57
|
onSelected: onSelected,
|
|
34
58
|
onMouseMove: onMouseMove,
|
|
59
|
+
onFocus: handleFocus(index),
|
|
35
60
|
showDelete: showDelete,
|
|
36
61
|
onDelete: onDelete,
|
|
37
62
|
placeholderSize: 24,
|
|
63
|
+
"data-focus-index": "".concat(rowIndex, "-").concat(index),
|
|
64
|
+
tabIndex: focus ? 0 : -1,
|
|
65
|
+
"aria-roledescription": formatMessage(_i18n.messages.emojiButtonRoleDescription),
|
|
38
66
|
shouldBeInteractive: true
|
|
39
67
|
}));
|
|
40
68
|
}));
|
|
@@ -6,15 +6,16 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.default = exports.RENDER_EMOJI_PICKER_LIST_TESTID = void 0;
|
|
8
8
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
11
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
12
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
12
13
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
13
14
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
14
15
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
15
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
16
|
var _react = require("react");
|
|
17
17
|
var _react2 = require("@emotion/react");
|
|
18
|
+
var _visuallyHidden = _interopRequireDefault(require("@atlaskit/visually-hidden"));
|
|
18
19
|
var _constants = require("../../util/constants");
|
|
19
20
|
var _categories = require("./categories");
|
|
20
21
|
var _CategoryTracker = _interopRequireDefault(require("./CategoryTracker"));
|
|
@@ -24,6 +25,9 @@ var _EmojiActions = _interopRequireDefault(require("../common/EmojiActions"));
|
|
|
24
25
|
var _styles = require("./styles");
|
|
25
26
|
var _utils = require("./utils");
|
|
26
27
|
var _VirtualList = require("./VirtualList");
|
|
28
|
+
var _reactIntlNext = require("react-intl-next");
|
|
29
|
+
var _i18n = require("../i18n");
|
|
30
|
+
var _EmojiPickerListContext = require("../../context/EmojiPickerListContext");
|
|
27
31
|
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); }; }
|
|
28
32
|
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; } }
|
|
29
33
|
/**
|
|
@@ -35,17 +39,53 @@ var categoryClassname = 'emoji-category';
|
|
|
35
39
|
var byOrder = function byOrder(orderableA, orderableB) {
|
|
36
40
|
return (orderableA.order || 0) - (orderableB.order || 0);
|
|
37
41
|
};
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* TODO: have to use class component here as unit test is relying on ref.root. Will refactor this whole file to functional component in future
|
|
45
|
+
* ticket: COLLAB-2317
|
|
46
|
+
*/
|
|
47
|
+
var EmojiPickerTabPanelInternal = /*#__PURE__*/function (_PureComponent) {
|
|
48
|
+
(0, _inherits2.default)(EmojiPickerTabPanelInternal, _PureComponent);
|
|
49
|
+
var _super = _createSuper(EmojiPickerTabPanelInternal);
|
|
50
|
+
function EmojiPickerTabPanelInternal() {
|
|
51
|
+
(0, _classCallCheck2.default)(this, EmojiPickerTabPanelInternal);
|
|
52
|
+
return _super.apply(this, arguments);
|
|
53
|
+
}
|
|
54
|
+
(0, _createClass2.default)(EmojiPickerTabPanelInternal, [{
|
|
55
|
+
key: "render",
|
|
56
|
+
value: function render() {
|
|
57
|
+
var _this$props = this.props,
|
|
58
|
+
formatMessage = _this$props.intl.formatMessage,
|
|
59
|
+
children = _this$props.children,
|
|
60
|
+
showSearchResults = _this$props.showSearchResults;
|
|
61
|
+
return (0, _react2.jsx)("div", {
|
|
62
|
+
ref: "root",
|
|
63
|
+
css: _styles.emojiPickerList,
|
|
64
|
+
"data-testid": RENDER_EMOJI_PICKER_LIST_TESTID,
|
|
65
|
+
id: RENDER_EMOJI_PICKER_LIST_TESTID,
|
|
66
|
+
role: "tabpanel",
|
|
67
|
+
"aria-label": formatMessage(_i18n.messages.emojiPickerListPanel)
|
|
68
|
+
}, (0, _react2.jsx)(_visuallyHidden.default, {
|
|
69
|
+
id: "emoji-picker-table-description"
|
|
70
|
+
}, formatMessage(_i18n.messages.emojiPickerGrid, {
|
|
71
|
+
showSearchResults: showSearchResults
|
|
72
|
+
})), children);
|
|
73
|
+
}
|
|
74
|
+
}]);
|
|
75
|
+
return EmojiPickerTabPanelInternal;
|
|
76
|
+
}(_react.PureComponent);
|
|
77
|
+
var EmojiPickerTabPanel = (0, _reactIntlNext.injectIntl)(EmojiPickerTabPanelInternal);
|
|
78
|
+
var EmojiPickerVirtualListInternal = /*#__PURE__*/function (_PureComponent2) {
|
|
79
|
+
(0, _inherits2.default)(EmojiPickerVirtualListInternal, _PureComponent2);
|
|
80
|
+
var _super2 = _createSuper(EmojiPickerVirtualListInternal);
|
|
81
|
+
function EmojiPickerVirtualListInternal(_props) {
|
|
42
82
|
var _this;
|
|
43
|
-
(0, _classCallCheck2.default)(this,
|
|
44
|
-
_this =
|
|
83
|
+
(0, _classCallCheck2.default)(this, EmojiPickerVirtualListInternal);
|
|
84
|
+
_this = _super2.call(this, _props);
|
|
45
85
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "virtualItems", []);
|
|
46
86
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "categoryTracker", new _CategoryTracker.default());
|
|
47
87
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "listRef", /*#__PURE__*/(0, _react.createRef)());
|
|
48
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "
|
|
88
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onEmojiActive", function (emojiId, emoji) {
|
|
49
89
|
if (_this.props.onEmojiActive) {
|
|
50
90
|
_this.props.onEmojiActive(emojiId, emoji);
|
|
51
91
|
}
|
|
@@ -56,9 +96,9 @@ var EmojiPickerVirtualList = /*#__PURE__*/function (_PureComponent) {
|
|
|
56
96
|
}
|
|
57
97
|
});
|
|
58
98
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "buildVirtualItemFromGroup", function (group) {
|
|
59
|
-
var _this$
|
|
60
|
-
onEmojiSelected = _this$
|
|
61
|
-
onEmojiDelete = _this$
|
|
99
|
+
var _this$props2 = _this.props,
|
|
100
|
+
onEmojiSelected = _this$props2.onEmojiSelected,
|
|
101
|
+
onEmojiDelete = _this$props2.onEmojiDelete;
|
|
62
102
|
var items = [];
|
|
63
103
|
items.push(new _EmojiPickerVirtualItems.CategoryHeadingItem({
|
|
64
104
|
id: group.category,
|
|
@@ -70,12 +110,14 @@ var EmojiPickerVirtualList = /*#__PURE__*/function (_PureComponent) {
|
|
|
70
110
|
var rowEmojis = remainingEmojis.slice(0, _EmojiPickerSizes.sizes.emojiPerRow);
|
|
71
111
|
remainingEmojis = remainingEmojis.slice(_EmojiPickerSizes.sizes.emojiPerRow);
|
|
72
112
|
items.push(new _EmojiPickerVirtualItems.EmojisRowItem({
|
|
113
|
+
category: group.category,
|
|
73
114
|
emojis: rowEmojis,
|
|
74
115
|
title: group.title,
|
|
75
116
|
showDelete: group.title === _constants.userCustomTitle,
|
|
76
117
|
onSelected: onEmojiSelected,
|
|
77
118
|
onDelete: onEmojiDelete,
|
|
78
|
-
onMouseMove: _this.
|
|
119
|
+
onMouseMove: _this.onEmojiActive,
|
|
120
|
+
onFocus: _this.onEmojiActive
|
|
79
121
|
}));
|
|
80
122
|
}
|
|
81
123
|
return items;
|
|
@@ -93,7 +135,7 @@ var EmojiPickerVirtualList = /*#__PURE__*/function (_PureComponent) {
|
|
|
93
135
|
var search = _categories.CategoryDescriptionMap.SEARCH;
|
|
94
136
|
// Only a single "result" category
|
|
95
137
|
items = [].concat((0, _toConsumableArray2.default)(items), (0, _toConsumableArray2.default)(_this.buildVirtualItemFromGroup({
|
|
96
|
-
category:
|
|
138
|
+
category: _constants.searchCategory,
|
|
97
139
|
title: search.name,
|
|
98
140
|
emojis: emojis,
|
|
99
141
|
order: search.order
|
|
@@ -107,6 +149,12 @@ var EmojiPickerVirtualList = /*#__PURE__*/function (_PureComponent) {
|
|
|
107
149
|
// by not passing it to irrelevant groups
|
|
108
150
|
_this.categoryTracker.add(group.emojis[0].category, items.length);
|
|
109
151
|
items = [].concat((0, _toConsumableArray2.default)(items), (0, _toConsumableArray2.default)(_this.buildVirtualItemFromGroup(group)));
|
|
152
|
+
if (group.category === _constants.yourUploadsCategory) {
|
|
153
|
+
_this.lastYourUploadsRow = items.length - 1;
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
_this.onRowsRendered({
|
|
157
|
+
startIndex: 0
|
|
110
158
|
});
|
|
111
159
|
}
|
|
112
160
|
}
|
|
@@ -130,7 +178,7 @@ var EmojiPickerVirtualList = /*#__PURE__*/function (_PureComponent) {
|
|
|
130
178
|
_this.addToCategoryMap(categoryToGroupMap, emoji, emoji.category);
|
|
131
179
|
// separate user emojis
|
|
132
180
|
if (emoji.category === _constants.customCategory && currentUser && emoji.creatorUserId === currentUser.id) {
|
|
133
|
-
_this.addToCategoryMap(categoryToGroupMap, emoji,
|
|
181
|
+
_this.addToCategoryMap(categoryToGroupMap, emoji, _constants.yourUploadsCategory);
|
|
134
182
|
}
|
|
135
183
|
return categoryToGroupMap;
|
|
136
184
|
};
|
|
@@ -140,19 +188,45 @@ var EmojiPickerVirtualList = /*#__PURE__*/function (_PureComponent) {
|
|
|
140
188
|
_this.allEmojiGroups = Object.keys(categoryToGroupMap).map(function (key) {
|
|
141
189
|
return categoryToGroupMap[key];
|
|
142
190
|
}).map(function (group) {
|
|
143
|
-
if (group.category !==
|
|
191
|
+
if (group.category !== _constants.frequentCategory) {
|
|
144
192
|
group.emojis.sort(byOrder);
|
|
145
193
|
}
|
|
146
194
|
return group;
|
|
147
195
|
}).sort(byOrder);
|
|
148
196
|
});
|
|
149
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "
|
|
197
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "findCategoryToActivate", function (row) {
|
|
198
|
+
var category = null;
|
|
199
|
+
if (row instanceof _EmojiPickerVirtualItems.CategoryHeadingItem) {
|
|
200
|
+
category = row.props.id;
|
|
201
|
+
} else if (row instanceof _EmojiPickerVirtualItems.EmojisRowItem) {
|
|
202
|
+
category = row.props.category;
|
|
203
|
+
}
|
|
204
|
+
// your uploads is rendered, take it as upload category, so could be highlighted in category selector
|
|
205
|
+
if (category === _constants.yourUploadsCategory) {
|
|
206
|
+
return _constants.customCategory;
|
|
207
|
+
// search results is rendered, return null so won't be highlighted for category selector
|
|
208
|
+
} else if (category === _constants.searchCategory) {
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
return category;
|
|
212
|
+
});
|
|
213
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onRowsRendered", function (indexes) {
|
|
150
214
|
var startIndex = indexes.startIndex;
|
|
215
|
+
var rowItem = _this.virtualItems[startIndex];
|
|
216
|
+
var list = _this.listRef.current;
|
|
217
|
+
|
|
218
|
+
// update tabIndex manually, startIndex is not 0 based here
|
|
219
|
+
if (rowItem instanceof _EmojiPickerVirtualItems.CategoryHeadingItem) {
|
|
220
|
+
// if top of row rendered is category heading, update tabIndex for the next emoji row
|
|
221
|
+
list === null || list === void 0 ? void 0 : list.updateFocusIndex(startIndex + 1);
|
|
222
|
+
} else if (rowItem instanceof _EmojiPickerVirtualItems.EmojisRowItem) {
|
|
223
|
+
// if top of row rendered is emoji row, update it's tabIndex.
|
|
224
|
+
list === null || list === void 0 ? void 0 : list.updateFocusIndex(startIndex);
|
|
225
|
+
}
|
|
151
226
|
if (!_this.props.query) {
|
|
152
227
|
// Calculate category in view - only relevant if categories shown, i.e. no query
|
|
153
|
-
var
|
|
154
|
-
|
|
155
|
-
if (currentCategory && _this.props.activeCategoryId !== currentCategory) {
|
|
228
|
+
var currentCategory = _this.findCategoryToActivate(rowItem);
|
|
229
|
+
if (currentCategory !== null && _this.props.activeCategoryId !== currentCategory) {
|
|
156
230
|
if (_this.props.onCategoryActivated) {
|
|
157
231
|
_this.props.onCategoryActivated(currentCategory);
|
|
158
232
|
}
|
|
@@ -166,11 +240,12 @@ var EmojiPickerVirtualList = /*#__PURE__*/function (_PureComponent) {
|
|
|
166
240
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderRow", function (context) {
|
|
167
241
|
return (0, _EmojiPickerVirtualItems.virtualItemRenderer)(_this.virtualItems, context);
|
|
168
242
|
});
|
|
243
|
+
_this.lastYourUploadsRow = 0;
|
|
169
244
|
_this.buildEmojiGroupedByCategory(_props.emojis, _props.currentUser);
|
|
170
245
|
_this.buildVirtualItems(_props, _this.state);
|
|
171
246
|
return _this;
|
|
172
247
|
}
|
|
173
|
-
(0, _createClass2.default)(
|
|
248
|
+
(0, _createClass2.default)(EmojiPickerVirtualListInternal, [{
|
|
174
249
|
key: "UNSAFE_componentWillUpdate",
|
|
175
250
|
value: function UNSAFE_componentWillUpdate(nextProps, nextState) {
|
|
176
251
|
if (this.props.emojis !== nextProps.emojis || this.props.selectedTone !== nextProps.selectedTone || this.props.loading !== nextProps.loading || this.props.query !== nextProps.query) {
|
|
@@ -207,33 +282,41 @@ var EmojiPickerVirtualList = /*#__PURE__*/function (_PureComponent) {
|
|
|
207
282
|
var _this$listRef$current;
|
|
208
283
|
(_this$listRef$current = this.listRef.current) === null || _this$listRef$current === void 0 ? void 0 : _this$listRef$current.scrollToRow(index);
|
|
209
284
|
}
|
|
285
|
+
}, {
|
|
286
|
+
key: "scrollToRecentlyUploaded",
|
|
287
|
+
value: function scrollToRecentlyUploaded() {
|
|
288
|
+
var row = this.lastYourUploadsRow;
|
|
289
|
+
if (row > 0) {
|
|
290
|
+
var _this$listRef$current2;
|
|
291
|
+
(_this$listRef$current2 = this.listRef.current) === null || _this$listRef$current2 === void 0 ? void 0 : _this$listRef$current2.scrollToRowAndFocusLastEmoji(this.lastYourUploadsRow);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
210
294
|
}, {
|
|
211
295
|
key: "render",
|
|
212
296
|
value: function render() {
|
|
213
|
-
var _this$
|
|
214
|
-
query = _this$
|
|
215
|
-
selectedTone = _this$
|
|
216
|
-
onToneSelected = _this$
|
|
217
|
-
onToneSelectorCancelled = _this$
|
|
218
|
-
toneEmoji = _this$
|
|
219
|
-
uploading = _this$
|
|
220
|
-
uploadEnabled = _this$
|
|
221
|
-
emojiToDelete = _this$
|
|
222
|
-
initialUploadName = _this$
|
|
223
|
-
uploadErrorMessage = _this$
|
|
224
|
-
onUploadCancelled = _this$
|
|
225
|
-
onUploadEmoji = _this$
|
|
226
|
-
onCloseDelete = _this$
|
|
227
|
-
onDeleteEmoji = _this$
|
|
228
|
-
onFileChooserClicked = _this$
|
|
229
|
-
onOpenUpload = _this$
|
|
230
|
-
_this$
|
|
231
|
-
size = _this$
|
|
297
|
+
var _this$props3 = this.props,
|
|
298
|
+
query = _this$props3.query,
|
|
299
|
+
selectedTone = _this$props3.selectedTone,
|
|
300
|
+
onToneSelected = _this$props3.onToneSelected,
|
|
301
|
+
onToneSelectorCancelled = _this$props3.onToneSelectorCancelled,
|
|
302
|
+
toneEmoji = _this$props3.toneEmoji,
|
|
303
|
+
uploading = _this$props3.uploading,
|
|
304
|
+
uploadEnabled = _this$props3.uploadEnabled,
|
|
305
|
+
emojiToDelete = _this$props3.emojiToDelete,
|
|
306
|
+
initialUploadName = _this$props3.initialUploadName,
|
|
307
|
+
uploadErrorMessage = _this$props3.uploadErrorMessage,
|
|
308
|
+
onUploadCancelled = _this$props3.onUploadCancelled,
|
|
309
|
+
onUploadEmoji = _this$props3.onUploadEmoji,
|
|
310
|
+
onCloseDelete = _this$props3.onCloseDelete,
|
|
311
|
+
onDeleteEmoji = _this$props3.onDeleteEmoji,
|
|
312
|
+
onFileChooserClicked = _this$props3.onFileChooserClicked,
|
|
313
|
+
onOpenUpload = _this$props3.onOpenUpload,
|
|
314
|
+
_this$props3$size = _this$props3.size,
|
|
315
|
+
size = _this$props3$size === void 0 ? _constants.defaultEmojiPickerSize : _this$props3$size,
|
|
316
|
+
emojis = _this$props3.emojis;
|
|
232
317
|
var virtualListHeight = _EmojiPickerSizes.sizes.listHeight + (0, _utils.emojiPickerHeightOffset)(size);
|
|
233
|
-
return (0, _react2.jsx)(
|
|
234
|
-
|
|
235
|
-
css: _styles.emojiPickerList,
|
|
236
|
-
"data-testid": RENDER_EMOJI_PICKER_LIST_TESTID
|
|
318
|
+
return (0, _react2.jsx)(EmojiPickerTabPanel, {
|
|
319
|
+
showSearchResults: !!query
|
|
237
320
|
}, (0, _react2.jsx)(_EmojiActions.default, {
|
|
238
321
|
selectedTone: selectedTone,
|
|
239
322
|
onToneSelected: onToneSelected,
|
|
@@ -251,8 +334,14 @@ var EmojiPickerVirtualList = /*#__PURE__*/function (_PureComponent) {
|
|
|
251
334
|
onFileChooserClicked: onFileChooserClicked,
|
|
252
335
|
onOpenUpload: onOpenUpload,
|
|
253
336
|
query: query,
|
|
254
|
-
onChange: this.onSearch
|
|
255
|
-
|
|
337
|
+
onChange: this.onSearch,
|
|
338
|
+
resultsCount: emojis.length
|
|
339
|
+
}), (0, _react2.jsx)(_EmojiPickerListContext.EmojiPickerListContextProvider, {
|
|
340
|
+
initialEmojisFocus: {
|
|
341
|
+
rowIndex: 1,
|
|
342
|
+
columnIndex: 0
|
|
343
|
+
}
|
|
344
|
+
}, (0, _react2.jsx)(_VirtualList.VirtualList, {
|
|
256
345
|
ref: this.listRef,
|
|
257
346
|
height: virtualListHeight,
|
|
258
347
|
overscanRowCount: 10,
|
|
@@ -261,14 +350,14 @@ var EmojiPickerVirtualList = /*#__PURE__*/function (_PureComponent) {
|
|
|
261
350
|
rowRenderer: this.renderRow,
|
|
262
351
|
scrollToAlignment: "start",
|
|
263
352
|
width: _EmojiPickerSizes.sizes.listWidth,
|
|
264
|
-
onRowsRendered: this.
|
|
265
|
-
}));
|
|
353
|
+
onRowsRendered: this.onRowsRendered
|
|
354
|
+
})));
|
|
266
355
|
}
|
|
267
356
|
}]);
|
|
268
|
-
return
|
|
357
|
+
return EmojiPickerVirtualListInternal;
|
|
269
358
|
}(_react.PureComponent);
|
|
270
|
-
exports.default =
|
|
271
|
-
(0, _defineProperty2.default)(
|
|
359
|
+
exports.default = EmojiPickerVirtualListInternal;
|
|
360
|
+
(0, _defineProperty2.default)(EmojiPickerVirtualListInternal, "defaultProps", {
|
|
272
361
|
onEmojiSelected: function onEmojiSelected() {},
|
|
273
362
|
onEmojiActive: function onEmojiActive() {},
|
|
274
363
|
onEmojiDelete: function onEmojiDelete() {},
|
|
@@ -11,6 +11,7 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
11
11
|
var _react2 = require("@emotion/react");
|
|
12
12
|
var _textfield = _interopRequireDefault(require("@atlaskit/textfield"));
|
|
13
13
|
var _search = _interopRequireDefault(require("@atlaskit/icon/glyph/search"));
|
|
14
|
+
var _visuallyHidden = _interopRequireDefault(require("@atlaskit/visually-hidden"));
|
|
14
15
|
var _reactIntlNext = require("react-intl-next");
|
|
15
16
|
var _i18n = require("../i18n");
|
|
16
17
|
var _styles = require("./styles");
|
|
@@ -25,14 +26,20 @@ exports.emojiPickerSearchTestId = emojiPickerSearchTestId;
|
|
|
25
26
|
var EmojiPickerListSearch = function EmojiPickerListSearch(props) {
|
|
26
27
|
var style = props.style,
|
|
27
28
|
query = props.query,
|
|
29
|
+
resultsCount = props.resultsCount,
|
|
28
30
|
onChange = props.onChange;
|
|
29
31
|
var textRef = (0, _react.useRef)(null);
|
|
32
|
+
var _useState = (0, _react.useState)(false),
|
|
33
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
34
|
+
dirty = _useState2[0],
|
|
35
|
+
setDirty = _useState2[1];
|
|
30
36
|
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
31
37
|
formatMessage = _useIntl.formatMessage;
|
|
32
38
|
|
|
33
39
|
// Debounce callback
|
|
34
40
|
var _useDebouncedCallback = (0, _useDebounce.useDebouncedCallback)(function (value) {
|
|
35
41
|
onChange(value);
|
|
42
|
+
setDirty(true);
|
|
36
43
|
},
|
|
37
44
|
// delay in ms
|
|
38
45
|
_constants.EMOJI_SEARCH_DEBOUNCE),
|
|
@@ -52,7 +59,13 @@ var EmojiPickerListSearch = function EmojiPickerListSearch(props) {
|
|
|
52
59
|
return (0, _react2.jsx)("div", {
|
|
53
60
|
css: _styles.pickerSearch,
|
|
54
61
|
style: style
|
|
55
|
-
}, (0, _react2.jsx)(
|
|
62
|
+
}, (0, _react2.jsx)(_visuallyHidden.default, {
|
|
63
|
+
id: "emoji-search-results-status",
|
|
64
|
+
role: "status"
|
|
65
|
+
}, dirty && query === '' && formatMessage(_i18n.messages.searchResultsStatusSeeAll), query !== '' && formatMessage(_i18n.messages.searchResultsStatus, {
|
|
66
|
+
count: resultsCount
|
|
67
|
+
})), (0, _react2.jsx)(_textfield.default, {
|
|
68
|
+
role: "searchbox",
|
|
56
69
|
"aria-label": formatMessage(_i18n.messages.searchLabel),
|
|
57
70
|
css: _styles.input,
|
|
58
71
|
autoComplete: "off",
|
|
@@ -60,14 +73,14 @@ var EmojiPickerListSearch = function EmojiPickerListSearch(props) {
|
|
|
60
73
|
placeholder: "".concat(formatMessage(_i18n.messages.searchPlaceholder), "..."),
|
|
61
74
|
defaultValue: query || '',
|
|
62
75
|
onChange: handleOnChange,
|
|
63
|
-
isCompact: true,
|
|
64
76
|
elemBeforeInput: (0, _react2.jsx)("span", {
|
|
65
77
|
css: _styles.searchIcon
|
|
66
78
|
}, (0, _react2.jsx)(_search.default, {
|
|
67
79
|
label: ""
|
|
68
80
|
})),
|
|
69
81
|
testId: emojiPickerSearchTestId,
|
|
70
|
-
ref: textRef
|
|
82
|
+
ref: textRef,
|
|
83
|
+
isCompact: true
|
|
71
84
|
}));
|
|
72
85
|
};
|
|
73
86
|
exports.EmojiPickerListSearch = EmojiPickerListSearch;
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.virtualItemRenderer = exports.LoadingItem = exports.EmojisRowItem = exports.CategoryHeadingItem = exports.AbstractItem = void 0;
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
8
9
|
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
9
10
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
10
11
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
@@ -33,8 +34,10 @@ var EmojisRowItem = /*#__PURE__*/function (_AbstractItem) {
|
|
|
33
34
|
var _this;
|
|
34
35
|
(0, _classCallCheck2.default)(this, EmojisRowItem);
|
|
35
36
|
_this = _super.call(this, props, _EmojiPickerSizes.sizes.emojiRowHeight);
|
|
36
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderItem", function () {
|
|
37
|
-
return (0, _react.jsx)(_EmojiPickerEmojiRow.default, _this.props
|
|
37
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderItem", function (context) {
|
|
38
|
+
return (0, _react.jsx)(_EmojiPickerEmojiRow.default, (0, _extends2.default)({}, _this.props, {
|
|
39
|
+
virtualItemContext: context
|
|
40
|
+
}));
|
|
38
41
|
});
|
|
39
42
|
return _this;
|
|
40
43
|
}
|