@atlaskit/emoji 71.0.0 → 71.0.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 +8 -0
- package/afm-cc/tsconfig.json +3 -0
- package/afm-products/tsconfig.json +3 -0
- package/dist/cjs/components/common/Emoji.js +2 -1
- package/dist/cjs/components/common/EmojiActions.compiled.css +8 -0
- package/dist/cjs/components/common/EmojiActions.js +69 -3
- package/dist/cjs/components/common/Popup.js +20 -5
- package/dist/cjs/components/common/ProductivityColorSelector.compiled.css +59 -0
- package/dist/cjs/components/common/ProductivityColorSelector.js +112 -0
- package/dist/cjs/components/common/TonePreviewButton.js +4 -2
- package/dist/cjs/components/i18n.js +10 -0
- package/dist/cjs/components/picker/EmojiPickerComponent.js +51 -36
- package/dist/cjs/components/picker/EmojiPickerList.js +36 -14
- package/dist/cjs/components/picker/VirtualList.js +4 -5
- package/dist/cjs/util/analytics/analytics.js +1 -1
- package/dist/cjs/util/hidden-emojis.js +33 -0
- package/dist/cjs/util/productivity-colors.js +51 -0
- package/dist/es2019/components/common/Emoji.js +2 -1
- package/dist/es2019/components/common/EmojiActions.compiled.css +8 -0
- package/dist/es2019/components/common/EmojiActions.js +67 -3
- package/dist/es2019/components/common/Popup.js +19 -5
- package/dist/es2019/components/common/ProductivityColorSelector.compiled.css +59 -0
- package/dist/es2019/components/common/ProductivityColorSelector.js +98 -0
- package/dist/es2019/components/common/TonePreviewButton.js +3 -2
- package/dist/es2019/components/i18n.js +10 -0
- package/dist/es2019/components/picker/EmojiPickerComponent.js +26 -14
- package/dist/es2019/components/picker/EmojiPickerList.js +32 -14
- package/dist/es2019/components/picker/VirtualList.js +4 -5
- package/dist/es2019/util/analytics/analytics.js +1 -1
- package/dist/es2019/util/hidden-emojis.js +25 -0
- package/dist/es2019/util/productivity-colors.js +37 -0
- package/dist/esm/components/common/Emoji.js +2 -1
- package/dist/esm/components/common/EmojiActions.compiled.css +8 -0
- package/dist/esm/components/common/EmojiActions.js +70 -4
- package/dist/esm/components/common/Popup.js +20 -5
- package/dist/esm/components/common/ProductivityColorSelector.compiled.css +59 -0
- package/dist/esm/components/common/ProductivityColorSelector.js +103 -0
- package/dist/esm/components/common/TonePreviewButton.js +4 -2
- package/dist/esm/components/i18n.js +10 -0
- package/dist/esm/components/picker/EmojiPickerComponent.js +51 -36
- package/dist/esm/components/picker/EmojiPickerList.js +36 -14
- package/dist/esm/components/picker/VirtualList.js +4 -5
- package/dist/esm/util/analytics/analytics.js +1 -1
- package/dist/esm/util/hidden-emojis.js +27 -0
- package/dist/esm/util/productivity-colors.js +45 -0
- package/dist/types/components/common/EmojiActions.d.ts +6 -0
- package/dist/types/components/common/Popup.d.ts +1 -0
- package/dist/types/components/common/ProductivityColorSelector.d.ts +17 -0
- package/dist/types/components/common/TonePreviewButton.d.ts +1 -0
- package/dist/types/components/i18n.d.ts +10 -0
- package/dist/types/components/picker/EmojiPickerList.d.ts +3 -0
- package/dist/types/types.d.ts +7 -0
- package/dist/types/util/hidden-emojis.d.ts +3 -0
- package/dist/types/util/productivity-colors.d.ts +8 -0
- package/package.json +3 -2
|
@@ -39,6 +39,8 @@ var _analytics = require("../../util/analytics");
|
|
|
39
39
|
var _useEmoji2 = require("../../hooks/useEmoji");
|
|
40
40
|
var _useIsMounted = require("../../hooks/useIsMounted");
|
|
41
41
|
var _i18n = require("../i18n");
|
|
42
|
+
var _productivityColors = require("../../util/productivity-colors");
|
|
43
|
+
var _hiddenEmojis = require("../../util/hidden-emojis");
|
|
42
44
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
43
45
|
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; }
|
|
44
46
|
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; }
|
|
@@ -92,6 +94,7 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
92
94
|
var _useEmoji = (0, _useEmoji2.useEmoji)(),
|
|
93
95
|
emojiProvider = _useEmoji.emojiProvider,
|
|
94
96
|
isUploadSupported = _useEmoji.isUploadSupported;
|
|
97
|
+
var isTeamojiExperimentEnabled = _featureGateJsClient.default.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false);
|
|
95
98
|
var _useState = (0, _react.useState)([]),
|
|
96
99
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
97
100
|
filteredEmojis = _useState2[0],
|
|
@@ -116,38 +119,42 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
116
119
|
_useState10 = (0, _slicedToArray2.default)(_useState1, 2),
|
|
117
120
|
selectedTone = _useState10[0],
|
|
118
121
|
setSelectedTone = _useState10[1];
|
|
119
|
-
var _useState11 = (0, _react.useState)(
|
|
122
|
+
var _useState11 = (0, _react.useState)(_productivityColors.defaultProductivityColor),
|
|
120
123
|
_useState12 = (0, _slicedToArray2.default)(_useState11, 2),
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
var _useState13 = (0, _react.useState)(
|
|
124
|
+
selectedProductivityColor = _useState12[0],
|
|
125
|
+
setSelectedProductivityColor = _useState12[1];
|
|
126
|
+
var _useState13 = (0, _react.useState)(true),
|
|
124
127
|
_useState14 = (0, _slicedToArray2.default)(_useState13, 2),
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
var _useState15 = (0, _react.useState)(),
|
|
128
|
+
loading = _useState14[0],
|
|
129
|
+
setLoading = _useState14[1];
|
|
130
|
+
var _useState15 = (0, _react.useState)(false),
|
|
128
131
|
_useState16 = (0, _slicedToArray2.default)(_useState15, 2),
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
var _useState17 = (0, _react.useState)(
|
|
132
|
+
uploading = _useState16[0],
|
|
133
|
+
setUploading = _useState16[1];
|
|
134
|
+
var _useState17 = (0, _react.useState)(),
|
|
132
135
|
_useState18 = (0, _slicedToArray2.default)(_useState17, 2),
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
var _useState19 = (0, _react.useState)(
|
|
136
|
+
selectedEmoji = _useState18[0],
|
|
137
|
+
setSelectedEmoji = _useState18[1];
|
|
138
|
+
var _useState19 = (0, _react.useState)(null),
|
|
136
139
|
_useState20 = (0, _slicedToArray2.default)(_useState19, 2),
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
var _useState21 = (0, _react.useState)(),
|
|
140
|
+
activeCategory = _useState20[0],
|
|
141
|
+
setActiveCategory = _useState20[1];
|
|
142
|
+
var _useState21 = (0, _react.useState)(false),
|
|
140
143
|
_useState22 = (0, _slicedToArray2.default)(_useState21, 2),
|
|
141
|
-
|
|
142
|
-
|
|
144
|
+
disableCategories = _useState22[0],
|
|
145
|
+
setDisableCategories = _useState22[1];
|
|
143
146
|
var _useState23 = (0, _react.useState)(),
|
|
144
147
|
_useState24 = (0, _slicedToArray2.default)(_useState23, 2),
|
|
145
|
-
|
|
146
|
-
|
|
148
|
+
uploadErrorMessage = _useState24[0],
|
|
149
|
+
setUploadErrorMessage = _useState24[1];
|
|
147
150
|
var _useState25 = (0, _react.useState)(),
|
|
148
151
|
_useState26 = (0, _slicedToArray2.default)(_useState25, 2),
|
|
149
|
-
|
|
150
|
-
|
|
152
|
+
emojiToDelete = _useState26[0],
|
|
153
|
+
setEmojiToDelete = _useState26[1];
|
|
154
|
+
var _useState27 = (0, _react.useState)(),
|
|
155
|
+
_useState28 = (0, _slicedToArray2.default)(_useState27, 2),
|
|
156
|
+
toneEmoji = _useState28[0],
|
|
157
|
+
setToneEmoji = _useState28[1];
|
|
151
158
|
var emojiPickerList = (0, _react.useMemo)(function () {
|
|
152
159
|
return /*#__PURE__*/(0, _react.createRef)();
|
|
153
160
|
}, []);
|
|
@@ -158,11 +165,11 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
158
165
|
var isProgrammaticScroll = (0, _react.useRef)(false);
|
|
159
166
|
var pickerRef = (0, _react.useRef)(null);
|
|
160
167
|
var setPickerRef = (0, _react.useCallback)(function (el) {
|
|
161
|
-
if (
|
|
168
|
+
if (isTeamojiExperimentEnabled) {
|
|
162
169
|
pickerRef.current = el;
|
|
163
170
|
}
|
|
164
171
|
onPickerRef === null || onPickerRef === void 0 || onPickerRef(el);
|
|
165
|
-
}, [onPickerRef]);
|
|
172
|
+
}, [isTeamojiExperimentEnabled, onPickerRef]);
|
|
166
173
|
var currentUser = (0, _react.useMemo)(function () {
|
|
167
174
|
return emojiProvider.getCurrentUser();
|
|
168
175
|
}, [emojiProvider]);
|
|
@@ -263,7 +270,8 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
263
270
|
}, [filteredEmojis.length, getDynamicCategories, onDynamicCategoryChange, selectedEmoji]);
|
|
264
271
|
var onFrequentEmojiResult = (0, _react.useCallback)(function (frequentEmoji) {
|
|
265
272
|
// change the category of each of the featured emoji
|
|
266
|
-
var
|
|
273
|
+
var visibleFrequentEmoji = isTeamojiExperimentEnabled ? (0, _hiddenEmojis.filterHiddenEmojis)(frequentEmoji) : frequentEmoji;
|
|
274
|
+
var recategorised = visibleFrequentEmoji.map(function (emoji) {
|
|
267
275
|
var clone = JSON.parse(JSON.stringify(emoji));
|
|
268
276
|
clone.category = _constants.frequentCategory;
|
|
269
277
|
return clone;
|
|
@@ -271,10 +279,11 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
271
279
|
setStateAfterEmojiChange({
|
|
272
280
|
frequentEmoji: recategorised
|
|
273
281
|
});
|
|
274
|
-
}, [setStateAfterEmojiChange]);
|
|
282
|
+
}, [isTeamojiExperimentEnabled, setStateAfterEmojiChange]);
|
|
275
283
|
var onSearchResult = (0, _react.useCallback)(function (searchResults) {
|
|
276
284
|
var frequentlyUsedEmoji = frequentlyUsedEmojis || [];
|
|
277
285
|
var searchQuery = searchResults.query || '';
|
|
286
|
+
var visibleSearchEmojis = isTeamojiExperimentEnabled ? (0, _hiddenEmojis.filterHiddenEmojis)(searchResults.emojis) : searchResults.emojis;
|
|
278
287
|
|
|
279
288
|
/**
|
|
280
289
|
* If there is no user search in the EmojiPicker then it should display all emoji received from the EmojiRepository and should
|
|
@@ -283,20 +292,20 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
283
292
|
*/
|
|
284
293
|
var emojiToRender;
|
|
285
294
|
if (!frequentlyUsedEmoji.length || query) {
|
|
286
|
-
emojiToRender =
|
|
295
|
+
emojiToRender = visibleSearchEmojis;
|
|
287
296
|
} else {
|
|
288
|
-
emojiToRender = [].concat((0, _toConsumableArray2.default)(
|
|
297
|
+
emojiToRender = [].concat((0, _toConsumableArray2.default)(visibleSearchEmojis), (0, _toConsumableArray2.default)(frequentlyUsedEmoji));
|
|
289
298
|
}
|
|
290
299
|
setStateAfterEmojiChange({
|
|
291
300
|
searchQuery: searchQuery,
|
|
292
301
|
emojiToRender: emojiToRender,
|
|
293
|
-
searchEmoji:
|
|
302
|
+
searchEmoji: visibleSearchEmojis
|
|
294
303
|
});
|
|
295
304
|
fireAnalytics((0, _analytics.pickerSearchedEvent)({
|
|
296
305
|
queryLength: searchQuery.length,
|
|
297
|
-
numMatches:
|
|
306
|
+
numMatches: visibleSearchEmojis.length
|
|
298
307
|
}));
|
|
299
|
-
}, [frequentlyUsedEmojis, query, setStateAfterEmojiChange, fireAnalytics]);
|
|
308
|
+
}, [frequentlyUsedEmojis, isTeamojiExperimentEnabled, query, setStateAfterEmojiChange, fireAnalytics]);
|
|
300
309
|
var onProviderChange = (0, _react.useMemo)(function () {
|
|
301
310
|
return {
|
|
302
311
|
result: onSearchResult
|
|
@@ -338,6 +347,9 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
338
347
|
var onToneSelectorCancelled = (0, _react.useCallback)(function () {
|
|
339
348
|
fireAnalytics((0, _analytics.toneSelectorClosedEvent)());
|
|
340
349
|
}, [fireAnalytics]);
|
|
350
|
+
var onProductivityColorSelected = (0, _react.useCallback)(function (color) {
|
|
351
|
+
setSelectedProductivityColor(color);
|
|
352
|
+
}, []);
|
|
341
353
|
var onSelectWrapper = (0, _react.useCallback)(function (emojiId, emoji, event) {
|
|
342
354
|
if (onSelection) {
|
|
343
355
|
onSelection(emojiId, emoji, event);
|
|
@@ -368,17 +380,18 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
368
380
|
emojiProvider.findInCategory(categoryId).then(function (emojisInCategory) {
|
|
369
381
|
if (!disableCategories) {
|
|
370
382
|
var newSelectedEmoji;
|
|
371
|
-
|
|
372
|
-
|
|
383
|
+
var visibleEmojisInCategory = isTeamojiExperimentEnabled ? (0, _hiddenEmojis.filterHiddenEmojis)(emojisInCategory || []) : emojisInCategory || [];
|
|
384
|
+
if (visibleEmojisInCategory.length > 0) {
|
|
385
|
+
newSelectedEmoji = (0, _EmojiRepository.getEmojiVariation)(visibleEmojisInCategory[0], {
|
|
373
386
|
skinTone: selectedTone
|
|
374
387
|
});
|
|
375
388
|
}
|
|
376
389
|
if (emojiPickerList.current) {
|
|
377
|
-
if (
|
|
390
|
+
if (isTeamojiExperimentEnabled) {
|
|
378
391
|
isProgrammaticScroll.current = true;
|
|
379
392
|
}
|
|
380
393
|
emojiPickerList.current.reveal(categoryId);
|
|
381
|
-
if (
|
|
394
|
+
if (isTeamojiExperimentEnabled) {
|
|
382
395
|
// Clear the flag after the scroll animation has settled.
|
|
383
396
|
setTimeout(function () {
|
|
384
397
|
isProgrammaticScroll.current = false;
|
|
@@ -394,7 +407,7 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
394
407
|
}));
|
|
395
408
|
}
|
|
396
409
|
});
|
|
397
|
-
}, [disableCategories, emojiPickerList, emojiProvider, fireAnalytics, selectedTone, uploading, emojiToDelete]);
|
|
410
|
+
}, [disableCategories, emojiPickerList, emojiProvider, fireAnalytics, isTeamojiExperimentEnabled, selectedTone, uploading, emojiToDelete]);
|
|
398
411
|
var recordUsageOnSelection = (0, _react.useMemo)(function () {
|
|
399
412
|
return (0, _RecordSelectionDefault.createRecordSelectionDefault)(emojiProvider, onSelectWrapper, function (analytic) {
|
|
400
413
|
return fireAnalytics(analytic(_types.SearchSourceTypes.PICKER));
|
|
@@ -674,11 +687,13 @@ var EmojiPickerComponent = function EmojiPickerComponent(_ref) {
|
|
|
674
687
|
onSearch: onSearch,
|
|
675
688
|
query: query,
|
|
676
689
|
selectedTone: selectedTone,
|
|
690
|
+
selectedProductivityColor: isTeamojiExperimentEnabled ? selectedProductivityColor : undefined,
|
|
677
691
|
loading: loading,
|
|
678
692
|
ref: emojiPickerList,
|
|
679
693
|
initialUploadName: query,
|
|
680
694
|
onToneSelected: onToneSelected,
|
|
681
695
|
onToneSelectorCancelled: onToneSelectorCancelled,
|
|
696
|
+
onProductivityColorSelected: isTeamojiExperimentEnabled ? onProductivityColorSelected : undefined,
|
|
682
697
|
toneEmoji: toneEmoji,
|
|
683
698
|
uploading: uploading,
|
|
684
699
|
emojiToDelete: emojiToDelete,
|
|
@@ -12,6 +12,8 @@ var _reactIntl = require("react-intl");
|
|
|
12
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
13
|
var _featureGateJsClient = _interopRequireDefault(require("@atlaskit/feature-gate-js-client"));
|
|
14
14
|
var _constants = require("../../util/constants");
|
|
15
|
+
var _productivityColors = require("../../util/productivity-colors");
|
|
16
|
+
var _hiddenEmojis = require("../../util/hidden-emojis");
|
|
15
17
|
var _categories = require("./categories");
|
|
16
18
|
var _CategoryTracker = _interopRequireDefault(require("./CategoryTracker"));
|
|
17
19
|
var _EmojiPickerSizes = require("./EmojiPickerSizes");
|
|
@@ -79,7 +81,9 @@ var EmojiPickerVirtualListInternal = exports.EmojiPickerVirtualListInternal = /*
|
|
|
79
81
|
onCloseDelete = props.onCloseDelete,
|
|
80
82
|
onFileChooserClicked = props.onFileChooserClicked,
|
|
81
83
|
onOpenUpload = props.onOpenUpload,
|
|
82
|
-
|
|
84
|
+
onProductivityColorSelected = props.onProductivityColorSelected,
|
|
85
|
+
activeCategoryId = props.activeCategoryId,
|
|
86
|
+
selectedProductivityColor = props.selectedProductivityColor;
|
|
83
87
|
var _useIntl = (0, _reactIntl.useIntl)(),
|
|
84
88
|
formatMessage = _useIntl.formatMessage;
|
|
85
89
|
var listRef = (0, _react.useRef)(null);
|
|
@@ -103,6 +107,12 @@ var EmojiPickerVirtualListInternal = exports.EmojiPickerVirtualListInternal = /*
|
|
|
103
107
|
categoriesChanged = _useState8[0],
|
|
104
108
|
setCategoriesChanged = _useState8[1];
|
|
105
109
|
var isTeamojiExperimentEnabled = _featureGateJsClient.default.getExperimentValue(teamojiRefreshExperimentName, 'isEnabled', false);
|
|
110
|
+
var visibleEmojis = (0, _react.useMemo)(function () {
|
|
111
|
+
return isTeamojiExperimentEnabled ? (0, _hiddenEmojis.filterHiddenEmojis)(emojis) : emojis;
|
|
112
|
+
}, [emojis, isTeamojiExperimentEnabled]);
|
|
113
|
+
var productivityColorPreviewEmojis = (0, _react.useMemo)(function () {
|
|
114
|
+
return isTeamojiExperimentEnabled ? (0, _productivityColors.getProductivityColorPreviewEmojis)(visibleEmojis) : {};
|
|
115
|
+
}, [isTeamojiExperimentEnabled, visibleEmojis]);
|
|
106
116
|
var addToCategoryMap = (0, _react.useCallback)(function (categoryToGroupMap, emoji, category) {
|
|
107
117
|
if (!categoryToGroupMap[category]) {
|
|
108
118
|
var categoryDefinition = isTeamojiExperimentEnabled ? _categories.CategoryDescriptionMapNew[category] : _categories.CategoryDescriptionMap[category];
|
|
@@ -183,16 +193,23 @@ var EmojiPickerVirtualListInternal = exports.EmojiPickerVirtualListInternal = /*
|
|
|
183
193
|
setAllEmojiGroups(Object.keys(categoryToGroupMap).map(function (key) {
|
|
184
194
|
return categoryToGroupMap[key];
|
|
185
195
|
}).map(function (group) {
|
|
186
|
-
if (
|
|
196
|
+
if (isTeamojiExperimentEnabled && selectedProductivityColor) {
|
|
187
197
|
var _group$subcategories;
|
|
188
|
-
group.emojis.
|
|
198
|
+
group.emojis = (0, _productivityColors.filterProductivityEmojisByColor)(group.emojis, selectedProductivityColor);
|
|
189
199
|
(_group$subcategories = group.subcategories) === null || _group$subcategories === void 0 || _group$subcategories.forEach(function (subcategory) {
|
|
200
|
+
subcategory.emojis = (0, _productivityColors.filterProductivityEmojisByColor)(subcategory.emojis, selectedProductivityColor);
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
if (group.category !== _constants.frequentCategory) {
|
|
204
|
+
var _group$subcategories2;
|
|
205
|
+
group.emojis.sort(byOrder);
|
|
206
|
+
(_group$subcategories2 = group.subcategories) === null || _group$subcategories2 === void 0 || _group$subcategories2.forEach(function (subcategory) {
|
|
190
207
|
subcategory.emojis.sort(byOrder);
|
|
191
208
|
});
|
|
192
209
|
}
|
|
193
210
|
return group;
|
|
194
211
|
}).sort(byOrder));
|
|
195
|
-
}, [groupByCategory]);
|
|
212
|
+
}, [groupByCategory, isTeamojiExperimentEnabled, selectedProductivityColor]);
|
|
196
213
|
var buildEmojiRows = (0, _react.useCallback)(function (items, category, title, emojis, showDelete) {
|
|
197
214
|
var remainingEmojis = emojis;
|
|
198
215
|
while (remainingEmojis.length > 0) {
|
|
@@ -212,9 +229,9 @@ var EmojiPickerVirtualListInternal = exports.EmojiPickerVirtualListInternal = /*
|
|
|
212
229
|
}
|
|
213
230
|
}, [isTeamojiExperimentEnabled, onEmojiActive, onEmojiDelete, onEmojiLeave, onEmojiSelected]);
|
|
214
231
|
var buildVirtualItemFromGroup = (0, _react.useCallback)(function (group) {
|
|
215
|
-
var _group$
|
|
232
|
+
var _group$subcategories3;
|
|
216
233
|
var items = [];
|
|
217
|
-
var hasAtlassianSubcategories = isTeamojiExperimentEnabled && group.category === atlassianCategory && !!((_group$
|
|
234
|
+
var hasAtlassianSubcategories = isTeamojiExperimentEnabled && group.category === atlassianCategory && !!((_group$subcategories3 = group.subcategories) !== null && _group$subcategories3 !== void 0 && _group$subcategories3.length);
|
|
218
235
|
if (!hasAtlassianSubcategories) {
|
|
219
236
|
items.push(new _EmojiPickerVirtualItems.CategoryHeadingItem({
|
|
220
237
|
id: group.category,
|
|
@@ -259,7 +276,7 @@ var EmojiPickerVirtualListInternal = exports.EmojiPickerVirtualListInternal = /*
|
|
|
259
276
|
} else {
|
|
260
277
|
if (query) {
|
|
261
278
|
var search = isTeamojiExperimentEnabled ? _categories.CategoryDescriptionMapNew.SEARCH : _categories.CategoryDescriptionMap.SEARCH;
|
|
262
|
-
if (
|
|
279
|
+
if (visibleEmojis.length === 0 && isTeamojiExperimentEnabled) {
|
|
263
280
|
// Show a "No results" category heading, then a no-results illustration below it
|
|
264
281
|
items.push(new _EmojiPickerVirtualItems.CategoryHeadingItem({
|
|
265
282
|
id: _constants.searchCategory,
|
|
@@ -275,7 +292,7 @@ var EmojiPickerVirtualListInternal = exports.EmojiPickerVirtualListInternal = /*
|
|
|
275
292
|
items = [].concat((0, _toConsumableArray2.default)(items), (0, _toConsumableArray2.default)(buildVirtualItemFromGroup({
|
|
276
293
|
category: _constants.searchCategory,
|
|
277
294
|
title: search.name,
|
|
278
|
-
emojis:
|
|
295
|
+
emojis: visibleEmojis,
|
|
279
296
|
order: search.order
|
|
280
297
|
})));
|
|
281
298
|
}
|
|
@@ -303,7 +320,7 @@ var EmojiPickerVirtualListInternal = exports.EmojiPickerVirtualListInternal = /*
|
|
|
303
320
|
}
|
|
304
321
|
}
|
|
305
322
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
306
|
-
}, [allEmojiGroups, buildVirtualItemFromGroup,
|
|
323
|
+
}, [allEmojiGroups, buildVirtualItemFromGroup, formatMessage, isTeamojiExperimentEnabled, loading, onOpenUpload, query, uploadEnabled, visibleEmojis]);
|
|
307
324
|
var findCategoryToActivate = function findCategoryToActivate(row) {
|
|
308
325
|
var category = null;
|
|
309
326
|
if (row instanceof _EmojiPickerVirtualItems.CategoryHeadingItem) {
|
|
@@ -398,9 +415,9 @@ var EmojiPickerVirtualListInternal = exports.EmojiPickerVirtualListInternal = /*
|
|
|
398
415
|
});
|
|
399
416
|
(0, _react.useEffect)(function () {
|
|
400
417
|
if (!query) {
|
|
401
|
-
buildEmojiGroupedByCategory(
|
|
418
|
+
buildEmojiGroupedByCategory(visibleEmojis, currentUser);
|
|
402
419
|
}
|
|
403
|
-
}, [
|
|
420
|
+
}, [visibleEmojis, selectedTone, selectedProductivityColor, loading, query, currentUser, buildEmojiGroupedByCategory]);
|
|
404
421
|
(0, _react.useEffect)(function () {
|
|
405
422
|
buildVirtualItems();
|
|
406
423
|
}, [allEmojiGroups, buildVirtualItems]);
|
|
@@ -409,16 +426,17 @@ var EmojiPickerVirtualListInternal = exports.EmojiPickerVirtualListInternal = /*
|
|
|
409
426
|
onRowsRendered({
|
|
410
427
|
startIndex: 0
|
|
411
428
|
});
|
|
429
|
+
setCategoriesChanged(false);
|
|
412
430
|
}
|
|
413
431
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
414
432
|
}, [virtualItems, categoriesChanged]);
|
|
415
433
|
var virtualListHeight = (0, _react.useMemo)(function () {
|
|
416
|
-
if (query &&
|
|
434
|
+
if (query && visibleEmojis.length === 0 && isTeamojiExperimentEnabled) {
|
|
417
435
|
// No-results state: expand the list height to fit heading + illustration without scrolling
|
|
418
436
|
return _EmojiPickerSizes.sizes.categoryHeadingHeight + _EmojiPickerSizes.sizes.noResultsHeight + (0, _utils.emojiPickerHeightOffset)(size);
|
|
419
437
|
}
|
|
420
438
|
return isTeamojiExperimentEnabled ? _EmojiPickerSizes.sizes.listHeightNew + (0, _utils.emojiPickerHeightOffset)(size) : _EmojiPickerSizes.sizes.listHeight + (0, _utils.emojiPickerHeightOffset)(size);
|
|
421
|
-
}, [size, query,
|
|
439
|
+
}, [size, query, visibleEmojis.length, isTeamojiExperimentEnabled]);
|
|
422
440
|
return /*#__PURE__*/_react.default.createElement(_EmojiPickerTabPanel.default, {
|
|
423
441
|
showSearchResults: !!query
|
|
424
442
|
}, /*#__PURE__*/_react.default.createElement(_EmojiActions.default, {
|
|
@@ -426,6 +444,9 @@ var EmojiPickerVirtualListInternal = exports.EmojiPickerVirtualListInternal = /*
|
|
|
426
444
|
onToneSelected: onToneSelected,
|
|
427
445
|
onToneSelectorCancelled: onToneSelectorCancelled,
|
|
428
446
|
toneEmoji: toneEmoji,
|
|
447
|
+
activeCategoryId: isTeamojiExperimentEnabled ? activeCategoryId : undefined,
|
|
448
|
+
productivityColorPreviewEmojis: isTeamojiExperimentEnabled ? productivityColorPreviewEmojis : undefined,
|
|
449
|
+
selectedProductivityColor: isTeamojiExperimentEnabled ? selectedProductivityColor : undefined,
|
|
429
450
|
uploading: uploading,
|
|
430
451
|
uploadEnabled: uploadEnabled,
|
|
431
452
|
emojiToDelete: emojiToDelete,
|
|
@@ -437,9 +458,10 @@ var EmojiPickerVirtualListInternal = exports.EmojiPickerVirtualListInternal = /*
|
|
|
437
458
|
onDeleteEmoji: onDeleteEmoji,
|
|
438
459
|
onFileChooserClicked: onFileChooserClicked,
|
|
439
460
|
onOpenUpload: onOpenUpload,
|
|
461
|
+
onProductivityColorSelected: isTeamojiExperimentEnabled ? onProductivityColorSelected : undefined,
|
|
440
462
|
query: query,
|
|
441
463
|
onChange: onSearch,
|
|
442
|
-
resultsCount:
|
|
464
|
+
resultsCount: visibleEmojis.length
|
|
443
465
|
}), /*#__PURE__*/_react.default.createElement(_EmojiPickerListContext.EmojiPickerListContextProvider, {
|
|
444
466
|
initialEmojisFocus: {
|
|
445
467
|
rowIndex: 1,
|
|
@@ -14,6 +14,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
14
14
|
var _react = _interopRequireWildcard(require("react"));
|
|
15
15
|
var _reactVirtual = require("@tanstack/react-virtual");
|
|
16
16
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
17
|
+
var _featureGateJsClient = _interopRequireDefault(require("@atlaskit/feature-gate-js-client"));
|
|
17
18
|
var _useEmojiPickerListContext = require("../../hooks/useEmojiPickerListContext");
|
|
18
19
|
var _constants = require("../../util/constants");
|
|
19
20
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
@@ -64,13 +65,11 @@ var VirtualList = exports.VirtualList = /*#__PURE__*/_react.default.forwardRef(f
|
|
|
64
65
|
var elemBottom = elementRect.bottom;
|
|
65
66
|
var parentTop = parentRect.top;
|
|
66
67
|
var parentBottom = parentRect.bottom;
|
|
67
|
-
|
|
68
|
-
// Only completely visible elements return true:
|
|
69
|
-
var isVisible = elemTop >= parentTop && elemBottom <= parentBottom;
|
|
68
|
+
var isVisible = _featureGateJsClient.default.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false) ? elemTop >= parentTop && elemBottom <= parentBottom : elemBottom > parentTop && elemTop < parentBottom;
|
|
70
69
|
return isVisible;
|
|
71
70
|
};
|
|
72
71
|
var getFirstVisibleListElementIndex = (0, _react.useCallback)(function () {
|
|
73
|
-
var _parentRef$current
|
|
72
|
+
var _parentRef$current, _virtualList$;
|
|
74
73
|
var virtualList = rowVirtualizer.getVirtualItems();
|
|
75
74
|
var renderedElements = (_parentRef$current = parentRef.current) === null || _parentRef$current === void 0 || (_parentRef$current = _parentRef$current.firstChild) === null || _parentRef$current === void 0 ? void 0 : _parentRef$current.childNodes;
|
|
76
75
|
if (virtualList.length === 0 || !renderedElements || renderedElements.length === 0) {
|
|
@@ -85,7 +84,7 @@ var VirtualList = exports.VirtualList = /*#__PURE__*/_react.default.forwardRef(f
|
|
|
85
84
|
var _virtualList$firstVis;
|
|
86
85
|
return ((_virtualList$firstVis = virtualList[firstVisibleIndex]) === null || _virtualList$firstVis === void 0 ? void 0 : _virtualList$firstVis.index) || 0;
|
|
87
86
|
}
|
|
88
|
-
return 0;
|
|
87
|
+
return _featureGateJsClient.default.getExperimentValue('platform_teamoji_26_refresh_emoji_picker', 'isEnabled', false) ? ((_virtualList$ = virtualList[0]) === null || _virtualList$ === void 0 ? void 0 : _virtualList$.index) || 0 : 0;
|
|
89
88
|
}, [rowVirtualizer]);
|
|
90
89
|
|
|
91
90
|
/**
|
|
@@ -20,7 +20,7 @@ var createEvent = function createEvent(eventType, action, actionSubject, actionS
|
|
|
20
20
|
actionSubjectId: actionSubjectId,
|
|
21
21
|
attributes: _objectSpread({
|
|
22
22
|
packageName: "@atlaskit/emoji",
|
|
23
|
-
packageVersion: "
|
|
23
|
+
packageVersion: "71.0.0"
|
|
24
24
|
}, attributes)
|
|
25
25
|
};
|
|
26
26
|
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isHiddenEmoji = exports.filterHiddenEmojis = void 0;
|
|
7
|
+
var hasHiddenTag = function hasHiddenTag(tags) {
|
|
8
|
+
var _tags$includes;
|
|
9
|
+
return (_tags$includes = tags === null || tags === void 0 ? void 0 : tags.includes('hidden')) !== null && _tags$includes !== void 0 ? _tags$includes : false;
|
|
10
|
+
};
|
|
11
|
+
var hasHiddenMetadataTag = function hasHiddenMetadataTag(emoji) {
|
|
12
|
+
var emojiWithMetadata = emoji;
|
|
13
|
+
var metadata = emojiWithMetadata.metadata;
|
|
14
|
+
if (typeof metadata === 'string') {
|
|
15
|
+
return metadata === 'hidden';
|
|
16
|
+
}
|
|
17
|
+
if (Array.isArray(metadata)) {
|
|
18
|
+
return hasHiddenTag(metadata);
|
|
19
|
+
}
|
|
20
|
+
return hasHiddenTag(metadata === null || metadata === void 0 ? void 0 : metadata.tags) || hasHiddenTag(emojiWithMetadata.tags);
|
|
21
|
+
};
|
|
22
|
+
var isHiddenEmoji = exports.isHiddenEmoji = function isHiddenEmoji(emoji) {
|
|
23
|
+
var emojiWithMetadata = emoji;
|
|
24
|
+
if (emojiWithMetadata.hidden) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
return hasHiddenMetadataTag(emoji);
|
|
28
|
+
};
|
|
29
|
+
var filterHiddenEmojis = exports.filterHiddenEmojis = function filterHiddenEmojis(emojis) {
|
|
30
|
+
return emojis.filter(function (emoji) {
|
|
31
|
+
return !isHiddenEmoji(emoji);
|
|
32
|
+
});
|
|
33
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.productivityColors = exports.isProductivityNumberEmoji = exports.getProductivityColorPreviewEmojis = exports.getProductivityColor = exports.filterProductivityEmojisByColor = exports.defaultProductivityColor = void 0;
|
|
7
|
+
var productivityColors = exports.productivityColors = ['gray', 'magenta', 'purple', 'blue', 'teal', 'green', 'lime', 'yellow', 'orange', 'red'];
|
|
8
|
+
var productivityColorSet = new Set(productivityColors);
|
|
9
|
+
var zeroSquareVariantParent = '0_zero_square_blue';
|
|
10
|
+
var defaultProductivityColor = exports.defaultProductivityColor = 'blue';
|
|
11
|
+
var getProductivityVariant = function getProductivityVariant(emoji) {
|
|
12
|
+
if (emoji.type !== 'ATLASSIAN' || !emoji.color || !productivityColorSet.has(emoji.color)) {
|
|
13
|
+
return undefined;
|
|
14
|
+
}
|
|
15
|
+
return {
|
|
16
|
+
color: emoji.color
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
var getProductivityColor = exports.getProductivityColor = function getProductivityColor(emoji) {
|
|
20
|
+
var _getProductivityVaria;
|
|
21
|
+
return (_getProductivityVaria = getProductivityVariant(emoji)) === null || _getProductivityVaria === void 0 ? void 0 : _getProductivityVaria.color;
|
|
22
|
+
};
|
|
23
|
+
var isProductivityNumberEmoji = exports.isProductivityNumberEmoji = function isProductivityNumberEmoji(emoji) {
|
|
24
|
+
return getProductivityColor(emoji) !== undefined;
|
|
25
|
+
};
|
|
26
|
+
var filterProductivityEmojisByColor = exports.filterProductivityEmojisByColor = function filterProductivityEmojisByColor(emojis, selectedColor) {
|
|
27
|
+
return emojis.filter(function (emoji) {
|
|
28
|
+
var variant = getProductivityVariant(emoji);
|
|
29
|
+
return !variant || variant.color === selectedColor;
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
var isZeroSquareProductivityEmoji = function isZeroSquareProductivityEmoji(emoji) {
|
|
33
|
+
var _emoji$variantChildre, _emoji$keywords, _emoji$variantChildre2;
|
|
34
|
+
return emoji.variantParent === zeroSquareVariantParent || ((_emoji$variantChildre = emoji.variantChildren) === null || _emoji$variantChildre === void 0 ? void 0 : _emoji$variantChildre.some(function (variantChild) {
|
|
35
|
+
return variantChild.includes('0_zero_square_');
|
|
36
|
+
})) || !!(emoji.variantBase && (_emoji$keywords = emoji.keywords) !== null && _emoji$keywords !== void 0 && _emoji$keywords.includes('0') && (_emoji$variantChildre2 = emoji.variantChildren) !== null && _emoji$variantChildre2 !== void 0 && _emoji$variantChildre2.some(function (variantChild) {
|
|
37
|
+
return variantChild.includes('_square_');
|
|
38
|
+
}));
|
|
39
|
+
};
|
|
40
|
+
var getProductivityColorPreviewEmojis = exports.getProductivityColorPreviewEmojis = function getProductivityColorPreviewEmojis(emojis) {
|
|
41
|
+
return emojis.reduce(function (previewEmojis, emoji) {
|
|
42
|
+
var color = getProductivityColor(emoji);
|
|
43
|
+
if (!color) {
|
|
44
|
+
return previewEmojis;
|
|
45
|
+
}
|
|
46
|
+
if (isZeroSquareProductivityEmoji(emoji) || !previewEmojis[color]) {
|
|
47
|
+
previewEmojis[color] = emoji;
|
|
48
|
+
}
|
|
49
|
+
return previewEmojis;
|
|
50
|
+
}, {});
|
|
51
|
+
};
|
|
@@ -334,6 +334,7 @@ export const ImageEmoji = props => {
|
|
|
334
334
|
);
|
|
335
335
|
};
|
|
336
336
|
export const EmojiNodeWrapper = /*#__PURE__*/forwardRef((props, ref) => {
|
|
337
|
+
var _emoji$name;
|
|
337
338
|
const {
|
|
338
339
|
emoji,
|
|
339
340
|
fitToHeight,
|
|
@@ -359,7 +360,7 @@ export const EmojiNodeWrapper = /*#__PURE__*/forwardRef((props, ref) => {
|
|
|
359
360
|
} = props;
|
|
360
361
|
const intl = useContext(IntlContext);
|
|
361
362
|
const ariaLabel = intl && fg('platform_change_emoji_button_label') ? intl.formatMessage(messages.changeEmojiShortnameButtonLabel, {
|
|
362
|
-
shortName: emoji.shortName
|
|
363
|
+
shortName: (_emoji$name = emoji.name) !== null && _emoji$name !== void 0 ? _emoji$name : emoji.shortName
|
|
363
364
|
}) : editorEmoji ? undefined : emoji.shortName;
|
|
364
365
|
return /*#__PURE__*/React.createElement("span", _extends({
|
|
365
366
|
role: editorEmoji ? undefined : shouldBeInteractive ? 'button' : ariaLabel ? 'img' : 'presentation',
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
|
|
2
|
+
._19itia51{border:var(--ds-border-width,1px) solid var(--ds-border,#0b120e24)}
|
|
3
|
+
._2rkofajl{border-radius:var(--ds-radius-small,3px)}
|
|
2
4
|
._n7zl1uh4{border-bottom:var(--ds-border-width-selected,2px) solid var(--ds-border,#0b120e24)}._16jlidpf{flex-grow:0}
|
|
3
5
|
._16jlkb7n{flex-grow:1}
|
|
6
|
+
._16qs130s{box-shadow:var(--ds-shadow-overlay,0 8px 9pt #1e1f2126,0 0 1px #1e1f214f)}
|
|
4
7
|
._16qsjgpa{box-shadow:0 1px 1px 0 var(--ds-border,#0b120e24)}
|
|
5
8
|
._18u019bv{margin-left:10px}
|
|
6
9
|
._18u0r5cr{margin-left:var(--ds-space-negative-050,-4px)}
|
|
10
|
+
._19bv12x7{padding-left:var(--ds-space-075,6px)}
|
|
7
11
|
._19bvidpf{padding-left:0}
|
|
8
12
|
._1bahesu3{justify-content:flex-end}
|
|
9
13
|
._1e0c1txw{display:flex}
|
|
@@ -12,10 +16,14 @@
|
|
|
12
16
|
._1wpz1h6o{align-self:center}
|
|
13
17
|
._2hwx1i6y{margin-right:var(--ds-space-negative-025,-2px)}
|
|
14
18
|
._4cvr1h6o{align-items:center}
|
|
19
|
+
._bfhk1bhr{background-color:var(--ds-surface-overlay,#fff)}
|
|
20
|
+
._ca0q12x7{padding-top:var(--ds-space-075,6px)}
|
|
15
21
|
._ca0q1skh{padding-top:11px}
|
|
16
22
|
._i0dl1wug{flex-basis:auto}
|
|
17
23
|
._i0dlf1ug{flex-basis:0%}
|
|
24
|
+
._n3td12x7{padding-bottom:var(--ds-space-075,6px)}
|
|
18
25
|
._n3td1crf{padding-bottom:9pt}
|
|
19
26
|
._otyr19bv{margin-bottom:10px}
|
|
20
27
|
._p12f3sup{max-width:285px}
|
|
28
|
+
._u5f312x7{padding-right:var(--ds-space-075,6px)}
|
|
21
29
|
._u5f319bv{padding-right:10px}
|