@atlaskit/emoji 64.0.1 → 64.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 +30 -0
- package/README.md +3 -0
- package/dist/cjs/components/common/CachingEmoji.js +8 -6
- package/dist/cjs/components/common/DeleteButton.js +1 -1
- package/dist/cjs/components/common/Emoji.js +35 -14
- package/dist/cjs/components/common/EmojiActions.js +233 -0
- package/dist/cjs/components/common/EmojiPlaceholder.js +3 -10
- package/dist/cjs/components/common/EmojiPreview.js +2 -2
- package/dist/cjs/components/common/ResourcedEmojiComponent.js +12 -17
- package/dist/cjs/components/common/styles.js +22 -25
- package/dist/cjs/components/picker/EmojiPickerComponent.js +19 -43
- package/dist/cjs/components/picker/EmojiPickerEmojiRow.js +2 -1
- package/dist/cjs/components/picker/EmojiPickerFooter.js +7 -49
- package/dist/cjs/components/picker/EmojiPickerList.js +36 -30
- package/dist/cjs/components/picker/EmojiPickerPreview.js +87 -0
- package/dist/cjs/components/picker/styles.js +21 -16
- package/dist/cjs/components/typeahead/EmojiTypeAheadComponent.js +11 -16
- package/dist/cjs/components/typeahead/EmojiTypeAheadItem.js +3 -3
- package/dist/cjs/components/typeahead/styles.js +2 -2
- package/dist/cjs/components/uploader/styles.js +1 -1
- package/dist/cjs/context/EmojiContext.js +11 -0
- package/dist/cjs/context/EmojiContextProvider.js +22 -0
- package/dist/cjs/i18n/cs.js +2 -2
- package/dist/cjs/i18n/da.js +2 -2
- package/dist/cjs/i18n/de.js +2 -2
- package/dist/cjs/i18n/en_ZZ.js +51 -0
- package/dist/cjs/i18n/es.js +2 -2
- package/dist/cjs/i18n/et.js +2 -2
- package/dist/cjs/i18n/fi.js +2 -2
- package/dist/cjs/i18n/fr.js +2 -2
- package/dist/cjs/i18n/hu.js +2 -2
- package/dist/cjs/i18n/it.js +2 -2
- package/dist/cjs/i18n/ja.js +2 -2
- package/dist/cjs/i18n/ko.js +2 -2
- package/dist/cjs/i18n/nb.js +2 -2
- package/dist/cjs/i18n/nl.js +2 -2
- package/dist/cjs/i18n/pl.js +2 -2
- package/dist/cjs/i18n/pt_BR.js +2 -2
- package/dist/cjs/i18n/pt_PT.js +2 -2
- package/dist/cjs/i18n/ru.js +2 -2
- package/dist/cjs/i18n/sk.js +2 -2
- package/dist/cjs/i18n/sv.js +2 -2
- package/dist/cjs/i18n/th.js +2 -2
- package/dist/cjs/i18n/tr.js +2 -2
- package/dist/cjs/i18n/uk.js +2 -2
- package/dist/cjs/i18n/vi.js +2 -2
- package/dist/cjs/i18n/zh.js +2 -2
- package/dist/cjs/i18n/zh_TW.js +2 -2
- package/dist/cjs/util/shared-styles.js +6 -6
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/components/common/CachingEmoji.js +7 -5
- package/dist/es2019/components/common/DeleteButton.js +1 -1
- package/dist/es2019/components/common/Emoji.js +33 -13
- package/dist/es2019/components/common/EmojiActions.js +178 -0
- package/dist/es2019/components/common/EmojiPlaceholder.js +3 -7
- package/dist/es2019/components/common/EmojiPreview.js +1 -2
- package/dist/es2019/components/common/ResourcedEmojiComponent.js +11 -16
- package/dist/es2019/components/common/styles.js +19 -24
- package/dist/es2019/components/picker/EmojiPickerComponent.js +18 -44
- package/dist/es2019/components/picker/EmojiPickerEmojiRow.js +2 -1
- package/dist/es2019/components/picker/EmojiPickerFooter.js +6 -46
- package/dist/es2019/components/picker/EmojiPickerList.js +36 -29
- package/dist/es2019/components/picker/EmojiPickerPreview.js +43 -0
- package/dist/es2019/components/picker/styles.js +18 -14
- package/dist/es2019/components/typeahead/EmojiTypeAheadComponent.js +10 -15
- package/dist/es2019/components/typeahead/EmojiTypeAheadItem.js +2 -2
- package/dist/es2019/components/typeahead/styles.js +2 -2
- package/dist/es2019/components/uploader/styles.js +1 -1
- package/dist/es2019/context/EmojiContext.js +2 -0
- package/dist/es2019/context/EmojiContextProvider.js +10 -0
- package/dist/es2019/i18n/cs.js +2 -2
- package/dist/es2019/i18n/da.js +2 -2
- package/dist/es2019/i18n/de.js +2 -2
- package/dist/es2019/i18n/en_ZZ.js +43 -0
- package/dist/es2019/i18n/es.js +2 -2
- package/dist/es2019/i18n/et.js +2 -2
- package/dist/es2019/i18n/fi.js +2 -2
- package/dist/es2019/i18n/fr.js +2 -2
- package/dist/es2019/i18n/hu.js +2 -2
- package/dist/es2019/i18n/it.js +2 -2
- package/dist/es2019/i18n/ja.js +2 -2
- package/dist/es2019/i18n/ko.js +2 -2
- package/dist/es2019/i18n/nb.js +2 -2
- package/dist/es2019/i18n/nl.js +2 -2
- package/dist/es2019/i18n/pl.js +2 -2
- package/dist/es2019/i18n/pt_BR.js +2 -2
- package/dist/es2019/i18n/pt_PT.js +2 -2
- package/dist/es2019/i18n/ru.js +2 -2
- package/dist/es2019/i18n/sk.js +2 -2
- package/dist/es2019/i18n/sv.js +2 -2
- package/dist/es2019/i18n/th.js +2 -2
- package/dist/es2019/i18n/tr.js +2 -2
- package/dist/es2019/i18n/uk.js +2 -2
- package/dist/es2019/i18n/vi.js +2 -2
- package/dist/es2019/i18n/zh.js +2 -2
- package/dist/es2019/i18n/zh_TW.js +2 -2
- package/dist/es2019/util/shared-styles.js +6 -6
- package/dist/es2019/version.json +1 -1
- package/dist/esm/components/common/CachingEmoji.js +7 -5
- package/dist/esm/components/common/DeleteButton.js +1 -1
- package/dist/esm/components/common/Emoji.js +35 -13
- package/dist/esm/components/common/EmojiActions.js +200 -0
- package/dist/esm/components/common/EmojiPlaceholder.js +3 -7
- package/dist/esm/components/common/EmojiPreview.js +2 -2
- package/dist/esm/components/common/ResourcedEmojiComponent.js +10 -16
- package/dist/esm/components/common/styles.js +19 -22
- package/dist/esm/components/picker/EmojiPickerComponent.js +18 -45
- package/dist/esm/components/picker/EmojiPickerEmojiRow.js +2 -1
- package/dist/esm/components/picker/EmojiPickerFooter.js +6 -46
- package/dist/esm/components/picker/EmojiPickerList.js +36 -31
- package/dist/esm/components/picker/EmojiPickerPreview.js +67 -0
- package/dist/esm/components/picker/styles.js +18 -14
- package/dist/esm/components/typeahead/EmojiTypeAheadComponent.js +10 -16
- package/dist/esm/components/typeahead/EmojiTypeAheadItem.js +2 -2
- package/dist/esm/components/typeahead/styles.js +2 -2
- package/dist/esm/components/uploader/styles.js +1 -1
- package/dist/esm/context/EmojiContext.js +2 -0
- package/dist/esm/context/EmojiContextProvider.js +9 -0
- package/dist/esm/i18n/cs.js +2 -2
- package/dist/esm/i18n/da.js +2 -2
- package/dist/esm/i18n/de.js +2 -2
- package/dist/esm/i18n/en_ZZ.js +43 -0
- package/dist/esm/i18n/es.js +2 -2
- package/dist/esm/i18n/et.js +2 -2
- package/dist/esm/i18n/fi.js +2 -2
- package/dist/esm/i18n/fr.js +2 -2
- package/dist/esm/i18n/hu.js +2 -2
- package/dist/esm/i18n/it.js +2 -2
- package/dist/esm/i18n/ja.js +2 -2
- package/dist/esm/i18n/ko.js +2 -2
- package/dist/esm/i18n/nb.js +2 -2
- package/dist/esm/i18n/nl.js +2 -2
- package/dist/esm/i18n/pl.js +2 -2
- package/dist/esm/i18n/pt_BR.js +2 -2
- package/dist/esm/i18n/pt_PT.js +2 -2
- package/dist/esm/i18n/ru.js +2 -2
- package/dist/esm/i18n/sk.js +2 -2
- package/dist/esm/i18n/sv.js +2 -2
- package/dist/esm/i18n/th.js +2 -2
- package/dist/esm/i18n/tr.js +2 -2
- package/dist/esm/i18n/uk.js +2 -2
- package/dist/esm/i18n/vi.js +2 -2
- package/dist/esm/i18n/zh.js +2 -2
- package/dist/esm/i18n/zh_TW.js +2 -2
- package/dist/esm/util/shared-styles.js +6 -6
- package/dist/esm/version.json +1 -1
- package/dist/types/components/common/CachingEmoji.d.ts +6 -8
- package/dist/types/components/common/Emoji.d.ts +1 -0
- package/dist/types/components/common/EmojiActions.d.ts +43 -0
- package/dist/types/components/common/ResourcedEmojiComponent.d.ts +0 -6
- package/dist/types/components/common/styles.d.ts +1 -1
- package/dist/types/components/picker/EmojiPickerComponent.d.ts +0 -9
- package/dist/types/components/picker/EmojiPickerFooter.d.ts +3 -19
- package/dist/types/components/picker/EmojiPickerList.d.ts +17 -13
- package/dist/types/components/picker/EmojiPickerPreview.d.ts +9 -0
- package/dist/types/components/picker/styles.d.ts +1 -0
- package/dist/types/components/typeahead/EmojiTypeAheadComponent.d.ts +0 -6
- package/dist/types/context/EmojiContext.d.ts +4 -0
- package/dist/types/context/EmojiContextProvider.d.ts +7 -0
- package/dist/types/i18n/cs.d.ts +1 -1
- package/dist/types/i18n/da.d.ts +1 -1
- package/dist/types/i18n/de.d.ts +1 -1
- package/dist/types/i18n/en_ZZ.d.ts +43 -0
- package/dist/types/i18n/es.d.ts +1 -1
- package/dist/types/i18n/et.d.ts +1 -1
- package/dist/types/i18n/fi.d.ts +1 -1
- package/dist/types/i18n/fr.d.ts +1 -1
- package/dist/types/i18n/hu.d.ts +1 -1
- package/dist/types/i18n/it.d.ts +1 -1
- package/dist/types/i18n/ja.d.ts +1 -1
- package/dist/types/i18n/ko.d.ts +1 -1
- package/dist/types/i18n/nb.d.ts +1 -1
- package/dist/types/i18n/nl.d.ts +1 -1
- package/dist/types/i18n/pl.d.ts +1 -1
- package/dist/types/i18n/pt_BR.d.ts +1 -1
- package/dist/types/i18n/pt_PT.d.ts +1 -1
- package/dist/types/i18n/ru.d.ts +1 -1
- package/dist/types/i18n/sk.d.ts +1 -1
- package/dist/types/i18n/sv.d.ts +1 -1
- package/dist/types/i18n/th.d.ts +1 -1
- package/dist/types/i18n/tr.d.ts +1 -1
- package/dist/types/i18n/uk.d.ts +1 -1
- package/dist/types/i18n/vi.d.ts +1 -1
- package/dist/types/i18n/zh.d.ts +1 -1
- package/dist/types/i18n/zh_TW.d.ts +1 -1
- package/dist/types/util/shared-styles.d.ts +6 -6
- package/local-config-example.ts +3 -3
- package/package.json +12 -10
package/dist/cjs/i18n/zh.js
CHANGED
|
@@ -8,10 +8,10 @@ exports.default = void 0;
|
|
|
8
8
|
/**
|
|
9
9
|
* NOTE:
|
|
10
10
|
*
|
|
11
|
-
* This file is automatically generated by
|
|
11
|
+
* This file is automatically generated by Traduki 2.0.
|
|
12
12
|
* DO NOT CHANGE IT BY HAND or your changes will be lost.
|
|
13
13
|
*/
|
|
14
|
-
//
|
|
14
|
+
//Chinese (Simplified)
|
|
15
15
|
var _default = {
|
|
16
16
|
'fabric.emoji.add.custom.emoji.label': '添加您自己的表情符号',
|
|
17
17
|
'fabric.emoji.add.label': '添加表情符号',
|
package/dist/cjs/i18n/zh_TW.js
CHANGED
|
@@ -8,10 +8,10 @@ exports.default = void 0;
|
|
|
8
8
|
/**
|
|
9
9
|
* NOTE:
|
|
10
10
|
*
|
|
11
|
-
* This file is automatically generated by
|
|
11
|
+
* This file is automatically generated by Traduki 2.0.
|
|
12
12
|
* DO NOT CHANGE IT BY HAND or your changes will be lost.
|
|
13
13
|
*/
|
|
14
|
-
//
|
|
14
|
+
//Chinese (Traditional)
|
|
15
15
|
var _default = {
|
|
16
16
|
'fabric.emoji.add.custom.emoji.label': '新增專屬的表情符號',
|
|
17
17
|
'fabric.emoji.add.label': '新增表情符號',
|
|
@@ -17,19 +17,19 @@ var emojiPickerListWidth = _constants2.emojiPickerWidth;
|
|
|
17
17
|
exports.emojiPickerListWidth = emojiPickerListWidth;
|
|
18
18
|
var emojiPickerListHeight = 205;
|
|
19
19
|
exports.emojiPickerListHeight = emojiPickerListHeight;
|
|
20
|
-
var emojiPickerBorderColor = (0, _tokens.token)('color.border
|
|
20
|
+
var emojiPickerBorderColor = (0, _tokens.token)('color.border', _colors.N40);
|
|
21
21
|
exports.emojiPickerBorderColor = emojiPickerBorderColor;
|
|
22
|
-
var emojiPickerBoxShadow = (0, _tokens.token)('shadow.overlay', '0 3px 6px rgba(0, 0, 0, 0.2)');
|
|
22
|
+
var emojiPickerBoxShadow = (0, _tokens.token)('elevation.shadow.overlay', '0 3px 6px rgba(0, 0, 0, 0.2)');
|
|
23
23
|
exports.emojiPickerBoxShadow = emojiPickerBoxShadow;
|
|
24
|
-
var noDialogContainerBorderColor = (0, _tokens.token)('color.border
|
|
24
|
+
var noDialogContainerBorderColor = (0, _tokens.token)('color.border', _colors.N40);
|
|
25
25
|
exports.noDialogContainerBorderColor = noDialogContainerBorderColor;
|
|
26
26
|
var noDialogContainerBorderRadius = "".concat((0, _constants.borderRadius)(), "px");
|
|
27
27
|
exports.noDialogContainerBorderRadius = noDialogContainerBorderRadius;
|
|
28
|
-
var noDialogContainerBoxShadow = (0, _tokens.token)('shadow.overlay', '0 3px 6px rgba(0, 0, 0, 0.2)');
|
|
28
|
+
var noDialogContainerBoxShadow = (0, _tokens.token)('elevation.shadow.overlay', '0 3px 6px rgba(0, 0, 0, 0.2)');
|
|
29
29
|
exports.noDialogContainerBoxShadow = noDialogContainerBoxShadow;
|
|
30
|
-
var akEmojiSelectedBackgroundColor = (0, _tokens.token)('color.background.
|
|
30
|
+
var akEmojiSelectedBackgroundColor = (0, _tokens.token)('color.background.neutral.subtle.hovered', _colors.N30);
|
|
31
31
|
exports.akEmojiSelectedBackgroundColor = akEmojiSelectedBackgroundColor;
|
|
32
|
-
var emojiPreviewSelectedColor = (0, _tokens.token)('color.background.
|
|
32
|
+
var emojiPreviewSelectedColor = (0, _tokens.token)('color.background.neutral', _colors.N30);
|
|
33
33
|
exports.emojiPreviewSelectedColor = emojiPreviewSelectedColor;
|
|
34
34
|
var emojiTypeAheadMaxHeight = 350;
|
|
35
35
|
exports.emojiTypeAheadMaxHeight = emojiTypeAheadMaxHeight;
|
package/dist/cjs/version.json
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
-
import PropTypes from 'prop-types';
|
|
4
3
|
import React from 'react';
|
|
5
4
|
import { PureComponent } from 'react';
|
|
6
5
|
import { shouldUseAltRepresentation } from '../../api/EmojiUtils';
|
|
@@ -8,6 +7,7 @@ import { isEmojiDescription, isMediaEmoji, isPromise } from '../../util/type-hel
|
|
|
8
7
|
import debug from '../../util/logger';
|
|
9
8
|
import Emoji from './Emoji';
|
|
10
9
|
import EmojiPlaceholder from './EmojiPlaceholder';
|
|
10
|
+
import { EmojiContext } from '../../context/EmojiContext';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
13
|
* Renders an emoji from a cached image, if required.
|
|
@@ -33,7 +33,7 @@ export const CachingEmoji = props => {
|
|
|
33
33
|
|
|
34
34
|
export class CachingMediaEmoji extends PureComponent {
|
|
35
35
|
constructor(props, context) {
|
|
36
|
-
super(props
|
|
36
|
+
super(props);
|
|
37
37
|
|
|
38
38
|
_defineProperty(this, "mounted", false);
|
|
39
39
|
|
|
@@ -76,6 +76,10 @@ export class CachingMediaEmoji extends PureComponent {
|
|
|
76
76
|
}
|
|
77
77
|
|
|
78
78
|
loadEmoji(emoji, context, forceLoad) {
|
|
79
|
+
if (!context) {
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
|
|
79
83
|
if (!context.emoji) {
|
|
80
84
|
return undefined;
|
|
81
85
|
}
|
|
@@ -168,8 +172,6 @@ export class CachingMediaEmoji extends PureComponent {
|
|
|
168
172
|
|
|
169
173
|
}
|
|
170
174
|
|
|
171
|
-
_defineProperty(CachingMediaEmoji, "
|
|
172
|
-
emoji: PropTypes.object
|
|
173
|
-
});
|
|
175
|
+
_defineProperty(CachingMediaEmoji, "contextType", EmojiContext);
|
|
174
176
|
|
|
175
177
|
export default CachingEmoji;
|
|
@@ -11,7 +11,7 @@ const DeleteButton = props => /*#__PURE__*/React.createElement("span", {
|
|
|
11
11
|
}, /*#__PURE__*/React.createElement(Button, {
|
|
12
12
|
iconBefore: /*#__PURE__*/React.createElement(CrossCircleIcon, {
|
|
13
13
|
label: deleteEmojiLabel,
|
|
14
|
-
primaryColor: token('color.text.
|
|
14
|
+
primaryColor: token('color.text.subtle', N500),
|
|
15
15
|
size: "small"
|
|
16
16
|
}),
|
|
17
17
|
onClick: props.onClick,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
-
import Tooltip from '@atlaskit/tooltip';
|
|
3
2
|
import classNames from 'classnames';
|
|
4
3
|
import React from 'react';
|
|
5
4
|
import { shouldUseAltRepresentation } from '../../api/EmojiUtils';
|
|
@@ -26,6 +25,23 @@ const handleMouseDown = (props, event) => {
|
|
|
26
25
|
}
|
|
27
26
|
};
|
|
28
27
|
|
|
28
|
+
const handleKeyPress = (props, event) => {
|
|
29
|
+
// Clicked emoji delete button
|
|
30
|
+
if (event.target instanceof Element && event.target.getAttribute('aria-label') === deleteEmojiLabel) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const {
|
|
35
|
+
emoji,
|
|
36
|
+
onSelected
|
|
37
|
+
} = props;
|
|
38
|
+
event.preventDefault();
|
|
39
|
+
|
|
40
|
+
if (onSelected && (event.key === 'Enter' || event.key === ' ')) {
|
|
41
|
+
onSelected(toEmojiId(emoji), emoji, event);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
|
|
29
45
|
const handleMouseMove = (props, event) => {
|
|
30
46
|
const {
|
|
31
47
|
emoji,
|
|
@@ -73,7 +89,8 @@ const renderAsSprite = props => {
|
|
|
73
89
|
selected,
|
|
74
90
|
selectOnHover,
|
|
75
91
|
className,
|
|
76
|
-
showTooltip
|
|
92
|
+
showTooltip,
|
|
93
|
+
shouldBeInteractive
|
|
77
94
|
} = props;
|
|
78
95
|
const representation = emoji.representation;
|
|
79
96
|
const sprite = representation.sprite;
|
|
@@ -110,18 +127,19 @@ const renderAsSprite = props => {
|
|
|
110
127
|
style: style
|
|
111
128
|
}, "\xA0");
|
|
112
129
|
return /*#__PURE__*/React.createElement("span", {
|
|
130
|
+
tabIndex: shouldBeInteractive ? 0 : undefined,
|
|
131
|
+
role: shouldBeInteractive ? 'button' : undefined,
|
|
113
132
|
className: classNames(classes),
|
|
133
|
+
onKeyPress: event => handleKeyPress(props, event),
|
|
114
134
|
onMouseDown: event => {
|
|
115
135
|
handleMouseDown(props, event);
|
|
116
136
|
},
|
|
117
137
|
onMouseMove: event => {
|
|
118
138
|
handleMouseMove(props, event);
|
|
119
139
|
},
|
|
120
|
-
"aria-label": emoji.shortName
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
content: emoji.shortName
|
|
124
|
-
}, emojiNode) : emojiNode);
|
|
140
|
+
"aria-label": emoji.shortName,
|
|
141
|
+
title: showTooltip ? emoji.shortName : ''
|
|
142
|
+
}, emojiNode);
|
|
125
143
|
}; // Keep as pure functional component, see renderAsSprite.
|
|
126
144
|
|
|
127
145
|
|
|
@@ -133,7 +151,8 @@ const renderAsImage = props => {
|
|
|
133
151
|
selectOnHover,
|
|
134
152
|
className,
|
|
135
153
|
showTooltip,
|
|
136
|
-
showDelete
|
|
154
|
+
showDelete,
|
|
155
|
+
shouldBeInteractive
|
|
137
156
|
} = props;
|
|
138
157
|
const classes = {
|
|
139
158
|
[styles.emoji]: true,
|
|
@@ -205,18 +224,19 @@ const renderAsImage = props => {
|
|
|
205
224
|
onError: onError
|
|
206
225
|
}, sizing));
|
|
207
226
|
return /*#__PURE__*/React.createElement("span", {
|
|
227
|
+
tabIndex: shouldBeInteractive ? 0 : undefined,
|
|
228
|
+
role: shouldBeInteractive ? 'button' : undefined,
|
|
208
229
|
className: classNames(classes),
|
|
230
|
+
onKeyPress: event => handleKeyPress(props, event),
|
|
209
231
|
onMouseDown: event => {
|
|
210
232
|
handleMouseDown(props, event);
|
|
211
233
|
},
|
|
212
234
|
onMouseMove: event => {
|
|
213
235
|
handleMouseMove(props, event);
|
|
214
236
|
},
|
|
215
|
-
"aria-label": emoji.shortName
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
content: emoji.shortName
|
|
219
|
-
}, emojiNode) : emojiNode);
|
|
237
|
+
"aria-label": emoji.shortName,
|
|
238
|
+
title: showTooltip ? emoji.shortName : ''
|
|
239
|
+
}, deleteButton, emojiNode);
|
|
220
240
|
};
|
|
221
241
|
|
|
222
242
|
export const Emoji = props => {
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { PureComponent } from 'react';
|
|
5
|
+
import { FormattedMessage, injectIntl } from 'react-intl-next';
|
|
6
|
+
import EmojiDeletePreview from '../common/EmojiDeletePreview';
|
|
7
|
+
import EmojiUploadPicker from '../common/EmojiUploadPicker';
|
|
8
|
+
import * as styles from './styles';
|
|
9
|
+
import * as footerStyles from '../picker/styles';
|
|
10
|
+
import EmojiPickerListSearch from '../picker/EmojiPickerListSearch';
|
|
11
|
+
import ToneSelector from './ToneSelector';
|
|
12
|
+
import EmojiButton from './EmojiButton';
|
|
13
|
+
import { messages } from '../i18n';
|
|
14
|
+
import AkButton from '@atlaskit/button/standard-button';
|
|
15
|
+
import AddIcon from '@atlaskit/icon/glyph/add';
|
|
16
|
+
import { setSkinToneAriaLabelText } from './setSkinToneAriaLabelText';
|
|
17
|
+
export class EmojiActions extends PureComponent {
|
|
18
|
+
constructor(...args) {
|
|
19
|
+
super(...args);
|
|
20
|
+
|
|
21
|
+
_defineProperty(this, "state", {
|
|
22
|
+
selectingTone: false
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
_defineProperty(this, "onToneButtonClick", () => {
|
|
26
|
+
this.setState({
|
|
27
|
+
selectingTone: !this.state.selectingTone
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
_defineProperty(this, "onToneSelected", toneValue => {
|
|
32
|
+
this.setState({
|
|
33
|
+
selectingTone: false
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
if (this.props.onToneSelected) {
|
|
37
|
+
this.props.onToneSelected(toneValue);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
_defineProperty(this, "onMouseLeave", () => {
|
|
42
|
+
const {
|
|
43
|
+
selectingTone
|
|
44
|
+
} = this.state;
|
|
45
|
+
const {
|
|
46
|
+
onToneSelectorCancelled
|
|
47
|
+
} = this.props;
|
|
48
|
+
|
|
49
|
+
if (selectingTone && onToneSelectorCancelled) {
|
|
50
|
+
onToneSelectorCancelled();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
this.setState({
|
|
54
|
+
selectingTone: false
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
renderTones() {
|
|
60
|
+
const {
|
|
61
|
+
toneEmoji,
|
|
62
|
+
selectedTone,
|
|
63
|
+
intl
|
|
64
|
+
} = this.props;
|
|
65
|
+
const {
|
|
66
|
+
formatMessage
|
|
67
|
+
} = intl;
|
|
68
|
+
|
|
69
|
+
if (!toneEmoji) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
let previewEmoji = toneEmoji;
|
|
74
|
+
|
|
75
|
+
if (selectedTone && previewEmoji.skinVariations) {
|
|
76
|
+
previewEmoji = previewEmoji.skinVariations[(selectedTone || 1) - 1];
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
80
|
+
className: styles.emojiToneSelectorContainer
|
|
81
|
+
}, this.state.selectingTone && /*#__PURE__*/React.createElement(ToneSelector, {
|
|
82
|
+
emoji: toneEmoji,
|
|
83
|
+
onToneSelected: this.onToneSelected,
|
|
84
|
+
previewEmojiId: previewEmoji.id
|
|
85
|
+
}), /*#__PURE__*/React.createElement(EmojiButton, {
|
|
86
|
+
ariaExpanded: this.state.selectingTone,
|
|
87
|
+
emoji: previewEmoji,
|
|
88
|
+
selectOnHover: true,
|
|
89
|
+
onSelected: this.onToneButtonClick,
|
|
90
|
+
ariaLabelText: formatMessage(messages.emojiSelectSkinToneButtonAriaLabelText, {
|
|
91
|
+
selectedTone: `${setSkinToneAriaLabelText(previewEmoji.name)} selected`
|
|
92
|
+
})
|
|
93
|
+
}));
|
|
94
|
+
} // note: emoji-picker-add-emoji className is used by pollinator synthetic checks
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
renderAddOwnEmoji() {
|
|
98
|
+
const {
|
|
99
|
+
onOpenUpload,
|
|
100
|
+
uploadEnabled,
|
|
101
|
+
intl
|
|
102
|
+
} = this.props;
|
|
103
|
+
const {
|
|
104
|
+
formatMessage
|
|
105
|
+
} = intl;
|
|
106
|
+
|
|
107
|
+
if (!uploadEnabled) {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
112
|
+
className: styles.AddCustomEmoji
|
|
113
|
+
}, /*#__PURE__*/React.createElement(FormattedMessage, messages.addCustomEmojiLabel, label => /*#__PURE__*/React.createElement(AkButton, {
|
|
114
|
+
onClick: onOpenUpload,
|
|
115
|
+
iconBefore: /*#__PURE__*/React.createElement(AddIcon, {
|
|
116
|
+
label: formatMessage(messages.addCustomEmojiLabel),
|
|
117
|
+
size: "small"
|
|
118
|
+
}),
|
|
119
|
+
appearance: "subtle",
|
|
120
|
+
className: styles.addCustomEmojiButton + ' emoji-picker-add-emoji'
|
|
121
|
+
}, label)));
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
render() {
|
|
125
|
+
const {
|
|
126
|
+
initialUploadName,
|
|
127
|
+
onUploadCancelled,
|
|
128
|
+
onUploadEmoji,
|
|
129
|
+
onCloseDelete,
|
|
130
|
+
onDeleteEmoji,
|
|
131
|
+
uploadErrorMessage,
|
|
132
|
+
uploading,
|
|
133
|
+
onFileChooserClicked,
|
|
134
|
+
emojiToDelete,
|
|
135
|
+
onChange,
|
|
136
|
+
query
|
|
137
|
+
} = this.props;
|
|
138
|
+
const previewFooterClassnames = classNames([footerStyles.emojiPickerFooter, footerStyles.emojiActionsContainerWithBottomShadow]);
|
|
139
|
+
|
|
140
|
+
if (uploading) {
|
|
141
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
142
|
+
className: previewFooterClassnames
|
|
143
|
+
}, /*#__PURE__*/React.createElement(EmojiUploadPicker, {
|
|
144
|
+
onUploadCancelled: onUploadCancelled,
|
|
145
|
+
onUploadEmoji: onUploadEmoji,
|
|
146
|
+
onFileChooserClicked: onFileChooserClicked,
|
|
147
|
+
errorMessage: uploadErrorMessage,
|
|
148
|
+
initialUploadName: initialUploadName
|
|
149
|
+
}));
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (emojiToDelete) {
|
|
153
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
154
|
+
className: previewFooterClassnames
|
|
155
|
+
}, /*#__PURE__*/React.createElement(EmojiDeletePreview, {
|
|
156
|
+
emoji: emojiToDelete,
|
|
157
|
+
onDeleteEmoji: onDeleteEmoji,
|
|
158
|
+
onCloseDelete: onCloseDelete
|
|
159
|
+
}));
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
163
|
+
className: previewFooterClassnames,
|
|
164
|
+
onMouseLeave: this.onMouseLeave
|
|
165
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
166
|
+
style: {
|
|
167
|
+
display: 'flex',
|
|
168
|
+
justifyContent: 'flex-end',
|
|
169
|
+
alignItems: 'center'
|
|
170
|
+
}
|
|
171
|
+
}, !this.state.selectingTone && /*#__PURE__*/React.createElement(EmojiPickerListSearch, {
|
|
172
|
+
onChange: onChange,
|
|
173
|
+
query: query
|
|
174
|
+
}), this.renderTones()), this.renderAddOwnEmoji());
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
}
|
|
178
|
+
export default injectIntl(EmojiActions);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import classNames from 'classnames';
|
|
3
|
-
import Tooltip from '@atlaskit/tooltip';
|
|
4
3
|
import { placeholder, placeholderContainer } from './styles';
|
|
5
4
|
import { defaultEmojiHeight } from '../../util/constants';
|
|
6
5
|
import { isImageRepresentation, isMediaRepresentation } from '../../util/type-helpers';
|
|
@@ -36,15 +35,12 @@ const EmojiPlaceholder = props => {
|
|
|
36
35
|
[placeholder]: true,
|
|
37
36
|
[placeholderContainer]: true
|
|
38
37
|
};
|
|
39
|
-
|
|
38
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
40
39
|
"aria-label": shortName,
|
|
41
40
|
className: classNames(classes),
|
|
42
|
-
style: style
|
|
41
|
+
style: style,
|
|
42
|
+
title: showTooltip ? shortName : ''
|
|
43
43
|
});
|
|
44
|
-
return showTooltip ? /*#__PURE__*/React.createElement(Tooltip, {
|
|
45
|
-
tag: "span",
|
|
46
|
-
content: shortName
|
|
47
|
-
}, placeholderNode) : placeholderNode;
|
|
48
44
|
};
|
|
49
45
|
|
|
50
46
|
export default EmojiPlaceholder;
|
|
@@ -104,8 +104,7 @@ export class EmojiPreview extends PureComponent {
|
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
const previewClasses = classNames({
|
|
107
|
-
[styles.preview]: true
|
|
108
|
-
[styles.withToneSelector]: !!this.props.toneEmoji
|
|
107
|
+
[styles.preview]: true
|
|
109
108
|
});
|
|
110
109
|
const previewTextClasses = classNames({
|
|
111
110
|
[styles.previewText]: true,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
-
import PropTypes from 'prop-types';
|
|
3
2
|
import React from 'react';
|
|
4
3
|
import { Component } from 'react';
|
|
5
4
|
import { defaultEmojiHeight } from '../../util/constants';
|
|
6
5
|
import { isPromise } from '../../util/type-helpers';
|
|
7
6
|
import CachingEmoji from './CachingEmoji';
|
|
8
7
|
import EmojiPlaceholder from './EmojiPlaceholder';
|
|
8
|
+
import { EmojiContextProvider } from '../../context/EmojiContextProvider';
|
|
9
9
|
export default class ResourcedEmojiComponent extends Component {
|
|
10
10
|
constructor(props) {
|
|
11
11
|
super(props);
|
|
@@ -18,14 +18,6 @@ export default class ResourcedEmojiComponent extends Component {
|
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
getChildContext() {
|
|
22
|
-
return {
|
|
23
|
-
emoji: {
|
|
24
|
-
emojiProvider: this.props.emojiProvider
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
|
|
29
21
|
refreshEmoji(emojiProvider, emojiId) {
|
|
30
22
|
const foundEmoji = emojiProvider.findByEmojiId(emojiId);
|
|
31
23
|
|
|
@@ -110,15 +102,18 @@ export default class ResourcedEmojiComponent extends Component {
|
|
|
110
102
|
id,
|
|
111
103
|
fallback
|
|
112
104
|
} = this.props.emojiId;
|
|
113
|
-
|
|
105
|
+
const emojiContextValue = {
|
|
106
|
+
emoji: {
|
|
107
|
+
emojiProvider: this.props.emojiProvider
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
return /*#__PURE__*/React.createElement(EmojiContextProvider, {
|
|
111
|
+
emojiContextValue: emojiContextValue
|
|
112
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
114
113
|
"data-emoji-id": id,
|
|
115
114
|
"data-emoji-short-name": shortName,
|
|
116
115
|
"data-emoji-text": fallback || shortName
|
|
117
|
-
}, element);
|
|
116
|
+
}, element));
|
|
118
117
|
}
|
|
119
118
|
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
_defineProperty(ResourcedEmojiComponent, "childContextTypes", {
|
|
123
|
-
emoji: PropTypes.object
|
|
124
|
-
});
|
|
119
|
+
}
|
|
@@ -120,7 +120,6 @@ export const name = 'emoji-common-name';
|
|
|
120
120
|
export const shortName = 'emoji-common-shortname';
|
|
121
121
|
export const previewSingleLine = 'emoji-common-preview-single-line';
|
|
122
122
|
export const toneSelectorContainer = 'emoji-common-tone-selector-container';
|
|
123
|
-
export const withToneSelector = 'emoji-common-with-tone-selector';
|
|
124
123
|
export const emojiPreviewSection = 'emoji-preview-section';
|
|
125
124
|
export const emojiPreview = style({
|
|
126
125
|
display: 'flex',
|
|
@@ -177,7 +176,7 @@ export const emojiPreview = style({
|
|
|
177
176
|
$nest: {
|
|
178
177
|
[`.${name}`]: {
|
|
179
178
|
display: 'block',
|
|
180
|
-
color: token('color.text
|
|
179
|
+
color: token('color.text', colors.N900),
|
|
181
180
|
overflow: 'hidden',
|
|
182
181
|
textOverflow: 'ellipsis',
|
|
183
182
|
whiteSpace: 'nowrap',
|
|
@@ -189,7 +188,7 @@ export const emojiPreview = style({
|
|
|
189
188
|
},
|
|
190
189
|
[`.${shortName}`]: {
|
|
191
190
|
display: 'block',
|
|
192
|
-
color: token('color.text.
|
|
191
|
+
color: token('color.text.subtle', colors.N200),
|
|
193
192
|
fontSize: '12px',
|
|
194
193
|
lineHeight: 1,
|
|
195
194
|
marginBottom: '-2px',
|
|
@@ -207,35 +206,30 @@ export const emojiPreview = style({
|
|
|
207
206
|
display: 'none'
|
|
208
207
|
},
|
|
209
208
|
[`.${shortName}`]: {
|
|
210
|
-
color: token('color.text
|
|
209
|
+
color: token('color.text', colors.N900),
|
|
211
210
|
fontSize: '14px'
|
|
212
211
|
}
|
|
213
212
|
}
|
|
214
213
|
}
|
|
215
214
|
}
|
|
216
215
|
},
|
|
217
|
-
[`.${
|
|
218
|
-
flex: 1,
|
|
219
|
-
textAlign: 'right',
|
|
220
|
-
margin: '6px'
|
|
221
|
-
},
|
|
222
|
-
[`.${toneSelectorContainer}`]: {
|
|
223
|
-
flex: 1,
|
|
224
|
-
display: 'flex',
|
|
225
|
-
justifyContent: 'flex-end',
|
|
226
|
-
margin: '6px'
|
|
227
|
-
},
|
|
228
|
-
[`.${withToneSelector} .${previewText}`]: {
|
|
216
|
+
[`.${previewText}`]: {
|
|
229
217
|
maxWidth: '235px',
|
|
230
218
|
width: '235px'
|
|
231
219
|
/* IE */
|
|
232
220
|
|
|
233
221
|
}
|
|
234
222
|
}
|
|
223
|
+
});
|
|
224
|
+
export const emojiToneSelectorContainer = style({
|
|
225
|
+
flex: 1,
|
|
226
|
+
display: 'flex',
|
|
227
|
+
justifyContent: 'flex-end',
|
|
228
|
+
padding: '8px 10px 8px 0'
|
|
235
229
|
}); // Scrollable
|
|
236
230
|
|
|
237
231
|
export const emojiScrollable = style({
|
|
238
|
-
border: `1px solid ${token('color.border
|
|
232
|
+
border: `1px solid ${token('color.border', '#fff')}`,
|
|
239
233
|
borderRadius: `${borderRadius()}px`,
|
|
240
234
|
display: 'block',
|
|
241
235
|
margin: '0',
|
|
@@ -252,7 +246,7 @@ export const emojiUpload = style({
|
|
|
252
246
|
justifyContent: 'space-around'
|
|
253
247
|
});
|
|
254
248
|
export const uploadChooseFileMessage = style({
|
|
255
|
-
color: token('color.text.
|
|
249
|
+
color: token('color.text.subtle', colors.N300),
|
|
256
250
|
fontSize: '12px',
|
|
257
251
|
paddingBottom: '7px'
|
|
258
252
|
});
|
|
@@ -295,14 +289,14 @@ export const uploadPreview = style({
|
|
|
295
289
|
display: 'flex',
|
|
296
290
|
justifyContent: 'space-between',
|
|
297
291
|
alignItems: 'center',
|
|
298
|
-
background: token('color.background.
|
|
292
|
+
background: token('color.background.neutral', colors.N20),
|
|
299
293
|
borderRadius: `${borderRadius()}px`,
|
|
300
294
|
padding: '10px'
|
|
301
295
|
});
|
|
302
296
|
export const uploadPreviewText = style({
|
|
303
297
|
$nest: {
|
|
304
298
|
h5: {
|
|
305
|
-
color: token('color.text.
|
|
299
|
+
color: token('color.text.subtle', colors.N300),
|
|
306
300
|
paddingBottom: '4px',
|
|
307
301
|
fontSize: '12px'
|
|
308
302
|
},
|
|
@@ -329,7 +323,8 @@ export const uploadAddRow = style({
|
|
|
329
323
|
});
|
|
330
324
|
export const AddCustomEmoji = style({
|
|
331
325
|
alignSelf: 'center',
|
|
332
|
-
marginLeft: '10px'
|
|
326
|
+
marginLeft: '10px',
|
|
327
|
+
marginBottom: '10px'
|
|
333
328
|
}); // Emoji Delete preview
|
|
334
329
|
|
|
335
330
|
export const submitDelete = 'emoji-submit-delete';
|
|
@@ -339,14 +334,14 @@ export const deletePreview = style({
|
|
|
339
334
|
padding: '10px',
|
|
340
335
|
display: 'flex',
|
|
341
336
|
flexDirection: 'column',
|
|
342
|
-
justifyContent: 'flex-end'
|
|
343
|
-
fontSize: '12px'
|
|
337
|
+
justifyContent: 'flex-end'
|
|
344
338
|
});
|
|
345
339
|
export const deleteText = style({
|
|
346
340
|
height: '64px',
|
|
341
|
+
fontSize: '12px',
|
|
347
342
|
$nest: {
|
|
348
343
|
':first-child': {
|
|
349
|
-
color: token('color.text.
|
|
344
|
+
color: token('color.text.subtle', colors.N300),
|
|
350
345
|
lineHeight: '16px'
|
|
351
346
|
}
|
|
352
347
|
}
|