@atlaskit/emoji 69.0.1 → 69.0.3
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 +17 -0
- package/afm-cc/tsconfig.json +3 -0
- package/afm-jira/tsconfig.json +3 -0
- package/afm-post-office/tsconfig.json +3 -0
- package/dist/cjs/components/compiled/common/EmojiActions.js +1 -1
- package/dist/cjs/components/compiled/common/EmojiPreviewComponent.compiled.css +0 -1
- package/dist/cjs/components/compiled/common/EmojiPreviewComponent.js +1 -1
- package/dist/cjs/components/compiled/picker/CategorySelector.compiled.css +24 -0
- package/dist/cjs/components/compiled/picker/CategorySelector.js +161 -0
- package/dist/cjs/components/compiled/picker/EmojiPicker.compiled.css +12 -0
- package/dist/cjs/components/compiled/picker/EmojiPicker.js +109 -0
- package/dist/cjs/components/compiled/picker/EmojiPickerCategoryHeading.compiled.css +9 -0
- package/dist/cjs/components/compiled/picker/EmojiPickerCategoryHeading.js +43 -0
- package/dist/cjs/components/compiled/picker/EmojiPickerComponent.compiled.css +20 -0
- package/dist/cjs/components/compiled/picker/EmojiPickerComponent.js +574 -0
- package/dist/cjs/components/compiled/picker/EmojiPickerEmojiRow.compiled.css +35 -0
- package/dist/cjs/components/compiled/picker/EmojiPickerEmojiRow.js +76 -0
- package/dist/cjs/components/compiled/picker/EmojiPickerFooter.compiled.css +5 -0
- package/dist/cjs/components/compiled/picker/EmojiPickerFooter.js +33 -0
- package/dist/cjs/components/compiled/picker/EmojiPickerListSearch.compiled.css +23 -0
- package/dist/cjs/components/compiled/picker/EmojiPickerListSearch.js +93 -0
- package/dist/cjs/components/compiled/picker/EmojiPickerTabPanel.compiled.css +6 -0
- package/dist/cjs/components/compiled/picker/EmojiPickerTabPanel.js +60 -0
- package/dist/cjs/components/compiled/picker/EmojiPickerVirtualItems.compiled.css +8 -0
- package/dist/cjs/components/compiled/picker/EmojiPickerVirtualItems.js +86 -0
- package/dist/cjs/components/compiled/picker/VirtualList.compiled.css +10 -0
- package/dist/cjs/components/compiled/picker/VirtualList.js +303 -0
- package/dist/cjs/components/picker/EmojiPickerFooter.js +0 -2
- package/dist/cjs/components/picker/EmojiPickerList.js +219 -145
- package/dist/cjs/components/picker/EmojiPickerTabPanel.js +67 -0
- package/dist/cjs/components/picker/styles.js +1 -10
- package/dist/cjs/index.js +4 -6
- package/dist/cjs/picker.js +5 -7
- package/dist/cjs/util/analytics/analytics.js +1 -1
- package/dist/es2019/components/compiled/common/EmojiActions.js +1 -1
- package/dist/es2019/components/compiled/common/EmojiPreviewComponent.compiled.css +0 -1
- package/dist/es2019/components/compiled/common/EmojiPreviewComponent.js +1 -1
- package/dist/es2019/components/compiled/picker/CategorySelector.compiled.css +24 -0
- package/dist/es2019/components/compiled/picker/CategorySelector.js +136 -0
- package/dist/es2019/components/compiled/picker/EmojiPicker.compiled.css +12 -0
- package/dist/es2019/components/compiled/picker/EmojiPicker.js +67 -0
- package/dist/es2019/components/compiled/picker/EmojiPickerCategoryHeading.compiled.css +9 -0
- package/dist/es2019/components/compiled/picker/EmojiPickerCategoryHeading.js +30 -0
- package/dist/es2019/components/compiled/picker/EmojiPickerComponent.compiled.css +19 -0
- package/dist/es2019/components/compiled/picker/EmojiPickerComponent.js +506 -0
- package/dist/es2019/components/compiled/picker/EmojiPickerEmojiRow.compiled.css +35 -0
- package/dist/es2019/components/compiled/picker/EmojiPickerEmojiRow.js +69 -0
- package/dist/es2019/components/compiled/picker/EmojiPickerFooter.compiled.css +5 -0
- package/dist/es2019/components/compiled/picker/EmojiPickerFooter.js +19 -0
- package/dist/es2019/components/compiled/picker/EmojiPickerListSearch.compiled.css +23 -0
- package/dist/es2019/components/compiled/picker/EmojiPickerListSearch.js +79 -0
- package/dist/es2019/components/compiled/picker/EmojiPickerTabPanel.compiled.css +6 -0
- package/dist/es2019/components/compiled/picker/EmojiPickerTabPanel.js +39 -0
- package/dist/es2019/components/compiled/picker/EmojiPickerVirtualItems.compiled.css +8 -0
- package/dist/es2019/components/compiled/picker/EmojiPickerVirtualItems.js +51 -0
- package/dist/es2019/components/compiled/picker/VirtualList.compiled.css +10 -0
- package/dist/es2019/components/compiled/picker/VirtualList.js +288 -0
- package/dist/es2019/components/picker/EmojiPickerFooter.js +1 -1
- package/dist/es2019/components/picker/EmojiPickerList.js +186 -114
- package/dist/es2019/components/picker/EmojiPickerTabPanel.js +48 -0
- package/dist/es2019/components/picker/styles.js +0 -9
- package/dist/es2019/index.js +2 -1
- package/dist/es2019/picker.js +5 -1
- package/dist/es2019/util/analytics/analytics.js +1 -1
- package/dist/esm/components/compiled/common/EmojiActions.js +1 -1
- package/dist/esm/components/compiled/common/EmojiPreviewComponent.compiled.css +0 -1
- package/dist/esm/components/compiled/common/EmojiPreviewComponent.js +1 -1
- package/dist/esm/components/compiled/picker/CategorySelector.compiled.css +24 -0
- package/dist/esm/components/compiled/picker/CategorySelector.js +151 -0
- package/dist/esm/components/compiled/picker/EmojiPicker.compiled.css +12 -0
- package/dist/esm/components/compiled/picker/EmojiPicker.js +97 -0
- package/dist/esm/components/compiled/picker/EmojiPickerCategoryHeading.compiled.css +9 -0
- package/dist/esm/components/compiled/picker/EmojiPickerCategoryHeading.js +34 -0
- package/dist/esm/components/compiled/picker/EmojiPickerComponent.compiled.css +20 -0
- package/dist/esm/components/compiled/picker/EmojiPickerComponent.js +564 -0
- package/dist/esm/components/compiled/picker/EmojiPickerEmojiRow.compiled.css +35 -0
- package/dist/esm/components/compiled/picker/EmojiPickerEmojiRow.js +66 -0
- package/dist/esm/components/compiled/picker/EmojiPickerFooter.compiled.css +5 -0
- package/dist/esm/components/compiled/picker/EmojiPickerFooter.js +24 -0
- package/dist/esm/components/compiled/picker/EmojiPickerListSearch.compiled.css +23 -0
- package/dist/esm/components/compiled/picker/EmojiPickerListSearch.js +83 -0
- package/dist/esm/components/compiled/picker/EmojiPickerTabPanel.compiled.css +6 -0
- package/dist/esm/components/compiled/picker/EmojiPickerTabPanel.js +50 -0
- package/dist/esm/components/compiled/picker/EmojiPickerVirtualItems.compiled.css +8 -0
- package/dist/esm/components/compiled/picker/EmojiPickerVirtualItems.js +76 -0
- package/dist/esm/components/compiled/picker/VirtualList.compiled.css +10 -0
- package/dist/esm/components/compiled/picker/VirtualList.js +293 -0
- package/dist/esm/components/picker/EmojiPickerFooter.js +1 -1
- package/dist/esm/components/picker/EmojiPickerList.js +219 -147
- package/dist/esm/components/picker/EmojiPickerTabPanel.js +59 -0
- package/dist/esm/components/picker/styles.js +0 -9
- package/dist/esm/index.js +2 -1
- package/dist/esm/picker.js +5 -1
- package/dist/esm/util/analytics/analytics.js +1 -1
- package/dist/types/components/compiled/picker/CategorySelector.d.ts +17 -0
- package/dist/types/components/compiled/picker/EmojiPicker.d.ts +44 -0
- package/dist/types/components/compiled/picker/EmojiPickerCategoryHeading.d.ts +13 -0
- package/dist/types/components/compiled/picker/EmojiPickerComponent.d.ts +24 -0
- package/dist/types/components/compiled/picker/EmojiPickerEmojiRow.d.ts +17 -0
- package/dist/types/components/compiled/picker/EmojiPickerFooter.d.ts +8 -0
- package/dist/types/components/compiled/picker/EmojiPickerListSearch.d.ts +11 -0
- package/dist/types/components/compiled/picker/EmojiPickerTabPanel.d.ts +21 -0
- package/dist/types/components/compiled/picker/EmojiPickerVirtualItems.d.ts +35 -0
- package/dist/types/components/compiled/picker/VirtualList.d.ts +42 -0
- package/dist/types/components/picker/EmojiPickerList.d.ts +1 -6
- package/dist/types/components/picker/EmojiPickerTabPanel.d.ts +21 -0
- package/dist/types/components/picker/styles.d.ts +0 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/picker.d.ts +3 -1
- package/dist/types-ts4.5/components/compiled/picker/CategorySelector.d.ts +17 -0
- package/dist/types-ts4.5/components/compiled/picker/EmojiPicker.d.ts +44 -0
- package/dist/types-ts4.5/components/compiled/picker/EmojiPickerCategoryHeading.d.ts +13 -0
- package/dist/types-ts4.5/components/compiled/picker/EmojiPickerComponent.d.ts +24 -0
- package/dist/types-ts4.5/components/compiled/picker/EmojiPickerEmojiRow.d.ts +17 -0
- package/dist/types-ts4.5/components/compiled/picker/EmojiPickerFooter.d.ts +8 -0
- package/dist/types-ts4.5/components/compiled/picker/EmojiPickerListSearch.d.ts +11 -0
- package/dist/types-ts4.5/components/compiled/picker/EmojiPickerTabPanel.d.ts +21 -0
- package/dist/types-ts4.5/components/compiled/picker/EmojiPickerVirtualItems.d.ts +35 -0
- package/dist/types-ts4.5/components/compiled/picker/VirtualList.d.ts +42 -0
- package/dist/types-ts4.5/components/picker/EmojiPickerList.d.ts +1 -6
- package/dist/types-ts4.5/components/picker/EmojiPickerTabPanel.d.ts +21 -0
- package/dist/types-ts4.5/components/picker/styles.d.ts +0 -1
- package/dist/types-ts4.5/index.d.ts +2 -1
- package/dist/types-ts4.5/picker.d.ts +3 -1
- package/package.json +4 -3
|
@@ -0,0 +1,574 @@
|
|
|
1
|
+
/* EmojiPickerComponent.tsx generated by @compiled/babel-plugin v0.36.1 */
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
Object.defineProperty(exports, "__esModule", {
|
|
7
|
+
value: true
|
|
8
|
+
});
|
|
9
|
+
exports.default = void 0;
|
|
10
|
+
require("./EmojiPickerComponent.compiled.css");
|
|
11
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
+
var React = _react;
|
|
13
|
+
var _runtime = require("@compiled/react/runtime");
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
16
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
17
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
18
|
+
var _reactDom = require("react-dom");
|
|
19
|
+
var _reactIntlNext = require("react-intl-next");
|
|
20
|
+
var _EmojiRepository = require("../../../api/EmojiRepository");
|
|
21
|
+
var _EmojiResource = require("../../../api/EmojiResource");
|
|
22
|
+
var _constants = require("../../../util/constants");
|
|
23
|
+
var _typeHelpers = require("../../../util/type-helpers");
|
|
24
|
+
var _types = require("../../../types");
|
|
25
|
+
var _filters = require("../../../util/filters");
|
|
26
|
+
var _UploadEmoji = require("../../common/UploadEmoji");
|
|
27
|
+
var _RecordSelectionDefault = require("../../common/RecordSelectionDefault");
|
|
28
|
+
var _CategorySelector = _interopRequireDefault(require("./CategorySelector"));
|
|
29
|
+
var _EmojiPickerFooter = _interopRequireDefault(require("./EmojiPickerFooter"));
|
|
30
|
+
var _EmojiPickerList = require("../../picker/EmojiPickerList");
|
|
31
|
+
var _analytics = require("../../../util/analytics");
|
|
32
|
+
var _useEmoji2 = require("../../../hooks/useEmoji");
|
|
33
|
+
var _useIsMounted = require("../../../hooks/useIsMounted");
|
|
34
|
+
var _i18n = require("../../i18n");
|
|
35
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
36
|
+
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); }
|
|
37
|
+
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; }
|
|
38
|
+
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; }
|
|
39
|
+
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; }
|
|
40
|
+
var emojiPickerBoxShadow = "var(--ds-shadow-overlay, 0 3px 6px rgba(0, 0, 0, 0.2))";
|
|
41
|
+
var emojiPickerHeight = 295;
|
|
42
|
+
var emojiPickerHeightWithPreview = 349; // emojiPickerHeight + emojiPickerPreviewHeight;
|
|
43
|
+
var emojiPickerWidth = 350;
|
|
44
|
+
var emojiPickerMinHeight = 260;
|
|
45
|
+
var heightOffset = 80;
|
|
46
|
+
var emojiPicker = null;
|
|
47
|
+
var withPreviewHeight = {
|
|
48
|
+
small: "_4t3ivixp _1tkegx0z",
|
|
49
|
+
medium: "_4t3i2300 _1tke5x59",
|
|
50
|
+
large: "_4t3ixt2k _1tke1pna"
|
|
51
|
+
};
|
|
52
|
+
var withoutPreviewHeight = {
|
|
53
|
+
small: "_4t3iaq3k _1tkegx0z",
|
|
54
|
+
medium: "_4t3iixjv _1tke5x59",
|
|
55
|
+
large: "_4t3i1ckg _1tke1pna"
|
|
56
|
+
};
|
|
57
|
+
var FREQUENTLY_USED_MAX = 16;
|
|
58
|
+
var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
59
|
+
var onSelection = _ref.onSelection,
|
|
60
|
+
onPickerRef = _ref.onPickerRef,
|
|
61
|
+
hideToneSelector = _ref.hideToneSelector,
|
|
62
|
+
createAnalyticsEvent = _ref.createAnalyticsEvent,
|
|
63
|
+
_ref$size = _ref.size,
|
|
64
|
+
size = _ref$size === void 0 ? _constants.defaultEmojiPickerSize : _ref$size;
|
|
65
|
+
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
66
|
+
formatMessage = _useIntl.formatMessage;
|
|
67
|
+
var _useEmoji = (0, _useEmoji2.useEmoji)(),
|
|
68
|
+
emojiProvider = _useEmoji.emojiProvider,
|
|
69
|
+
isUploadSupported = _useEmoji.isUploadSupported;
|
|
70
|
+
var _useState = (0, _react.useState)([]),
|
|
71
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
72
|
+
filteredEmojis = _useState2[0],
|
|
73
|
+
setFilteredEmojis = _useState2[1];
|
|
74
|
+
var _useState3 = (0, _react.useState)([]),
|
|
75
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
76
|
+
searchEmojis = _useState4[0],
|
|
77
|
+
setSearchEmojis = _useState4[1];
|
|
78
|
+
var _useState5 = (0, _react.useState)([]),
|
|
79
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
80
|
+
frequentlyUsedEmojis = _useState6[0],
|
|
81
|
+
setFrequentlyUsedEmojis = _useState6[1];
|
|
82
|
+
var _useState7 = (0, _react.useState)(''),
|
|
83
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
84
|
+
query = _useState8[0],
|
|
85
|
+
setQuery = _useState8[1];
|
|
86
|
+
var _useState9 = (0, _react.useState)([]),
|
|
87
|
+
_useState10 = (0, _slicedToArray2.default)(_useState9, 2),
|
|
88
|
+
dynamicCategories = _useState10[0],
|
|
89
|
+
setDynamicCategories = _useState10[1];
|
|
90
|
+
var _useState11 = (0, _react.useState)(!hideToneSelector ? emojiProvider.getSelectedTone() : undefined),
|
|
91
|
+
_useState12 = (0, _slicedToArray2.default)(_useState11, 2),
|
|
92
|
+
selectedTone = _useState12[0],
|
|
93
|
+
setSelectedTone = _useState12[1];
|
|
94
|
+
var _useState13 = (0, _react.useState)(true),
|
|
95
|
+
_useState14 = (0, _slicedToArray2.default)(_useState13, 2),
|
|
96
|
+
loading = _useState14[0],
|
|
97
|
+
setLoading = _useState14[1];
|
|
98
|
+
var _useState15 = (0, _react.useState)(false),
|
|
99
|
+
_useState16 = (0, _slicedToArray2.default)(_useState15, 2),
|
|
100
|
+
uploading = _useState16[0],
|
|
101
|
+
setUploading = _useState16[1];
|
|
102
|
+
var _useState17 = (0, _react.useState)(),
|
|
103
|
+
_useState18 = (0, _slicedToArray2.default)(_useState17, 2),
|
|
104
|
+
selectedEmoji = _useState18[0],
|
|
105
|
+
setSelectedEmoji = _useState18[1];
|
|
106
|
+
var _useState19 = (0, _react.useState)(null),
|
|
107
|
+
_useState20 = (0, _slicedToArray2.default)(_useState19, 2),
|
|
108
|
+
activeCategory = _useState20[0],
|
|
109
|
+
setActiveCategory = _useState20[1];
|
|
110
|
+
var _useState21 = (0, _react.useState)(false),
|
|
111
|
+
_useState22 = (0, _slicedToArray2.default)(_useState21, 2),
|
|
112
|
+
disableCategories = _useState22[0],
|
|
113
|
+
setDisableCategories = _useState22[1];
|
|
114
|
+
var _useState23 = (0, _react.useState)(),
|
|
115
|
+
_useState24 = (0, _slicedToArray2.default)(_useState23, 2),
|
|
116
|
+
uploadErrorMessage = _useState24[0],
|
|
117
|
+
setUploadErrorMessage = _useState24[1];
|
|
118
|
+
var _useState25 = (0, _react.useState)(),
|
|
119
|
+
_useState26 = (0, _slicedToArray2.default)(_useState25, 2),
|
|
120
|
+
emojiToDelete = _useState26[0],
|
|
121
|
+
setEmojiToDelete = _useState26[1];
|
|
122
|
+
var _useState27 = (0, _react.useState)(),
|
|
123
|
+
_useState28 = (0, _slicedToArray2.default)(_useState27, 2),
|
|
124
|
+
toneEmoji = _useState28[0],
|
|
125
|
+
setToneEmoji = _useState28[1];
|
|
126
|
+
var emojiPickerList = (0, _react.useMemo)(function () {
|
|
127
|
+
return (0, _platformFeatureFlags.fg)('platform_editor_react18_elements_emoji') ? /*#__PURE__*/(0, _react.createRef)() : /*#__PURE__*/(0, _react.createRef)();
|
|
128
|
+
}, []);
|
|
129
|
+
var openTime = (0, _react.useRef)(0);
|
|
130
|
+
var isMounting = (0, _react.useRef)(true);
|
|
131
|
+
var previousEmojiProvider = (0, _react.useRef)(emojiProvider);
|
|
132
|
+
var currentUser = (0, _react.useMemo)(function () {
|
|
133
|
+
return emojiProvider.getCurrentUser();
|
|
134
|
+
}, [emojiProvider]);
|
|
135
|
+
var isMounted = (0, _useIsMounted.useIsMounted)();
|
|
136
|
+
var fireAnalytics = (0, _react.useCallback)(function (analyticsEvent) {
|
|
137
|
+
if (createAnalyticsEvent) {
|
|
138
|
+
(0, _analytics.createAndFireEventInElementsChannel)(analyticsEvent)(createAnalyticsEvent);
|
|
139
|
+
}
|
|
140
|
+
}, [createAnalyticsEvent]);
|
|
141
|
+
var onEmojiActive = (0, _react.useCallback)(function (emojiId, emoji) {
|
|
142
|
+
if (!selectedEmoji || selectedEmoji.id !== (emojiId === null || emojiId === void 0 ? void 0 : emojiId.id)) {
|
|
143
|
+
setSelectedEmoji(emoji);
|
|
144
|
+
}
|
|
145
|
+
}, [selectedEmoji]);
|
|
146
|
+
var onCategoryActivated = (0, _react.useCallback)(function (category) {
|
|
147
|
+
if (activeCategory !== category) {
|
|
148
|
+
setActiveCategory(category);
|
|
149
|
+
}
|
|
150
|
+
}, [activeCategory]);
|
|
151
|
+
var calculateElapsedTime = function calculateElapsedTime() {
|
|
152
|
+
return Date.now() - openTime.current;
|
|
153
|
+
};
|
|
154
|
+
var onDynamicCategoryChange = (0, _react.useCallback)(function (categories) {
|
|
155
|
+
setDynamicCategories(categories);
|
|
156
|
+
}, []);
|
|
157
|
+
var onUploadCancelled = (0, _react.useCallback)(function () {
|
|
158
|
+
(0, _reactDom.unstable_batchedUpdates)(function () {
|
|
159
|
+
setUploading(false);
|
|
160
|
+
setUploadErrorMessage(undefined);
|
|
161
|
+
});
|
|
162
|
+
fireAnalytics((0, _analytics.uploadCancelButton)());
|
|
163
|
+
}, [fireAnalytics]);
|
|
164
|
+
var getDynamicCategories = (0, _react.useCallback)(function () {
|
|
165
|
+
if (!emojiProvider.calculateDynamicCategories) {
|
|
166
|
+
return Promise.resolve([]);
|
|
167
|
+
}
|
|
168
|
+
return emojiProvider.calculateDynamicCategories();
|
|
169
|
+
}, [emojiProvider]);
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Calculate and set the new state of the component in response to the list of emoji changing for some reason (a search has returned
|
|
173
|
+
* or the frequently used emoji have updated.)
|
|
174
|
+
*/
|
|
175
|
+
var setStateAfterEmojiChange = (0, _react.useCallback)(function (_ref2) {
|
|
176
|
+
var searchQuery = _ref2.searchQuery,
|
|
177
|
+
emojiToRender = _ref2.emojiToRender,
|
|
178
|
+
searchEmoji = _ref2.searchEmoji,
|
|
179
|
+
frequentEmoji = _ref2.frequentEmoji;
|
|
180
|
+
// Only enable categories for full emoji list (non-search)
|
|
181
|
+
var disableCategories = !!searchQuery;
|
|
182
|
+
if (!disableCategories && emojiToRender && emojiToRender.length !== filteredEmojis.length) {
|
|
183
|
+
getDynamicCategories().then(function (categories) {
|
|
184
|
+
onDynamicCategoryChange(categories);
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
if (emojiToRender && !(0, _typeHelpers.containsEmojiId)(emojiToRender, selectedEmoji)) {
|
|
188
|
+
(0, _reactDom.unstable_batchedUpdates)(function () {
|
|
189
|
+
setSelectedEmoji(undefined);
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
(0, _reactDom.unstable_batchedUpdates)(function () {
|
|
193
|
+
if (emojiToRender) {
|
|
194
|
+
setFilteredEmojis(emojiToRender);
|
|
195
|
+
}
|
|
196
|
+
if (searchEmoji) {
|
|
197
|
+
setSearchEmojis(searchEmoji);
|
|
198
|
+
}
|
|
199
|
+
if (frequentEmoji) {
|
|
200
|
+
setFrequentlyUsedEmojis(frequentEmoji);
|
|
201
|
+
}
|
|
202
|
+
setLoading(false);
|
|
203
|
+
setDisableCategories(disableCategories);
|
|
204
|
+
});
|
|
205
|
+
}, [filteredEmojis.length, getDynamicCategories, onDynamicCategoryChange, selectedEmoji]);
|
|
206
|
+
var onFrequentEmojiResult = (0, _react.useCallback)(function (frequentEmoji) {
|
|
207
|
+
// change the category of each of the featured emoji
|
|
208
|
+
var recategorised = frequentEmoji.map(function (emoji) {
|
|
209
|
+
var clone = JSON.parse(JSON.stringify(emoji));
|
|
210
|
+
clone.category = _constants.frequentCategory;
|
|
211
|
+
return clone;
|
|
212
|
+
});
|
|
213
|
+
setStateAfterEmojiChange({
|
|
214
|
+
frequentEmoji: recategorised
|
|
215
|
+
});
|
|
216
|
+
}, [setStateAfterEmojiChange]);
|
|
217
|
+
var onSearchResult = (0, _react.useCallback)(function (searchResults) {
|
|
218
|
+
var frequentlyUsedEmoji = frequentlyUsedEmojis || [];
|
|
219
|
+
var searchQuery = searchResults.query || '';
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* If there is no user search in the EmojiPicker then it should display all emoji received from the EmojiRepository and should
|
|
223
|
+
* also include a special category of most frequently used emoji (if there are any). This method decides if we are in this 'no search'
|
|
224
|
+
* state and appends the frequent emoji if necessary.
|
|
225
|
+
*/
|
|
226
|
+
var emojiToRender;
|
|
227
|
+
if (!frequentlyUsedEmoji.length || query) {
|
|
228
|
+
emojiToRender = searchResults.emojis;
|
|
229
|
+
} else {
|
|
230
|
+
emojiToRender = [].concat((0, _toConsumableArray2.default)(searchResults.emojis), (0, _toConsumableArray2.default)(frequentlyUsedEmoji));
|
|
231
|
+
}
|
|
232
|
+
setStateAfterEmojiChange({
|
|
233
|
+
searchQuery: searchQuery,
|
|
234
|
+
emojiToRender: emojiToRender,
|
|
235
|
+
searchEmoji: searchResults.emojis
|
|
236
|
+
});
|
|
237
|
+
fireAnalytics((0, _analytics.pickerSearchedEvent)({
|
|
238
|
+
queryLength: searchQuery.length,
|
|
239
|
+
numMatches: searchResults.emojis.length
|
|
240
|
+
}));
|
|
241
|
+
}, [frequentlyUsedEmojis, query, setStateAfterEmojiChange, fireAnalytics]);
|
|
242
|
+
var onProviderChange = (0, _react.useMemo)(function () {
|
|
243
|
+
return {
|
|
244
|
+
result: onSearchResult
|
|
245
|
+
};
|
|
246
|
+
}, [onSearchResult]);
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Updates the emoji displayed by the picker. If there is no query specified then we expect to retrieve all emoji for display,
|
|
250
|
+
* by category, in the picker. This differs from when there is a query in which case we expect to receive a sorted result matching
|
|
251
|
+
* the search.
|
|
252
|
+
*/
|
|
253
|
+
var updateEmojis = (0, _react.useCallback)(function (query, options) {
|
|
254
|
+
// if the query is empty then we want the emoji to be in service defined order, unless specified otherwise
|
|
255
|
+
// and we want emoji for the 'frequently used' category to be refreshed as well.
|
|
256
|
+
if (!query) {
|
|
257
|
+
if (!options) {
|
|
258
|
+
options = {};
|
|
259
|
+
}
|
|
260
|
+
if (!options.sort) {
|
|
261
|
+
options.sort = _types.SearchSort.None;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
// take a copy of search options so that the frequently used can be limited to 16 without affecting the full emoji query
|
|
265
|
+
var frequentOptions = _objectSpread(_objectSpread({}, options), {}, {
|
|
266
|
+
sort: _types.SearchSort.None,
|
|
267
|
+
limit: FREQUENTLY_USED_MAX
|
|
268
|
+
});
|
|
269
|
+
emojiProvider.getFrequentlyUsed(frequentOptions).then(onFrequentEmojiResult);
|
|
270
|
+
}
|
|
271
|
+
emojiProvider.filter(query, options);
|
|
272
|
+
}, [emojiProvider, onFrequentEmojiResult]);
|
|
273
|
+
var onToneSelected = (0, _react.useCallback)(function (toneValue) {
|
|
274
|
+
emojiProvider.setSelectedTone(toneValue);
|
|
275
|
+
updateEmojis(query, {
|
|
276
|
+
skinTone: toneValue
|
|
277
|
+
});
|
|
278
|
+
setSelectedTone(toneValue);
|
|
279
|
+
}, [emojiProvider, query, updateEmojis]);
|
|
280
|
+
var onToneSelectorCancelled = (0, _react.useCallback)(function () {
|
|
281
|
+
fireAnalytics((0, _analytics.toneSelectorClosedEvent)());
|
|
282
|
+
}, [fireAnalytics]);
|
|
283
|
+
var onSelectWrapper = (0, _react.useCallback)(function (emojiId, emoji, event) {
|
|
284
|
+
if (onSelection) {
|
|
285
|
+
onSelection(emojiId, emoji, event);
|
|
286
|
+
fireAnalytics((0, _analytics.pickerClickedEvent)({
|
|
287
|
+
duration: calculateElapsedTime(),
|
|
288
|
+
emojiId: (emojiId === null || emojiId === void 0 ? void 0 : emojiId.id) || '',
|
|
289
|
+
category: emoji && emoji.category || '',
|
|
290
|
+
type: emoji && emoji.type || '',
|
|
291
|
+
queryLength: query && query.length || 0
|
|
292
|
+
}));
|
|
293
|
+
}
|
|
294
|
+
}, [fireAnalytics, onSelection, query]);
|
|
295
|
+
var onCategorySelected = (0, _react.useCallback)(function (categoryId) {
|
|
296
|
+
if (!categoryId) {
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
emojiProvider.findInCategory(categoryId).then(function (emojisInCategory) {
|
|
300
|
+
if (!disableCategories) {
|
|
301
|
+
var newSelectedEmoji;
|
|
302
|
+
if (emojisInCategory && emojisInCategory.length > 0) {
|
|
303
|
+
newSelectedEmoji = (0, _EmojiRepository.getEmojiVariation)(emojisInCategory[0], {
|
|
304
|
+
skinTone: selectedTone
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
if (emojiPickerList.current) {
|
|
308
|
+
emojiPickerList.current.reveal(categoryId);
|
|
309
|
+
}
|
|
310
|
+
(0, _reactDom.unstable_batchedUpdates)(function () {
|
|
311
|
+
setActiveCategory(categoryId);
|
|
312
|
+
setSelectedEmoji(newSelectedEmoji);
|
|
313
|
+
});
|
|
314
|
+
fireAnalytics((0, _analytics.categoryClickedEvent)({
|
|
315
|
+
category: categoryId
|
|
316
|
+
}));
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
}, [disableCategories, emojiPickerList, emojiProvider, fireAnalytics, selectedTone]);
|
|
320
|
+
var recordUsageOnSelection = (0, _react.useMemo)(function () {
|
|
321
|
+
return (0, _RecordSelectionDefault.createRecordSelectionDefault)(emojiProvider, onSelectWrapper, function (analytic) {
|
|
322
|
+
return fireAnalytics(analytic(_types.SearchSourceTypes.PICKER));
|
|
323
|
+
});
|
|
324
|
+
}, [emojiProvider, fireAnalytics, onSelectWrapper]);
|
|
325
|
+
var formattedErrorMessage = (0, _react.useMemo)(function () {
|
|
326
|
+
return uploadErrorMessage ? /*#__PURE__*/React.createElement(_reactIntlNext.FormattedMessage, uploadErrorMessage) : null;
|
|
327
|
+
}, [uploadErrorMessage]);
|
|
328
|
+
var onFileChooserClicked = (0, _react.useCallback)(function () {
|
|
329
|
+
fireAnalytics((0, _analytics.selectedFileEvent)());
|
|
330
|
+
}, [fireAnalytics]);
|
|
331
|
+
var scrollToTopOfList = (0, _react.useCallback)(function () {
|
|
332
|
+
var _emojiPickerList$curr;
|
|
333
|
+
(_emojiPickerList$curr = emojiPickerList.current) === null || _emojiPickerList$curr === void 0 || _emojiPickerList$curr.scrollToTop();
|
|
334
|
+
}, [emojiPickerList]);
|
|
335
|
+
var onSearch = (0, _react.useCallback)(function (searchQuery) {
|
|
336
|
+
var options = {
|
|
337
|
+
skinTone: selectedTone,
|
|
338
|
+
source: _types.SearchSourceTypes.PICKER
|
|
339
|
+
};
|
|
340
|
+
if (searchQuery !== query) {
|
|
341
|
+
setQuery(searchQuery);
|
|
342
|
+
}
|
|
343
|
+
updateEmojis(searchQuery, options);
|
|
344
|
+
if (filteredEmojis.length > 0) {
|
|
345
|
+
// scroll to top when search, which is search results section
|
|
346
|
+
scrollToTopOfList();
|
|
347
|
+
}
|
|
348
|
+
}, [query, filteredEmojis, selectedTone, updateEmojis, scrollToTopOfList]);
|
|
349
|
+
var onOpenUpload = (0, _react.useCallback)(function () {
|
|
350
|
+
// Prime upload token so it's ready when the user adds
|
|
351
|
+
if ((0, _EmojiResource.supportsUploadFeature)(emojiProvider)) {
|
|
352
|
+
emojiProvider.prepareForUpload();
|
|
353
|
+
}
|
|
354
|
+
(0, _reactDom.unstable_batchedUpdates)(function () {
|
|
355
|
+
setUploadErrorMessage(undefined);
|
|
356
|
+
setUploading(true);
|
|
357
|
+
});
|
|
358
|
+
fireAnalytics((0, _analytics.uploadBeginButton)());
|
|
359
|
+
}, [emojiProvider, fireAnalytics]);
|
|
360
|
+
var scrollToUploadedEmoji = (0, _react.useCallback)(function (emojiDescription) {
|
|
361
|
+
if (emojiPickerList.current) {
|
|
362
|
+
// Wait a tick to ensure repaint and updated height for picker list
|
|
363
|
+
window.setTimeout(function () {
|
|
364
|
+
var _emojiPickerList$curr2;
|
|
365
|
+
(_emojiPickerList$curr2 = emojiPickerList.current) === null || _emojiPickerList$curr2 === void 0 || _emojiPickerList$curr2.scrollToRecentlyUploaded(emojiDescription);
|
|
366
|
+
}, 0);
|
|
367
|
+
}
|
|
368
|
+
}, [emojiPickerList]);
|
|
369
|
+
var onUploadEmoji = (0, _react.useCallback)(function (upload, retry) {
|
|
370
|
+
fireAnalytics((0, _analytics.uploadConfirmButton)({
|
|
371
|
+
retry: retry
|
|
372
|
+
}));
|
|
373
|
+
var errorSetter = function errorSetter(message) {
|
|
374
|
+
setUploadErrorMessage(message);
|
|
375
|
+
};
|
|
376
|
+
var onSuccess = function onSuccess(emojiDescription) {
|
|
377
|
+
(0, _reactDom.unstable_batchedUpdates)(function () {
|
|
378
|
+
setActiveCategory(_constants.customCategory);
|
|
379
|
+
setSelectedEmoji(emojiDescription);
|
|
380
|
+
setUploading(false);
|
|
381
|
+
});
|
|
382
|
+
scrollToUploadedEmoji(emojiDescription);
|
|
383
|
+
};
|
|
384
|
+
(0, _UploadEmoji.uploadEmoji)(upload, emojiProvider, errorSetter, onSuccess, fireAnalytics, retry);
|
|
385
|
+
}, [emojiProvider, fireAnalytics, scrollToUploadedEmoji]);
|
|
386
|
+
var onTriggerDelete = (0, _react.useCallback)(function (_emojiId, emoji) {
|
|
387
|
+
if (_emojiId) {
|
|
388
|
+
fireAnalytics((0, _analytics.deleteBeginEvent)({
|
|
389
|
+
emojiId: _emojiId.id
|
|
390
|
+
}));
|
|
391
|
+
setEmojiToDelete(emoji);
|
|
392
|
+
}
|
|
393
|
+
}, [fireAnalytics]);
|
|
394
|
+
var onCloseDelete = (0, _react.useCallback)(function () {
|
|
395
|
+
fireAnalytics((0, _analytics.deleteCancelEvent)({
|
|
396
|
+
emojiId: emojiToDelete && emojiToDelete.id
|
|
397
|
+
}));
|
|
398
|
+
setEmojiToDelete(undefined);
|
|
399
|
+
}, [emojiToDelete, fireAnalytics]);
|
|
400
|
+
var onDeleteEmoji = (0, _react.useCallback)(function (emoji) {
|
|
401
|
+
fireAnalytics((0, _analytics.deleteConfirmEvent)({
|
|
402
|
+
emojiId: emojiToDelete && emojiToDelete.id
|
|
403
|
+
}));
|
|
404
|
+
return emojiProvider.deleteSiteEmoji(emoji).then(function (success) {
|
|
405
|
+
if (success) {
|
|
406
|
+
updateEmojis(query, {
|
|
407
|
+
skinTone: selectedTone
|
|
408
|
+
});
|
|
409
|
+
}
|
|
410
|
+
return success;
|
|
411
|
+
});
|
|
412
|
+
}, [emojiProvider, emojiToDelete, fireAnalytics, query, selectedTone, updateEmojis]);
|
|
413
|
+
var onComponentDidMount = (0, _react.useCallback)(function () {
|
|
414
|
+
emojiProvider.subscribe(onProviderChange);
|
|
415
|
+
onSearch(query);
|
|
416
|
+
if (!hideToneSelector) {
|
|
417
|
+
var _toneEmoji = (0, _filters.getToneEmoji)(emojiProvider);
|
|
418
|
+
if ((0, _typeHelpers.isPromise)(_toneEmoji)) {
|
|
419
|
+
_toneEmoji.then(function (emoji) {
|
|
420
|
+
return setToneEmoji(emoji);
|
|
421
|
+
});
|
|
422
|
+
} else if (_toneEmoji === undefined || (0, _typeHelpers.isEmojiDescription)(_toneEmoji)) {
|
|
423
|
+
setToneEmoji(_toneEmoji);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
}, [emojiProvider, hideToneSelector, onProviderChange, onSearch, query]);
|
|
427
|
+
if (isMounting.current) {
|
|
428
|
+
// componentWillMount equivalent
|
|
429
|
+
_analytics.ufoExperiences['emoji-picker-opened'].success();
|
|
430
|
+
openTime.current = Date.now();
|
|
431
|
+
fireAnalytics((0, _analytics.openedPickerEvent)());
|
|
432
|
+
isMounting.current = false;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
// stop all key propagation to other event listeners
|
|
436
|
+
var suppressKeyPress = function suppressKeyPress(e) {
|
|
437
|
+
e.stopPropagation();
|
|
438
|
+
// We prevent default for enter keypresses
|
|
439
|
+
// since products like Bitbucket might have parent forms
|
|
440
|
+
// that listen for keydown events to trigger form submission
|
|
441
|
+
// https://product-fabric.atlassian.net/browse/ED-19532
|
|
442
|
+
if (e.key === _constants.KeyboardKeys.Enter) {
|
|
443
|
+
e.preventDefault();
|
|
444
|
+
}
|
|
445
|
+
};
|
|
446
|
+
(0, _react.useEffect)(function () {
|
|
447
|
+
// componentDidMount logic
|
|
448
|
+
if (!isMounted) {
|
|
449
|
+
onComponentDidMount();
|
|
450
|
+
}
|
|
451
|
+
}, [onComponentDidMount, isMounted]);
|
|
452
|
+
(0, _react.useEffect)(function () {
|
|
453
|
+
previousEmojiProvider.current.unsubscribe(onProviderChange);
|
|
454
|
+
previousEmojiProvider.current = emojiProvider;
|
|
455
|
+
emojiProvider.subscribe(onProviderChange);
|
|
456
|
+
return function () {
|
|
457
|
+
emojiProvider.unsubscribe(onProviderChange);
|
|
458
|
+
};
|
|
459
|
+
}, [emojiProvider, onProviderChange]);
|
|
460
|
+
(0, _react.useEffect)(function () {
|
|
461
|
+
if (!frequentlyUsedEmojis.length || query) {
|
|
462
|
+
setFilteredEmojis(searchEmojis);
|
|
463
|
+
} else {
|
|
464
|
+
setFilteredEmojis([].concat((0, _toConsumableArray2.default)(searchEmojis), (0, _toConsumableArray2.default)(frequentlyUsedEmojis)));
|
|
465
|
+
}
|
|
466
|
+
}, [frequentlyUsedEmojis, query, searchEmojis]);
|
|
467
|
+
(0, _react.useEffect)(function () {
|
|
468
|
+
// Fire analytics on component unmount
|
|
469
|
+
return function () {
|
|
470
|
+
fireAnalytics((0, _analytics.closedPickerEvent)({
|
|
471
|
+
duration: calculateElapsedTime()
|
|
472
|
+
}));
|
|
473
|
+
_analytics.ufoExperiences['emoji-picker-opened'].abort({
|
|
474
|
+
metadata: {
|
|
475
|
+
source: 'EmojiPickerComponent',
|
|
476
|
+
reason: 'unmount'
|
|
477
|
+
}
|
|
478
|
+
});
|
|
479
|
+
_analytics.ufoExperiences['emoji-searched'].abort({
|
|
480
|
+
metadata: {
|
|
481
|
+
source: 'EmojiPickerComponent',
|
|
482
|
+
reason: 'unmount'
|
|
483
|
+
}
|
|
484
|
+
});
|
|
485
|
+
};
|
|
486
|
+
}, [fireAnalytics]);
|
|
487
|
+
(0, _react.useEffect)(function () {
|
|
488
|
+
// Unsubscribe emojiProvider on component unmount
|
|
489
|
+
return function () {
|
|
490
|
+
emojiProvider.unsubscribe(onProviderChange);
|
|
491
|
+
};
|
|
492
|
+
}, [emojiProvider, onProviderChange]);
|
|
493
|
+
var showPreview = selectedEmoji && !uploading;
|
|
494
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
495
|
+
ref: onPickerRef,
|
|
496
|
+
"data-emoji-picker-container": true,
|
|
497
|
+
role: "dialog",
|
|
498
|
+
"aria-label": formatMessage(_i18n.messages.emojiPickerTitle),
|
|
499
|
+
"aria-modal": true,
|
|
500
|
+
onKeyPress: suppressKeyPress,
|
|
501
|
+
onKeyUp: suppressKeyPress,
|
|
502
|
+
onKeyDown: suppressKeyPress,
|
|
503
|
+
className: (0, _runtime.ax)(["_19itbw7i _2rkosqtm _1e0c1txw _2lx21bp4 _1bah1yb4 _bfhk1bhr _16qsp2xt _4t3iuxo9 _1bsb10mj _1ul910mj _c71l1y6z", showPreview && withPreviewHeight[size], !showPreview && withoutPreviewHeight[size]]),
|
|
504
|
+
style: {
|
|
505
|
+
"--_t8mjz6": (0, _runtime.ix)("".concat("var(--ds-border, ".concat(_colors.N40, ")"), " 1px solid")),
|
|
506
|
+
"--_19dn98e": (0, _runtime.ix)("".concat(emojiPickerHeight, "px")),
|
|
507
|
+
"--_gsvyy7": (0, _runtime.ix)("".concat(emojiPickerWidth, "px"))
|
|
508
|
+
}
|
|
509
|
+
}, /*#__PURE__*/React.createElement(_CategorySelector.default, {
|
|
510
|
+
activeCategoryId: activeCategory,
|
|
511
|
+
dynamicCategories: dynamicCategories,
|
|
512
|
+
disableCategories: disableCategories,
|
|
513
|
+
onCategorySelected: onCategorySelected
|
|
514
|
+
}), (0, _platformFeatureFlags.fg)('platform_editor_react18_elements_emoji') ? /*#__PURE__*/React.createElement(_EmojiPickerList.EmojiPickerVirtualListInternalNew, {
|
|
515
|
+
emojis: filteredEmojis,
|
|
516
|
+
currentUser: currentUser,
|
|
517
|
+
onEmojiSelected: recordUsageOnSelection,
|
|
518
|
+
onEmojiActive: onEmojiActive,
|
|
519
|
+
onEmojiDelete: onTriggerDelete,
|
|
520
|
+
onCategoryActivated: onCategoryActivated,
|
|
521
|
+
onSearch: onSearch,
|
|
522
|
+
query: query,
|
|
523
|
+
selectedTone: selectedTone,
|
|
524
|
+
loading: loading,
|
|
525
|
+
ref: emojiPickerList,
|
|
526
|
+
initialUploadName: query,
|
|
527
|
+
onToneSelected: onToneSelected,
|
|
528
|
+
onToneSelectorCancelled: onToneSelectorCancelled,
|
|
529
|
+
toneEmoji: toneEmoji,
|
|
530
|
+
uploading: uploading,
|
|
531
|
+
emojiToDelete: emojiToDelete,
|
|
532
|
+
uploadErrorMessage: formattedErrorMessage,
|
|
533
|
+
uploadEnabled: isUploadSupported && !uploading,
|
|
534
|
+
onUploadEmoji: onUploadEmoji,
|
|
535
|
+
onUploadCancelled: onUploadCancelled,
|
|
536
|
+
onDeleteEmoji: onDeleteEmoji,
|
|
537
|
+
onCloseDelete: onCloseDelete,
|
|
538
|
+
onFileChooserClicked: onFileChooserClicked,
|
|
539
|
+
onOpenUpload: onOpenUpload,
|
|
540
|
+
size: size,
|
|
541
|
+
activeCategoryId: activeCategory
|
|
542
|
+
}) : /*#__PURE__*/React.createElement(_EmojiPickerList.EmojiPickerVirtualListInternalOld, {
|
|
543
|
+
emojis: filteredEmojis,
|
|
544
|
+
currentUser: currentUser,
|
|
545
|
+
onEmojiSelected: recordUsageOnSelection,
|
|
546
|
+
onEmojiActive: onEmojiActive,
|
|
547
|
+
onEmojiDelete: onTriggerDelete,
|
|
548
|
+
onCategoryActivated: onCategoryActivated,
|
|
549
|
+
onSearch: onSearch,
|
|
550
|
+
query: query,
|
|
551
|
+
selectedTone: selectedTone,
|
|
552
|
+
loading: loading,
|
|
553
|
+
ref: emojiPickerList,
|
|
554
|
+
initialUploadName: query,
|
|
555
|
+
onToneSelected: onToneSelected,
|
|
556
|
+
onToneSelectorCancelled: onToneSelectorCancelled,
|
|
557
|
+
toneEmoji: toneEmoji,
|
|
558
|
+
uploading: uploading,
|
|
559
|
+
emojiToDelete: emojiToDelete,
|
|
560
|
+
uploadErrorMessage: formattedErrorMessage,
|
|
561
|
+
uploadEnabled: isUploadSupported && !uploading,
|
|
562
|
+
onUploadEmoji: onUploadEmoji,
|
|
563
|
+
onUploadCancelled: onUploadCancelled,
|
|
564
|
+
onDeleteEmoji: onDeleteEmoji,
|
|
565
|
+
onCloseDelete: onCloseDelete,
|
|
566
|
+
onFileChooserClicked: onFileChooserClicked,
|
|
567
|
+
onOpenUpload: onOpenUpload,
|
|
568
|
+
size: size,
|
|
569
|
+
activeCategoryId: activeCategory
|
|
570
|
+
}), showPreview && /*#__PURE__*/React.createElement(_EmojiPickerFooter.default, {
|
|
571
|
+
selectedEmoji: selectedEmoji
|
|
572
|
+
}));
|
|
573
|
+
};
|
|
574
|
+
var _default = exports.default = /*#__PURE__*/(0, _react.memo)(EmojiPickerComponent);
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
|
|
2
|
+
._1wcg14y2 .emoji-common-node{border-radius:5px}._115ch2mm .emoji-common-node>img{position:relative}
|
|
3
|
+
._1678tlke .emoji-common-node{cursor:pointer}
|
|
4
|
+
._17dz1tcg .emoji-common-node>img{max-width:24px}
|
|
5
|
+
._18u0u2gc{margin-left:var(--ds-space-100,8px)}
|
|
6
|
+
._18x3u2gc .emoji-common-placeholder{margin-right:var(--ds-space-100,8px)}
|
|
7
|
+
._1909ze3t .emoji-common-placeholder{padding-right:var(--ds-space-0,0)}
|
|
8
|
+
._1bsb1ylp{width:40px}
|
|
9
|
+
._1cf71tcg .emoji-common-node{height:24px}
|
|
10
|
+
._1e0c1o8l{display:inline-block}
|
|
11
|
+
._1k8z1tcg .emoji-common-node>img{max-height:24px}
|
|
12
|
+
._1lvc1tcg .emoji-common-node{width:24px}
|
|
13
|
+
._1mc3ze3t .emoji-common-node .emoji-common-placeholder{margin-left:var(--ds-space-0,0)}
|
|
14
|
+
._1mn81tcg .emoji-common-node>.emoji-common-emoji-sprite{height:24px}
|
|
15
|
+
._1rf4u2gc .emoji-common-node{padding-right:var(--ds-space-100,8px)}
|
|
16
|
+
._1tcfze3t .emoji-common-placeholder{padding-bottom:var(--ds-space-0,0)}
|
|
17
|
+
._29jju2gc .emoji-common-placeholder{margin-left:var(--ds-space-100,8px)}
|
|
18
|
+
._4ubfu2gc .emoji-common-placeholder{margin-top:var(--ds-space-100,8px)}
|
|
19
|
+
._5mfndbra .emoji-common-node>img{transform:translateX(-50%) translateY(-50%)}
|
|
20
|
+
._7b50u2gc .emoji-common-node{padding-top:var(--ds-space-100,8px)}
|
|
21
|
+
._85ft1ssb .emoji-common-node>img{top:50%}
|
|
22
|
+
._8vlfze3t .emoji-common-placeholder{padding-top:var(--ds-space-0,0)}
|
|
23
|
+
._b4kiu2gc .emoji-common-node{padding-bottom:var(--ds-space-100,8px)}
|
|
24
|
+
._bm9mu2gc .emoji-common-node{padding-left:var(--ds-space-100,8px)}
|
|
25
|
+
._elsp1tcg .emoji-common-placeholder{max-width:24px}
|
|
26
|
+
._fw9su2gc .emoji-common-placeholder{margin-bottom:var(--ds-space-100,8px)}
|
|
27
|
+
._n7xcze3t .emoji-common-placeholder{padding-left:var(--ds-space-0,0)}
|
|
28
|
+
._o5kcze3t .emoji-common-node .emoji-common-placeholder{margin-bottom:var(--ds-space-0,0)}
|
|
29
|
+
._qpkw1tcg .emoji-common-placeholder{min-width:24px}
|
|
30
|
+
._u5ah1tcg .emoji-common-node>.emoji-common-emoji-sprite{width:24px}
|
|
31
|
+
._vtzrze3t .emoji-common-node .emoji-common-placeholder{margin-top:var(--ds-space-0,0)}
|
|
32
|
+
._w2q0ze3t .emoji-common-node .emoji-common-placeholder{margin-right:var(--ds-space-0,0)}
|
|
33
|
+
._y3gn1h6o{text-align:center}
|
|
34
|
+
._yrst1ssb .emoji-common-node>img{left:50%}
|
|
35
|
+
._zdyf1ule .emoji-common-node>img{display:block}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/* EmojiPickerEmojiRow.tsx generated by @compiled/babel-plugin v0.36.1 */
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
Object.defineProperty(exports, "__esModule", {
|
|
7
|
+
value: true
|
|
8
|
+
});
|
|
9
|
+
exports.default = void 0;
|
|
10
|
+
require("./EmojiPickerEmojiRow.compiled.css");
|
|
11
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
+
var React = _react;
|
|
13
|
+
var _runtime = require("@compiled/react/runtime");
|
|
14
|
+
var _reactIntlNext = require("react-intl-next");
|
|
15
|
+
var _CachingEmoji = _interopRequireDefault(require("../../common/CachingEmoji"));
|
|
16
|
+
var _useEmojiPickerListContext = require("../../../hooks/useEmojiPickerListContext");
|
|
17
|
+
var _i18n = require("../../i18n");
|
|
18
|
+
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); }
|
|
19
|
+
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; }
|
|
20
|
+
var emojiItem = null;
|
|
21
|
+
var emojiPickerRow = null;
|
|
22
|
+
var EmojiPickerEmojiRow = function EmojiPickerEmojiRow(_ref) {
|
|
23
|
+
var emojis = _ref.emojis,
|
|
24
|
+
onSelected = _ref.onSelected,
|
|
25
|
+
onMouseMove = _ref.onMouseMove,
|
|
26
|
+
onFocus = _ref.onFocus,
|
|
27
|
+
title = _ref.title,
|
|
28
|
+
showDelete = _ref.showDelete,
|
|
29
|
+
onDelete = _ref.onDelete,
|
|
30
|
+
virtualItemContext = _ref.virtualItemContext;
|
|
31
|
+
var _useEmojiPickerListCo = (0, _useEmojiPickerListContext.useEmojiPickerListContext)(),
|
|
32
|
+
currentEmojisFocus = _useEmojiPickerListCo.currentEmojisFocus,
|
|
33
|
+
setEmojisFocus = _useEmojiPickerListCo.setEmojisFocus;
|
|
34
|
+
var rowIndex = (virtualItemContext === null || virtualItemContext === void 0 ? void 0 : virtualItemContext.index) || 0;
|
|
35
|
+
var _useIntl = (0, _reactIntlNext.useIntl)(),
|
|
36
|
+
formatMessage = _useIntl.formatMessage;
|
|
37
|
+
var handleFocus = function handleFocus(index) {
|
|
38
|
+
return function (emojiId, emoji, event) {
|
|
39
|
+
setEmojisFocus({
|
|
40
|
+
rowIndex: rowIndex,
|
|
41
|
+
columnIndex: index
|
|
42
|
+
});
|
|
43
|
+
onFocus && onFocus(emojiId, emoji, event);
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
47
|
+
role: "presentation",
|
|
48
|
+
className: (0, _runtime.ax)(["_18u0u2gc"])
|
|
49
|
+
}, emojis.map(function (emoji, index) {
|
|
50
|
+
var shortName = emoji.shortName,
|
|
51
|
+
id = emoji.id;
|
|
52
|
+
var key = id ? "".concat(id, "-").concat(title) : "".concat(shortName, "-").concat(title);
|
|
53
|
+
var focus = currentEmojisFocus.rowIndex === rowIndex && currentEmojisFocus.columnIndex === index;
|
|
54
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
55
|
+
key: key,
|
|
56
|
+
role: "gridcell",
|
|
57
|
+
"aria-colindex": index + 1 // aria-colindex is 1 based
|
|
58
|
+
,
|
|
59
|
+
className: (0, _runtime.ax)(["_1e0c1o8l _y3gn1h6o _1bsb1ylp _1wcg14y2 _1678tlke _7b50u2gc _1rf4u2gc _b4kiu2gc _bm9mu2gc _1lvc1tcg _1cf71tcg _8vlfze3t _1909ze3t _1tcfze3t _n7xcze3t _4ubfu2gc _18x3u2gc _fw9su2gc _29jju2gc _qpkw1tcg _elsp1tcg _vtzrze3t _w2q0ze3t _o5kcze3t _1mc3ze3t _115ch2mm _yrst1ssb _85ft1ssb _5mfndbra _1k8z1tcg _17dz1tcg _zdyf1ule _1mn81tcg _u5ah1tcg"])
|
|
60
|
+
}, /*#__PURE__*/React.createElement(_CachingEmoji.default, {
|
|
61
|
+
emoji: emoji,
|
|
62
|
+
selectOnHover: true,
|
|
63
|
+
onSelected: onSelected,
|
|
64
|
+
onMouseMove: onMouseMove,
|
|
65
|
+
onFocus: handleFocus(index),
|
|
66
|
+
showDelete: showDelete,
|
|
67
|
+
onDelete: onDelete,
|
|
68
|
+
placeholderSize: 24,
|
|
69
|
+
"data-focus-index": "".concat(rowIndex, "-").concat(index),
|
|
70
|
+
tabIndex: focus ? 0 : -1,
|
|
71
|
+
"aria-roledescription": formatMessage(_i18n.messages.emojiButtonRoleDescription),
|
|
72
|
+
shouldBeInteractive: true
|
|
73
|
+
}));
|
|
74
|
+
}));
|
|
75
|
+
};
|
|
76
|
+
var _default = exports.default = /*#__PURE__*/(0, _react.memo)(EmojiPickerEmojiRow);
|