@atlaskit/emoji 64.2.1 → 64.4.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 +27 -0
- package/dist/cjs/api/media/SiteEmojiResource.js +10 -2
- package/dist/cjs/components/common/CachingEmoji.js +6 -8
- package/dist/cjs/components/common/DeleteButton.js +9 -13
- package/dist/cjs/components/common/Emoji.js +18 -36
- package/dist/cjs/components/common/EmojiActions.js +26 -31
- package/dist/cjs/components/common/EmojiButton.js +7 -7
- package/dist/cjs/components/common/EmojiDeletePreview.js +20 -26
- package/dist/cjs/components/common/EmojiErrorMessage.js +10 -14
- package/dist/cjs/components/common/EmojiPlaceholder.js +5 -12
- package/dist/cjs/components/common/EmojiPreview.js +20 -40
- package/dist/cjs/components/common/EmojiPreviewComponent.js +34 -0
- package/dist/cjs/components/common/EmojiUploadPicker.js +26 -24
- package/dist/cjs/components/common/EmojiUploadPreview.js +22 -28
- package/dist/cjs/components/common/RecordSelectionDefault.js +8 -2
- package/dist/cjs/components/common/ResourcedEmojiComponent.js +17 -12
- package/dist/cjs/components/common/RetryableButton.js +12 -18
- package/dist/cjs/components/common/Scrollable.js +5 -10
- package/dist/cjs/components/common/UploadEmoji.js +8 -0
- package/dist/cjs/components/common/styles.js +210 -266
- package/dist/cjs/components/picker/CategorySelector.js +13 -12
- package/dist/cjs/components/picker/EmojiPicker.js +17 -6
- package/dist/cjs/components/picker/EmojiPickerCategoryHeading.js +8 -14
- package/dist/cjs/components/picker/EmojiPickerComponent.js +51 -30
- package/dist/cjs/components/picker/EmojiPickerEmojiRow.js +8 -12
- package/dist/cjs/components/picker/EmojiPickerFooter.js +8 -14
- package/dist/cjs/components/picker/EmojiPickerList.js +28 -9
- package/dist/cjs/components/picker/EmojiPickerListSearch.js +10 -8
- package/dist/cjs/components/picker/EmojiPickerVirtualItems.js +9 -15
- package/dist/cjs/components/picker/styles.js +113 -161
- package/dist/cjs/components/typeahead/EmojiTypeAheadComponent.js +40 -24
- package/dist/cjs/components/typeahead/EmojiTypeAheadItem.js +10 -13
- package/dist/cjs/components/typeahead/EmojiTypeAheadList.js +17 -22
- package/dist/cjs/components/typeahead/styles.js +17 -19
- package/dist/cjs/components/uploader/EmojiUploadComponent.js +22 -15
- package/dist/cjs/components/uploader/styles.js +4 -4
- package/dist/cjs/index.js +21 -3
- package/dist/cjs/types.js +23 -2
- package/dist/cjs/util/analytics/analytics.js +11 -41
- package/dist/cjs/util/analytics/index.js +16 -14
- package/dist/cjs/util/analytics/ufoExperiences.js +48 -0
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/api/media/SiteEmojiResource.js +10 -2
- package/dist/es2019/components/common/CachingEmoji.js +5 -7
- package/dist/es2019/components/common/DeleteButton.js +8 -6
- package/dist/es2019/components/common/Emoji.js +19 -34
- package/dist/es2019/components/common/EmojiActions.js +26 -24
- package/dist/es2019/components/common/EmojiButton.js +6 -6
- package/dist/es2019/components/common/EmojiDeletePreview.js +20 -20
- package/dist/es2019/components/common/EmojiErrorMessage.js +9 -8
- package/dist/es2019/components/common/EmojiPlaceholder.js +5 -8
- package/dist/es2019/components/common/EmojiPreview.js +19 -35
- package/dist/es2019/components/common/EmojiPreviewComponent.js +21 -0
- package/dist/es2019/components/common/EmojiUploadPicker.js +25 -22
- package/dist/es2019/components/common/EmojiUploadPreview.js +22 -22
- package/dist/es2019/components/common/RecordSelectionDefault.js +9 -2
- package/dist/es2019/components/common/ResourcedEmojiComponent.js +16 -11
- package/dist/es2019/components/common/RetryableButton.js +10 -11
- package/dist/es2019/components/common/Scrollable.js +6 -10
- package/dist/es2019/components/common/UploadEmoji.js +4 -0
- package/dist/es2019/components/common/styles.js +195 -262
- package/dist/es2019/components/picker/CategorySelector.js +15 -12
- package/dist/es2019/components/picker/EmojiPicker.js +15 -6
- package/dist/es2019/components/picker/EmojiPickerCategoryHeading.js +8 -8
- package/dist/es2019/components/picker/EmojiPickerComponent.js +46 -22
- package/dist/es2019/components/picker/EmojiPickerEmojiRow.js +8 -7
- package/dist/es2019/components/picker/EmojiPickerFooter.js +8 -8
- package/dist/es2019/components/picker/EmojiPickerList.js +28 -8
- package/dist/es2019/components/picker/EmojiPickerListSearch.js +11 -8
- package/dist/es2019/components/picker/EmojiPickerVirtualItems.js +10 -8
- package/dist/es2019/components/picker/styles.js +112 -160
- package/dist/es2019/components/typeahead/EmojiTypeAheadComponent.js +35 -17
- package/dist/es2019/components/typeahead/EmojiTypeAheadItem.js +12 -13
- package/dist/es2019/components/typeahead/EmojiTypeAheadList.js +18 -19
- package/dist/es2019/components/typeahead/styles.js +14 -15
- package/dist/es2019/components/uploader/EmojiUploadComponent.js +19 -9
- package/dist/es2019/components/uploader/styles.js +4 -4
- package/dist/es2019/index.js +5 -4
- package/dist/es2019/types.js +20 -1
- package/dist/es2019/util/analytics/analytics.js +16 -37
- package/dist/es2019/util/analytics/index.js +2 -1
- package/dist/es2019/util/analytics/ufoExperiences.js +35 -0
- package/dist/es2019/version.json +1 -1
- package/dist/esm/api/media/SiteEmojiResource.js +10 -2
- package/dist/esm/components/common/CachingEmoji.js +5 -7
- package/dist/esm/components/common/DeleteButton.js +8 -6
- package/dist/esm/components/common/Emoji.js +18 -27
- package/dist/esm/components/common/EmojiActions.js +26 -25
- package/dist/esm/components/common/EmojiButton.js +6 -6
- package/dist/esm/components/common/EmojiDeletePreview.js +19 -20
- package/dist/esm/components/common/EmojiErrorMessage.js +9 -8
- package/dist/esm/components/common/EmojiPlaceholder.js +5 -8
- package/dist/esm/components/common/EmojiPreview.js +19 -33
- package/dist/esm/components/common/EmojiPreviewComponent.js +20 -0
- package/dist/esm/components/common/EmojiUploadPicker.js +27 -25
- package/dist/esm/components/common/EmojiUploadPreview.js +21 -22
- package/dist/esm/components/common/RecordSelectionDefault.js +6 -3
- package/dist/esm/components/common/ResourcedEmojiComponent.js +16 -10
- package/dist/esm/components/common/RetryableButton.js +11 -12
- package/dist/esm/components/common/Scrollable.js +6 -10
- package/dist/esm/components/common/UploadEmoji.js +4 -0
- package/dist/esm/components/common/styles.js +192 -242
- package/dist/esm/components/picker/CategorySelector.js +14 -12
- package/dist/esm/components/picker/EmojiPicker.js +13 -6
- package/dist/esm/components/picker/EmojiPickerCategoryHeading.js +8 -8
- package/dist/esm/components/picker/EmojiPickerComponent.js +47 -22
- package/dist/esm/components/picker/EmojiPickerEmojiRow.js +8 -7
- package/dist/esm/components/picker/EmojiPickerFooter.js +8 -8
- package/dist/esm/components/picker/EmojiPickerList.js +29 -8
- package/dist/esm/components/picker/EmojiPickerListSearch.js +10 -8
- package/dist/esm/components/picker/EmojiPickerVirtualItems.js +9 -8
- package/dist/esm/components/picker/styles.js +108 -149
- package/dist/esm/components/typeahead/EmojiTypeAheadComponent.js +35 -17
- package/dist/esm/components/typeahead/EmojiTypeAheadItem.js +11 -13
- package/dist/esm/components/typeahead/EmojiTypeAheadList.js +17 -19
- package/dist/esm/components/typeahead/styles.js +14 -14
- package/dist/esm/components/uploader/EmojiUploadComponent.js +19 -9
- package/dist/esm/components/uploader/styles.js +4 -4
- package/dist/esm/index.js +5 -4
- package/dist/esm/types.js +20 -1
- package/dist/esm/util/analytics/analytics.js +8 -33
- package/dist/esm/util/analytics/index.js +2 -1
- package/dist/esm/util/analytics/ufoExperiences.js +35 -0
- package/dist/esm/version.json +1 -1
- package/dist/types/components/common/CachingEmoji.d.ts +8 -6
- package/dist/types/components/common/EmojiActions.d.ts +2 -3
- package/dist/types/components/common/EmojiDeletePreview.d.ts +3 -3
- package/dist/types/components/common/EmojiErrorMessage.d.ts +2 -1
- package/dist/types/components/common/EmojiPreview.d.ts +2 -3
- package/dist/types/components/common/EmojiPreviewComponent.d.ts +7 -0
- package/dist/types/components/common/EmojiUploadPreview.d.ts +3 -3
- package/dist/types/components/common/ResourcedEmojiComponent.d.ts +6 -0
- package/dist/types/components/common/RetryableButton.d.ts +0 -2
- package/dist/types/components/common/styles.d.ts +44 -44
- package/dist/types/components/picker/EmojiPicker.d.ts +2 -3
- package/dist/types/components/picker/EmojiPickerComponent.d.ts +6 -0
- package/dist/types/components/picker/EmojiPickerList.d.ts +10 -0
- package/dist/types/components/picker/styles.d.ts +17 -18
- package/dist/types/components/typeahead/EmojiTypeAheadComponent.d.ts +6 -0
- package/dist/types/components/typeahead/styles.d.ts +8 -7
- package/dist/types/components/uploader/EmojiUploadComponent.d.ts +1 -0
- package/dist/types/components/uploader/styles.d.ts +2 -2
- package/dist/types/index.d.ts +4 -4
- package/dist/types/types.d.ts +13 -0
- package/dist/types/util/analytics/analytics.d.ts +3 -7
- package/dist/types/util/analytics/index.d.ts +3 -2
- package/dist/types/util/analytics/ufoExperiences.d.ts +11 -0
- package/package.json +9 -10
- package/dist/cjs/components/picker/EmojiPickerPreview.js +0 -87
- package/dist/cjs/context/EmojiContext.js +0 -11
- package/dist/cjs/context/EmojiContextProvider.js +0 -22
- package/dist/es2019/components/picker/EmojiPickerPreview.js +0 -43
- package/dist/es2019/context/EmojiContext.js +0 -2
- package/dist/es2019/context/EmojiContextProvider.js +0 -10
- package/dist/esm/components/picker/EmojiPickerPreview.js +0 -67
- package/dist/esm/context/EmojiContext.js +0 -2
- package/dist/esm/context/EmojiContextProvider.js +0 -9
- package/dist/types/components/picker/EmojiPickerPreview.d.ts +0 -9
- package/dist/types/context/EmojiContext.d.ts +0 -4
- package/dist/types/context/EmojiContextProvider.d.ts +0 -7
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
/** @jsx jsx */
|
|
4
|
+
import { jsx } from '@emotion/core';
|
|
5
|
+
import React, { Fragment } from 'react';
|
|
3
6
|
import { PureComponent } from 'react';
|
|
4
7
|
import { FormattedMessage, injectIntl } from 'react-intl-next';
|
|
5
8
|
import TextField from '@atlaskit/textfield';
|
|
@@ -10,7 +13,7 @@ import EmojiErrorMessage from './EmojiErrorMessage';
|
|
|
10
13
|
import EmojiUploadPreview from './EmojiUploadPreview';
|
|
11
14
|
import FileChooser from './FileChooser';
|
|
12
15
|
import { UploadStatus } from './internal-types';
|
|
13
|
-
import
|
|
16
|
+
import { emojiChooseFileErrorMessage, emojiUpload, emojiUploadBottom, uploadChooseFileBrowse, uploadChooseFileEmojiName, uploadChooseFileMessage, uploadChooseFileRow } from './styles';
|
|
14
17
|
const disallowedReplacementsMap = new Map([[':', ''], ['!', ''], ['@', ''], ['#', ''], ['%', ''], ['^', ''], ['&', ''], ['*', ''], ['(', ''], [')', ''], [' ', '_']]);
|
|
15
18
|
|
|
16
19
|
const sanitizeName = name => {
|
|
@@ -54,15 +57,15 @@ class ChooseEmojiFile extends PureComponent {
|
|
|
54
57
|
const disableChooser = !name;
|
|
55
58
|
const fileChooserButtonDescriptionId = 'choose.emoji.file.button.screen.reader.description.id'; // Note: FileChooser.accept does not work in Electron due to a bug: https://product-fabric.atlassian.net/browse/FS-1626
|
|
56
59
|
|
|
57
|
-
return
|
|
58
|
-
|
|
59
|
-
},
|
|
60
|
-
|
|
61
|
-
},
|
|
62
|
-
|
|
63
|
-
},
|
|
64
|
-
|
|
65
|
-
},
|
|
60
|
+
return jsx("div", {
|
|
61
|
+
css: emojiUpload
|
|
62
|
+
}, jsx("div", {
|
|
63
|
+
css: uploadChooseFileMessage
|
|
64
|
+
}, jsx(FormattedMessage, messages.addCustomEmojiLabel, message => jsx("h5", null, message))), jsx("div", {
|
|
65
|
+
css: uploadChooseFileRow
|
|
66
|
+
}, jsx("span", {
|
|
67
|
+
css: uploadChooseFileEmojiName
|
|
68
|
+
}, jsx(TextField, {
|
|
66
69
|
placeholder: formatMessage(messages.emojiPlaceholder),
|
|
67
70
|
"aria-label": formatMessage(messages.emojiNameAriaLabel),
|
|
68
71
|
maxLength: maxNameLength,
|
|
@@ -71,22 +74,22 @@ class ChooseEmojiFile extends PureComponent {
|
|
|
71
74
|
value: name,
|
|
72
75
|
isCompact: true,
|
|
73
76
|
autoFocus: true
|
|
74
|
-
})),
|
|
75
|
-
|
|
76
|
-
},
|
|
77
|
+
})), jsx("span", {
|
|
78
|
+
css: uploadChooseFileBrowse
|
|
79
|
+
}, jsx(FormattedMessage, messages.emojiChooseFileScreenReaderDescription, screenReaderDescription => jsx(Fragment, null, jsx("span", {
|
|
77
80
|
hidden: true,
|
|
78
81
|
id: fileChooserButtonDescriptionId
|
|
79
|
-
}, screenReaderDescription),
|
|
82
|
+
}, screenReaderDescription), jsx(FileChooser, {
|
|
80
83
|
label: formatMessage(messages.emojiChooseFileTitle),
|
|
81
84
|
onChange: onChooseFile,
|
|
82
85
|
onClick: onClick,
|
|
83
86
|
accept: "image/png,image/jpeg,image/gif",
|
|
84
87
|
ariaDescribedBy: fileChooserButtonDescriptionId,
|
|
85
88
|
isDisabled: disableChooser
|
|
86
|
-
}))))),
|
|
87
|
-
|
|
88
|
-
}, !errorMessage ?
|
|
89
|
-
|
|
89
|
+
}))))), jsx("div", {
|
|
90
|
+
css: emojiUploadBottom
|
|
91
|
+
}, !errorMessage ? jsx("p", null, jsx(FormattedMessage, messages.emojiImageRequirements)) : jsx(EmojiErrorMessage, {
|
|
92
|
+
messageStyles: emojiChooseFileErrorMessage,
|
|
90
93
|
message: errorMessage
|
|
91
94
|
})));
|
|
92
95
|
}
|
|
@@ -269,7 +272,7 @@ export class EmojiUploadPicker extends PureComponent {
|
|
|
269
272
|
};
|
|
270
273
|
|
|
271
274
|
if (name && previewImage) {
|
|
272
|
-
return
|
|
275
|
+
return jsx(EmojiUploadPreview, {
|
|
273
276
|
errorMessage: errorMessage,
|
|
274
277
|
name: name,
|
|
275
278
|
onAddEmoji: this.onAddEmoji,
|
|
@@ -279,13 +282,13 @@ export class EmojiUploadPicker extends PureComponent {
|
|
|
279
282
|
});
|
|
280
283
|
}
|
|
281
284
|
|
|
282
|
-
return
|
|
285
|
+
return jsx(ChooseEmojiFile, {
|
|
283
286
|
name: name,
|
|
284
287
|
onChooseFile: this.onChooseFile,
|
|
285
288
|
onClick: this.props.onFileChooserClicked,
|
|
286
289
|
onNameChange: this.onNameChange,
|
|
287
290
|
onUploadCancelled: cancelUpload,
|
|
288
|
-
errorMessage: chooseEmojiErrorMessage ?
|
|
291
|
+
errorMessage: chooseEmojiErrorMessage ? jsx(FormattedMessage, chooseEmojiErrorMessage) : undefined,
|
|
289
292
|
intl: intl
|
|
290
293
|
});
|
|
291
294
|
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
|
|
3
|
+
/** @jsx jsx */
|
|
4
|
+
import { jsx } from '@emotion/core';
|
|
2
5
|
import AkButton from '@atlaskit/button/custom-theme-button';
|
|
3
|
-
import React from 'react';
|
|
4
6
|
import { PureComponent } from 'react';
|
|
5
7
|
import { FormattedMessage, injectIntl } from 'react-intl-next';
|
|
6
8
|
import { customCategory } from '../../util/constants';
|
|
@@ -9,7 +11,7 @@ import Emoji from './Emoji';
|
|
|
9
11
|
import EmojiErrorMessage from './EmojiErrorMessage';
|
|
10
12
|
import { UploadStatus } from './internal-types';
|
|
11
13
|
import RetryableButton from './RetryableButton';
|
|
12
|
-
import
|
|
14
|
+
import { bigEmojiPreview, cancelButton, emojiPreviewErrorMessage, uploadAddRow, uploadPreview, uploadPreviewFooter, uploadPreviewText } from './styles';
|
|
13
15
|
|
|
14
16
|
class EmojiUploadPreview extends PureComponent {
|
|
15
17
|
render() {
|
|
@@ -39,44 +41,42 @@ class EmojiUploadPreview extends PureComponent {
|
|
|
39
41
|
},
|
|
40
42
|
searchable: true
|
|
41
43
|
};
|
|
42
|
-
emojiComponent =
|
|
44
|
+
emojiComponent = jsx(Emoji, {
|
|
43
45
|
emoji: emoji
|
|
44
46
|
});
|
|
45
47
|
}
|
|
46
48
|
|
|
47
49
|
const uploading = uploadStatus === UploadStatus.Uploading;
|
|
48
|
-
return
|
|
49
|
-
|
|
50
|
-
},
|
|
51
|
-
|
|
52
|
-
},
|
|
53
|
-
|
|
54
|
-
},
|
|
50
|
+
return jsx("div", {
|
|
51
|
+
css: uploadPreviewFooter
|
|
52
|
+
}, jsx("div", {
|
|
53
|
+
css: uploadPreview
|
|
54
|
+
}, jsx("div", {
|
|
55
|
+
css: uploadPreviewText
|
|
56
|
+
}, jsx("h5", null, jsx(FormattedMessage, messages.emojiPreviewTitle)), jsx(FormattedMessage, _extends({}, messages.emojiPreview, {
|
|
55
57
|
values: {
|
|
56
58
|
emoji: emojiComponent
|
|
57
59
|
}
|
|
58
|
-
}))),
|
|
59
|
-
|
|
60
|
-
}, emojiComponent)),
|
|
61
|
-
|
|
62
|
-
}, !uploading && errorMessage ?
|
|
63
|
-
|
|
60
|
+
}))), jsx("div", {
|
|
61
|
+
css: bigEmojiPreview
|
|
62
|
+
}, emojiComponent)), jsx("div", {
|
|
63
|
+
css: uploadAddRow
|
|
64
|
+
}, !uploading && errorMessage ? jsx(EmojiErrorMessage, {
|
|
65
|
+
messageStyles: emojiPreviewErrorMessage,
|
|
64
66
|
message: errorMessage,
|
|
65
67
|
tooltip: true
|
|
66
|
-
}) : null,
|
|
67
|
-
className: styles.uploadEmojiButton,
|
|
68
|
-
retryClassName: styles.uploadRetryButton,
|
|
68
|
+
}) : null, jsx(RetryableButton, {
|
|
69
69
|
label: formatMessage(messages.addEmojiLabel),
|
|
70
70
|
onSubmit: onAddEmoji,
|
|
71
71
|
appearance: "primary",
|
|
72
72
|
loading: uploading,
|
|
73
73
|
error: !!errorMessage
|
|
74
|
-
}),
|
|
74
|
+
}), jsx(AkButton, {
|
|
75
75
|
onClick: onUploadCancelled,
|
|
76
76
|
appearance: "subtle",
|
|
77
77
|
isDisabled: uploading,
|
|
78
|
-
|
|
79
|
-
},
|
|
78
|
+
css: cancelButton
|
|
79
|
+
}, jsx(FormattedMessage, messages.cancelLabel))));
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { recordFailed, recordSucceeded, ufoExperiences } from '../../util/analytics';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* A function that will wrap any configured Emoji 'onSelection' function to ensure recordSelection is always
|
|
@@ -12,7 +12,14 @@ export const createRecordSelectionDefault = (provider, onSelect, fireAnalytics)
|
|
|
12
12
|
return (emojiId, emoji, event) => {
|
|
13
13
|
try {
|
|
14
14
|
if (provider.recordSelection && emoji) {
|
|
15
|
-
|
|
15
|
+
ufoExperiences['emoji-selection-recorded'].start();
|
|
16
|
+
provider.recordSelection(emoji).then(() => {
|
|
17
|
+
fireAnalytics && fireAnalytics(recordSucceeded);
|
|
18
|
+
ufoExperiences['emoji-selection-recorded'].success();
|
|
19
|
+
}).catch(() => {
|
|
20
|
+
fireAnalytics && fireAnalytics(recordFailed);
|
|
21
|
+
ufoExperiences['emoji-selection-recorded'].failure();
|
|
22
|
+
});
|
|
16
23
|
}
|
|
17
24
|
} finally {
|
|
18
25
|
if (onSelect) {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
2
3
|
import React from 'react';
|
|
3
4
|
import { Component } from 'react';
|
|
4
5
|
import { defaultEmojiHeight } from '../../util/constants';
|
|
5
6
|
import { isPromise } from '../../util/type-helpers';
|
|
6
7
|
import CachingEmoji from './CachingEmoji';
|
|
7
8
|
import EmojiPlaceholder from './EmojiPlaceholder';
|
|
8
|
-
import { EmojiContextProvider } from '../../context/EmojiContextProvider';
|
|
9
9
|
import { sampledUfoRenderedEmoji } from '../../util/analytics';
|
|
10
10
|
export default class ResourcedEmojiComponent extends Component {
|
|
11
11
|
constructor(props) {
|
|
@@ -19,6 +19,14 @@ export default class ResourcedEmojiComponent extends Component {
|
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
getChildContext() {
|
|
23
|
+
return {
|
|
24
|
+
emoji: {
|
|
25
|
+
emojiProvider: this.props.emojiProvider
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
22
30
|
refreshEmoji(emojiProvider, emojiId) {
|
|
23
31
|
const foundEmoji = emojiProvider.findByEmojiId(emojiId);
|
|
24
32
|
|
|
@@ -118,18 +126,15 @@ export default class ResourcedEmojiComponent extends Component {
|
|
|
118
126
|
id,
|
|
119
127
|
fallback
|
|
120
128
|
} = this.props.emojiId;
|
|
121
|
-
|
|
122
|
-
emoji: {
|
|
123
|
-
emojiProvider: this.props.emojiProvider
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
return /*#__PURE__*/React.createElement(EmojiContextProvider, {
|
|
127
|
-
emojiContextValue: emojiContextValue
|
|
128
|
-
}, /*#__PURE__*/React.createElement("span", {
|
|
129
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
129
130
|
"data-emoji-id": id,
|
|
130
131
|
"data-emoji-short-name": shortName,
|
|
131
132
|
"data-emoji-text": fallback || shortName
|
|
132
|
-
}, element)
|
|
133
|
+
}, element);
|
|
133
134
|
}
|
|
134
135
|
|
|
135
|
-
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
_defineProperty(ResourcedEmojiComponent, "childContextTypes", {
|
|
139
|
+
emoji: PropTypes.object
|
|
140
|
+
});
|
|
@@ -1,29 +1,29 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
import { jsx } from '@emotion/core';
|
|
1
3
|
import AkButton from '@atlaskit/button/custom-theme-button';
|
|
2
4
|
import Spinner from '@atlaskit/spinner';
|
|
3
|
-
import React from 'react';
|
|
4
5
|
import { Component } from 'react';
|
|
5
6
|
import { FormattedMessage } from 'react-intl-next';
|
|
6
7
|
import { messages } from '../i18n';
|
|
7
|
-
import
|
|
8
|
+
import { buttonSpinner, uploadEmojiButton, uploadRetryButton } from './styles';
|
|
8
9
|
export default class RetryableButton extends Component {
|
|
9
10
|
constructor(props) {
|
|
10
11
|
super(props);
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
renderLoading() {
|
|
14
|
-
return
|
|
15
|
-
|
|
16
|
-
},
|
|
15
|
+
return jsx("span", {
|
|
16
|
+
css: buttonSpinner
|
|
17
|
+
}, jsx(Spinner, null));
|
|
17
18
|
}
|
|
18
19
|
|
|
19
20
|
renderRetry() {
|
|
20
21
|
const {
|
|
21
22
|
loading,
|
|
22
|
-
retryClassName,
|
|
23
23
|
onSubmit
|
|
24
24
|
} = this.props;
|
|
25
|
-
return loading ? this.renderLoading() :
|
|
26
|
-
|
|
25
|
+
return loading ? this.renderLoading() : jsx(FormattedMessage, messages.retryLabel, retryLabel => jsx(AkButton, {
|
|
26
|
+
css: uploadRetryButton,
|
|
27
27
|
appearance: "warning",
|
|
28
28
|
onClick: onSubmit
|
|
29
29
|
}, retryLabel));
|
|
@@ -33,13 +33,12 @@ export default class RetryableButton extends Component {
|
|
|
33
33
|
const {
|
|
34
34
|
loading,
|
|
35
35
|
error,
|
|
36
|
-
className,
|
|
37
36
|
appearance,
|
|
38
37
|
onSubmit,
|
|
39
38
|
label
|
|
40
39
|
} = this.props;
|
|
41
|
-
return error ? this.renderRetry() : loading ? this.renderLoading() :
|
|
42
|
-
|
|
40
|
+
return error ? this.renderRetry() : loading ? this.renderLoading() : jsx(AkButton, {
|
|
41
|
+
css: uploadEmojiButton,
|
|
43
42
|
appearance: appearance,
|
|
44
43
|
onClick: onSubmit
|
|
45
44
|
}, label);
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
2
|
// FIXME - FAB-1732 looking at making a shared component for this
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
|
|
4
|
+
/** @jsx jsx */
|
|
5
|
+
import { jsx } from '@emotion/core';
|
|
5
6
|
import { PureComponent } from 'react';
|
|
6
7
|
import { findDOMNode } from 'react-dom';
|
|
7
8
|
import * as styles from './styles';
|
|
@@ -59,17 +60,12 @@ export default class Scrollable extends PureComponent {
|
|
|
59
60
|
maxHeight,
|
|
60
61
|
onMouseLeave
|
|
61
62
|
} = this.props;
|
|
62
|
-
const scrollableClasses = ['emoji-scrollable', styles.emojiScrollable];
|
|
63
|
-
|
|
64
|
-
if (className) {
|
|
65
|
-
scrollableClasses.push(className);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
63
|
const style = maxHeight ? {
|
|
69
64
|
maxHeight
|
|
70
65
|
} : {};
|
|
71
|
-
return
|
|
72
|
-
className:
|
|
66
|
+
return jsx("div", {
|
|
67
|
+
className: `emoji-scrollable ${className}`,
|
|
68
|
+
css: styles.emojiScrollable,
|
|
73
69
|
onMouseLeave: onMouseLeave,
|
|
74
70
|
onScroll: this.handleScroll,
|
|
75
71
|
ref: this.handleRef,
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import { supportsUploadFeature } from '../../api/EmojiResource';
|
|
2
2
|
import { uploadFailedEvent, uploadSucceededEvent } from '../../util/analytics';
|
|
3
3
|
import { messages } from '../i18n';
|
|
4
|
+
import { ufoExperiences } from '../../util/analytics/ufoExperiences';
|
|
4
5
|
export const uploadEmoji = (upload, emojiProvider, errorSetter, onSuccess, fireAnalytics) => {
|
|
5
6
|
const startTime = Date.now();
|
|
6
7
|
errorSetter(undefined);
|
|
7
8
|
|
|
8
9
|
if (supportsUploadFeature(emojiProvider)) {
|
|
10
|
+
ufoExperiences['emoji-uploaded'].start();
|
|
9
11
|
emojiProvider.uploadCustomEmoji(upload).then(emojiDescription => {
|
|
10
12
|
fireAnalytics(uploadSucceededEvent({
|
|
11
13
|
duration: Date.now() - startTime
|
|
12
14
|
}));
|
|
13
15
|
onSuccess(emojiDescription);
|
|
16
|
+
ufoExperiences['emoji-uploaded'].success();
|
|
14
17
|
}).catch(err => {
|
|
15
18
|
errorSetter(messages.emojiUploadFailed); // eslint-disable-next-line no-console
|
|
16
19
|
|
|
@@ -19,6 +22,7 @@ export const uploadEmoji = (upload, emojiProvider, errorSetter, onSuccess, fireA
|
|
|
19
22
|
duration: Date.now() - startTime,
|
|
20
23
|
reason: messages.emojiUploadFailed.defaultMessage
|
|
21
24
|
}));
|
|
25
|
+
ufoExperiences['emoji-uploaded'].failure();
|
|
22
26
|
});
|
|
23
27
|
}
|
|
24
28
|
};
|