@atlaskit/emoji 69.3.4 → 69.3.5

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.
Files changed (31) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/cjs/components/common/EmojiDeletePreview.js +4 -18
  3. package/dist/cjs/components/common/LoadingEmojiComponent.js +2 -12
  4. package/dist/cjs/components/picker/EmojiPickerComponent.js +2 -31
  5. package/dist/cjs/components/picker/EmojiPickerList.js +3 -351
  6. package/dist/cjs/components/typeahead/EmojiTypeAheadComponent.js +8 -26
  7. package/dist/cjs/components/typeahead/EmojiTypeAheadList.js +11 -37
  8. package/dist/cjs/util/analytics/analytics.js +1 -1
  9. package/dist/es2019/components/common/EmojiDeletePreview.js +4 -16
  10. package/dist/es2019/components/common/LoadingEmojiComponent.js +2 -10
  11. package/dist/es2019/components/picker/EmojiPickerComponent.js +3 -32
  12. package/dist/es2019/components/picker/EmojiPickerList.js +2 -323
  13. package/dist/es2019/components/typeahead/EmojiTypeAheadComponent.js +7 -23
  14. package/dist/es2019/components/typeahead/EmojiTypeAheadList.js +13 -41
  15. package/dist/es2019/util/analytics/analytics.js +1 -1
  16. package/dist/esm/components/common/EmojiDeletePreview.js +4 -18
  17. package/dist/esm/components/common/LoadingEmojiComponent.js +2 -12
  18. package/dist/esm/components/picker/EmojiPickerComponent.js +3 -32
  19. package/dist/esm/components/picker/EmojiPickerList.js +3 -351
  20. package/dist/esm/components/typeahead/EmojiTypeAheadComponent.js +8 -26
  21. package/dist/esm/components/typeahead/EmojiTypeAheadList.js +11 -37
  22. package/dist/esm/util/analytics/analytics.js +1 -1
  23. package/dist/types/components/common/LoadingEmojiComponent.d.ts +0 -1
  24. package/dist/types/components/picker/EmojiPickerList.d.ts +2 -52
  25. package/dist/types/components/typeahead/EmojiTypeAheadComponent.d.ts +0 -1
  26. package/dist/types/components/typeahead/EmojiTypeAheadList.d.ts +0 -1
  27. package/dist/types-ts4.5/components/common/LoadingEmojiComponent.d.ts +0 -1
  28. package/dist/types-ts4.5/components/picker/EmojiPickerList.d.ts +2 -52
  29. package/dist/types-ts4.5/components/typeahead/EmojiTypeAheadComponent.d.ts +0 -1
  30. package/dist/types-ts4.5/components/typeahead/EmojiTypeAheadList.d.ts +0 -1
  31. package/package.json +1 -7
@@ -15,7 +15,6 @@ import CachingEmoji from './CachingEmoji';
15
15
  import EmojiErrorMessage, { emojiErrorScreenreaderTestId } from './EmojiErrorMessage';
16
16
  import RetryableButton from './RetryableButton';
17
17
  import VisuallyHidden from '@atlaskit/visually-hidden';
18
- import { fg } from '@atlaskit/platform-feature-flags';
19
18
  const deleteFooter = null;
20
19
  const deletePreview = null;
21
20
  const deleteText = null;
@@ -55,22 +54,11 @@ class EmojiDeletePreview extends Component {
55
54
  error: false
56
55
  };
57
56
  }
58
- UNSAFE_componentWillUpdate(nextProps) {
59
- if (!fg('platform_editor_react18_elements_emoji') || !fg('platform_editor_react18_elements_emoji_jira_bb')) {
60
- if (nextProps.emoji.id !== this.props.emoji.id) {
61
- this.setState({
62
- error: false
63
- });
64
- }
65
- }
66
- }
67
57
  componentDidUpdate(prevProps) {
68
- if (fg('platform_editor_react18_elements_emoji') || fg('platform_editor_react18_elements_emoji_jira_bb')) {
69
- if (prevProps.emoji.id !== this.props.emoji.id) {
70
- this.setState({
71
- error: false
72
- });
73
- }
58
+ if (prevProps.emoji.id !== this.props.emoji.id) {
59
+ this.setState({
60
+ error: false
61
+ });
74
62
  }
75
63
  }
76
64
  render() {
@@ -1,6 +1,5 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import { Component } from 'react';
3
- import { fg } from '@atlaskit/platform-feature-flags';
4
3
  /**
5
4
  * A base class for components that don't want to start rendering
6
5
  * until the EmojiProvider is resolved.
@@ -26,16 +25,9 @@ export default class LoadingEmojiComponent extends Component {
26
25
  this.asyncLoadComponent();
27
26
  }
28
27
  }
29
- UNSAFE_componentWillReceiveProps(nextProps) {
30
- if (!fg('platform_editor_react18_elements_emoji') || !fg('platform_editor_react18_elements_emoji_jira_bb')) {
31
- this.loadEmojiProvider(nextProps.emojiProvider);
32
- }
33
- }
34
28
  componentDidUpdate(prevProps) {
35
- if (fg('platform_editor_react18_elements_emoji') || fg('platform_editor_react18_elements_emoji_jira_bb')) {
36
- if (this.props !== prevProps) {
37
- this.loadEmojiProvider(this.props.emojiProvider);
38
- }
29
+ if (this.props !== prevProps) {
30
+ this.loadEmojiProvider(this.props.emojiProvider);
39
31
  }
40
32
  }
41
33
  componentWillUnmount() {
@@ -16,12 +16,11 @@ import { uploadEmoji } from '../common/UploadEmoji';
16
16
  import { createRecordSelectionDefault } from '../common/RecordSelectionDefault';
17
17
  import CategorySelector from './CategorySelector';
18
18
  import EmojiPickerFooter from './EmojiPickerFooter';
19
- import { EmojiPickerVirtualListInternalOld as EmojiPickerListOld, EmojiPickerVirtualListInternalNew as EmojiPickerListNew } from './EmojiPickerList';
19
+ import { EmojiPickerVirtualListInternal as EmojiPickerList } from './EmojiPickerList';
20
20
  import { createAndFireEventInElementsChannel, categoryClickedEvent, closedPickerEvent, deleteBeginEvent, deleteCancelEvent, deleteConfirmEvent, openedPickerEvent, pickerClickedEvent, pickerSearchedEvent, selectedFileEvent, uploadBeginButton, uploadCancelButton, uploadConfirmButton, toneSelectorClosedEvent, ufoExperiences } from '../../util/analytics';
21
21
  import { useEmoji } from '../../hooks/useEmoji';
22
22
  import { useIsMounted } from '../../hooks/useIsMounted';
23
23
  import { messages } from '../i18n';
24
- import { fg } from '@atlaskit/platform-feature-flags';
25
24
  const emojiPickerBoxShadow = "var(--ds-shadow-overlay, 0 3px 6px rgba(0, 0, 0, 0.2))";
26
25
  const emojiPickerHeight = 295;
27
26
  const emojiPickerHeightWithPreview = 349; // emojiPickerHeight + emojiPickerPreviewHeight;
@@ -68,7 +67,7 @@ const EmojiPickerComponent = ({
68
67
  const [uploadErrorMessage, setUploadErrorMessage] = useState();
69
68
  const [emojiToDelete, setEmojiToDelete] = useState();
70
69
  const [toneEmoji, setToneEmoji] = useState();
71
- const emojiPickerList = useMemo(() => fg('platform_editor_react18_elements_emoji') || fg('platform_editor_react18_elements_emoji_jira_bb') ? /*#__PURE__*/createRef() : /*#__PURE__*/createRef(), []);
70
+ const emojiPickerList = useMemo(() => /*#__PURE__*/createRef(), []);
72
71
  const openTime = useRef(0);
73
72
  const isMounting = useRef(true);
74
73
  const previousEmojiProvider = useRef(emojiProvider);
@@ -443,35 +442,7 @@ const EmojiPickerComponent = ({
443
442
  dynamicCategories: dynamicCategories,
444
443
  disableCategories: disableCategories,
445
444
  onCategorySelected: onCategorySelected
446
- }), fg('platform_editor_react18_elements_emoji') || fg('platform_editor_react18_elements_emoji_jira_bb') ? /*#__PURE__*/React.createElement(EmojiPickerListNew, {
447
- emojis: filteredEmojis,
448
- currentUser: currentUser,
449
- onEmojiSelected: recordUsageOnSelection,
450
- onEmojiActive: onEmojiActive,
451
- onEmojiDelete: onTriggerDelete,
452
- onCategoryActivated: onCategoryActivated,
453
- onSearch: onSearch,
454
- query: query,
455
- selectedTone: selectedTone,
456
- loading: loading,
457
- ref: emojiPickerList,
458
- initialUploadName: query,
459
- onToneSelected: onToneSelected,
460
- onToneSelectorCancelled: onToneSelectorCancelled,
461
- toneEmoji: toneEmoji,
462
- uploading: uploading,
463
- emojiToDelete: emojiToDelete,
464
- uploadErrorMessage: formattedErrorMessage,
465
- uploadEnabled: isUploadSupported && !uploading,
466
- onUploadEmoji: onUploadEmoji,
467
- onUploadCancelled: onUploadCancelled,
468
- onDeleteEmoji: onDeleteEmoji,
469
- onCloseDelete: onCloseDelete,
470
- onFileChooserClicked: onFileChooserClicked,
471
- onOpenUpload: onOpenUpload,
472
- size: size,
473
- activeCategoryId: activeCategory
474
- }) : /*#__PURE__*/React.createElement(EmojiPickerListOld, {
445
+ }), /*#__PURE__*/React.createElement(EmojiPickerList, {
475
446
  emojis: filteredEmojis,
476
447
  currentUser: currentUser,
477
448
  onEmojiSelected: recordUsageOnSelection,
@@ -1,5 +1,4 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- import React, { createRef, PureComponent, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
1
+ import React, { useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
3
2
  import { customCategory, defaultEmojiPickerSize, frequentCategory, searchCategory, userCustomTitle, yourUploadsCategory } from '../../util/constants';
4
3
  import { CategoryDescriptionMap } from './categories';
5
4
  import CategoryTracker from './CategoryTracker';
@@ -22,327 +21,7 @@ const categoryClassname = 'emoji-category';
22
21
  */
23
22
 
24
23
  const byOrder = (orderableA, orderableB) => (orderableA.order || 0) - (orderableB.order || 0);
25
- export class EmojiPickerVirtualListInternalOld extends PureComponent {
26
- constructor(_props) {
27
- super(_props);
28
- _defineProperty(this, "virtualItems", []);
29
- _defineProperty(this, "categoryTracker", new CategoryTracker());
30
- _defineProperty(this, "listRef", /*#__PURE__*/createRef());
31
- _defineProperty(this, "onEmojiActive", (emojiId, emoji) => {
32
- if (this.props.onEmojiActive) {
33
- this.props.onEmojiActive(emojiId, emoji);
34
- }
35
- });
36
- _defineProperty(this, "onSearch", value => {
37
- if (this.props.onSearch) {
38
- this.props.onSearch(value);
39
- }
40
- });
41
- _defineProperty(this, "findEmojiRowAndColumnById", emojiId => {
42
- let columnIndex = -1;
43
- // for most of cases, it'd be in first emoji row, so should be quite fast to find in real world
44
- let rowIndex = this.virtualItems.findIndex(rowItem => {
45
- if (rowItem instanceof EmojisRowItem) {
46
- // find uploaded emoji in each emoji row
47
- columnIndex = rowItem.props.emojis.findIndex(emoji => emoji.id === emojiId);
48
- return columnIndex !== -1;
49
- }
50
- return false;
51
- });
52
- return {
53
- rowIndex,
54
- columnIndex
55
- };
56
- });
57
- _defineProperty(this, "buildVirtualItemFromGroup", group => {
58
- const {
59
- onEmojiSelected,
60
- onEmojiDelete
61
- } = this.props;
62
- const items = [];
63
- items.push(new CategoryHeadingItem({
64
- id: group.category,
65
- title: group.title,
66
- className: categoryClassname
67
- }));
68
- let remainingEmojis = group.emojis;
69
- while (remainingEmojis.length > 0) {
70
- const rowEmojis = remainingEmojis.slice(0, sizes.emojiPerRow);
71
- remainingEmojis = remainingEmojis.slice(sizes.emojiPerRow);
72
- items.push(new EmojisRowItem({
73
- category: group.category,
74
- emojis: rowEmojis,
75
- title: group.title,
76
- showDelete: group.title === userCustomTitle,
77
- onSelected: onEmojiSelected,
78
- onDelete: onEmojiDelete,
79
- onMouseMove: this.onEmojiActive,
80
- onFocus: this.onEmojiActive
81
- }));
82
- }
83
- return items;
84
- });
85
- _defineProperty(this, "buildVirtualItems", (props, _state) => {
86
- const {
87
- emojis,
88
- loading,
89
- query
90
- } = props;
91
- let items = [];
92
- const prevFirstCategory = this.categoryTracker.getFirstCategory();
93
- this.categoryTracker.reset();
94
- if (loading) {
95
- items.push(new LoadingItem());
96
- } else {
97
- if (query) {
98
- const search = CategoryDescriptionMap.SEARCH;
99
- // Only a single "result" category
100
- items = [...items, ...this.buildVirtualItemFromGroup({
101
- category: searchCategory,
102
- title: search.name,
103
- emojis,
104
- order: search.order
105
- })];
106
- } else {
107
- // Group by category
108
-
109
- // Not searching show in categories.
110
- this.allEmojiGroups.forEach(group => {
111
- // Optimisation - avoid re-rendering unaffected groups for the current selectedShortcut
112
- // by not passing it to irrelevant groups
113
- this.categoryTracker.add(group.emojis[0].category, items.length);
114
- items = [...items, ...this.buildVirtualItemFromGroup(group)];
115
- if (group.category === yourUploadsCategory) {
116
- this.lastYourUploadsRow = items.length - 1;
117
- }
118
- });
119
- }
120
- }
121
-
122
- // make sure virtualItems is up-to-date before calling onRowsRendered
123
- this.virtualItems = items;
124
- if (!loading && !query) {
125
- if (this.categoryTracker.getFirstCategory() !== prevFirstCategory) {
126
- this.onRowsRendered({
127
- startIndex: 0
128
- });
129
- }
130
- }
131
- });
132
- _defineProperty(this, "addToCategoryMap", (categoryToGroupMap, emoji, category) => {
133
- if (!categoryToGroupMap[category]) {
134
- const categoryDefinition = CategoryDescriptionMap[category];
135
- categoryToGroupMap[category] = {
136
- emojis: [],
137
- title: categoryDefinition.name,
138
- category,
139
- order: categoryDefinition.order
140
- };
141
- }
142
- categoryToGroupMap[category].emojis.push(emoji);
143
- return categoryToGroupMap;
144
- });
145
- _defineProperty(this, "groupByCategory", currentUser => (categoryToGroupMap, emoji) => {
146
- this.addToCategoryMap(categoryToGroupMap, emoji, emoji.category);
147
- // separate user emojis
148
- if (emoji.category === customCategory && currentUser && emoji.creatorUserId === currentUser.id) {
149
- this.addToCategoryMap(categoryToGroupMap, emoji, yourUploadsCategory);
150
- }
151
- return categoryToGroupMap;
152
- });
153
- _defineProperty(this, "buildEmojiGroupedByCategory", (emojis, currentUser) => {
154
- const categoryToGroupMap = emojis.reduce(this.groupByCategory(currentUser), {});
155
- this.allEmojiGroups = Object.keys(categoryToGroupMap).map(key => categoryToGroupMap[key]).map(group => {
156
- if (group.category !== frequentCategory) {
157
- group.emojis.sort(byOrder);
158
- }
159
- return group;
160
- }).sort(byOrder);
161
- });
162
- _defineProperty(this, "findCategoryToActivate", row => {
163
- let category = null;
164
- if (row instanceof CategoryHeadingItem) {
165
- category = row.props.id;
166
- } else if (row instanceof EmojisRowItem) {
167
- category = row.props.category;
168
- }
169
-
170
- // your uploads is rendered, take it as upload category, so could be highlighted in category selector
171
- if (category === yourUploadsCategory) {
172
- return customCategory;
173
- // search results is rendered, return null so won't be highlighted for category selector
174
- } else if (category === searchCategory) {
175
- return null;
176
- }
177
- return category;
178
- });
179
- /**
180
- * onRowsRendered callback function
181
- *
182
- * Check the category of top of rendered row and inform category selector to change active category
183
- * Rove index of emoji picker list
184
- */
185
- _defineProperty(this, "onRowsRendered", indexes => {
186
- const {
187
- startIndex
188
- } = indexes;
189
- const rowItem = this.virtualItems[startIndex];
190
- const list = this.listRef.current;
191
-
192
- // update tabIndex manually, startIndex is not 0 based here
193
- if (rowItem instanceof CategoryHeadingItem) {
194
- // if top of row rendered is category heading, update tabIndex for the next emoji row
195
- list === null || list === void 0 ? void 0 : list.updateFocusIndex(startIndex + 1);
196
- } else if (rowItem instanceof EmojisRowItem) {
197
- // if top of row rendered is emoji row, update it's tabIndex.
198
- list === null || list === void 0 ? void 0 : list.updateFocusIndex(startIndex);
199
- }
200
- if (!this.props.query) {
201
- // Calculate category in view - only relevant if categories shown, i.e. no query
202
- const currentCategory = this.findCategoryToActivate(rowItem);
203
- if (currentCategory !== null && this.props.activeCategoryId !== currentCategory) {
204
- if (this.props.onCategoryActivated) {
205
- this.props.onCategoryActivated(currentCategory);
206
- }
207
- }
208
- }
209
- });
210
- _defineProperty(this, "rowSize", index => {
211
- var _this$virtualItems$in;
212
- return ((_this$virtualItems$in = this.virtualItems[index]) === null || _this$virtualItems$in === void 0 ? void 0 : _this$virtualItems$in.height) || sizes.categoryHeadingHeight;
213
- });
214
- _defineProperty(this, "renderRow", context => {
215
- return virtualItemRenderer(this.virtualItems, context);
216
- });
217
- /**
218
- * After deleting emoji, we'll update the focus index to the first emoji of last row of your uploads, so when user navigate back focus will still work
219
- * if last emoji in your uploads is deleted, the updated focus index will be outdated, as there will be no your uploads section
220
- * however, it'll trigger onChange from VirtualList, which will update focus index automatically for us
221
- */
222
- _defineProperty(this, "handleOnCloseDelete", () => {
223
- const list = this.listRef.current;
224
- list === null || list === void 0 ? void 0 : list.updateFocusIndex(this.lastYourUploadsRow);
225
- this.props.onCloseDelete();
226
- });
227
- this.lastYourUploadsRow = 0;
228
- this.buildEmojiGroupedByCategory(_props.emojis, _props.currentUser);
229
- this.buildVirtualItems(_props, this.state);
230
- }
231
- UNSAFE_componentWillUpdate(nextProps, nextState) {
232
- if (this.props.emojis !== nextProps.emojis || this.props.selectedTone !== nextProps.selectedTone || this.props.loading !== nextProps.loading || this.props.query !== nextProps.query) {
233
- if (!nextProps.query) {
234
- // Only refresh if no query
235
- this.buildEmojiGroupedByCategory(nextProps.emojis, nextProps.currentUser);
236
- }
237
- this.buildVirtualItems(nextProps, nextState);
238
- }
239
- }
240
- /**
241
- * Scrolls to a category in the list view
242
- */
243
- reveal(category) {
244
- const row = this.categoryTracker.getRow(category);
245
- this.scrollToRow(row);
246
- }
247
- scrollToBottom() {
248
- this.scrollToRow(this.virtualItems.length);
249
- }
250
- scrollToTop() {
251
- this.scrollToRow(0);
252
- }
253
- scrollToRow(index) {
254
- var _this$listRef$current;
255
- (_this$listRef$current = this.listRef.current) === null || _this$listRef$current === void 0 ? void 0 : _this$listRef$current.scrollToRow(index);
256
- }
257
- scrollToRecentlyUploaded(uploadedEmoji) {
258
- // when search results is shown
259
- if (this.props.query) {
260
- const {
261
- rowIndex,
262
- columnIndex
263
- } = this.findEmojiRowAndColumnById(uploadedEmoji.id);
264
- if (rowIndex !== -1) {
265
- var _this$listRef$current2;
266
- (_this$listRef$current2 = this.listRef.current) === null || _this$listRef$current2 === void 0 ? void 0 : _this$listRef$current2.scrollToEmojiAndFocus(rowIndex, columnIndex);
267
- }
268
- } else {
269
- // when seeing all emojis
270
- const row = this.lastYourUploadsRow;
271
- if (row > 0) {
272
- var _this$listRef$current3;
273
- (_this$listRef$current3 = this.listRef.current) === null || _this$listRef$current3 === void 0 ? void 0 : _this$listRef$current3.scrollToRowAndFocusLastEmoji(this.lastYourUploadsRow);
274
- }
275
- }
276
- }
277
- render() {
278
- const {
279
- query,
280
- selectedTone,
281
- onToneSelected,
282
- onToneSelectorCancelled,
283
- toneEmoji,
284
- uploading,
285
- uploadEnabled,
286
- emojiToDelete,
287
- initialUploadName,
288
- uploadErrorMessage,
289
- onUploadCancelled,
290
- onUploadEmoji,
291
- onDeleteEmoji,
292
- onFileChooserClicked,
293
- onOpenUpload,
294
- size = defaultEmojiPickerSize,
295
- emojis
296
- } = this.props;
297
- const virtualListHeight = sizes.listHeight + emojiPickerHeightOffset(size);
298
- return /*#__PURE__*/React.createElement(EmojiPickerTabPanel, {
299
- showSearchResults: !!query
300
- }, /*#__PURE__*/React.createElement(EmojiActions, {
301
- selectedTone: selectedTone,
302
- onToneSelected: onToneSelected,
303
- onToneSelectorCancelled: onToneSelectorCancelled,
304
- toneEmoji: toneEmoji,
305
- uploading: uploading,
306
- uploadEnabled: uploadEnabled,
307
- emojiToDelete: emojiToDelete,
308
- initialUploadName: initialUploadName,
309
- uploadErrorMessage: uploadErrorMessage,
310
- onUploadCancelled: onUploadCancelled,
311
- onUploadEmoji: onUploadEmoji,
312
- onCloseDelete: this.handleOnCloseDelete,
313
- onDeleteEmoji: onDeleteEmoji,
314
- onFileChooserClicked: onFileChooserClicked,
315
- onOpenUpload: onOpenUpload,
316
- query: query,
317
- onChange: this.onSearch,
318
- resultsCount: emojis.length
319
- }), /*#__PURE__*/React.createElement(EmojiPickerListContextProvider, {
320
- initialEmojisFocus: {
321
- rowIndex: 1,
322
- columnIndex: 0
323
- }
324
- }, /*#__PURE__*/React.createElement(VirtualList, {
325
- ref: this.listRef,
326
- height: virtualListHeight,
327
- overscanRowCount: 10,
328
- rowCount: this.virtualItems.length,
329
- rowHeight: this.rowSize,
330
- rowRenderer: this.renderRow,
331
- scrollToAlignment: "start",
332
- width: sizes.listWidth,
333
- onRowsRendered: this.onRowsRendered
334
- })));
335
- }
336
- }
337
- _defineProperty(EmojiPickerVirtualListInternalOld, "defaultProps", {
338
- onEmojiSelected: () => {},
339
- onEmojiActive: () => {},
340
- onEmojiDelete: () => {},
341
- onCategoryActivated: () => {},
342
- onSearch: () => {},
343
- size: defaultEmojiPickerSize
344
- });
345
- export const EmojiPickerVirtualListInternalNew = /*#__PURE__*/React.forwardRef((props, ref) => {
24
+ export const EmojiPickerVirtualListInternal = /*#__PURE__*/React.forwardRef((props, ref) => {
346
25
  const {
347
26
  emojis,
348
27
  currentUser,
@@ -12,7 +12,6 @@ import { toEmojiId } from '../../util/type-helpers';
12
12
  import { createRecordSelectionDefault } from '../common/RecordSelectionDefault';
13
13
  import EmojiList from './EmojiTypeAheadList';
14
14
  import { emojiTypeAhead } from './styles';
15
- import { fg } from '@atlaskit/platform-feature-flags';
16
15
  const isFullShortName = query => query && query.length > 1 && query.charAt(0) === ':' && query.charAt(query.length - 1) === ':';
17
16
  const uniqueExactShortNameMatchIndex = (searchResult, query) => {
18
17
  if (!query) {
@@ -160,31 +159,16 @@ export default class EmojiTypeAheadComponent extends PureComponent {
160
159
  this.sessionId = uuid();
161
160
  this.selected = false;
162
161
  }
163
- UNSAFE_componentWillReceiveProps(nextProps) {
164
- if (!fg('platform_editor_react18_elements_emoji') || !fg('platform_editor_react18_elements_emoji_jira_bb')) {
165
- const prevEmojiProvider = this.props.emojiProvider;
166
- const nextEmojiProvider = nextProps.emojiProvider;
162
+ componentDidUpdate(prevProps) {
163
+ if (prevProps !== this.props) {
164
+ const prevEmojiProvider = prevProps.emojiProvider;
165
+ const nextEmojiProvider = this.props.emojiProvider;
167
166
  if (prevEmojiProvider !== nextEmojiProvider) {
168
167
  prevEmojiProvider.unsubscribe(this.onProviderChange);
169
168
  nextEmojiProvider.subscribe(this.onProviderChange);
170
- this.onSearch(nextProps.query);
171
- } else if (this.props.query !== nextProps.query) {
172
- this.onSearch(nextProps.query);
173
- }
174
- }
175
- }
176
- componentDidUpdate(prevProps) {
177
- if (fg('platform_editor_react18_elements_emoji') || fg('platform_editor_react18_elements_emoji_jira_bb')) {
178
- if (prevProps !== this.props) {
179
- const prevEmojiProvider = prevProps.emojiProvider;
180
- const nextEmojiProvider = this.props.emojiProvider;
181
- if (prevEmojiProvider !== nextEmojiProvider) {
182
- prevEmojiProvider.unsubscribe(this.onProviderChange);
183
- nextEmojiProvider.subscribe(this.onProviderChange);
184
- this.onSearch(this.props.query);
185
- } else if (prevProps.query !== this.props.query) {
186
- this.onSearch(this.props.query);
187
- }
169
+ this.onSearch(this.props.query);
170
+ } else if (prevProps.query !== this.props.query) {
171
+ this.onSearch(this.props.query);
188
172
  }
189
173
  }
190
174
  }
@@ -6,7 +6,6 @@ import debug from '../../util/logger';
6
6
  import { actualMouseMove, mouseLocation } from '../../util/mouse';
7
7
  import Scrollable from '../common/Scrollable';
8
8
  import EmojiItem from './EmojiTypeAheadItem';
9
- import { fg } from '@atlaskit/platform-feature-flags';
10
9
  import { EmojiTypeAheadListContainer } from './EmojiTypeAheadListContainer';
11
10
  import { EmojiTypeAheadSpinner } from './EmojiTypeAheadSpinner';
12
11
  function wrapIndex(emojis, index) {
@@ -77,31 +76,6 @@ export default class EmojiTypeAheadList extends PureComponent {
77
76
  selectedIndex: 0
78
77
  };
79
78
  }
80
- UNSAFE_componentWillReceiveProps(nextProps) {
81
- if (!fg('platform_editor_react18_elements_emoji') || !fg('platform_editor_react18_elements_emoji_jira_bb')) {
82
- // adjust selection
83
- const {
84
- emojis
85
- } = nextProps;
86
- const {
87
- selectedKey
88
- } = this.state;
89
- if (!selectedKey) {
90
- // go with default of selecting first item
91
- return;
92
- }
93
- for (let i = 0; i < emojis.length; i++) {
94
- if (selectedKey === emojis[i].id) {
95
- this.setState({
96
- selectedIndex: i
97
- });
98
- return;
99
- }
100
- }
101
- // existing selection not in results, pick first
102
- this.selectIndexNewEmoji(0, emojis);
103
- }
104
- }
105
79
  componentDidUpdate(prevProps) {
106
80
  const {
107
81
  emojis
@@ -114,24 +88,22 @@ export default class EmojiTypeAheadList extends PureComponent {
114
88
  const selectedEmoji = emojis[selectedIndex];
115
89
  this.revealItem(selectedEmoji.id || selectedEmoji.shortName);
116
90
  }
117
- if (fg('platform_editor_react18_elements_emoji') || fg('platform_editor_react18_elements_emoji_jira_bb')) {
118
- if (prevProps !== this.props) {
119
- // adjust selection
120
- if (!selectedKey) {
121
- // go with default of selecting first item
91
+ if (prevProps !== this.props) {
92
+ // adjust selection
93
+ if (!selectedKey) {
94
+ // go with default of selecting first item
95
+ return;
96
+ }
97
+ for (let i = 0; i < emojis.length; i++) {
98
+ if (selectedKey === emojis[i].id) {
99
+ this.setState({
100
+ selectedIndex: i
101
+ });
122
102
  return;
123
103
  }
124
- for (let i = 0; i < emojis.length; i++) {
125
- if (selectedKey === emojis[i].id) {
126
- this.setState({
127
- selectedIndex: i
128
- });
129
- return;
130
- }
131
- }
132
- // existing selection not in results, pick first
133
- this.selectIndexNewEmoji(0, emojis);
134
104
  }
105
+ // existing selection not in results, pick first
106
+ this.selectIndexNewEmoji(0, emojis);
135
107
  }
136
108
  }
137
109
  // Internal
@@ -8,7 +8,7 @@ const createEvent = (eventType, action, actionSubject, actionSubjectId, attribut
8
8
  actionSubjectId,
9
9
  attributes: {
10
10
  packageName: "@atlaskit/emoji",
11
- packageVersion: "69.3.3",
11
+ packageVersion: "69.3.4",
12
12
  ...attributes
13
13
  }
14
14
  });
@@ -22,7 +22,6 @@ import CachingEmoji from './CachingEmoji';
22
22
  import EmojiErrorMessage, { emojiErrorScreenreaderTestId } from './EmojiErrorMessage';
23
23
  import RetryableButton from './RetryableButton';
24
24
  import VisuallyHidden from '@atlaskit/visually-hidden';
25
- import { fg } from '@atlaskit/platform-feature-flags';
26
25
  var deleteFooter = null;
27
26
  var deletePreview = null;
28
27
  var deleteText = null;
@@ -66,25 +65,12 @@ var EmojiDeletePreview = /*#__PURE__*/function (_Component) {
66
65
  }
67
66
  _inherits(EmojiDeletePreview, _Component);
68
67
  return _createClass(EmojiDeletePreview, [{
69
- key: "UNSAFE_componentWillUpdate",
70
- value: function UNSAFE_componentWillUpdate(nextProps) {
71
- if (!fg('platform_editor_react18_elements_emoji') || !fg('platform_editor_react18_elements_emoji_jira_bb')) {
72
- if (nextProps.emoji.id !== this.props.emoji.id) {
73
- this.setState({
74
- error: false
75
- });
76
- }
77
- }
78
- }
79
- }, {
80
68
  key: "componentDidUpdate",
81
69
  value: function componentDidUpdate(prevProps) {
82
- if (fg('platform_editor_react18_elements_emoji') || fg('platform_editor_react18_elements_emoji_jira_bb')) {
83
- if (prevProps.emoji.id !== this.props.emoji.id) {
84
- this.setState({
85
- error: false
86
- });
87
- }
70
+ if (prevProps.emoji.id !== this.props.emoji.id) {
71
+ this.setState({
72
+ error: false
73
+ });
88
74
  }
89
75
  }
90
76
  }, {
@@ -7,7 +7,6 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
7
7
  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
8
8
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
9
9
  import { Component } from 'react';
10
- import { fg } from '@atlaskit/platform-feature-flags';
11
10
  /**
12
11
  * A base class for components that don't want to start rendering
13
12
  * until the EmojiProvider is resolved.
@@ -41,20 +40,11 @@ var LoadingEmojiComponent = /*#__PURE__*/function (_Component) {
41
40
  this.asyncLoadComponent();
42
41
  }
43
42
  }
44
- }, {
45
- key: "UNSAFE_componentWillReceiveProps",
46
- value: function UNSAFE_componentWillReceiveProps(nextProps) {
47
- if (!fg('platform_editor_react18_elements_emoji') || !fg('platform_editor_react18_elements_emoji_jira_bb')) {
48
- this.loadEmojiProvider(nextProps.emojiProvider);
49
- }
50
- }
51
43
  }, {
52
44
  key: "componentDidUpdate",
53
45
  value: function componentDidUpdate(prevProps) {
54
- if (fg('platform_editor_react18_elements_emoji') || fg('platform_editor_react18_elements_emoji_jira_bb')) {
55
- if (this.props !== prevProps) {
56
- this.loadEmojiProvider(this.props.emojiProvider);
57
- }
46
+ if (this.props !== prevProps) {
47
+ this.loadEmojiProvider(this.props.emojiProvider);
58
48
  }
59
49
  }
60
50
  }, {