@atlaskit/emoji 64.2.0 → 64.4.0
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/EmojiResource.js +36 -1
- package/dist/cjs/api/media/SiteEmojiResource.js +10 -2
- package/dist/cjs/components/common/CachingEmoji.js +38 -12
- package/dist/cjs/components/common/DeleteButton.js +9 -13
- package/dist/cjs/components/common/Emoji.js +25 -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/ResourcedEmoji.js +25 -9
- package/dist/cjs/components/common/ResourcedEmojiComponent.js +33 -11
- package/dist/cjs/components/common/RetryableButton.js +12 -18
- package/dist/cjs/components/common/Scrollable.js +5 -10
- package/dist/cjs/components/common/UfoErrorBoundary.js +52 -0
- 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 +9 -3
- package/dist/cjs/types.js +12 -2
- package/dist/cjs/util/{analytics.js → analytics/analytics.js} +12 -10
- package/dist/cjs/util/analytics/index.js +205 -0
- package/dist/cjs/util/analytics/samplingUfo.js +278 -0
- package/dist/cjs/util/analytics/ufoExperiences.js +46 -0
- package/dist/cjs/util/analytics/useSampledUFOComponentExperience.js +49 -0
- package/dist/cjs/util/constants.js +10 -3
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/api/EmojiResource.js +28 -1
- package/dist/es2019/api/media/SiteEmojiResource.js +10 -2
- package/dist/es2019/components/common/CachingEmoji.js +34 -12
- package/dist/es2019/components/common/DeleteButton.js +8 -6
- package/dist/es2019/components/common/Emoji.js +27 -36
- 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/ResourcedEmoji.js +22 -5
- package/dist/es2019/components/common/ResourcedEmojiComponent.js +32 -11
- package/dist/es2019/components/common/RetryableButton.js +10 -11
- package/dist/es2019/components/common/Scrollable.js +6 -10
- package/dist/es2019/components/common/UfoErrorBoundary.js +11 -0
- 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 +4 -3
- package/dist/es2019/types.js +10 -1
- package/dist/es2019/util/{analytics.js → analytics/analytics.js} +17 -11
- package/dist/es2019/util/analytics/index.js +4 -0
- package/dist/es2019/util/analytics/samplingUfo.js +147 -0
- package/dist/es2019/util/analytics/ufoExperiences.js +34 -0
- package/dist/es2019/util/analytics/useSampledUFOComponentExperience.js +39 -0
- package/dist/es2019/util/constants.js +5 -1
- package/dist/es2019/version.json +1 -1
- package/dist/esm/api/EmojiResource.js +32 -1
- package/dist/esm/api/media/SiteEmojiResource.js +10 -2
- package/dist/esm/components/common/CachingEmoji.js +36 -12
- package/dist/esm/components/common/DeleteButton.js +8 -6
- package/dist/esm/components/common/Emoji.js +26 -29
- 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/ResourcedEmoji.js +22 -9
- package/dist/esm/components/common/ResourcedEmojiComponent.js +32 -10
- package/dist/esm/components/common/RetryableButton.js +11 -12
- package/dist/esm/components/common/Scrollable.js +6 -10
- package/dist/esm/components/common/UfoErrorBoundary.js +38 -0
- 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 +4 -3
- package/dist/esm/types.js +10 -1
- package/dist/esm/util/{analytics.js → analytics/analytics.js} +9 -7
- package/dist/esm/util/analytics/index.js +4 -0
- package/dist/esm/util/analytics/samplingUfo.js +259 -0
- package/dist/esm/util/analytics/ufoExperiences.js +34 -0
- package/dist/esm/util/analytics/useSampledUFOComponentExperience.js +39 -0
- package/dist/esm/util/constants.js +5 -1
- package/dist/esm/version.json +1 -1
- package/dist/types/api/EmojiResource.d.ts +1 -0
- 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/ResourcedEmoji.d.ts +2 -0
- 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/UfoErrorBoundary.d.ts +8 -0
- 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 +3 -3
- package/dist/types/types.d.ts +6 -0
- package/dist/types/util/{analytics.d.ts → analytics/analytics.d.ts} +7 -7
- package/dist/types/util/analytics/index.d.ts +6 -0
- package/dist/types/util/analytics/samplingUfo.d.ts +31 -0
- package/dist/types/util/analytics/ufoExperiences.d.ts +12 -0
- package/dist/types/util/analytics/useSampledUFOComponentExperience.d.ts +8 -0
- package/dist/types/util/constants.d.ts +2 -0
- package/package.json +10 -9
- 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,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,9 +1,11 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
3
|
import React from 'react';
|
|
4
|
-
import { defaultEmojiHeight } from '../../util/constants';
|
|
4
|
+
import { defaultEmojiHeight, SAMPLING_RATE_EMOJI_RENDERED_EXP_RESOURCEEMOJI } from '../../util/constants';
|
|
5
5
|
import EmojiPlaceholder from './EmojiPlaceholder';
|
|
6
6
|
import LoadingEmojiComponent from './LoadingEmojiComponent';
|
|
7
|
+
import { sampledUfoRenderedEmoji, ufoExperiences } from '../../util/analytics';
|
|
8
|
+
import { UfoErrorBoundary } from './UfoErrorBoundary';
|
|
7
9
|
|
|
8
10
|
const resourcedEmojiModuleLoader = () => import(
|
|
9
11
|
/* webpackChunkName:"@atlaskit-internal_resourcedEmojiComponent" */
|
|
@@ -12,12 +14,25 @@ const resourcedEmojiModuleLoader = () => import(
|
|
|
12
14
|
const resourcedEmojiComponentLoader = () => resourcedEmojiModuleLoader().then(module => module.default);
|
|
13
15
|
|
|
14
16
|
export default class ResourcedEmoji extends LoadingEmojiComponent {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
+
// state initialised with static component to prevent
|
|
18
|
+
// rerender when the module has already been loaded
|
|
19
|
+
constructor(props) {
|
|
20
|
+
super(props, {});
|
|
17
21
|
|
|
18
22
|
_defineProperty(this, "state", {
|
|
19
23
|
asyncLoadedComponent: ResourcedEmoji.AsyncLoadedComponent
|
|
20
24
|
});
|
|
25
|
+
|
|
26
|
+
sampledUfoRenderedEmoji(props.emojiId).start({
|
|
27
|
+
samplingRate: SAMPLING_RATE_EMOJI_RENDERED_EXP_RESOURCEEMOJI
|
|
28
|
+
});
|
|
29
|
+
ufoExperiences['emoji-rendered'].getInstance(props.emojiId.id || props.emojiId.shortName).addMetadata({
|
|
30
|
+
source: 'resourced-emoji'
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
componentWillUnmount() {
|
|
35
|
+
sampledUfoRenderedEmoji(this.props.emojiId).abort();
|
|
21
36
|
}
|
|
22
37
|
|
|
23
38
|
asyncLoadComponent() {
|
|
@@ -45,9 +60,11 @@ export default class ResourcedEmoji extends LoadingEmojiComponent {
|
|
|
45
60
|
emojiProvider,
|
|
46
61
|
...otherProps
|
|
47
62
|
} = this.props;
|
|
48
|
-
return /*#__PURE__*/React.createElement(
|
|
63
|
+
return /*#__PURE__*/React.createElement(UfoErrorBoundary, {
|
|
64
|
+
experiences: [ufoExperiences['emoji-rendered'].getInstance(this.props.emojiId.id || this.props.emojiId.shortName)]
|
|
65
|
+
}, /*#__PURE__*/React.createElement(ResourcedEmojiComponent, _extends({}, otherProps, {
|
|
49
66
|
emojiProvider: loadedEmojiProvider
|
|
50
|
-
}));
|
|
67
|
+
})));
|
|
51
68
|
}
|
|
52
69
|
|
|
53
70
|
}
|
|
@@ -1,11 +1,12 @@
|
|
|
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 {
|
|
9
|
+
import { sampledUfoRenderedEmoji } from '../../util/analytics';
|
|
9
10
|
export default class ResourcedEmojiComponent extends Component {
|
|
10
11
|
constructor(props) {
|
|
11
12
|
super(props);
|
|
@@ -18,6 +19,14 @@ export default class ResourcedEmojiComponent extends Component {
|
|
|
18
19
|
};
|
|
19
20
|
}
|
|
20
21
|
|
|
22
|
+
getChildContext() {
|
|
23
|
+
return {
|
|
24
|
+
emoji: {
|
|
25
|
+
emojiProvider: this.props.emojiProvider
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
|
|
21
30
|
refreshEmoji(emojiProvider, emojiId) {
|
|
22
31
|
const foundEmoji = emojiProvider.findByEmojiId(emojiId);
|
|
23
32
|
|
|
@@ -32,7 +41,22 @@ export default class ResourcedEmojiComponent extends Component {
|
|
|
32
41
|
emoji,
|
|
33
42
|
loaded: true
|
|
34
43
|
});
|
|
44
|
+
|
|
45
|
+
if (!emoji) {
|
|
46
|
+
// emoji is undefined
|
|
47
|
+
sampledUfoRenderedEmoji(emojiId).failure({
|
|
48
|
+
metadata: {
|
|
49
|
+
reason: 'failed to find'
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
35
53
|
}
|
|
54
|
+
}).catch(() => {
|
|
55
|
+
sampledUfoRenderedEmoji(emojiId).failure({
|
|
56
|
+
metadata: {
|
|
57
|
+
reason: 'failed to load'
|
|
58
|
+
}
|
|
59
|
+
});
|
|
36
60
|
});
|
|
37
61
|
} else {
|
|
38
62
|
// loaded
|
|
@@ -102,18 +126,15 @@ export default class ResourcedEmojiComponent extends Component {
|
|
|
102
126
|
id,
|
|
103
127
|
fallback
|
|
104
128
|
} = this.props.emojiId;
|
|
105
|
-
|
|
106
|
-
emoji: {
|
|
107
|
-
emojiProvider: this.props.emojiProvider
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
return /*#__PURE__*/React.createElement(EmojiContextProvider, {
|
|
111
|
-
emojiContextValue: emojiContextValue
|
|
112
|
-
}, /*#__PURE__*/React.createElement("span", {
|
|
129
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
113
130
|
"data-emoji-id": id,
|
|
114
131
|
"data-emoji-short-name": shortName,
|
|
115
132
|
"data-emoji-text": fallback || shortName
|
|
116
|
-
}, element)
|
|
133
|
+
}, element);
|
|
117
134
|
}
|
|
118
135
|
|
|
119
|
-
}
|
|
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
|
};
|