@atlaskit/emoji 67.0.4 → 67.0.6
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 +12 -0
- package/dist/cjs/admin.js +0 -2
- package/dist/cjs/api/EmojiLoader.js +1 -8
- package/dist/cjs/api/EmojiRepository.js +16 -80
- package/dist/cjs/api/EmojiRepositoryRegex.js +2 -0
- package/dist/cjs/api/EmojiResource.js +20 -170
- package/dist/cjs/api/EmojiUtils.js +27 -67
- package/dist/cjs/api/internal/Comparators.js +8 -62
- package/dist/cjs/api/internal/UsageFrequencyTracker.js +4 -34
- package/dist/cjs/api/media/MediaEmojiCache.js +8 -58
- package/dist/cjs/api/media/MediaImageLoader.js +4 -28
- package/dist/cjs/api/media/SiteEmojiResource.js +14 -55
- package/dist/cjs/api/media/TokenManager.js +4 -18
- package/dist/cjs/components/common/CachingEmoji.js +18 -52
- package/dist/cjs/components/common/DeleteButton.js +0 -10
- package/dist/cjs/components/common/Emoji.js +44 -102
- package/dist/cjs/components/common/EmojiActions.js +25 -61
- package/dist/cjs/components/common/EmojiButton.js +5 -18
- package/dist/cjs/components/common/EmojiDeletePreview.js +7 -38
- package/dist/cjs/components/common/EmojiErrorMessage.js +3 -9
- package/dist/cjs/components/common/EmojiPlaceholder.js +7 -16
- package/dist/cjs/components/common/EmojiPreviewComponent.js +1 -6
- package/dist/cjs/components/common/EmojiUploadPicker.js +31 -86
- package/dist/cjs/components/common/EmojiUploadPreview.js +7 -36
- package/dist/cjs/components/common/FileChooser.js +5 -18
- package/dist/cjs/components/common/LoadingEmojiComponent.js +5 -24
- package/dist/cjs/components/common/Popup.js +16 -44
- package/dist/cjs/components/common/RecordSelectionDefault.js +0 -7
- package/dist/cjs/components/common/ResourcedEmoji.js +0 -15
- package/dist/cjs/components/common/ResourcedEmojiComponent.js +29 -69
- package/dist/cjs/components/common/RetryableButton.js +4 -19
- package/dist/cjs/components/common/Scrollable.js +6 -36
- package/dist/cjs/components/common/ToneSelector.js +3 -24
- package/dist/cjs/components/common/UfoErrorBoundary.js +1 -19
- package/dist/cjs/components/common/UploadEmoji.js +2 -13
- package/dist/cjs/components/common/internal-types.js +0 -1
- package/dist/cjs/components/common/setSkinToneAriaLabelText.js +0 -6
- package/dist/cjs/components/common/styles.js +9 -17
- package/dist/cjs/components/hooks.js +0 -2
- package/dist/cjs/components/i18n.js +0 -2
- package/dist/cjs/components/picker/CategorySelector.js +4 -50
- package/dist/cjs/components/picker/CategoryTracker.js +3 -14
- package/dist/cjs/components/picker/EmojiPicker.js +3 -42
- package/dist/cjs/components/picker/EmojiPickerCategoryHeading.js +2 -10
- package/dist/cjs/components/picker/EmojiPickerComponent.js +59 -140
- package/dist/cjs/components/picker/EmojiPickerEmojiRow.js +7 -14
- package/dist/cjs/components/picker/EmojiPickerFooter.js +1 -8
- package/dist/cjs/components/picker/EmojiPickerList.js +32 -83
- package/dist/cjs/components/picker/EmojiPickerListSearch.js +11 -48
- package/dist/cjs/components/picker/EmojiPickerSizes.js +1 -2
- package/dist/cjs/components/picker/EmojiPickerVirtualItems.js +1 -38
- package/dist/cjs/components/picker/VirtualList.js +11 -41
- package/dist/cjs/components/picker/categories.js +0 -14
- package/dist/cjs/components/picker/styles.js +15 -20
- package/dist/cjs/components/picker/utils.js +0 -4
- package/dist/cjs/components/typeahead/EmojiTypeAhead.js +10 -45
- package/dist/cjs/components/typeahead/EmojiTypeAheadComponent.js +11 -74
- package/dist/cjs/components/typeahead/EmojiTypeAheadItem.js +7 -37
- package/dist/cjs/components/typeahead/EmojiTypeAheadList.js +10 -63
- package/dist/cjs/components/typeahead/styles.js +2 -4
- package/dist/cjs/components/uploader/EmojiUploadComponent.js +6 -42
- package/dist/cjs/components/uploader/EmojiUploader.js +3 -31
- package/dist/cjs/components/uploader/styles.js +3 -4
- package/dist/cjs/context/EmojiCommonProvider.js +0 -6
- package/dist/cjs/context/EmojiContext.js +0 -2
- package/dist/cjs/context/EmojiContextProvider.js +1 -17
- package/dist/cjs/element.js +0 -4
- package/dist/cjs/hooks/useEmoji.js +5 -20
- package/dist/cjs/hooks/useEmojiContext.js +0 -4
- package/dist/cjs/hooks/usePrevious.js +0 -2
- package/dist/cjs/i18n/cs.js +0 -1
- package/dist/cjs/i18n/da.js +0 -1
- package/dist/cjs/i18n/de.js +0 -1
- package/dist/cjs/i18n/en.js +0 -1
- package/dist/cjs/i18n/en_GB.js +0 -1
- package/dist/cjs/i18n/en_ZZ.js +0 -1
- package/dist/cjs/i18n/es.js +0 -1
- package/dist/cjs/i18n/et.js +0 -1
- package/dist/cjs/i18n/fi.js +0 -1
- package/dist/cjs/i18n/fr.js +0 -1
- package/dist/cjs/i18n/hu.js +0 -1
- package/dist/cjs/i18n/index.js +0 -30
- package/dist/cjs/i18n/it.js +0 -1
- package/dist/cjs/i18n/ja.js +0 -1
- package/dist/cjs/i18n/ko.js +0 -1
- package/dist/cjs/i18n/nb.js +0 -1
- package/dist/cjs/i18n/nl.js +0 -1
- package/dist/cjs/i18n/pl.js +0 -1
- package/dist/cjs/i18n/pt_BR.js +0 -1
- package/dist/cjs/i18n/pt_PT.js +0 -1
- package/dist/cjs/i18n/ru.js +0 -1
- package/dist/cjs/i18n/sk.js +0 -1
- package/dist/cjs/i18n/sv.js +0 -1
- package/dist/cjs/i18n/th.js +0 -1
- package/dist/cjs/i18n/tr.js +0 -1
- package/dist/cjs/i18n/uk.js +0 -1
- package/dist/cjs/i18n/vi.js +0 -1
- package/dist/cjs/i18n/zh.js +0 -1
- package/dist/cjs/i18n/zh_TW.js +0 -1
- package/dist/cjs/index.js +0 -24
- package/dist/cjs/picker.js +0 -2
- package/dist/cjs/resource.js +0 -5
- package/dist/cjs/typeahead.js +0 -3
- package/dist/cjs/types.js +0 -17
- package/dist/cjs/util/DuplicateLimitedQueue.js +13 -31
- package/dist/cjs/util/StoredDuplicateLimitedQueue.js +4 -26
- package/dist/cjs/util/analytics/analytics.js +14 -97
- package/dist/cjs/util/analytics/index.js +0 -4
- package/dist/cjs/util/analytics/samplingUfo.js +3 -59
- package/dist/cjs/util/analytics/ufoExperiences.js +0 -12
- package/dist/cjs/util/analytics/useSampledUFOComponentExperience.js +3 -10
- package/dist/cjs/util/constants.js +5 -5
- package/dist/cjs/util/filters.js +0 -4
- package/dist/cjs/util/image.js +3 -18
- package/dist/cjs/util/logger.js +0 -6
- package/dist/cjs/util/mouse.js +3 -6
- package/dist/cjs/util/shared-styles.js +0 -4
- package/dist/cjs/util/storage-available.js +10 -8
- package/dist/cjs/util/type-helpers.js +2 -57
- package/dist/cjs/util/useInView.js +0 -6
- package/dist/cjs/utils.js +0 -3
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/api/EmojiLoader.js +2 -4
- package/dist/es2019/api/EmojiRepository.js +15 -82
- package/dist/es2019/api/EmojiRepositoryRegex.js +2 -0
- package/dist/es2019/api/EmojiResource.js +21 -114
- package/dist/es2019/api/EmojiUtils.js +11 -18
- package/dist/es2019/api/internal/Comparators.js +12 -48
- package/dist/es2019/api/internal/UsageFrequencyTracker.js +7 -24
- package/dist/es2019/api/media/MediaEmojiCache.js +9 -52
- package/dist/es2019/api/media/MediaImageLoader.js +2 -16
- package/dist/es2019/api/media/SiteEmojiResource.js +11 -31
- package/dist/es2019/api/media/TokenManager.js +4 -14
- package/dist/es2019/components/common/CachingEmoji.js +5 -12
- package/dist/es2019/components/common/DeleteButton.js +2 -3
- package/dist/es2019/components/common/Emoji.js +19 -47
- package/dist/es2019/components/common/EmojiActions.js +3 -16
- package/dist/es2019/components/common/EmojiButton.js +0 -5
- package/dist/es2019/components/common/EmojiDeletePreview.js +0 -11
- package/dist/es2019/components/common/EmojiErrorMessage.js +1 -2
- package/dist/es2019/components/common/EmojiPlaceholder.js +0 -5
- package/dist/es2019/components/common/EmojiPreviewComponent.js +1 -0
- package/dist/es2019/components/common/EmojiUploadPicker.js +2 -25
- package/dist/es2019/components/common/EmojiUploadPreview.js +0 -6
- package/dist/es2019/components/common/FileChooser.js +0 -6
- package/dist/es2019/components/common/LoadingEmojiComponent.js +2 -14
- package/dist/es2019/components/common/Popup.js +4 -22
- package/dist/es2019/components/common/RecordSelectionDefault.js +1 -1
- package/dist/es2019/components/common/ResourcedEmoji.js +1 -6
- package/dist/es2019/components/common/ResourcedEmojiComponent.js +2 -13
- package/dist/es2019/components/common/RetryableButton.js +1 -8
- package/dist/es2019/components/common/Scrollable.js +2 -12
- package/dist/es2019/components/common/ToneSelector.js +2 -8
- package/dist/es2019/components/common/UfoErrorBoundary.js +0 -2
- package/dist/es2019/components/common/UploadEmoji.js +2 -3
- package/dist/es2019/components/common/internal-types.js +0 -1
- package/dist/es2019/components/common/styles.js +12 -8
- package/dist/es2019/components/picker/CategorySelector.js +0 -22
- package/dist/es2019/components/picker/CategoryTracker.js +3 -13
- package/dist/es2019/components/picker/EmojiPicker.js +3 -17
- package/dist/es2019/components/picker/EmojiPickerCategoryHeading.js +2 -3
- package/dist/es2019/components/picker/EmojiPickerComponent.js +10 -43
- package/dist/es2019/components/picker/EmojiPickerEmojiRow.js +0 -2
- package/dist/es2019/components/picker/EmojiPickerFooter.js +0 -2
- package/dist/es2019/components/picker/EmojiPickerList.js +10 -45
- package/dist/es2019/components/picker/EmojiPickerListSearch.js +2 -19
- package/dist/es2019/components/picker/EmojiPickerSizes.js +1 -0
- package/dist/es2019/components/picker/EmojiPickerVirtualItems.js +1 -8
- package/dist/es2019/components/picker/VirtualList.js +3 -24
- package/dist/es2019/components/picker/styles.js +22 -10
- package/dist/es2019/components/picker/utils.js +0 -1
- package/dist/es2019/components/typeahead/EmojiTypeAhead.js +4 -21
- package/dist/es2019/components/typeahead/EmojiTypeAheadComponent.js +0 -42
- package/dist/es2019/components/typeahead/EmojiTypeAheadItem.js +0 -7
- package/dist/es2019/components/typeahead/EmojiTypeAheadList.js +4 -45
- package/dist/es2019/components/typeahead/styles.js +2 -1
- package/dist/es2019/components/uploader/EmojiUploadComponent.js +2 -15
- package/dist/es2019/components/uploader/EmojiUploader.js +2 -10
- package/dist/es2019/components/uploader/styles.js +5 -2
- package/dist/es2019/context/EmojiCommonProvider.js +0 -2
- package/dist/es2019/context/EmojiContextProvider.js +0 -1
- package/dist/es2019/hooks/useEmoji.js +2 -6
- package/dist/es2019/hooks/useEmojiContext.js +1 -1
- package/dist/es2019/index.js +12 -6
- package/dist/es2019/types.js +1 -11
- package/dist/es2019/util/DuplicateLimitedQueue.js +13 -35
- package/dist/es2019/util/StoredDuplicateLimitedQueue.js +5 -12
- package/dist/es2019/util/analytics/analytics.js +7 -23
- package/dist/es2019/util/analytics/samplingUfo.js +6 -32
- package/dist/es2019/util/analytics/ufoExperiences.js +0 -3
- package/dist/es2019/util/analytics/useSampledUFOComponentExperience.js +3 -7
- package/dist/es2019/util/constants.js +5 -4
- package/dist/es2019/util/filters.js +0 -3
- package/dist/es2019/util/image.js +3 -8
- package/dist/es2019/util/mouse.js +3 -3
- package/dist/es2019/util/storage-available.js +10 -7
- package/dist/es2019/util/type-helpers.js +6 -9
- package/dist/es2019/util/useInView.js +0 -2
- package/dist/es2019/version.json +1 -1
- package/dist/esm/api/EmojiLoader.js +2 -6
- package/dist/esm/api/EmojiRepository.js +16 -71
- package/dist/esm/api/EmojiRepositoryRegex.js +2 -0
- package/dist/esm/api/EmojiResource.js +20 -158
- package/dist/esm/api/EmojiUtils.js +27 -47
- package/dist/esm/api/internal/Comparators.js +12 -53
- package/dist/esm/api/internal/UsageFrequencyTracker.js +5 -29
- package/dist/esm/api/media/MediaEmojiCache.js +9 -55
- package/dist/esm/api/media/MediaImageLoader.js +4 -27
- package/dist/esm/api/media/SiteEmojiResource.js +14 -43
- package/dist/esm/api/media/TokenManager.js +6 -16
- package/dist/esm/components/common/CachingEmoji.js +18 -30
- package/dist/esm/components/common/DeleteButton.js +2 -3
- package/dist/esm/components/common/Emoji.js +44 -78
- package/dist/esm/components/common/EmojiActions.js +25 -40
- package/dist/esm/components/common/EmojiButton.js +4 -9
- package/dist/esm/components/common/EmojiDeletePreview.js +7 -24
- package/dist/esm/components/common/EmojiErrorMessage.js +3 -4
- package/dist/esm/components/common/EmojiPlaceholder.js +6 -11
- package/dist/esm/components/common/EmojiPreviewComponent.js +1 -0
- package/dist/esm/components/common/EmojiUploadPicker.js +30 -64
- package/dist/esm/components/common/EmojiUploadPreview.js +7 -19
- package/dist/esm/components/common/FileChooser.js +5 -11
- package/dist/esm/components/common/LoadingEmojiComponent.js +4 -20
- package/dist/esm/components/common/Popup.js +16 -36
- package/dist/esm/components/common/RecordSelectionDefault.js +1 -1
- package/dist/esm/components/common/ResourcedEmoji.js +1 -6
- package/dist/esm/components/common/ResourcedEmojiComponent.js +29 -51
- package/dist/esm/components/common/RetryableButton.js +4 -11
- package/dist/esm/components/common/Scrollable.js +6 -29
- package/dist/esm/components/common/ToneSelector.js +3 -13
- package/dist/esm/components/common/UfoErrorBoundary.js +1 -13
- package/dist/esm/components/common/UploadEmoji.js +2 -3
- package/dist/esm/components/common/internal-types.js +0 -1
- package/dist/esm/components/common/setSkinToneAriaLabelText.js +0 -2
- package/dist/esm/components/common/styles.js +12 -9
- package/dist/esm/components/picker/CategorySelector.js +4 -32
- package/dist/esm/components/picker/CategoryTracker.js +3 -13
- package/dist/esm/components/picker/EmojiPicker.js +5 -27
- package/dist/esm/components/picker/EmojiPickerCategoryHeading.js +4 -5
- package/dist/esm/components/picker/EmojiPickerComponent.js +60 -114
- package/dist/esm/components/picker/EmojiPickerEmojiRow.js +6 -8
- package/dist/esm/components/picker/EmojiPickerFooter.js +0 -2
- package/dist/esm/components/picker/EmojiPickerList.js +32 -77
- package/dist/esm/components/picker/EmojiPickerListSearch.js +11 -35
- package/dist/esm/components/picker/EmojiPickerSizes.js +1 -0
- package/dist/esm/components/picker/EmojiPickerVirtualItems.js +2 -26
- package/dist/esm/components/picker/VirtualList.js +11 -28
- package/dist/esm/components/picker/styles.js +22 -11
- package/dist/esm/components/picker/utils.js +0 -1
- package/dist/esm/components/typeahead/EmojiTypeAhead.js +11 -39
- package/dist/esm/components/typeahead/EmojiTypeAheadComponent.js +11 -65
- package/dist/esm/components/typeahead/EmojiTypeAheadItem.js +7 -24
- package/dist/esm/components/typeahead/EmojiTypeAheadList.js +10 -53
- package/dist/esm/components/typeahead/styles.js +2 -1
- package/dist/esm/components/uploader/EmojiUploadComponent.js +5 -25
- package/dist/esm/components/uploader/EmojiUploader.js +4 -22
- package/dist/esm/components/uploader/styles.js +5 -2
- package/dist/esm/context/EmojiCommonProvider.js +0 -2
- package/dist/esm/context/EmojiContextProvider.js +1 -6
- package/dist/esm/hooks/useEmoji.js +5 -13
- package/dist/esm/hooks/useEmojiContext.js +1 -1
- package/dist/esm/index.js +12 -6
- package/dist/esm/types.js +1 -11
- package/dist/esm/util/DuplicateLimitedQueue.js +13 -29
- package/dist/esm/util/StoredDuplicateLimitedQueue.js +5 -22
- package/dist/esm/util/analytics/analytics.js +14 -50
- package/dist/esm/util/analytics/samplingUfo.js +3 -51
- package/dist/esm/util/analytics/ufoExperiences.js +0 -3
- package/dist/esm/util/analytics/useSampledUFOComponentExperience.js +3 -7
- package/dist/esm/util/constants.js +5 -4
- package/dist/esm/util/filters.js +0 -3
- package/dist/esm/util/image.js +3 -8
- package/dist/esm/util/logger.js +0 -2
- package/dist/esm/util/mouse.js +3 -3
- package/dist/esm/util/storage-available.js +10 -7
- package/dist/esm/util/type-helpers.js +2 -12
- package/dist/esm/util/useInView.js +0 -2
- package/dist/esm/version.json +1 -1
- package/package.json +6 -4
|
@@ -9,17 +9,14 @@ import * as styles from './styles';
|
|
|
9
9
|
export default class Scrollable extends PureComponent {
|
|
10
10
|
constructor(...args) {
|
|
11
11
|
super(...args);
|
|
12
|
-
|
|
13
12
|
_defineProperty(this, "scrollableDiv", null);
|
|
14
|
-
|
|
15
13
|
_defineProperty(this, "reveal", (child, forceToTop) => {
|
|
16
14
|
if (child && this.scrollableDiv) {
|
|
17
|
-
const childNode = findDOMNode(child);
|
|
15
|
+
const childNode = findDOMNode(child);
|
|
16
|
+
// Not using Element.scrollIntoView as it scrolls even to top/bottom of view even if
|
|
18
17
|
// already visible
|
|
19
|
-
|
|
20
18
|
const scrollableRect = this.scrollableDiv.getBoundingClientRect();
|
|
21
19
|
const elementRect = childNode.getBoundingClientRect();
|
|
22
|
-
|
|
23
20
|
if (forceToTop || elementRect.top < scrollableRect.top) {
|
|
24
21
|
this.scrollableDiv.scrollTop += elementRect.top - scrollableRect.top;
|
|
25
22
|
} else if (elementRect.bottom > scrollableRect.bottom) {
|
|
@@ -27,32 +24,26 @@ export default class Scrollable extends PureComponent {
|
|
|
27
24
|
}
|
|
28
25
|
}
|
|
29
26
|
});
|
|
30
|
-
|
|
31
27
|
_defineProperty(this, "scrollToBottom", () => {
|
|
32
28
|
if (this.scrollableDiv) {
|
|
33
29
|
this.scrollableDiv.scrollTop = this.scrollableDiv.scrollHeight;
|
|
34
30
|
}
|
|
35
31
|
});
|
|
36
|
-
|
|
37
32
|
_defineProperty(this, "handleScroll", event => {
|
|
38
33
|
const sampleOffset = 10;
|
|
39
34
|
let firstElement;
|
|
40
|
-
|
|
41
35
|
if (this.scrollableDiv) {
|
|
42
36
|
const scrollableRect = this.scrollableDiv.getBoundingClientRect();
|
|
43
37
|
firstElement = document.elementFromPoint(scrollableRect.left + sampleOffset, scrollableRect.top + sampleOffset);
|
|
44
38
|
}
|
|
45
|
-
|
|
46
39
|
if (this.props.onScroll && firstElement) {
|
|
47
40
|
this.props.onScroll(firstElement, event);
|
|
48
41
|
}
|
|
49
42
|
});
|
|
50
|
-
|
|
51
43
|
_defineProperty(this, "handleRef", ref => {
|
|
52
44
|
this.scrollableDiv = ref;
|
|
53
45
|
});
|
|
54
46
|
}
|
|
55
|
-
|
|
56
47
|
render() {
|
|
57
48
|
const {
|
|
58
49
|
children,
|
|
@@ -72,5 +63,4 @@ export default class Scrollable extends PureComponent {
|
|
|
72
63
|
style: style
|
|
73
64
|
}, children);
|
|
74
65
|
}
|
|
75
|
-
|
|
76
66
|
}
|
|
@@ -3,15 +3,12 @@ import EmojiButton from './EmojiButton';
|
|
|
3
3
|
import { withAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
4
4
|
import { createAndFireEventInElementsChannel, toneSelectedEvent, toneSelectorOpenedEvent } from '../../util/analytics';
|
|
5
5
|
import { setSkinToneAriaLabelText } from './setSkinToneAriaLabelText';
|
|
6
|
-
|
|
7
6
|
const extractAllTones = emoji => {
|
|
8
7
|
if (emoji.skinVariations) {
|
|
9
8
|
return [emoji, ...emoji.skinVariations];
|
|
10
9
|
}
|
|
11
|
-
|
|
12
10
|
return [emoji];
|
|
13
11
|
};
|
|
14
|
-
|
|
15
12
|
export const ToneSelectorInternal = props => {
|
|
16
13
|
const {
|
|
17
14
|
createAnalyticsEvent,
|
|
@@ -22,7 +19,8 @@ export const ToneSelectorInternal = props => {
|
|
|
22
19
|
const isMounted = useRef(false);
|
|
23
20
|
const firstToneButtonRef = useRef(null);
|
|
24
21
|
const emojiToneCollection = useMemo(() => {
|
|
25
|
-
return extractAllTones(emoji).map((tone, index) => ({
|
|
22
|
+
return extractAllTones(emoji).map((tone, index) => ({
|
|
23
|
+
...tone,
|
|
26
24
|
focused: tone.id !== previewEmojiId,
|
|
27
25
|
label: setSkinToneAriaLabelText(tone.name),
|
|
28
26
|
toneId: index
|
|
@@ -33,13 +31,11 @@ export const ToneSelectorInternal = props => {
|
|
|
33
31
|
firstToneButtonRef.current.focus();
|
|
34
32
|
}
|
|
35
33
|
}, [firstToneButtonRef]);
|
|
36
|
-
|
|
37
34
|
const fireAnalyticsEvent = event => {
|
|
38
35
|
if (createAnalyticsEvent) {
|
|
39
36
|
createAndFireEventInElementsChannel(event)(createAnalyticsEvent);
|
|
40
37
|
}
|
|
41
38
|
};
|
|
42
|
-
|
|
43
39
|
const onToneSelectedHandler = toneValue => () => {
|
|
44
40
|
onToneSelected(toneValue);
|
|
45
41
|
const toneList = ['default', 'light', 'mediumLight', 'medium', 'mediumDark', 'dark'];
|
|
@@ -47,11 +43,9 @@ export const ToneSelectorInternal = props => {
|
|
|
47
43
|
skinToneModifier: toneList[toneValue]
|
|
48
44
|
}));
|
|
49
45
|
};
|
|
50
|
-
|
|
51
46
|
if (!isMounted.current) {
|
|
52
47
|
fireAnalyticsEvent(toneSelectorOpenedEvent({}));
|
|
53
48
|
}
|
|
54
|
-
|
|
55
49
|
isMounted.current = true;
|
|
56
50
|
return /*#__PURE__*/React.createElement("div", null, emojiToneCollection.map(tone => {
|
|
57
51
|
return /*#__PURE__*/React.createElement(EmojiButton, {
|
|
@@ -6,7 +6,6 @@ import { extractErrorInfo } from '../../util/analytics/analytics';
|
|
|
6
6
|
export const uploadEmoji = (upload, emojiProvider, errorSetter, onSuccess, fireAnalytics, retry) => {
|
|
7
7
|
const startTime = Date.now();
|
|
8
8
|
errorSetter(undefined);
|
|
9
|
-
|
|
10
9
|
if (supportsUploadFeature(emojiProvider)) {
|
|
11
10
|
ufoExperiences['emoji-uploaded'].start();
|
|
12
11
|
emojiProvider.uploadCustomEmoji(upload, retry).then(emojiDescription => {
|
|
@@ -16,8 +15,8 @@ export const uploadEmoji = (upload, emojiProvider, errorSetter, onSuccess, fireA
|
|
|
16
15
|
onSuccess(emojiDescription);
|
|
17
16
|
ufoExperiences['emoji-uploaded'].success();
|
|
18
17
|
}).catch(err => {
|
|
19
|
-
errorSetter(messages.emojiUploadFailed);
|
|
20
|
-
|
|
18
|
+
errorSetter(messages.emojiUploadFailed);
|
|
19
|
+
// eslint-disable-next-line no-console
|
|
21
20
|
console.error('Unable to upload emoji', err);
|
|
22
21
|
fireAnalytics(uploadFailedEvent({
|
|
23
22
|
duration: Date.now() - startTime,
|
|
@@ -100,7 +100,6 @@ export const emojiButton = css({
|
|
|
100
100
|
border: '0',
|
|
101
101
|
cursor: 'pointer',
|
|
102
102
|
padding: 0,
|
|
103
|
-
|
|
104
103
|
/* Firefox */
|
|
105
104
|
['&::-moz-focus-inner']: {
|
|
106
105
|
border: '0 none',
|
|
@@ -124,8 +123,9 @@ export const emojiButton = css({
|
|
|
124
123
|
export const hiddenToneButton = css({
|
|
125
124
|
// Hide currently selected tone that rendered in the ToneSelector to avoid duplication
|
|
126
125
|
display: 'none'
|
|
127
|
-
});
|
|
126
|
+
});
|
|
128
127
|
|
|
128
|
+
// Emoji Preview
|
|
129
129
|
export const emojiPickerAddEmoji = 'emoji-picker-add-emoji';
|
|
130
130
|
export const previewText = css({
|
|
131
131
|
display: 'flex',
|
|
@@ -134,9 +134,7 @@ export const previewText = css({
|
|
|
134
134
|
marginTop: '-2px',
|
|
135
135
|
marginLeft: '10px',
|
|
136
136
|
maxWidth: '285px',
|
|
137
|
-
width: '285px'
|
|
138
|
-
/* IE */
|
|
139
|
-
,
|
|
137
|
+
width: '285px' /* IE */,
|
|
140
138
|
flexGrow: 1,
|
|
141
139
|
flexShrink: 1
|
|
142
140
|
});
|
|
@@ -193,7 +191,9 @@ export const previewImg = css({
|
|
|
193
191
|
padding: 0,
|
|
194
192
|
display: 'block'
|
|
195
193
|
}
|
|
196
|
-
});
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
// Scrollable
|
|
197
197
|
|
|
198
198
|
export const emojiScrollable = css({
|
|
199
199
|
border: `1px solid ${"var(--ds-border, #fff)"}`,
|
|
@@ -203,7 +203,9 @@ export const emojiScrollable = css({
|
|
|
203
203
|
overflowX: 'hidden',
|
|
204
204
|
overflowY: 'auto',
|
|
205
205
|
padding: '0'
|
|
206
|
-
});
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
// EmojiUpload
|
|
207
209
|
|
|
208
210
|
export const emojiUpload = css({
|
|
209
211
|
height: '78px',
|
|
@@ -293,7 +295,9 @@ export const addCustomEmoji = css({
|
|
|
293
295
|
alignSelf: 'center',
|
|
294
296
|
marginLeft: '10px',
|
|
295
297
|
marginBottom: '10px'
|
|
296
|
-
});
|
|
298
|
+
});
|
|
299
|
+
|
|
300
|
+
// Emoji Delete preview
|
|
297
301
|
|
|
298
302
|
export const submitDelete = 'emoji-submit-delete';
|
|
299
303
|
export const deletePreview = css({
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
|
|
3
2
|
/** @jsx jsx */
|
|
4
3
|
import React from 'react';
|
|
5
4
|
import { jsx } from '@emotion/react';
|
|
@@ -10,54 +9,42 @@ import { messages } from '../i18n';
|
|
|
10
9
|
import { CategoryDescriptionMap } from './categories';
|
|
11
10
|
import { active, categorySelector, disable, categoryStyles } from './styles';
|
|
12
11
|
export const sortCategories = (c1, c2) => CategoryDescriptionMap[c1].order - CategoryDescriptionMap[c2].order;
|
|
13
|
-
|
|
14
12
|
const addNewCategories = (oldCategories, newCategories) => {
|
|
15
13
|
if (!newCategories) {
|
|
16
14
|
return oldCategories;
|
|
17
15
|
}
|
|
18
|
-
|
|
19
16
|
return oldCategories.concat(newCategories.filter(category => !!CategoryDescriptionMap[category])).sort(sortCategories);
|
|
20
17
|
};
|
|
21
|
-
|
|
22
18
|
export const categorySelectorComponentTestId = 'category-selector-component';
|
|
23
19
|
export const categorySelectorCategoryTestId = categoryId => `category-selector-${categoryId}`;
|
|
24
|
-
|
|
25
20
|
class CategorySelector extends PureComponent {
|
|
26
21
|
constructor(props) {
|
|
27
22
|
super(props);
|
|
28
|
-
|
|
29
23
|
_defineProperty(this, "onClick", event => {
|
|
30
24
|
const {
|
|
31
25
|
onCategorySelected,
|
|
32
26
|
disableCategories
|
|
33
27
|
} = this.props;
|
|
34
|
-
|
|
35
28
|
if (disableCategories) {
|
|
36
29
|
event.preventDefault();
|
|
37
30
|
return;
|
|
38
31
|
}
|
|
39
|
-
|
|
40
32
|
const categoryId = event.currentTarget.getAttribute('data-category-id');
|
|
41
|
-
|
|
42
33
|
if (onCategorySelected) {
|
|
43
34
|
onCategorySelected(categoryId);
|
|
44
35
|
}
|
|
45
36
|
});
|
|
46
|
-
|
|
47
37
|
const {
|
|
48
38
|
dynamicCategories
|
|
49
39
|
} = props;
|
|
50
40
|
let categories = defaultCategories;
|
|
51
|
-
|
|
52
41
|
if (dynamicCategories) {
|
|
53
42
|
categories = addNewCategories(categories, dynamicCategories);
|
|
54
43
|
}
|
|
55
|
-
|
|
56
44
|
this.state = {
|
|
57
45
|
categories
|
|
58
46
|
};
|
|
59
47
|
}
|
|
60
|
-
|
|
61
48
|
UNSAFE_componentWillUpdate(nextProps) {
|
|
62
49
|
if (this.props.dynamicCategories !== nextProps.dynamicCategories) {
|
|
63
50
|
this.setState({
|
|
@@ -65,7 +52,6 @@ class CategorySelector extends PureComponent {
|
|
|
65
52
|
});
|
|
66
53
|
}
|
|
67
54
|
}
|
|
68
|
-
|
|
69
55
|
render() {
|
|
70
56
|
const {
|
|
71
57
|
disableCategories,
|
|
@@ -75,7 +61,6 @@ class CategorySelector extends PureComponent {
|
|
|
75
61
|
categories
|
|
76
62
|
} = this.state;
|
|
77
63
|
let categoriesSection;
|
|
78
|
-
|
|
79
64
|
if (categories) {
|
|
80
65
|
const {
|
|
81
66
|
formatMessage
|
|
@@ -85,15 +70,12 @@ class CategorySelector extends PureComponent {
|
|
|
85
70
|
}, categories.map(categoryId => {
|
|
86
71
|
const category = CategoryDescriptionMap[categoryId];
|
|
87
72
|
const categoryClasses = [categoryStyles];
|
|
88
|
-
|
|
89
73
|
if (categoryId === this.props.activeCategoryId) {
|
|
90
74
|
categoryClasses.push(active);
|
|
91
75
|
}
|
|
92
|
-
|
|
93
76
|
if (disableCategories) {
|
|
94
77
|
categoryClasses.push(disable);
|
|
95
78
|
}
|
|
96
|
-
|
|
97
79
|
const Icon = category.icon;
|
|
98
80
|
const categoryName = formatMessage(messages[category.name]);
|
|
99
81
|
return jsx("li", {
|
|
@@ -112,17 +94,13 @@ class CategorySelector extends PureComponent {
|
|
|
112
94
|
})));
|
|
113
95
|
}));
|
|
114
96
|
}
|
|
115
|
-
|
|
116
97
|
return jsx("div", {
|
|
117
98
|
css: categorySelector
|
|
118
99
|
}, categoriesSection);
|
|
119
100
|
}
|
|
120
|
-
|
|
121
101
|
}
|
|
122
|
-
|
|
123
102
|
_defineProperty(CategorySelector, "defaultProps", {
|
|
124
103
|
onCategorySelected: () => {},
|
|
125
104
|
dynamicCategories: []
|
|
126
105
|
});
|
|
127
|
-
|
|
128
106
|
export default injectIntl(CategorySelector);
|
|
@@ -8,51 +8,41 @@ export default class CategoryTracker {
|
|
|
8
8
|
constructor() {
|
|
9
9
|
this.reset();
|
|
10
10
|
}
|
|
11
|
-
|
|
12
11
|
reset() {
|
|
13
12
|
this.categoryToRow = new Map();
|
|
14
13
|
this.rowToCategory = new Map();
|
|
15
14
|
}
|
|
16
|
-
|
|
17
15
|
add(category, row) {
|
|
18
16
|
if (!this.categoryToRow.has(category)) {
|
|
19
17
|
this.categoryToRow.set(category, row);
|
|
20
18
|
this.rowToCategory.set(row, category);
|
|
21
19
|
}
|
|
22
20
|
}
|
|
23
|
-
|
|
24
21
|
getRow(category) {
|
|
25
22
|
return this.categoryToRow.get(category);
|
|
26
23
|
}
|
|
27
|
-
|
|
28
24
|
findNearestCategoryAbove(startIndex, list) {
|
|
29
25
|
const rows = Array.from(this.rowToCategory.keys()).sort((a, b) => a - b);
|
|
30
|
-
|
|
31
26
|
if (rows.length === 0) {
|
|
32
27
|
return;
|
|
33
|
-
}
|
|
34
|
-
// or the top row is above the first category
|
|
35
|
-
|
|
28
|
+
}
|
|
36
29
|
|
|
30
|
+
// Return first category if list not yet rendered
|
|
31
|
+
// or the top row is above the first category
|
|
37
32
|
if (!list || rows[0] > startIndex) {
|
|
38
33
|
return this.rowToCategory.get(rows[0]);
|
|
39
34
|
}
|
|
40
|
-
|
|
41
35
|
let bounds = [0, rows.length - 1];
|
|
42
36
|
let index = Math.floor(rows.length / 2);
|
|
43
|
-
|
|
44
37
|
while (rows[index] !== startIndex && bounds[0] < bounds[1]) {
|
|
45
38
|
if (rows[index] > startIndex) {
|
|
46
39
|
bounds[1] = Math.max(index - 1, 0);
|
|
47
40
|
} else {
|
|
48
41
|
bounds[0] = index + 1;
|
|
49
42
|
}
|
|
50
|
-
|
|
51
43
|
index = Math.floor((bounds[0] + bounds[1]) / 2);
|
|
52
44
|
}
|
|
53
|
-
|
|
54
45
|
const headerRow = rows[rows[index] > startIndex ? Math.max(index - 1, 0) : index];
|
|
55
46
|
return this.rowToCategory.get(headerRow);
|
|
56
47
|
}
|
|
57
|
-
|
|
58
48
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
|
|
3
2
|
/** @jsx jsx */
|
|
3
|
+
|
|
4
4
|
import { jsx } from '@emotion/react';
|
|
5
5
|
import { withAnalyticsEvents } from '@atlaskit/analytics-next';
|
|
6
6
|
import { ufoExperiences } from '../../util/analytics';
|
|
@@ -10,49 +10,38 @@ import { emojiPicker } from './styles';
|
|
|
10
10
|
import { UfoErrorBoundary } from '../common/UfoErrorBoundary';
|
|
11
11
|
import { defaultEmojiPickerSize } from '../../util/constants';
|
|
12
12
|
import { EmojiCommonProvider } from '../../context/EmojiCommonProvider';
|
|
13
|
-
|
|
14
|
-
const emojiPickerModuleLoader = () => import(
|
|
15
|
-
/* webpackChunkName:"@atlaskit-internal_emojiPickerComponent" */
|
|
16
|
-
'./EmojiPickerComponent');
|
|
17
|
-
|
|
13
|
+
const emojiPickerModuleLoader = () => import( /* webpackChunkName:"@atlaskit-internal_emojiPickerComponent" */'./EmojiPickerComponent');
|
|
18
14
|
const emojiPickerLoader = () => emojiPickerModuleLoader().then(module => module.default);
|
|
19
|
-
|
|
20
15
|
export class EmojiPickerInternal extends LoadingEmojiComponent {
|
|
21
16
|
// state initialised with static component to prevent
|
|
22
17
|
// rerender when the module has already been loaded
|
|
18
|
+
|
|
23
19
|
constructor(props) {
|
|
24
20
|
super(props, {});
|
|
25
|
-
|
|
26
21
|
_defineProperty(this, "state", {
|
|
27
22
|
asyncLoadedComponent: EmojiPickerInternal.AsyncLoadedComponent
|
|
28
23
|
});
|
|
29
|
-
|
|
30
24
|
ufoExperiences['emoji-picker-opened'].start();
|
|
31
25
|
}
|
|
32
|
-
|
|
33
26
|
asyncLoadComponent() {
|
|
34
27
|
emojiPickerLoader().then(component => {
|
|
35
28
|
EmojiPickerInternal.AsyncLoadedComponent = component;
|
|
36
29
|
this.setAsyncState(component);
|
|
37
30
|
});
|
|
38
31
|
}
|
|
39
|
-
|
|
40
32
|
renderLoading() {
|
|
41
33
|
const item = new LoadingItem();
|
|
42
|
-
|
|
43
34
|
const handlePickerRef = ref => {
|
|
44
35
|
if (this.props.onPickerRef) {
|
|
45
36
|
this.props.onPickerRef(ref);
|
|
46
37
|
}
|
|
47
38
|
};
|
|
48
|
-
|
|
49
39
|
ufoExperiences['emoji-picker-opened'].markFMP();
|
|
50
40
|
return jsx("div", {
|
|
51
41
|
css: emojiPicker(),
|
|
52
42
|
ref: handlePickerRef
|
|
53
43
|
}, item.renderItem());
|
|
54
44
|
}
|
|
55
|
-
|
|
56
45
|
renderLoaded(loadedEmojiProvider, EmojiPickerComponent) {
|
|
57
46
|
const {
|
|
58
47
|
emojiProvider,
|
|
@@ -64,12 +53,9 @@ export class EmojiPickerInternal extends LoadingEmojiComponent {
|
|
|
64
53
|
emojiProvider: loadedEmojiProvider
|
|
65
54
|
}, jsx(EmojiPickerComponent, otherProps)));
|
|
66
55
|
}
|
|
67
|
-
|
|
68
56
|
}
|
|
69
|
-
|
|
70
57
|
_defineProperty(EmojiPickerInternal, "defaultProps", {
|
|
71
58
|
size: defaultEmojiPickerSize
|
|
72
59
|
});
|
|
73
|
-
|
|
74
60
|
const EmojiPicker = withAnalyticsEvents()(EmojiPickerInternal);
|
|
75
61
|
export default EmojiPicker;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/** @jsx jsx */
|
|
2
|
+
|
|
2
3
|
import { jsx } from '@emotion/react';
|
|
3
4
|
import { FormattedMessage } from 'react-intl-next';
|
|
4
5
|
import { isMessagesKey } from '../../util/type-helpers';
|
|
5
6
|
import { messages } from '../i18n';
|
|
6
7
|
import { emojiCategoryTitle } from './styles';
|
|
8
|
+
|
|
7
9
|
/**
|
|
8
10
|
* Test id for wrapper Emoji Picker List div
|
|
9
11
|
*/
|
|
10
|
-
|
|
11
12
|
export const RENDER_EMOJI_PICKER_CATEGORY_HEADING_TESTID = 'render-emoji-picker-categorty-heading';
|
|
12
|
-
|
|
13
13
|
const EmojiPickerCategoryHeading = ({
|
|
14
14
|
id,
|
|
15
15
|
title,
|
|
@@ -22,5 +22,4 @@ const EmojiPickerCategoryHeading = ({
|
|
|
22
22
|
}, jsx("div", {
|
|
23
23
|
css: emojiCategoryTitle
|
|
24
24
|
}, isMessagesKey(title) ? jsx(FormattedMessage, messages[title]) : title));
|
|
25
|
-
|
|
26
25
|
export default EmojiPickerCategoryHeading;
|