@atlaskit/emoji 65.0.0 → 65.2.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 +36 -0
- package/dist/cjs/components/common/CachingEmoji.js +84 -151
- package/dist/cjs/components/common/Emoji.js +2 -2
- package/dist/cjs/components/common/EmojiActions.js +129 -175
- package/dist/cjs/components/common/EmojiErrorMessage.js +23 -59
- package/dist/cjs/components/common/EmojiPreviewComponent.js +1 -0
- package/dist/cjs/components/common/EmojiUploadPicker.js +235 -293
- package/dist/cjs/components/common/FileChooser.js +34 -71
- package/dist/cjs/components/common/Popup.js +105 -154
- package/dist/cjs/components/common/ResourcedEmojiComponent.js +10 -5
- package/dist/cjs/components/common/RetryableButton.js +43 -64
- package/dist/cjs/components/common/ToneSelector.js +50 -89
- package/dist/cjs/components/common/styles.js +14 -16
- package/dist/cjs/components/hooks.js +16 -0
- package/dist/cjs/components/picker/EmojiPickerCategoryHeading.js +16 -48
- package/dist/cjs/components/picker/EmojiPickerComponent.js +496 -508
- package/dist/cjs/components/picker/EmojiPickerEmojiRow.js +33 -60
- package/dist/cjs/components/picker/EmojiPickerFooter.js +13 -46
- package/dist/cjs/components/picker/styles.js +16 -13
- package/dist/cjs/components/uploader/EmojiUploadComponent.js +124 -109
- package/dist/cjs/hooks/useEmojiContext.js +16 -0
- package/dist/cjs/hooks/usePrevious.js +16 -0
- package/dist/cjs/index.js +16 -0
- package/dist/cjs/util/constants.js +3 -1
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/components/common/CachingEmoji.js +65 -112
- package/dist/es2019/components/common/Emoji.js +2 -2
- package/dist/es2019/components/common/EmojiActions.js +124 -150
- package/dist/es2019/components/common/EmojiErrorMessage.js +22 -26
- package/dist/es2019/components/common/EmojiPreviewComponent.js +1 -0
- package/dist/es2019/components/common/EmojiUploadPicker.js +190 -253
- package/dist/es2019/components/common/FileChooser.js +37 -40
- package/dist/es2019/components/common/Popup.js +89 -109
- package/dist/es2019/components/common/ResourcedEmojiComponent.js +5 -4
- package/dist/es2019/components/common/RetryableButton.js +43 -34
- package/dist/es2019/components/common/ToneSelector.js +46 -59
- package/dist/es2019/components/common/styles.js +9 -9
- package/dist/es2019/components/hooks.js +8 -0
- package/dist/es2019/components/picker/EmojiPickerCategoryHeading.js +13 -17
- package/dist/es2019/components/picker/EmojiPickerComponent.js +417 -497
- package/dist/es2019/components/picker/EmojiPickerEmojiRow.js +32 -35
- package/dist/es2019/components/picker/EmojiPickerFooter.js +11 -19
- package/dist/es2019/components/picker/styles.js +16 -14
- package/dist/es2019/components/uploader/EmojiUploadComponent.js +81 -91
- package/dist/es2019/hooks/useEmojiContext.js +3 -0
- package/dist/es2019/hooks/usePrevious.js +8 -0
- package/dist/es2019/index.js +4 -1
- package/dist/es2019/util/constants.js +1 -0
- package/dist/es2019/version.json +1 -1
- package/dist/esm/components/common/CachingEmoji.js +86 -156
- package/dist/esm/components/common/Emoji.js +2 -2
- package/dist/esm/components/common/EmojiActions.js +129 -176
- package/dist/esm/components/common/EmojiErrorMessage.js +21 -56
- package/dist/esm/components/common/EmojiPreviewComponent.js +1 -0
- package/dist/esm/components/common/EmojiUploadPicker.js +233 -299
- package/dist/esm/components/common/FileChooser.js +34 -70
- package/dist/esm/components/common/Popup.js +104 -155
- package/dist/esm/components/common/ResourcedEmojiComponent.js +8 -4
- package/dist/esm/components/common/RetryableButton.js +40 -60
- package/dist/esm/components/common/ToneSelector.js +50 -87
- package/dist/esm/components/common/styles.js +10 -10
- package/dist/esm/components/hooks.js +8 -0
- package/dist/esm/components/picker/EmojiPickerCategoryHeading.js +14 -43
- package/dist/esm/components/picker/EmojiPickerComponent.js +486 -526
- package/dist/esm/components/picker/EmojiPickerEmojiRow.js +31 -59
- package/dist/esm/components/picker/EmojiPickerFooter.js +14 -47
- package/dist/esm/components/picker/styles.js +16 -14
- package/dist/esm/components/uploader/EmojiUploadComponent.js +119 -113
- package/dist/esm/hooks/useEmojiContext.js +5 -0
- package/dist/esm/hooks/usePrevious.js +8 -0
- package/dist/esm/index.js +4 -1
- package/dist/esm/util/constants.js +1 -0
- package/dist/esm/version.json +1 -1
- package/dist/types/api/EmojiResource.d.ts +2 -3
- package/dist/types/components/common/CachingEmoji.d.ts +3 -13
- package/dist/types/components/common/Emoji.d.ts +1 -2
- package/dist/types/components/common/EmojiActions.d.ts +6 -17
- package/dist/types/components/common/EmojiErrorMessage.d.ts +3 -6
- package/dist/types/components/common/EmojiPreviewComponent.d.ts +2 -2
- package/dist/types/components/common/EmojiUploadPicker.d.ts +3 -27
- package/dist/types/components/common/FileChooser.d.ts +3 -5
- package/dist/types/components/common/LoadingEmojiComponent.d.ts +3 -0
- package/dist/types/components/common/Popup.d.ts +3 -20
- package/dist/types/components/common/ResourcedEmojiComponent.d.ts +23 -11
- package/dist/types/components/common/RetryableButton.d.ts +3 -7
- package/dist/types/components/common/ToneSelector.d.ts +4 -10
- package/dist/types/components/common/setSkinToneAriaLabelText.d.ts +1 -1
- package/dist/types/components/common/styles.d.ts +1 -3
- package/dist/types/components/hooks.d.ts +1 -0
- package/dist/types/components/picker/CategorySelector.d.ts +1 -1
- package/dist/types/components/picker/EmojiPicker.d.ts +12 -3
- package/dist/types/components/picker/EmojiPickerCategoryHeading.d.ts +3 -4
- package/dist/types/components/picker/EmojiPickerComponent.d.ts +14 -76
- package/dist/types/components/picker/EmojiPickerEmojiRow.d.ts +3 -4
- package/dist/types/components/picker/EmojiPickerFooter.d.ts +3 -5
- package/dist/types/components/picker/styles.d.ts +1 -1
- package/dist/types/components/typeahead/EmojiTypeAheadComponent.d.ts +18 -0
- package/dist/types/components/uploader/EmojiUploadComponent.d.ts +3 -17
- package/dist/types/components/uploader/EmojiUploader.d.ts +5 -7
- package/dist/types/hooks/useEmojiContext.d.ts +1 -0
- package/dist/types/hooks/usePrevious.d.ts +1 -0
- package/dist/types/index.d.ts +3 -1
- package/dist/types/types.d.ts +2 -1
- package/dist/types/util/constants.d.ts +1 -0
- package/docs/0-intro.tsx +35 -27
- package/docs/1-resourced-emoji.tsx +74 -0
- package/docs/2-emoji-picker.tsx +56 -0
- package/docs/3-typeahead.tsx +20 -0
- package/docs/4-emoji-provider.tsx +98 -0
- package/local-config-example.ts +3 -1
- package/package.json +19 -6
- package/dist/cjs/components/common/EmojiPreview.js +0 -194
- package/dist/es2019/components/common/EmojiPreview.js +0 -152
- package/dist/esm/components/common/EmojiPreview.js +0 -170
- package/dist/types/components/common/EmojiPreview.d.ts +0 -31
|
@@ -1,61 +1,26 @@
|
|
|
1
|
-
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
2
|
-
import _createClass from "@babel/runtime/helpers/createClass";
|
|
3
|
-
import _inherits from "@babel/runtime/helpers/inherits";
|
|
4
|
-
import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
|
|
5
|
-
import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
|
|
6
|
-
|
|
7
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
8
|
-
|
|
9
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
10
|
-
|
|
11
1
|
/** @jsx jsx */
|
|
12
2
|
import { jsx } from '@emotion/core';
|
|
13
3
|
import ErrorIcon from '@atlaskit/icon/glyph/error';
|
|
14
|
-
import { PureComponent } from 'react';
|
|
15
4
|
import Tooltip from '@atlaskit/tooltip';
|
|
16
5
|
|
|
17
|
-
var EmojiErrorMessage =
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
size: "medium"
|
|
39
|
-
})));
|
|
40
|
-
}
|
|
41
|
-
}, {
|
|
42
|
-
key: "renderInline",
|
|
43
|
-
value: function renderInline() {
|
|
44
|
-
return jsx("div", {
|
|
45
|
-
css: this.props.messageStyles
|
|
46
|
-
}, jsx(ErrorIcon, {
|
|
47
|
-
label: "Error",
|
|
48
|
-
size: "small"
|
|
49
|
-
}), " ", this.props.message);
|
|
50
|
-
}
|
|
51
|
-
}, {
|
|
52
|
-
key: "render",
|
|
53
|
-
value: function render() {
|
|
54
|
-
return this.props.tooltip ? this.renderWithTooltip() : this.renderInline();
|
|
55
|
-
}
|
|
56
|
-
}]);
|
|
57
|
-
|
|
58
|
-
return EmojiErrorMessage;
|
|
59
|
-
}(PureComponent);
|
|
60
|
-
|
|
61
|
-
export { EmojiErrorMessage as default };
|
|
6
|
+
var EmojiErrorMessage = function EmojiErrorMessage(props) {
|
|
7
|
+
var messageStyles = props.messageStyles,
|
|
8
|
+
message = props.message,
|
|
9
|
+
tooltip = props.tooltip;
|
|
10
|
+
return tooltip ? jsx("div", {
|
|
11
|
+
css: messageStyles
|
|
12
|
+
}, jsx(Tooltip, {
|
|
13
|
+
content: message,
|
|
14
|
+
position: "top"
|
|
15
|
+
}, jsx(ErrorIcon, {
|
|
16
|
+
label: "Error",
|
|
17
|
+
size: "medium"
|
|
18
|
+
}))) : jsx("div", {
|
|
19
|
+
css: messageStyles
|
|
20
|
+
}, jsx(ErrorIcon, {
|
|
21
|
+
label: "Error",
|
|
22
|
+
size: "small"
|
|
23
|
+
}), " ", message);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export default EmojiErrorMessage;
|
|
@@ -1,19 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import _inherits from "@babel/runtime/helpers/inherits";
|
|
5
|
-
import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
|
|
6
|
-
import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
|
|
7
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
8
|
-
|
|
9
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
10
|
-
|
|
11
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
3
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
12
4
|
|
|
13
5
|
/** @jsx jsx */
|
|
14
6
|
import { jsx } from '@emotion/core';
|
|
15
|
-
import React, { Fragment } from 'react';
|
|
16
|
-
import { PureComponent } from 'react';
|
|
7
|
+
import React, { Fragment, useEffect, useState } from 'react';
|
|
17
8
|
import { FormattedMessage, injectIntl } from 'react-intl-next';
|
|
18
9
|
import TextField from '@atlaskit/textfield';
|
|
19
10
|
import * as ImageUtil from '../../util/image';
|
|
@@ -41,310 +32,253 @@ var toEmojiName = function toEmojiName(uploadName) {
|
|
|
41
32
|
return "".concat(name.substr(0, 1).toLocaleUpperCase()).concat(name.substr(1));
|
|
42
33
|
};
|
|
43
34
|
|
|
44
|
-
var ChooseEmojiFile =
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
35
|
+
var ChooseEmojiFile = function ChooseEmojiFile(props) {
|
|
36
|
+
var _props$name = props.name,
|
|
37
|
+
name = _props$name === void 0 ? '' : _props$name,
|
|
38
|
+
onChooseFile = props.onChooseFile,
|
|
39
|
+
onClick = props.onClick,
|
|
40
|
+
onNameChange = props.onNameChange,
|
|
41
|
+
onUploadCancelled = props.onUploadCancelled,
|
|
42
|
+
errorMessage = props.errorMessage,
|
|
43
|
+
intl = props.intl;
|
|
44
|
+
var formatMessage = intl.formatMessage;
|
|
45
|
+
var disableChooser = !name;
|
|
46
|
+
var fileChooserButtonDescriptionId = 'choose.emoji.file.button.screen.reader.description.id';
|
|
47
|
+
|
|
48
|
+
var onKeyDownHandler = function onKeyDownHandler(event) {
|
|
49
|
+
if (event.key === 'Escape') {
|
|
50
|
+
onUploadCancelled();
|
|
56
51
|
}
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
return jsx("div", {
|
|
55
|
+
css: emojiUpload
|
|
56
|
+
}, jsx("div", {
|
|
57
|
+
css: uploadChooseFileMessage
|
|
58
|
+
}, jsx(FormattedMessage, messages.addCustomEmojiLabel, function (message) {
|
|
59
|
+
return jsx("h5", null, message);
|
|
60
|
+
})), jsx("div", {
|
|
61
|
+
css: uploadChooseFileRow
|
|
62
|
+
}, jsx("span", {
|
|
63
|
+
css: uploadChooseFileEmojiName
|
|
64
|
+
}, jsx(TextField, {
|
|
65
|
+
placeholder: formatMessage(messages.emojiPlaceholder),
|
|
66
|
+
"aria-label": formatMessage(messages.emojiNameAriaLabel),
|
|
67
|
+
maxLength: maxNameLength,
|
|
68
|
+
onChange: onNameChange,
|
|
69
|
+
onKeyDown: onKeyDownHandler,
|
|
70
|
+
value: name,
|
|
71
|
+
isCompact: true,
|
|
72
|
+
autoFocus: true
|
|
73
|
+
})), jsx("span", {
|
|
74
|
+
css: uploadChooseFileBrowse
|
|
75
|
+
}, jsx(FormattedMessage, messages.emojiChooseFileScreenReaderDescription, function (screenReaderDescription) {
|
|
76
|
+
return jsx(Fragment, null, jsx("span", {
|
|
77
|
+
hidden: true,
|
|
78
|
+
id: fileChooserButtonDescriptionId
|
|
79
|
+
}, screenReaderDescription), jsx(FileChooser, {
|
|
80
|
+
label: formatMessage(messages.emojiChooseFileTitle),
|
|
81
|
+
onChange: onChooseFile,
|
|
82
|
+
onClick: onClick,
|
|
83
|
+
accept: "image/png,image/jpeg,image/gif",
|
|
84
|
+
ariaDescribedBy: fileChooserButtonDescriptionId,
|
|
85
|
+
isDisabled: disableChooser
|
|
86
|
+
}));
|
|
87
|
+
}))), jsx("div", {
|
|
88
|
+
css: emojiUploadBottom
|
|
89
|
+
}, !errorMessage ? jsx("p", null, jsx(FormattedMessage, messages.emojiImageRequirements)) : jsx(EmojiErrorMessage, {
|
|
90
|
+
messageStyles: emojiChooseFileErrorMessage,
|
|
91
|
+
message: errorMessage
|
|
92
|
+
})));
|
|
93
|
+
};
|
|
57
94
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
95
|
+
var EmojiUploadPicker = function EmojiUploadPicker(props) {
|
|
96
|
+
var errorMessage = props.errorMessage,
|
|
97
|
+
initialUploadName = props.initialUploadName,
|
|
98
|
+
onUploadEmoji = props.onUploadEmoji,
|
|
99
|
+
onFileChooserClicked = props.onFileChooserClicked,
|
|
100
|
+
onUploadCancelled = props.onUploadCancelled,
|
|
101
|
+
intl = props.intl;
|
|
102
|
+
|
|
103
|
+
var _useState = useState(errorMessage ? UploadStatus.Error : UploadStatus.Waiting),
|
|
104
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
105
|
+
uploadStatus = _useState2[0],
|
|
106
|
+
setUploadStatus = _useState2[1];
|
|
107
|
+
|
|
108
|
+
var _useState3 = useState(),
|
|
109
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
110
|
+
chooseEmojiErrorMessage = _useState4[0],
|
|
111
|
+
setChooseEmojiErrorMessage = _useState4[1];
|
|
112
|
+
|
|
113
|
+
var _useState5 = useState(initialUploadName && sanitizeName(initialUploadName)),
|
|
114
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
|
115
|
+
name = _useState6[0],
|
|
116
|
+
setName = _useState6[1];
|
|
117
|
+
|
|
118
|
+
var _useState7 = useState(),
|
|
119
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
120
|
+
filename = _useState8[0],
|
|
121
|
+
setFilename = _useState8[1];
|
|
122
|
+
|
|
123
|
+
var _useState9 = useState(),
|
|
124
|
+
_useState10 = _slicedToArray(_useState9, 2),
|
|
125
|
+
previewImage = _useState10[0],
|
|
126
|
+
setPreviewImage = _useState10[1];
|
|
127
|
+
|
|
128
|
+
useEffect(function () {
|
|
129
|
+
if (errorMessage) {
|
|
130
|
+
setUploadStatus(UploadStatus.Error);
|
|
131
|
+
return;
|
|
132
|
+
} else {
|
|
133
|
+
if (uploadStatus === UploadStatus.Error) {
|
|
134
|
+
setUploadStatus(UploadStatus.Waiting);
|
|
63
135
|
}
|
|
64
|
-
});
|
|
65
|
-
|
|
66
|
-
return _this;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
_createClass(ChooseEmojiFile, [{
|
|
70
|
-
key: "render",
|
|
71
|
-
value: function render() {
|
|
72
|
-
var _this$props = this.props,
|
|
73
|
-
_this$props$name = _this$props.name,
|
|
74
|
-
name = _this$props$name === void 0 ? '' : _this$props$name,
|
|
75
|
-
onChooseFile = _this$props.onChooseFile,
|
|
76
|
-
onClick = _this$props.onClick,
|
|
77
|
-
onNameChange = _this$props.onNameChange,
|
|
78
|
-
errorMessage = _this$props.errorMessage,
|
|
79
|
-
intl = _this$props.intl;
|
|
80
|
-
var formatMessage = intl.formatMessage;
|
|
81
|
-
var disableChooser = !name;
|
|
82
|
-
var 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
|
|
83
|
-
|
|
84
|
-
return jsx("div", {
|
|
85
|
-
css: emojiUpload
|
|
86
|
-
}, jsx("div", {
|
|
87
|
-
css: uploadChooseFileMessage
|
|
88
|
-
}, jsx(FormattedMessage, messages.addCustomEmojiLabel, function (message) {
|
|
89
|
-
return jsx("h5", null, message);
|
|
90
|
-
})), jsx("div", {
|
|
91
|
-
css: uploadChooseFileRow
|
|
92
|
-
}, jsx("span", {
|
|
93
|
-
css: uploadChooseFileEmojiName
|
|
94
|
-
}, jsx(TextField, {
|
|
95
|
-
placeholder: formatMessage(messages.emojiPlaceholder),
|
|
96
|
-
"aria-label": formatMessage(messages.emojiNameAriaLabel),
|
|
97
|
-
maxLength: maxNameLength,
|
|
98
|
-
onChange: onNameChange,
|
|
99
|
-
onKeyDown: this.onKeyDown,
|
|
100
|
-
value: name,
|
|
101
|
-
isCompact: true,
|
|
102
|
-
autoFocus: true
|
|
103
|
-
})), jsx("span", {
|
|
104
|
-
css: uploadChooseFileBrowse
|
|
105
|
-
}, jsx(FormattedMessage, messages.emojiChooseFileScreenReaderDescription, function (screenReaderDescription) {
|
|
106
|
-
return jsx(Fragment, null, jsx("span", {
|
|
107
|
-
hidden: true,
|
|
108
|
-
id: fileChooserButtonDescriptionId
|
|
109
|
-
}, screenReaderDescription), jsx(FileChooser, {
|
|
110
|
-
label: formatMessage(messages.emojiChooseFileTitle),
|
|
111
|
-
onChange: onChooseFile,
|
|
112
|
-
onClick: onClick,
|
|
113
|
-
accept: "image/png,image/jpeg,image/gif",
|
|
114
|
-
ariaDescribedBy: fileChooserButtonDescriptionId,
|
|
115
|
-
isDisabled: disableChooser
|
|
116
|
-
}));
|
|
117
|
-
}))), jsx("div", {
|
|
118
|
-
css: emojiUploadBottom
|
|
119
|
-
}, !errorMessage ? jsx("p", null, jsx(FormattedMessage, messages.emojiImageRequirements)) : jsx(EmojiErrorMessage, {
|
|
120
|
-
messageStyles: emojiChooseFileErrorMessage,
|
|
121
|
-
message: errorMessage
|
|
122
|
-
})));
|
|
123
136
|
}
|
|
124
|
-
}]);
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
_inherits(EmojiUploadPicker, _PureComponent2);
|
|
131
|
-
|
|
132
|
-
var _super2 = _createSuper(EmojiUploadPicker);
|
|
133
|
-
|
|
134
|
-
function EmojiUploadPicker(props) {
|
|
135
|
-
var _this2;
|
|
136
|
-
|
|
137
|
-
_classCallCheck(this, EmojiUploadPicker);
|
|
138
|
-
|
|
139
|
-
_this2 = _super2.call(this, props);
|
|
140
|
-
|
|
141
|
-
_defineProperty(_assertThisInitialized(_this2), "state", {
|
|
142
|
-
uploadStatus: UploadStatus.Waiting,
|
|
143
|
-
chooseEmojiErrorMessage: undefined
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
_defineProperty(_assertThisInitialized(_this2), "onNameChange", function (event) {
|
|
147
|
-
var newName = sanitizeName(event.target.value);
|
|
148
|
-
|
|
149
|
-
if (_this2.state.name !== newName) {
|
|
150
|
-
_this2.setState({
|
|
151
|
-
name: newName
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
});
|
|
155
|
-
|
|
156
|
-
_defineProperty(_assertThisInitialized(_this2), "onAddEmoji", function () {
|
|
157
|
-
var onUploadEmoji = _this2.props.onUploadEmoji;
|
|
158
|
-
var _this2$state = _this2.state,
|
|
159
|
-
filename = _this2$state.filename,
|
|
160
|
-
name = _this2$state.name,
|
|
161
|
-
previewImage = _this2$state.previewImage,
|
|
162
|
-
uploadStatus = _this2$state.uploadStatus;
|
|
163
|
-
|
|
164
|
-
if (uploadStatus === UploadStatus.Uploading) {
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
if (filename && name && previewImage) {
|
|
169
|
-
var notifyUpload = function notifyUpload(size) {
|
|
170
|
-
var width = size.width,
|
|
171
|
-
height = size.height;
|
|
172
|
-
|
|
173
|
-
_this2.setState({
|
|
174
|
-
uploadStatus: UploadStatus.Uploading
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
onUploadEmoji({
|
|
178
|
-
name: toEmojiName(name),
|
|
179
|
-
shortName: ":".concat(name, ":"),
|
|
180
|
-
filename: filename,
|
|
181
|
-
dataURL: previewImage,
|
|
182
|
-
width: width,
|
|
183
|
-
height: height
|
|
184
|
-
}, uploadStatus === UploadStatus.Error);
|
|
185
|
-
};
|
|
186
|
-
|
|
187
|
-
ImageUtil.getNaturalImageSize(previewImage).then(function (size) {
|
|
188
|
-
notifyUpload(size);
|
|
189
|
-
}).catch(function (error) {
|
|
190
|
-
debug('getNaturalImageSize error', error); // Just set arbitrary size, worse case is it may render
|
|
191
|
-
// in wrong aspect ratio in some circumstances.
|
|
192
|
-
|
|
193
|
-
notifyUpload({
|
|
194
|
-
width: 32,
|
|
195
|
-
height: 32
|
|
196
|
-
});
|
|
197
|
-
});
|
|
198
|
-
}
|
|
199
|
-
});
|
|
200
|
-
|
|
201
|
-
_defineProperty(_assertThisInitialized(_this2), "errorOnUpload", function (event) {
|
|
202
|
-
debug('File load error: ', event);
|
|
203
|
-
|
|
204
|
-
_this2.setState({
|
|
205
|
-
chooseEmojiErrorMessage: messages.emojiUploadFailed
|
|
206
|
-
});
|
|
137
|
+
}, [errorMessage, uploadStatus]);
|
|
138
|
+
useEffect(function () {
|
|
139
|
+
if (initialUploadName) {
|
|
140
|
+
setName(sanitizeName(initialUploadName));
|
|
141
|
+
}
|
|
142
|
+
}, [initialUploadName]);
|
|
207
143
|
|
|
208
|
-
|
|
209
|
-
|
|
144
|
+
var onNameChange = function onNameChange(event) {
|
|
145
|
+
var newName = sanitizeName(event.target.value);
|
|
210
146
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
previewImage: f.target.result,
|
|
216
|
-
filename: file.name
|
|
217
|
-
};
|
|
147
|
+
if (name !== newName) {
|
|
148
|
+
setName(newName);
|
|
149
|
+
}
|
|
150
|
+
};
|
|
218
151
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
});
|
|
152
|
+
var onAddEmoji = function onAddEmoji() {
|
|
153
|
+
if (uploadStatus === UploadStatus.Uploading) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
224
156
|
|
|
225
|
-
|
|
226
|
-
|
|
157
|
+
if (filename && name && previewImage) {
|
|
158
|
+
var notifyUpload = function notifyUpload(size) {
|
|
159
|
+
var width = size.width,
|
|
160
|
+
height = size.height;
|
|
161
|
+
setUploadStatus(UploadStatus.Uploading);
|
|
162
|
+
onUploadEmoji({
|
|
163
|
+
name: toEmojiName(name),
|
|
164
|
+
shortName: ":".concat(name, ":"),
|
|
165
|
+
filename: filename,
|
|
166
|
+
dataURL: previewImage,
|
|
167
|
+
width: width,
|
|
168
|
+
height: height
|
|
169
|
+
}, uploadStatus === UploadStatus.Error, clearUploadPicker);
|
|
227
170
|
};
|
|
228
|
-
});
|
|
229
|
-
|
|
230
|
-
_defineProperty(_assertThisInitialized(_this2), "cancelChooseFile", function () {
|
|
231
|
-
_this2.setState({
|
|
232
|
-
previewImage: undefined
|
|
233
|
-
});
|
|
234
|
-
});
|
|
235
171
|
|
|
236
|
-
|
|
237
|
-
|
|
172
|
+
ImageUtil.getNaturalImageSize(previewImage).then(function (size) {
|
|
173
|
+
notifyUpload(size);
|
|
174
|
+
}).catch(function (error) {
|
|
175
|
+
debug('getNaturalImageSize error', error); // Just set arbitrary size, worse case is it may render
|
|
176
|
+
// in wrong aspect ratio in some circumstances.
|
|
238
177
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
if (ImageUtil.hasFileExceededSize(file)) {
|
|
244
|
-
_this2.setState({
|
|
245
|
-
chooseEmojiErrorMessage: messages.emojiImageTooBig
|
|
246
|
-
});
|
|
247
|
-
|
|
248
|
-
_this2.cancelChooseFile();
|
|
249
|
-
|
|
250
|
-
return;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
reader.addEventListener('load', _this2.onFileLoad(file));
|
|
254
|
-
reader.addEventListener('abort', _this2.errorOnUpload);
|
|
255
|
-
reader.addEventListener('error', _this2.errorOnUpload);
|
|
256
|
-
reader.readAsDataURL(file);
|
|
257
|
-
} else {
|
|
258
|
-
_this2.cancelChooseFile();
|
|
259
|
-
}
|
|
260
|
-
});
|
|
261
|
-
|
|
262
|
-
_defineProperty(_assertThisInitialized(_this2), "clearUploadPicker", function () {
|
|
263
|
-
_this2.setState({
|
|
264
|
-
name: undefined,
|
|
265
|
-
previewImage: undefined,
|
|
266
|
-
uploadStatus: UploadStatus.Waiting
|
|
178
|
+
notifyUpload({
|
|
179
|
+
width: 32,
|
|
180
|
+
height: 32
|
|
181
|
+
});
|
|
267
182
|
});
|
|
268
|
-
});
|
|
269
|
-
|
|
270
|
-
if (props.errorMessage) {
|
|
271
|
-
_this2.state.uploadStatus = UploadStatus.Error;
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
if (props.initialUploadName) {
|
|
275
|
-
_this2.state.name = sanitizeName(props.initialUploadName);
|
|
276
183
|
}
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
var errorOnUpload = function errorOnUpload(event) {
|
|
187
|
+
debug('File load error: ', event);
|
|
188
|
+
setChooseEmojiErrorMessage(messages.emojiUploadFailed);
|
|
189
|
+
cancelChooseFile();
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
var onFileLoad = function onFileLoad(file) {
|
|
193
|
+
return /*#__PURE__*/function () {
|
|
194
|
+
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(f) {
|
|
195
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
196
|
+
while (1) {
|
|
197
|
+
switch (_context.prev = _context.next) {
|
|
198
|
+
case 0:
|
|
199
|
+
_context.prev = 0;
|
|
200
|
+
setFilename(file.name);
|
|
201
|
+
_context.next = 4;
|
|
202
|
+
return ImageUtil.parseImage(f.target.result);
|
|
203
|
+
|
|
204
|
+
case 4:
|
|
205
|
+
setPreviewImage(f.target.result);
|
|
206
|
+
_context.next = 11;
|
|
207
|
+
break;
|
|
208
|
+
|
|
209
|
+
case 7:
|
|
210
|
+
_context.prev = 7;
|
|
211
|
+
_context.t0 = _context["catch"](0);
|
|
212
|
+
setChooseEmojiErrorMessage(messages.emojiInvalidImage);
|
|
213
|
+
cancelChooseFile();
|
|
214
|
+
|
|
215
|
+
case 11:
|
|
216
|
+
case "end":
|
|
217
|
+
return _context.stop();
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}, _callee, null, [[0, 7]]);
|
|
221
|
+
}));
|
|
222
|
+
|
|
223
|
+
return function (_x) {
|
|
224
|
+
return _ref.apply(this, arguments);
|
|
225
|
+
};
|
|
226
|
+
}();
|
|
227
|
+
};
|
|
277
228
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
_createClass(EmojiUploadPicker, [{
|
|
282
|
-
key: "UNSAFE_componentWillReceiveProps",
|
|
283
|
-
value: function UNSAFE_componentWillReceiveProps(nextProps) {
|
|
284
|
-
var updatedState = {};
|
|
285
|
-
|
|
286
|
-
if (nextProps.errorMessage) {
|
|
287
|
-
updatedState.uploadStatus = UploadStatus.Error;
|
|
288
|
-
} else {
|
|
289
|
-
if (this.state.uploadStatus === UploadStatus.Error) {
|
|
290
|
-
updatedState.uploadStatus = UploadStatus.Waiting;
|
|
291
|
-
}
|
|
292
|
-
}
|
|
229
|
+
var cancelChooseFile = function cancelChooseFile() {
|
|
230
|
+
setPreviewImage(undefined);
|
|
231
|
+
};
|
|
293
232
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
updatedState.name = sanitizeName(nextProps.initialUploadName);
|
|
297
|
-
}
|
|
298
|
-
}
|
|
233
|
+
var onChooseFile = function onChooseFile(event) {
|
|
234
|
+
var files = event.target.files;
|
|
299
235
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
key: "render",
|
|
304
|
-
value: function render() {
|
|
305
|
-
var _this3 = this;
|
|
306
|
-
|
|
307
|
-
var _this$props2 = this.props,
|
|
308
|
-
errorMessage = _this$props2.errorMessage,
|
|
309
|
-
onUploadCancelled = _this$props2.onUploadCancelled,
|
|
310
|
-
intl = _this$props2.intl;
|
|
311
|
-
var _this$state = this.state,
|
|
312
|
-
name = _this$state.name,
|
|
313
|
-
previewImage = _this$state.previewImage,
|
|
314
|
-
uploadStatus = _this$state.uploadStatus,
|
|
315
|
-
chooseEmojiErrorMessage = _this$state.chooseEmojiErrorMessage;
|
|
316
|
-
|
|
317
|
-
var cancelUpload = function cancelUpload() {
|
|
318
|
-
_this3.clearUploadPicker();
|
|
319
|
-
|
|
320
|
-
onUploadCancelled();
|
|
321
|
-
};
|
|
236
|
+
if (files.length) {
|
|
237
|
+
var reader = new FileReader();
|
|
238
|
+
var file = files[0];
|
|
322
239
|
|
|
323
|
-
if (
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
onAddEmoji: this.onAddEmoji,
|
|
328
|
-
onUploadCancelled: cancelUpload,
|
|
329
|
-
previewImage: previewImage,
|
|
330
|
-
uploadStatus: uploadStatus
|
|
331
|
-
});
|
|
240
|
+
if (ImageUtil.hasFileExceededSize(file)) {
|
|
241
|
+
setChooseEmojiErrorMessage(messages.emojiImageTooBig);
|
|
242
|
+
cancelChooseFile();
|
|
243
|
+
return;
|
|
332
244
|
}
|
|
333
245
|
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
errorMessage: chooseEmojiErrorMessage ? jsx(FormattedMessage, chooseEmojiErrorMessage) : undefined,
|
|
341
|
-
intl: intl
|
|
342
|
-
});
|
|
246
|
+
reader.addEventListener('load', onFileLoad(file));
|
|
247
|
+
reader.addEventListener('abort', errorOnUpload);
|
|
248
|
+
reader.addEventListener('error', errorOnUpload);
|
|
249
|
+
reader.readAsDataURL(file);
|
|
250
|
+
} else {
|
|
251
|
+
cancelChooseFile();
|
|
343
252
|
}
|
|
344
|
-
}
|
|
253
|
+
};
|
|
254
|
+
|
|
255
|
+
var clearUploadPicker = function clearUploadPicker() {
|
|
256
|
+
setName(undefined);
|
|
257
|
+
setPreviewImage(undefined);
|
|
258
|
+
setUploadStatus(UploadStatus.Waiting);
|
|
259
|
+
};
|
|
260
|
+
|
|
261
|
+
var cancelUpload = function cancelUpload() {
|
|
262
|
+
clearUploadPicker();
|
|
263
|
+
onUploadCancelled();
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
return jsx(React.Fragment, null, name && previewImage ? jsx(EmojiUploadPreview, {
|
|
267
|
+
errorMessage: errorMessage,
|
|
268
|
+
name: name,
|
|
269
|
+
onAddEmoji: onAddEmoji,
|
|
270
|
+
onUploadCancelled: cancelUpload,
|
|
271
|
+
previewImage: previewImage,
|
|
272
|
+
uploadStatus: uploadStatus
|
|
273
|
+
}) : jsx(ChooseEmojiFile, {
|
|
274
|
+
name: name,
|
|
275
|
+
onChooseFile: onChooseFile,
|
|
276
|
+
onClick: onFileChooserClicked,
|
|
277
|
+
onNameChange: onNameChange,
|
|
278
|
+
onUploadCancelled: cancelUpload,
|
|
279
|
+
errorMessage: chooseEmojiErrorMessage ? jsx(FormattedMessage, chooseEmojiErrorMessage) : undefined,
|
|
280
|
+
intl: intl
|
|
281
|
+
}));
|
|
282
|
+
};
|
|
345
283
|
|
|
346
|
-
|
|
347
|
-
}(PureComponent);
|
|
348
|
-
export default injectIntl(EmojiUploadPicker, {
|
|
349
|
-
forwardRef: true
|
|
350
|
-
});
|
|
284
|
+
export default injectIntl(EmojiUploadPicker);
|