@atlaskit/emoji 68.0.4 → 69.0.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 +16 -0
- package/afm-cc/tsconfig.json +3 -0
- package/dist/cjs/components/common/CachingEmoji.js +61 -21
- package/dist/cjs/components/common/DeletableEmojiTooltipContent.js +13 -4
- package/dist/cjs/components/common/EmojiActions.js +4 -4
- package/dist/cjs/components/common/EmojiUploadPreview.js +1 -1
- package/dist/cjs/components/common/ResourcedEmojiComponent.js +18 -3
- package/dist/cjs/components/common/RetryableButton.js +3 -1
- package/dist/cjs/components/compiled/common/DeleteButton.compiled.css +9 -0
- package/dist/cjs/components/compiled/common/DeleteButton.js +52 -0
- package/dist/cjs/components/compiled/common/Emoji.compiled.css +23 -0
- package/dist/cjs/components/compiled/common/Emoji.js +380 -0
- package/dist/cjs/components/compiled/common/EmojiActions.compiled.css +21 -0
- package/dist/cjs/components/compiled/common/EmojiActions.js +220 -0
- package/dist/cjs/components/compiled/common/EmojiDeletePreview.compiled.css +21 -0
- package/dist/cjs/components/compiled/common/EmojiDeletePreview.js +152 -0
- package/dist/cjs/components/compiled/common/EmojiErrorMessage.compiled.css +9 -0
- package/dist/cjs/components/compiled/common/EmojiErrorMessage.js +58 -0
- package/dist/cjs/components/compiled/common/EmojiFallback.compiled.css +7 -0
- package/dist/cjs/components/compiled/common/EmojiFallback.js +36 -0
- package/dist/cjs/components/compiled/common/EmojiPlaceholder.compiled.css +20 -0
- package/dist/cjs/components/compiled/common/EmojiPlaceholder.js +68 -0
- package/dist/cjs/components/compiled/common/EmojiPreviewComponent.compiled.css +52 -0
- package/dist/cjs/components/compiled/common/EmojiPreviewComponent.js +45 -0
- package/dist/cjs/components/compiled/common/EmojiRadioButton.compiled.css +39 -0
- package/dist/cjs/components/compiled/common/EmojiRadioButton.js +72 -0
- package/dist/cjs/components/compiled/common/EmojiUploadPicker.compiled.css +26 -0
- package/dist/cjs/components/compiled/common/EmojiUploadPicker.js +322 -0
- package/dist/cjs/components/compiled/common/EmojiUploadPreview.compiled.css +20 -0
- package/dist/cjs/components/compiled/common/EmojiUploadPreview.js +124 -0
- package/dist/cjs/components/compiled/common/RetryableButton.compiled.css +2 -0
- package/dist/cjs/components/compiled/common/RetryableButton.js +73 -0
- package/dist/cjs/components/compiled/common/Scrollable.compiled.css +13 -0
- package/dist/cjs/components/compiled/common/Scrollable.js +97 -0
- package/dist/cjs/components/compiled/common/TonePreviewButton.compiled.css +32 -0
- package/dist/cjs/components/compiled/common/TonePreviewButton.js +52 -0
- package/dist/cjs/components/compiled/common/ToneSelector.compiled.css +3 -0
- package/dist/cjs/components/compiled/common/ToneSelector.js +111 -0
- package/dist/cjs/components/compiled/common/ToolTipContentWithKeymap.compiled.css +7 -0
- package/dist/cjs/components/compiled/common/ToolTipContentWithKeymap.js +28 -0
- package/dist/cjs/components/picker/EmojiPickerFooter.js +2 -0
- package/dist/cjs/components/picker/EmojiPickerList.js +1 -0
- package/dist/cjs/components/picker/EmojiPickerVirtualItems.js +2 -1
- package/dist/cjs/components/typeahead/EmojiTypeAheadItem.js +1 -0
- package/dist/cjs/components/typeahead/EmojiTypeAheadList.js +3 -1
- package/dist/cjs/components/uploader/EmojiUploadComponent.js +2 -0
- package/dist/cjs/element.js +9 -15
- package/dist/cjs/index.js +3 -4
- package/dist/cjs/util/analytics/analytics.js +1 -1
- package/dist/es2019/components/common/CachingEmoji.js +63 -23
- package/dist/es2019/components/common/DeletableEmojiTooltipContent.js +14 -5
- package/dist/es2019/components/common/EmojiActions.js +4 -4
- package/dist/es2019/components/common/EmojiUploadPreview.js +1 -1
- package/dist/es2019/components/common/ResourcedEmojiComponent.js +20 -5
- package/dist/es2019/components/common/RetryableButton.js +3 -1
- package/dist/es2019/components/compiled/common/DeleteButton.compiled.css +9 -0
- package/dist/es2019/components/compiled/common/DeleteButton.js +40 -0
- package/dist/es2019/components/compiled/common/Emoji.compiled.css +23 -0
- package/dist/es2019/components/compiled/common/Emoji.js +368 -0
- package/dist/es2019/components/compiled/common/EmojiActions.compiled.css +21 -0
- package/dist/es2019/components/compiled/common/EmojiActions.js +195 -0
- package/dist/es2019/components/compiled/common/EmojiDeletePreview.compiled.css +21 -0
- package/dist/es2019/components/compiled/common/EmojiDeletePreview.js +126 -0
- package/dist/es2019/components/compiled/common/EmojiErrorMessage.compiled.css +9 -0
- package/dist/es2019/components/compiled/common/EmojiErrorMessage.js +51 -0
- package/dist/es2019/components/compiled/common/EmojiFallback.compiled.css +7 -0
- package/dist/es2019/components/compiled/common/EmojiFallback.js +33 -0
- package/dist/es2019/components/compiled/common/EmojiPlaceholder.compiled.css +21 -0
- package/dist/es2019/components/compiled/common/EmojiPlaceholder.js +51 -0
- package/dist/es2019/components/compiled/common/EmojiPreviewComponent.compiled.css +52 -0
- package/dist/es2019/components/compiled/common/EmojiPreviewComponent.js +29 -0
- package/dist/es2019/components/compiled/common/EmojiRadioButton.compiled.css +39 -0
- package/dist/es2019/components/compiled/common/EmojiRadioButton.js +58 -0
- package/dist/es2019/components/compiled/common/EmojiUploadPicker.compiled.css +26 -0
- package/dist/es2019/components/compiled/common/EmojiUploadPicker.js +276 -0
- package/dist/es2019/components/compiled/common/EmojiUploadPreview.compiled.css +20 -0
- package/dist/es2019/components/compiled/common/EmojiUploadPreview.js +96 -0
- package/dist/es2019/components/compiled/common/RetryableButton.compiled.css +2 -0
- package/dist/es2019/components/compiled/common/RetryableButton.js +67 -0
- package/dist/es2019/components/compiled/common/Scrollable.compiled.css +13 -0
- package/dist/es2019/components/compiled/common/Scrollable.js +69 -0
- package/dist/es2019/components/compiled/common/TonePreviewButton.compiled.css +32 -0
- package/dist/es2019/components/compiled/common/TonePreviewButton.js +41 -0
- package/dist/es2019/components/compiled/common/ToneSelector.compiled.css +3 -0
- package/dist/es2019/components/compiled/common/ToneSelector.js +99 -0
- package/dist/es2019/components/compiled/common/ToolTipContentWithKeymap.compiled.css +7 -0
- package/dist/es2019/components/compiled/common/ToolTipContentWithKeymap.js +17 -0
- package/dist/es2019/components/picker/EmojiPickerFooter.js +1 -1
- package/dist/es2019/components/picker/EmojiPickerList.js +2 -1
- package/dist/es2019/components/picker/EmojiPickerVirtualItems.js +2 -1
- package/dist/es2019/components/typeahead/EmojiTypeAheadItem.js +1 -1
- package/dist/es2019/components/typeahead/EmojiTypeAheadList.js +3 -2
- package/dist/es2019/components/uploader/EmojiUploadComponent.js +1 -1
- package/dist/es2019/element.js +9 -2
- package/dist/es2019/index.js +1 -2
- package/dist/es2019/util/analytics/analytics.js +1 -1
- package/dist/esm/components/common/CachingEmoji.js +63 -23
- package/dist/esm/components/common/DeletableEmojiTooltipContent.js +14 -5
- package/dist/esm/components/common/EmojiActions.js +4 -4
- package/dist/esm/components/common/EmojiUploadPreview.js +1 -1
- package/dist/esm/components/common/ResourcedEmojiComponent.js +20 -5
- package/dist/esm/components/common/RetryableButton.js +3 -1
- package/dist/esm/components/compiled/common/DeleteButton.compiled.css +9 -0
- package/dist/esm/components/compiled/common/DeleteButton.js +42 -0
- package/dist/esm/components/compiled/common/Emoji.compiled.css +23 -0
- package/dist/esm/components/compiled/common/Emoji.js +370 -0
- package/dist/esm/components/compiled/common/EmojiActions.compiled.css +21 -0
- package/dist/esm/components/compiled/common/EmojiActions.js +210 -0
- package/dist/esm/components/compiled/common/EmojiDeletePreview.compiled.css +21 -0
- package/dist/esm/components/compiled/common/EmojiDeletePreview.js +142 -0
- package/dist/esm/components/compiled/common/EmojiErrorMessage.compiled.css +9 -0
- package/dist/esm/components/compiled/common/EmojiErrorMessage.js +48 -0
- package/dist/esm/components/compiled/common/EmojiFallback.compiled.css +7 -0
- package/dist/esm/components/compiled/common/EmojiFallback.js +29 -0
- package/dist/esm/components/compiled/common/EmojiPlaceholder.compiled.css +20 -0
- package/dist/esm/components/compiled/common/EmojiPlaceholder.js +58 -0
- package/dist/esm/components/compiled/common/EmojiPreviewComponent.compiled.css +52 -0
- package/dist/esm/components/compiled/common/EmojiPreviewComponent.js +35 -0
- package/dist/esm/components/compiled/common/EmojiRadioButton.compiled.css +39 -0
- package/dist/esm/components/compiled/common/EmojiRadioButton.js +62 -0
- package/dist/esm/components/compiled/common/EmojiUploadPicker.compiled.css +26 -0
- package/dist/esm/components/compiled/common/EmojiUploadPicker.js +312 -0
- package/dist/esm/components/compiled/common/EmojiUploadPreview.compiled.css +20 -0
- package/dist/esm/components/compiled/common/EmojiUploadPreview.js +114 -0
- package/dist/esm/components/compiled/common/RetryableButton.compiled.css +2 -0
- package/dist/esm/components/compiled/common/RetryableButton.js +63 -0
- package/dist/esm/components/compiled/common/Scrollable.compiled.css +13 -0
- package/dist/esm/components/compiled/common/Scrollable.js +90 -0
- package/dist/esm/components/compiled/common/TonePreviewButton.compiled.css +32 -0
- package/dist/esm/components/compiled/common/TonePreviewButton.js +42 -0
- package/dist/esm/components/compiled/common/ToneSelector.compiled.css +3 -0
- package/dist/esm/components/compiled/common/ToneSelector.js +101 -0
- package/dist/esm/components/compiled/common/ToolTipContentWithKeymap.compiled.css +7 -0
- package/dist/esm/components/compiled/common/ToolTipContentWithKeymap.js +19 -0
- package/dist/esm/components/picker/EmojiPickerFooter.js +1 -1
- package/dist/esm/components/picker/EmojiPickerList.js +2 -1
- package/dist/esm/components/picker/EmojiPickerVirtualItems.js +2 -1
- package/dist/esm/components/typeahead/EmojiTypeAheadItem.js +1 -1
- package/dist/esm/components/typeahead/EmojiTypeAheadList.js +3 -2
- package/dist/esm/components/uploader/EmojiUploadComponent.js +1 -1
- package/dist/esm/element.js +9 -2
- package/dist/esm/index.js +1 -2
- package/dist/esm/util/analytics/analytics.js +1 -1
- package/dist/types/components/common/EmojiActions.d.ts +2 -2
- package/dist/types/components/compiled/common/DeleteButton.d.ts +8 -0
- package/dist/types/components/compiled/common/Emoji.d.ts +95 -0
- package/dist/types/components/compiled/common/EmojiActions.d.ts +34 -0
- package/dist/types/components/compiled/common/EmojiDeletePreview.d.ts +21 -0
- package/dist/types/components/compiled/common/EmojiErrorMessage.d.ts +14 -0
- package/dist/types/components/compiled/common/EmojiFallback.d.ts +8 -0
- package/dist/types/components/compiled/common/EmojiPlaceholder.d.ts +12 -0
- package/dist/types/components/compiled/common/EmojiPreviewComponent.d.ts +7 -0
- package/dist/types/components/compiled/common/EmojiRadioButton.d.ts +16 -0
- package/dist/types/components/compiled/common/EmojiUploadPicker.d.ts +20 -0
- package/dist/types/components/compiled/common/EmojiUploadPreview.d.ts +18 -0
- package/dist/types/components/compiled/common/RetryableButton.d.ts +14 -0
- package/dist/types/components/compiled/common/Scrollable.d.ts +19 -0
- package/dist/types/components/compiled/common/TonePreviewButton.d.ts +14 -0
- package/dist/types/components/compiled/common/ToneSelector.d.ts +15 -0
- package/dist/types/components/compiled/common/ToolTipContentWithKeymap.d.ts +11 -0
- package/dist/types/element.d.ts +5 -2
- package/dist/types/index.d.ts +1 -2
- package/dist/types-ts4.5/components/common/EmojiActions.d.ts +2 -2
- package/dist/types-ts4.5/components/compiled/common/DeleteButton.d.ts +8 -0
- package/dist/types-ts4.5/components/compiled/common/Emoji.d.ts +95 -0
- package/dist/types-ts4.5/components/compiled/common/EmojiActions.d.ts +34 -0
- package/dist/types-ts4.5/components/compiled/common/EmojiDeletePreview.d.ts +21 -0
- package/dist/types-ts4.5/components/compiled/common/EmojiErrorMessage.d.ts +14 -0
- package/dist/types-ts4.5/components/compiled/common/EmojiFallback.d.ts +8 -0
- package/dist/types-ts4.5/components/compiled/common/EmojiPlaceholder.d.ts +12 -0
- package/dist/types-ts4.5/components/compiled/common/EmojiPreviewComponent.d.ts +7 -0
- package/dist/types-ts4.5/components/compiled/common/EmojiRadioButton.d.ts +16 -0
- package/dist/types-ts4.5/components/compiled/common/EmojiUploadPicker.d.ts +20 -0
- package/dist/types-ts4.5/components/compiled/common/EmojiUploadPreview.d.ts +18 -0
- package/dist/types-ts4.5/components/compiled/common/RetryableButton.d.ts +14 -0
- package/dist/types-ts4.5/components/compiled/common/Scrollable.d.ts +19 -0
- package/dist/types-ts4.5/components/compiled/common/TonePreviewButton.d.ts +14 -0
- package/dist/types-ts4.5/components/compiled/common/ToneSelector.d.ts +15 -0
- package/dist/types-ts4.5/components/compiled/common/ToolTipContentWithKeymap.d.ts +11 -0
- package/dist/types-ts4.5/element.d.ts +5 -2
- package/dist/types-ts4.5/index.d.ts +1 -2
- package/package.json +10 -2
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
/* Emoji.tsx generated by @compiled/babel-plugin v0.36.1 */
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
Object.defineProperty(exports, "__esModule", {
|
|
7
|
+
value: true
|
|
8
|
+
});
|
|
9
|
+
exports.default = exports.SpriteEmoji = exports.ImageEmoji = exports.EmojiNodeWrapper = exports.Emoji = void 0;
|
|
10
|
+
require("./Emoji.compiled.css");
|
|
11
|
+
var _runtime = require("@compiled/react/runtime");
|
|
12
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
13
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
14
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
17
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
18
|
+
var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
|
|
19
|
+
var _EmojiUtils = require("../../../api/EmojiUtils");
|
|
20
|
+
var _constants = require("../../../util/constants");
|
|
21
|
+
var _typeHelpers = require("../../../util/type-helpers");
|
|
22
|
+
var _types = require("../../../types");
|
|
23
|
+
var _mouse = require("../../../util/mouse");
|
|
24
|
+
var _DeleteButton = _interopRequireDefault(require("./DeleteButton"));
|
|
25
|
+
var _styles = require("../../common/styles");
|
|
26
|
+
var _analytics = require("../../../util/analytics");
|
|
27
|
+
var _browserSupport = _interopRequireDefault(require("../../../util/browser-support"));
|
|
28
|
+
var _useInView3 = require("../../../hooks/useInView");
|
|
29
|
+
var _ufoExperiences = require("../../../util/analytics/ufoExperiences");
|
|
30
|
+
var _DeletableEmojiTooltipContent = require("../../common/DeletableEmojiTooltipContent");
|
|
31
|
+
var _isSsr = require("../../../util/is-ssr");
|
|
32
|
+
var _excluded = ["emoji", "fitToHeight", "selected", "selectOnHover", "className", "showTooltip", "showDelete", "shouldBeInteractive", "tabIndex", "onSelected", "onMouseMove", "onFocus", "onDelete", "onLoadError", "onLoadSuccess", "disableLazyLoad", "autoWidth", "children", "type", "editorEmoji"];
|
|
33
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
34
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
35
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
36
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
37
|
+
var emojiSpriteContainer = null;
|
|
38
|
+
var emojiImageContainer = null;
|
|
39
|
+
var handleMouseDown = function handleMouseDown(props, event) {
|
|
40
|
+
// Clicked emoji delete button
|
|
41
|
+
if (event.target instanceof Element && event.target.getAttribute('aria-label') === _constants.deleteEmojiLabel) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
var emoji = props.emoji,
|
|
45
|
+
onSelected = props.onSelected;
|
|
46
|
+
if (onSelected && (0, _mouse.leftClick)(event)) {
|
|
47
|
+
onSelected((0, _typeHelpers.toEmojiId)(emoji), emoji, event);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
var handleKeyDown = function handleKeyDown(props, event) {
|
|
51
|
+
if (!_constants.EMOJI_KEYBOARD_KEYS_SUPPORTED.includes(event.key)) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
event.preventDefault();
|
|
55
|
+
event.stopPropagation();
|
|
56
|
+
var emoji = props.emoji,
|
|
57
|
+
onSelected = props.onSelected,
|
|
58
|
+
showDelete = props.showDelete;
|
|
59
|
+
if (onSelected && (event.key === _constants.KeyboardKeys.Enter || event.key === _constants.KeyboardKeys.Space)) {
|
|
60
|
+
onSelected((0, _typeHelpers.toEmojiId)(emoji), emoji, event);
|
|
61
|
+
}
|
|
62
|
+
if (showDelete && event.key === _constants.KeyboardKeys.Backspace) {
|
|
63
|
+
handleDelete(props, event);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
var handleMouseMove = function handleMouseMove(props, event) {
|
|
67
|
+
var emoji = props.emoji,
|
|
68
|
+
onMouseMove = props.onMouseMove;
|
|
69
|
+
if (onMouseMove) {
|
|
70
|
+
onMouseMove((0, _typeHelpers.toEmojiId)(emoji), emoji, event);
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
var handleFocus = function handleFocus(props, event) {
|
|
74
|
+
var emoji = props.emoji,
|
|
75
|
+
onFocus = props.onFocus;
|
|
76
|
+
if (onFocus) {
|
|
77
|
+
onFocus((0, _typeHelpers.toEmojiId)(emoji), emoji, event);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
var handleDelete = function handleDelete(props, event) {
|
|
81
|
+
var emoji = props.emoji,
|
|
82
|
+
onDelete = props.onDelete;
|
|
83
|
+
if (onDelete) {
|
|
84
|
+
onDelete((0, _typeHelpers.toEmojiId)(emoji), emoji, event);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
var handleImageError = function handleImageError(props, event) {
|
|
88
|
+
var emoji = props.emoji,
|
|
89
|
+
onLoadError = props.onLoadError;
|
|
90
|
+
|
|
91
|
+
// Hide error state (but keep space for it)
|
|
92
|
+
if (event.target) {
|
|
93
|
+
var target = event.target;
|
|
94
|
+
target.style.visibility = 'hidden';
|
|
95
|
+
}
|
|
96
|
+
if (onLoadError) {
|
|
97
|
+
onLoadError((0, _typeHelpers.toEmojiId)(emoji), emoji, event);
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
// Pure functional components are used in favour of class based components, due to the performance!
|
|
102
|
+
// When rendering 1500+ emoji using class based components had a significant impact.
|
|
103
|
+
// TODO: add UFO tracking for sprite emoji
|
|
104
|
+
var SpriteEmoji = exports.SpriteEmoji = function SpriteEmoji(props) {
|
|
105
|
+
var emoji = props.emoji,
|
|
106
|
+
fitToHeight = props.fitToHeight,
|
|
107
|
+
selected = props.selected,
|
|
108
|
+
selectOnHover = props.selectOnHover,
|
|
109
|
+
className = props.className;
|
|
110
|
+
var representation = emoji.representation;
|
|
111
|
+
var sprite = representation.sprite;
|
|
112
|
+
var classes = "".concat(_styles.emojiNodeStyles, " ").concat(selected ? _styles.commonSelectedStyles : '', " ").concat(selectOnHover ? _styles.selectOnHoverStyles : '', " ").concat(className ? className : '');
|
|
113
|
+
var sizing = {};
|
|
114
|
+
if (fitToHeight) {
|
|
115
|
+
sizing = {
|
|
116
|
+
width: "".concat(fitToHeight, "px"),
|
|
117
|
+
height: "".concat(fitToHeight, "px"),
|
|
118
|
+
minHeight: "".concat(fitToHeight, "px"),
|
|
119
|
+
minWidth: "".concat(fitToHeight, "px")
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
var xPositionInPercent = 100 / (sprite.column - 1) * (representation.xIndex - 0);
|
|
123
|
+
var yPositionInPercent = 100 / (sprite.row - 1) * (representation.yIndex - 0);
|
|
124
|
+
var style = _objectSpread({
|
|
125
|
+
backgroundImage: "url(".concat(sprite.url, ")"),
|
|
126
|
+
backgroundPosition: "".concat(xPositionInPercent, "% ").concat(yPositionInPercent, "%"),
|
|
127
|
+
backgroundSize: "".concat(sprite.column * 100, "% ").concat(sprite.row * 100, "%")
|
|
128
|
+
}, sizing);
|
|
129
|
+
return (
|
|
130
|
+
/*#__PURE__*/
|
|
131
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
|
|
132
|
+
_react.default.createElement(EmojiNodeWrapper, (0, _extends2.default)({}, props, {
|
|
133
|
+
type: "sprite",
|
|
134
|
+
className: classes
|
|
135
|
+
}), /*#__PURE__*/_react.default.createElement("span", {
|
|
136
|
+
className: _styles.emojiSprite,
|
|
137
|
+
style: style
|
|
138
|
+
}))
|
|
139
|
+
);
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
// Keep as pure functional component, see renderAsSprite.
|
|
143
|
+
var ImageEmoji = exports.ImageEmoji = function ImageEmoji(props) {
|
|
144
|
+
var emoji = props.emoji,
|
|
145
|
+
fitToHeight = props.fitToHeight,
|
|
146
|
+
selected = props.selected,
|
|
147
|
+
selectOnHover = props.selectOnHover,
|
|
148
|
+
className = props.className,
|
|
149
|
+
showDelete = props.showDelete,
|
|
150
|
+
onLoadSuccess = props.onLoadSuccess,
|
|
151
|
+
disableLazyLoad = props.disableLazyLoad,
|
|
152
|
+
autoWidth = props.autoWidth;
|
|
153
|
+
var _useInView = (0, _useInView3.useInView)({
|
|
154
|
+
triggerOnce: true
|
|
155
|
+
}),
|
|
156
|
+
_useInView2 = (0, _slicedToArray2.default)(_useInView, 2),
|
|
157
|
+
ref = _useInView2[0],
|
|
158
|
+
inView = _useInView2[1];
|
|
159
|
+
var ufoExp = (0, _analytics.sampledUfoRenderedEmoji)(emoji);
|
|
160
|
+
var classes = "".concat(_styles.emojiMainStyle, " ").concat(_styles.emojiNodeStyles, " ").concat(selected ? _styles.commonSelectedStyles : '', " ").concat(selectOnHover ? _styles.selectOnHoverStyles : '', " ").concat(_styles.emojiImage, " ").concat(className ? className : '', " ").concat(showDelete ? _styles.deletableEmoji : '');
|
|
161
|
+
var width;
|
|
162
|
+
var height;
|
|
163
|
+
var src;
|
|
164
|
+
var representation = (0, _EmojiUtils.shouldUseAltRepresentation)(emoji, fitToHeight) ? emoji.altRepresentation : emoji.representation;
|
|
165
|
+
if ((0, _typeHelpers.isImageRepresentation)(representation)) {
|
|
166
|
+
src = representation.imagePath;
|
|
167
|
+
width = representation.width;
|
|
168
|
+
height = representation.height;
|
|
169
|
+
} else if ((0, _typeHelpers.isMediaRepresentation)(representation)) {
|
|
170
|
+
src = representation.mediaPath;
|
|
171
|
+
width = representation.width;
|
|
172
|
+
height = representation.height;
|
|
173
|
+
}
|
|
174
|
+
var sizing = {};
|
|
175
|
+
if (fitToHeight && width && height) {
|
|
176
|
+
// Presize image, to prevent reflow due to size changes after loading
|
|
177
|
+
sizing = {
|
|
178
|
+
// Size of <img> needs to be deterministic when rendered on server-side. Auto will cause width to be 0 before image is loaded.
|
|
179
|
+
width: autoWidth && !(0, _isSsr.isSSR)() ? 'auto' : fitToHeight / height * width,
|
|
180
|
+
height: fitToHeight
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
var onError = (0, _react.useCallback)(function (event) {
|
|
184
|
+
handleImageError(props, event);
|
|
185
|
+
}, [props]);
|
|
186
|
+
var onLoad = (0, _react.useCallback)(function () {
|
|
187
|
+
var mountedMark = ufoExp.metrics.marks.find(function (mark) {
|
|
188
|
+
return mark.name === _types.UfoEmojiTimings.MOUNTED_END;
|
|
189
|
+
});
|
|
190
|
+
// onload could trigger before onBeforeLoad when emojis in viewport at start, so we need to mark onload start manually.
|
|
191
|
+
if (!(0, _ufoExperiences.hasUfoMarked)(ufoExp, _types.UfoEmojiTimings.ONLOAD_START)) {
|
|
192
|
+
ufoExp.mark(_types.UfoEmojiTimings.ONLOAD_START, mountedMark === null || mountedMark === void 0 ? void 0 : mountedMark.time);
|
|
193
|
+
}
|
|
194
|
+
var loadedStartMark = ufoExp.metrics.marks.find(function (mark) {
|
|
195
|
+
return mark.name === _types.UfoEmojiTimings.ONLOAD_START;
|
|
196
|
+
});
|
|
197
|
+
if (mountedMark && loadedStartMark) {
|
|
198
|
+
ufoExp.addMetadata({
|
|
199
|
+
lazyLoad: loadedStartMark.time > mountedMark.time
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
// onload_start
|
|
203
|
+
if (!(0, _ufoExperiences.hasUfoMarked)(ufoExp, _types.UfoEmojiTimings.ONLOAD_END)) {
|
|
204
|
+
ufoExp.mark(_types.UfoEmojiTimings.ONLOAD_END);
|
|
205
|
+
}
|
|
206
|
+
ufoExp.success({
|
|
207
|
+
metadata: {
|
|
208
|
+
IBSupported: _browserSupport.default.supportsIntersectionObserver
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
if (onLoadSuccess) {
|
|
212
|
+
onLoadSuccess(emoji);
|
|
213
|
+
}
|
|
214
|
+
}, [emoji, onLoadSuccess, ufoExp]);
|
|
215
|
+
var onBeforeLoad = (0, _react.useCallback)(function () {
|
|
216
|
+
if (!(0, _ufoExperiences.hasUfoMarked)(ufoExp, _types.UfoEmojiTimings.ONLOAD_START)) {
|
|
217
|
+
ufoExp.mark(_types.UfoEmojiTimings.ONLOAD_START);
|
|
218
|
+
}
|
|
219
|
+
}, [ufoExp]);
|
|
220
|
+
var onMouseOver = (0, _react.useCallback)(function (e) {
|
|
221
|
+
var _document$activeEleme;
|
|
222
|
+
// only disable tooltip when not on focus
|
|
223
|
+
if (!((_document$activeEleme = document.activeElement) !== null && _document$activeEleme !== void 0 && _document$activeEleme.contains(e.target))) {
|
|
224
|
+
e.stopPropagation();
|
|
225
|
+
}
|
|
226
|
+
}, []);
|
|
227
|
+
|
|
228
|
+
// because of the lack of browser support of on before load natively, used IntersectionObserver helper hook to mimic the before load time mark for UFO.
|
|
229
|
+
(0, _react.useEffect)(function () {
|
|
230
|
+
if (inView) {
|
|
231
|
+
onBeforeLoad();
|
|
232
|
+
}
|
|
233
|
+
}, [inView, onBeforeLoad]);
|
|
234
|
+
var emojiNode = /*#__PURE__*/_react.default.createElement("img", (0, _extends2.default)({
|
|
235
|
+
//@ts-ignore
|
|
236
|
+
loading: disableLazyLoad ? 'eager' : 'lazy',
|
|
237
|
+
src: src,
|
|
238
|
+
key: src,
|
|
239
|
+
alt: emoji.name || emoji.shortName,
|
|
240
|
+
"data-emoji-short-name": emoji.shortName,
|
|
241
|
+
"data-emoji-id": emoji.id,
|
|
242
|
+
"data-emoji-text": emoji.fallback || emoji.shortName
|
|
243
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
|
|
244
|
+
,
|
|
245
|
+
className: "emoji"
|
|
246
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
|
|
247
|
+
,
|
|
248
|
+
style: {
|
|
249
|
+
visibility: 'visible'
|
|
250
|
+
},
|
|
251
|
+
onError: onError,
|
|
252
|
+
onLoad: onLoad
|
|
253
|
+
}, sizing, {
|
|
254
|
+
"data-vc": "emoji"
|
|
255
|
+
}));
|
|
256
|
+
|
|
257
|
+
// show a tooltip for deletable emoji only on focus
|
|
258
|
+
if (showDelete) {
|
|
259
|
+
return /*#__PURE__*/_react.default.createElement(_tooltip.default, {
|
|
260
|
+
content: /*#__PURE__*/_react.default.createElement(_DeletableEmojiTooltipContent.DeletableEmojiTooltipContent, null),
|
|
261
|
+
position: "right-start",
|
|
262
|
+
tag: "span"
|
|
263
|
+
}, /*#__PURE__*/_react.default.createElement(EmojiNodeWrapper, (0, _extends2.default)({}, props, {
|
|
264
|
+
"aria-labelledby": "screenreader-emoji-".concat(emoji.id),
|
|
265
|
+
type: "image"
|
|
266
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
|
|
267
|
+
,
|
|
268
|
+
className: classes,
|
|
269
|
+
ref: ref,
|
|
270
|
+
showTooltip: false // avoid showing both tooltip and title
|
|
271
|
+
,
|
|
272
|
+
onMouseOver: onMouseOver
|
|
273
|
+
}), emojiNode, /*#__PURE__*/_react.default.createElement(_DeleteButton.default, {
|
|
274
|
+
onClick: function onClick(event) {
|
|
275
|
+
return handleDelete(props, event);
|
|
276
|
+
}
|
|
277
|
+
}), /*#__PURE__*/_react.default.createElement(_DeletableEmojiTooltipContent.DeletableEmojiTooltipContentForScreenReader, {
|
|
278
|
+
emoji: emoji
|
|
279
|
+
})));
|
|
280
|
+
}
|
|
281
|
+
return (
|
|
282
|
+
/*#__PURE__*/
|
|
283
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
|
|
284
|
+
_react.default.createElement(EmojiNodeWrapper, (0, _extends2.default)({}, props, {
|
|
285
|
+
type: "image",
|
|
286
|
+
className: classes,
|
|
287
|
+
ref: ref
|
|
288
|
+
}), emojiNode)
|
|
289
|
+
);
|
|
290
|
+
};
|
|
291
|
+
var EmojiNodeWrapper = exports.EmojiNodeWrapper = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
292
|
+
var emoji = props.emoji,
|
|
293
|
+
fitToHeight = props.fitToHeight,
|
|
294
|
+
selected = props.selected,
|
|
295
|
+
selectOnHover = props.selectOnHover,
|
|
296
|
+
className = props.className,
|
|
297
|
+
showTooltip = props.showTooltip,
|
|
298
|
+
showDelete = props.showDelete,
|
|
299
|
+
_props$shouldBeIntera = props.shouldBeInteractive,
|
|
300
|
+
shouldBeInteractive = _props$shouldBeIntera === void 0 ? false : _props$shouldBeIntera,
|
|
301
|
+
tabIndex = props.tabIndex,
|
|
302
|
+
onSelected = props.onSelected,
|
|
303
|
+
onMouseMove = props.onMouseMove,
|
|
304
|
+
onFocus = props.onFocus,
|
|
305
|
+
onDelete = props.onDelete,
|
|
306
|
+
onLoadError = props.onLoadError,
|
|
307
|
+
onLoadSuccess = props.onLoadSuccess,
|
|
308
|
+
disableLazyLoad = props.disableLazyLoad,
|
|
309
|
+
autoWidth = props.autoWidth,
|
|
310
|
+
children = props.children,
|
|
311
|
+
type = props.type,
|
|
312
|
+
editorEmoji = props.editorEmoji,
|
|
313
|
+
other = (0, _objectWithoutProperties2.default)(props, _excluded);
|
|
314
|
+
var accessibilityProps;
|
|
315
|
+
if (editorEmoji) {
|
|
316
|
+
accessibilityProps = {
|
|
317
|
+
role: undefined
|
|
318
|
+
};
|
|
319
|
+
} else if (shouldBeInteractive) {
|
|
320
|
+
accessibilityProps = {
|
|
321
|
+
role: 'button',
|
|
322
|
+
'aria-label': emoji.shortName
|
|
323
|
+
};
|
|
324
|
+
} else {
|
|
325
|
+
accessibilityProps = {
|
|
326
|
+
role: 'img',
|
|
327
|
+
'aria-label': emoji.shortName
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
return /*#__PURE__*/_react.default.createElement("span", (0, _extends2.default)({}, accessibilityProps, {
|
|
331
|
+
ref: ref,
|
|
332
|
+
"data-testid": "".concat(type, "-emoji-").concat(emoji.shortName),
|
|
333
|
+
"data-emoji-type": type,
|
|
334
|
+
tabIndex: shouldBeInteractive ? tabIndex || 0 : undefined,
|
|
335
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
|
|
336
|
+
className: (0, _runtime.ax)([type === 'sprite' ? "_19pk1n1a _2hwxidpf _otyr1n1a _18u0idpf _1e0c1o8l _jr50g2xd _ylp71o8l _pkaxgktf _1hdcgktf _109tnkob _tn8j2tgk _3naf2tgk _nt751r31 _49pcglyw _1hvw1o36 _7ehi1r2v _491113zc" : "_2rkosqtm _19pk1n1a _2hwxidpf _otyr1n1a _18u0idpf _bfhk1j28 _1e0c1o8l _s7n4nkob _v4pn1ule _tn8j2tgk _3naf2tgk _160jewfl _1theewfl _1kogh2mm _qyp0ewfl _nt751r31 _49pcglyw _1hvw1o36 _7ehi1r2v _491113zc", className]),
|
|
337
|
+
onKeyDown: function onKeyDown(event) {
|
|
338
|
+
return handleKeyDown(props, event);
|
|
339
|
+
},
|
|
340
|
+
onMouseDown: function onMouseDown(event) {
|
|
341
|
+
handleMouseDown(props, event);
|
|
342
|
+
},
|
|
343
|
+
onMouseEnter: function onMouseEnter(event) {
|
|
344
|
+
handleMouseMove(props, event);
|
|
345
|
+
},
|
|
346
|
+
onFocus: function onFocus(event) {
|
|
347
|
+
handleFocus(props, event);
|
|
348
|
+
},
|
|
349
|
+
title: showTooltip ? emoji.shortName : undefined // TODO: COLLAB-2351 - use @atlaskit/Tooltip in future for non-deletable emoji if enabled showTooltip
|
|
350
|
+
}, other, {
|
|
351
|
+
style: {
|
|
352
|
+
"--_1y60f1n": (0, _runtime.ix)("var(--ds-background-neutral-subtle-hovered, ".concat(_colors.N30, ")")),
|
|
353
|
+
"--_1rebzxw": (0, _runtime.ix)("0 0 0 2px ".concat("var(--ds-border-focused, ".concat(_colors.B100, ")")))
|
|
354
|
+
}
|
|
355
|
+
}), children);
|
|
356
|
+
});
|
|
357
|
+
var Emoji = exports.Emoji = function Emoji(props) {
|
|
358
|
+
var emoji = props.emoji;
|
|
359
|
+
// start emoji rendered experience, it may have already started earlier in ResourcedEmoji or CachingEmoji
|
|
360
|
+
(0, _analytics.useSampledUFOComponentExperience)(_analytics.ufoExperiences['emoji-rendered'].getInstance(emoji.id || emoji.shortName), _constants.SAMPLING_RATE_EMOJI_RENDERED_EXP, {
|
|
361
|
+
source: 'Emoji',
|
|
362
|
+
emojiId: emoji.id
|
|
363
|
+
});
|
|
364
|
+
(0, _react.useEffect)(function () {
|
|
365
|
+
var ufoExp = (0, _analytics.sampledUfoRenderedEmoji)(emoji);
|
|
366
|
+
if (!(0, _ufoExperiences.hasUfoMarked)(ufoExp, 'fmp')) {
|
|
367
|
+
ufoExp.markFMP();
|
|
368
|
+
}
|
|
369
|
+
if (!(0, _ufoExperiences.hasUfoMarked)(ufoExp, _types.UfoEmojiTimings.MOUNTED_END)) {
|
|
370
|
+
ufoExp.mark(_types.UfoEmojiTimings.MOUNTED_END);
|
|
371
|
+
}
|
|
372
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
373
|
+
}, []);
|
|
374
|
+
// TODO: We always prefer render as image as having accessibility issues with sprite representation
|
|
375
|
+
if ((0, _typeHelpers.isSpriteRepresentation)(emoji.representation)) {
|
|
376
|
+
return /*#__PURE__*/_react.default.createElement(SpriteEmoji, props);
|
|
377
|
+
}
|
|
378
|
+
return /*#__PURE__*/_react.default.createElement(ImageEmoji, props);
|
|
379
|
+
};
|
|
380
|
+
var _default = exports.default = Emoji;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
|
|
2
|
+
._n7zl18ew{border-bottom:var(--_m6cf7x)}._16jlidpf{flex-grow:0}
|
|
3
|
+
._16jlkb7n{flex-grow:1}
|
|
4
|
+
._16qs1qod{box-shadow:var(--_p4h2oc)}
|
|
5
|
+
._18u019bv{margin-left:10px}
|
|
6
|
+
._18u0r5cr{margin-left:var(--ds-space-negative-050,-4px)}
|
|
7
|
+
._19bvidpf{padding-left:0}
|
|
8
|
+
._1bahesu3{justify-content:flex-end}
|
|
9
|
+
._1e0c1txw{display:flex}
|
|
10
|
+
._1o9zidpf{flex-shrink:0}
|
|
11
|
+
._1o9zkb7n{flex-shrink:1}
|
|
12
|
+
._1wpz1h6o{align-self:center}
|
|
13
|
+
._2hwx1i6y{margin-right:var(--ds-space-negative-025,-2px)}
|
|
14
|
+
._4cvr1h6o{align-items:center}
|
|
15
|
+
._ca0q1skh{padding-top:11px}
|
|
16
|
+
._i0dl1wug{flex-basis:auto}
|
|
17
|
+
._i0dlf1ug{flex-basis:0%}
|
|
18
|
+
._n3td1crf{padding-bottom:9pt}
|
|
19
|
+
._otyr19bv{margin-bottom:10px}
|
|
20
|
+
._p12f3sup{max-width:285px}
|
|
21
|
+
._u5f319bv{padding-right:10px}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
/* EmojiActions.tsx generated by @compiled/babel-plugin v0.36.1 */
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
Object.defineProperty(exports, "__esModule", {
|
|
7
|
+
value: true
|
|
8
|
+
});
|
|
9
|
+
exports.uploadEmojiTestId = exports.emojiActionsTestId = exports.default = exports.EmojiActions = void 0;
|
|
10
|
+
require("./EmojiActions.compiled.css");
|
|
11
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
12
|
+
var React = _react;
|
|
13
|
+
var _runtime = require("@compiled/react/runtime");
|
|
14
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
15
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
16
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
17
|
+
var _reactIntlNext = require("react-intl-next");
|
|
18
|
+
var _EmojiDeletePreview = _interopRequireDefault(require("./EmojiDeletePreview"));
|
|
19
|
+
var _EmojiUploadPicker = _interopRequireDefault(require("./EmojiUploadPicker"));
|
|
20
|
+
var _TonePreviewButton = _interopRequireDefault(require("./TonePreviewButton"));
|
|
21
|
+
var _ToneSelector = _interopRequireDefault(require("./ToneSelector"));
|
|
22
|
+
var _EmojiPickerListSearch = require("../../picker/EmojiPickerListSearch");
|
|
23
|
+
var _i18n = require("../../i18n");
|
|
24
|
+
var _standardButton = _interopRequireDefault(require("@atlaskit/button/standard-button"));
|
|
25
|
+
var _add = _interopRequireDefault(require("@atlaskit/icon/core/migration/add"));
|
|
26
|
+
var _setSkinToneAriaLabelText = require("../../common/setSkinToneAriaLabelText");
|
|
27
|
+
var _styles = require("../../common/styles");
|
|
28
|
+
var _constants = require("../../../util/constants");
|
|
29
|
+
var _compiled = require("@atlaskit/primitives/compiled");
|
|
30
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
31
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
32
|
+
var styles = {
|
|
33
|
+
icon: "_18u0r5cr _2hwx1i6y"
|
|
34
|
+
};
|
|
35
|
+
var addCustomEmoji = null;
|
|
36
|
+
var addCustomEmojiButton = null;
|
|
37
|
+
var emojiActionsWrapper = null;
|
|
38
|
+
var emojiToneSelectorContainer = null;
|
|
39
|
+
var previewFooter = null;
|
|
40
|
+
var emojiActionsTestId = exports.emojiActionsTestId = 'emoji-actions';
|
|
41
|
+
var uploadEmojiTestId = exports.uploadEmojiTestId = 'upload-emoji';
|
|
42
|
+
|
|
43
|
+
// Generic Type for the wrapped functional component
|
|
44
|
+
|
|
45
|
+
var AddOwnEmoji = function AddOwnEmoji(props) {
|
|
46
|
+
var onOpenUpload = props.onOpenUpload,
|
|
47
|
+
uploadEnabled = props.uploadEnabled;
|
|
48
|
+
return /*#__PURE__*/React.createElement(_react.Fragment, null, uploadEnabled && /*#__PURE__*/React.createElement("div", {
|
|
49
|
+
"data-testid": uploadEmojiTestId,
|
|
50
|
+
className: (0, _runtime.ax)(["_1wpz1h6o _18u019bv _otyr19bv"])
|
|
51
|
+
}, /*#__PURE__*/React.createElement(_reactIntlNext.FormattedMessage, _i18n.messages.addCustomEmojiLabel, function (label) {
|
|
52
|
+
return /*#__PURE__*/React.createElement(_standardButton.default, {
|
|
53
|
+
onClick: onOpenUpload,
|
|
54
|
+
iconBefore: /*#__PURE__*/React.createElement(_compiled.Box, {
|
|
55
|
+
xcss: styles.icon
|
|
56
|
+
}, /*#__PURE__*/React.createElement(_add.default, {
|
|
57
|
+
LEGACY_margin: "0 ".concat("var(--ds-space-025, 2px)", " 0 ", "var(--ds-space-050, 4px)"),
|
|
58
|
+
color: "currentColor",
|
|
59
|
+
label: "",
|
|
60
|
+
LEGACY_size: "small"
|
|
61
|
+
})),
|
|
62
|
+
appearance: "subtle"
|
|
63
|
+
// TODO: (from codemod) Buttons with "component", "css" or "style" prop can't be automatically migrated with codemods. Please migrate it manually.
|
|
64
|
+
,
|
|
65
|
+
|
|
66
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
|
|
67
|
+
className: (0, _runtime.ax)(["_p12f3sup", _styles.emojiPickerAddEmoji]),
|
|
68
|
+
tabIndex: 0,
|
|
69
|
+
id: "add-custom-emoji"
|
|
70
|
+
}, label);
|
|
71
|
+
})));
|
|
72
|
+
};
|
|
73
|
+
var TonesWrapper = function TonesWrapper(props) {
|
|
74
|
+
var toneEmoji = props.toneEmoji,
|
|
75
|
+
_props$selectedTone = props.selectedTone,
|
|
76
|
+
selectedTone = _props$selectedTone === void 0 ? _constants.DEFAULT_TONE : _props$selectedTone,
|
|
77
|
+
intl = props.intl,
|
|
78
|
+
onToneOpen = props.onToneOpen,
|
|
79
|
+
showToneSelector = props.showToneSelector;
|
|
80
|
+
var formatMessage = intl.formatMessage;
|
|
81
|
+
var tonePreviewButtonRef = (0, _react.useRef)(null);
|
|
82
|
+
var _useState = (0, _react.useState)(false),
|
|
83
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
84
|
+
focusTonePreviewButton = _useState2[0],
|
|
85
|
+
setFocusTonePreviewButton = _useState2[1];
|
|
86
|
+
(0, _react.useLayoutEffect)(function () {
|
|
87
|
+
if (focusTonePreviewButton && !showToneSelector) {
|
|
88
|
+
var _tonePreviewButtonRef;
|
|
89
|
+
(_tonePreviewButtonRef = tonePreviewButtonRef.current) === null || _tonePreviewButtonRef === void 0 || _tonePreviewButtonRef.focus();
|
|
90
|
+
}
|
|
91
|
+
return function () {
|
|
92
|
+
setFocusTonePreviewButton(false);
|
|
93
|
+
};
|
|
94
|
+
}, [focusTonePreviewButton, showToneSelector]);
|
|
95
|
+
var onToneCloseHandler = (0, _react.useCallback)(function () {
|
|
96
|
+
var onToneClose = props.onToneClose;
|
|
97
|
+
onToneClose();
|
|
98
|
+
setFocusTonePreviewButton(true);
|
|
99
|
+
}, [props]);
|
|
100
|
+
var onToneSelectedHandler = (0, _react.useCallback)(function (toneValue) {
|
|
101
|
+
var onToneSelected = props.onToneSelected;
|
|
102
|
+
onToneSelected(toneValue);
|
|
103
|
+
setFocusTonePreviewButton(true);
|
|
104
|
+
}, [props]);
|
|
105
|
+
if (!toneEmoji) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
var previewToneEmoji = toneEmoji;
|
|
109
|
+
if (selectedTone !== _constants.DEFAULT_TONE && previewToneEmoji.skinVariations) {
|
|
110
|
+
previewToneEmoji = previewToneEmoji.skinVariations[selectedTone - 1];
|
|
111
|
+
}
|
|
112
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
113
|
+
className: (0, _runtime.ax)(["_16jlkb7n _1o9zkb7n _i0dlf1ug _ca0q1skh _u5f319bv _n3td1crf _19bvidpf _1e0c1txw _1bahesu3"])
|
|
114
|
+
}, /*#__PURE__*/React.createElement(_ToneSelector.default, {
|
|
115
|
+
emoji: toneEmoji,
|
|
116
|
+
onToneSelected: onToneSelectedHandler,
|
|
117
|
+
onToneClose: onToneCloseHandler,
|
|
118
|
+
selectedTone: selectedTone,
|
|
119
|
+
isVisible: showToneSelector
|
|
120
|
+
}), /*#__PURE__*/React.createElement(_TonePreviewButton.default, {
|
|
121
|
+
ref: tonePreviewButtonRef,
|
|
122
|
+
ariaExpanded: showToneSelector,
|
|
123
|
+
emoji: previewToneEmoji,
|
|
124
|
+
selectOnHover: true,
|
|
125
|
+
onSelected: onToneOpen,
|
|
126
|
+
ariaLabelText: formatMessage(_i18n.messages.emojiSelectSkinToneButtonAriaLabelText, {
|
|
127
|
+
selectedTone: "".concat((0, _setSkinToneAriaLabelText.setSkinToneAriaLabelText)(previewToneEmoji.name))
|
|
128
|
+
}),
|
|
129
|
+
isVisible: !showToneSelector
|
|
130
|
+
}));
|
|
131
|
+
};
|
|
132
|
+
var EmojiActions = exports.EmojiActions = function EmojiActions(props) {
|
|
133
|
+
var onToneSelected = props.onToneSelected,
|
|
134
|
+
onToneSelectorCancelled = props.onToneSelectorCancelled,
|
|
135
|
+
initialUploadName = props.initialUploadName,
|
|
136
|
+
onUploadCancelled = props.onUploadCancelled,
|
|
137
|
+
onCloseDelete = props.onCloseDelete,
|
|
138
|
+
onDeleteEmoji = props.onDeleteEmoji,
|
|
139
|
+
onUploadEmoji = props.onUploadEmoji,
|
|
140
|
+
uploadErrorMessage = props.uploadErrorMessage,
|
|
141
|
+
uploading = props.uploading,
|
|
142
|
+
onFileChooserClicked = props.onFileChooserClicked,
|
|
143
|
+
emojiToDelete = props.emojiToDelete,
|
|
144
|
+
onChange = props.onChange,
|
|
145
|
+
query = props.query,
|
|
146
|
+
_props$resultsCount = props.resultsCount,
|
|
147
|
+
resultsCount = _props$resultsCount === void 0 ? 0 : _props$resultsCount;
|
|
148
|
+
var _useState3 = (0, _react.useState)(false),
|
|
149
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
150
|
+
showToneSelector = _useState4[0],
|
|
151
|
+
setShowToneSelector = _useState4[1];
|
|
152
|
+
var onToneOpenHandler = (0, _react.useCallback)(function () {
|
|
153
|
+
return setShowToneSelector(true);
|
|
154
|
+
}, []);
|
|
155
|
+
var onToneCloseHandler = (0, _react.useCallback)(function () {
|
|
156
|
+
return setShowToneSelector(false);
|
|
157
|
+
}, []);
|
|
158
|
+
var onToneSelectedHandler = (0, _react.useCallback)(function (toneValue) {
|
|
159
|
+
setShowToneSelector(false);
|
|
160
|
+
if (onToneSelected) {
|
|
161
|
+
onToneSelected(toneValue);
|
|
162
|
+
}
|
|
163
|
+
}, [onToneSelected]);
|
|
164
|
+
var onMouseLeaveHandler = (0, _react.useCallback)(function () {
|
|
165
|
+
if (showToneSelector && onToneSelectorCancelled) {
|
|
166
|
+
onToneSelectorCancelled();
|
|
167
|
+
}
|
|
168
|
+
setShowToneSelector(false);
|
|
169
|
+
}, [showToneSelector, onToneSelectorCancelled]);
|
|
170
|
+
if (uploading) {
|
|
171
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
172
|
+
className: (0, _runtime.ax)(["_16jlidpf _1o9zidpf _i0dl1wug _n7zl18ew _16qs1qod"]),
|
|
173
|
+
style: {
|
|
174
|
+
"--_m6cf7x": (0, _runtime.ix)("2px solid ".concat("var(--ds-border, ".concat(_colors.N30A, ")"))),
|
|
175
|
+
"--_p4h2oc": (0, _runtime.ix)("0px 1px 1px 0px ".concat("var(--ds-border, rgba(0, 0, 0, 0.1))"))
|
|
176
|
+
}
|
|
177
|
+
}, /*#__PURE__*/React.createElement(_EmojiUploadPicker.default, {
|
|
178
|
+
onUploadCancelled: onUploadCancelled,
|
|
179
|
+
onUploadEmoji: onUploadEmoji,
|
|
180
|
+
onFileChooserClicked: onFileChooserClicked,
|
|
181
|
+
errorMessage: uploadErrorMessage,
|
|
182
|
+
initialUploadName: initialUploadName
|
|
183
|
+
}));
|
|
184
|
+
}
|
|
185
|
+
if (emojiToDelete) {
|
|
186
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
187
|
+
className: (0, _runtime.ax)(["_16jlidpf _1o9zidpf _i0dl1wug _n7zl18ew _16qs1qod"]),
|
|
188
|
+
style: {
|
|
189
|
+
"--_m6cf7x": (0, _runtime.ix)("2px solid ".concat("var(--ds-border, ".concat(_colors.N30A, ")"))),
|
|
190
|
+
"--_p4h2oc": (0, _runtime.ix)("0px 1px 1px 0px ".concat("var(--ds-border, rgba(0, 0, 0, 0.1))"))
|
|
191
|
+
}
|
|
192
|
+
}, /*#__PURE__*/React.createElement(_EmojiDeletePreview.default, {
|
|
193
|
+
emoji: emojiToDelete,
|
|
194
|
+
onDeleteEmoji: onDeleteEmoji,
|
|
195
|
+
onCloseDelete: onCloseDelete
|
|
196
|
+
}));
|
|
197
|
+
}
|
|
198
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
199
|
+
"data-testid": emojiActionsTestId,
|
|
200
|
+
onMouseLeave: onMouseLeaveHandler,
|
|
201
|
+
className: (0, _runtime.ax)(["_16jlidpf _1o9zidpf _i0dl1wug _n7zl18ew _16qs1qod"]),
|
|
202
|
+
style: {
|
|
203
|
+
"--_m6cf7x": (0, _runtime.ix)("2px solid ".concat("var(--ds-border, ".concat(_colors.N30A, ")"))),
|
|
204
|
+
"--_p4h2oc": (0, _runtime.ix)("0px 1px 1px 0px ".concat("var(--ds-border, rgba(0, 0, 0, 0.1))"))
|
|
205
|
+
}
|
|
206
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
207
|
+
className: (0, _runtime.ax)(["_1e0c1txw _1bahesu3 _4cvr1h6o"])
|
|
208
|
+
}, /*#__PURE__*/React.createElement(_EmojiPickerListSearch.EmojiPickerListSearch, {
|
|
209
|
+
onChange: onChange,
|
|
210
|
+
query: query,
|
|
211
|
+
resultsCount: resultsCount,
|
|
212
|
+
isVisible: !showToneSelector
|
|
213
|
+
}), /*#__PURE__*/React.createElement(TonesWrapper, (0, _extends2.default)({}, props, {
|
|
214
|
+
onToneOpen: onToneOpenHandler,
|
|
215
|
+
onToneClose: onToneCloseHandler,
|
|
216
|
+
onToneSelected: onToneSelectedHandler,
|
|
217
|
+
showToneSelector: showToneSelector
|
|
218
|
+
}))), /*#__PURE__*/React.createElement(AddOwnEmoji, props));
|
|
219
|
+
};
|
|
220
|
+
var _default = exports.default = (0, _reactIntlNext.injectIntl)( /*#__PURE__*/(0, _react.memo)(EmojiActions));
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
._11c82smr{font:var(--ds-font-body,normal 400 14px/20px ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Ubuntu,"Helvetica Neue",sans-serif)}
|
|
2
|
+
._11c8dcr7{font:var(--ds-font-body-UNSAFE_small,normal 400 9pt/1pc ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Ubuntu,"Helvetica Neue",sans-serif)}
|
|
3
|
+
._19bv19bv{padding-left:10px}
|
|
4
|
+
._19l3zwfg img{max-height:2pc}
|
|
5
|
+
._1bah1yb4{justify-content:space-between}
|
|
6
|
+
._1bahesu3{justify-content:flex-end}
|
|
7
|
+
._1e0c1txw{display:flex}
|
|
8
|
+
._1qz31b66 .emoji-submit-delete{margin-right:var(--ds-space-050,4px)}
|
|
9
|
+
._1txf1igg .emoji-submit-delete{font-weight:var(--ds-font-weight-bold,bold)}
|
|
10
|
+
._2lx21bp4{flex-direction:column}
|
|
11
|
+
._4cvr1h6o{align-items:center}
|
|
12
|
+
._4t3i1ylp{height:40px}
|
|
13
|
+
._4t3i53f4{height:75pt}
|
|
14
|
+
._4t3ivbgk{height:4pc}
|
|
15
|
+
._ca0q19bv{padding-top:10px}
|
|
16
|
+
._jwwg7vkz:first-of-type{line-height:1pc}
|
|
17
|
+
._m73io7ol .emoji-submit-delete{width:84px}
|
|
18
|
+
._n3td19bv{padding-bottom:10px}
|
|
19
|
+
._pnmb1vvm:first-of-type{color:var(--_bbz764)}
|
|
20
|
+
._rtyst9kd img{max-width:72px}
|
|
21
|
+
._u5f319bv{padding-right:10px}
|