@atlaskit/reactions 22.2.4 → 22.2.6
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 +17 -0
- package/dist/cjs/analytics/analytics.js +20 -1
- package/dist/cjs/components/ReactionPicker/ReactionPicker.js +76 -38
- package/dist/cjs/components/ReactionPicker/styles.js +7 -1
- package/dist/cjs/components/Reactions/Reactions.js +7 -3
- package/dist/cjs/components/ShowMore/ShowMore.js +1 -1
- package/dist/cjs/components/Trigger/Trigger.js +4 -1
- package/dist/cjs/components/Trigger/styles.js +5 -0
- package/dist/cjs/hooks/index.js +3 -3
- package/dist/cjs/hooks/useCloseManager.js +47 -0
- package/dist/cjs/hooks/useFocusTrap.js +46 -0
- package/dist/cjs/i18n/cs.js +14 -13
- package/dist/cjs/i18n/da.js +14 -13
- package/dist/cjs/i18n/de.js +14 -13
- package/dist/cjs/i18n/en.js +15 -14
- package/dist/cjs/i18n/en_GB.js +15 -14
- package/dist/cjs/i18n/en_ZZ.js +15 -14
- package/dist/cjs/i18n/es.js +14 -13
- package/dist/cjs/i18n/fi.js +14 -13
- package/dist/cjs/i18n/fr.js +14 -13
- package/dist/cjs/i18n/hu.js +14 -13
- package/dist/cjs/i18n/it.js +14 -13
- package/dist/cjs/i18n/ja.js +14 -13
- package/dist/cjs/i18n/ko.js +14 -13
- package/dist/cjs/i18n/nb.js +14 -13
- package/dist/cjs/i18n/nl.js +14 -13
- package/dist/cjs/i18n/pl.js +14 -13
- package/dist/cjs/i18n/pt_BR.js +14 -13
- package/dist/cjs/i18n/ru.js +14 -13
- package/dist/cjs/i18n/sv.js +14 -13
- package/dist/cjs/i18n/th.js +14 -13
- package/dist/cjs/i18n/tr.js +14 -13
- package/dist/cjs/i18n/uk.js +14 -13
- package/dist/cjs/i18n/vi.js +14 -13
- package/dist/cjs/i18n/zh.js +14 -13
- package/dist/cjs/i18n/zh_TW.js +14 -13
- package/dist/cjs/shared/constants.js +6 -2
- package/dist/cjs/store/MemoryReactionsStore.js +1 -1
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/analytics/analytics.js +18 -0
- package/dist/es2019/components/ReactionPicker/ReactionPicker.js +58 -28
- package/dist/es2019/components/ReactionPicker/styles.js +5 -0
- package/dist/es2019/components/Reactions/Reactions.js +7 -3
- package/dist/es2019/components/ShowMore/ShowMore.js +1 -1
- package/dist/es2019/components/Trigger/Trigger.js +2 -0
- package/dist/es2019/components/Trigger/styles.js +6 -1
- package/dist/es2019/hooks/index.js +1 -1
- package/dist/es2019/hooks/useCloseManager.js +41 -0
- package/dist/es2019/hooks/useFocusTrap.js +38 -0
- package/dist/es2019/i18n/cs.js +14 -13
- package/dist/es2019/i18n/da.js +14 -13
- package/dist/es2019/i18n/de.js +14 -13
- package/dist/es2019/i18n/en.js +15 -14
- package/dist/es2019/i18n/en_GB.js +15 -14
- package/dist/es2019/i18n/en_ZZ.js +15 -14
- package/dist/es2019/i18n/es.js +14 -13
- package/dist/es2019/i18n/fi.js +14 -13
- package/dist/es2019/i18n/fr.js +14 -13
- package/dist/es2019/i18n/hu.js +14 -13
- package/dist/es2019/i18n/it.js +14 -13
- package/dist/es2019/i18n/ja.js +14 -13
- package/dist/es2019/i18n/ko.js +14 -13
- package/dist/es2019/i18n/nb.js +14 -13
- package/dist/es2019/i18n/nl.js +14 -13
- package/dist/es2019/i18n/pl.js +14 -13
- package/dist/es2019/i18n/pt_BR.js +14 -13
- package/dist/es2019/i18n/ru.js +14 -13
- package/dist/es2019/i18n/sv.js +14 -13
- package/dist/es2019/i18n/th.js +14 -13
- package/dist/es2019/i18n/tr.js +14 -13
- package/dist/es2019/i18n/uk.js +14 -13
- package/dist/es2019/i18n/vi.js +14 -13
- package/dist/es2019/i18n/zh.js +14 -13
- package/dist/es2019/i18n/zh_TW.js +14 -13
- package/dist/es2019/shared/constants.js +4 -1
- package/dist/es2019/store/MemoryReactionsStore.js +1 -1
- package/dist/es2019/version.json +1 -1
- package/dist/esm/analytics/analytics.js +18 -0
- package/dist/esm/components/ReactionPicker/ReactionPicker.js +75 -38
- package/dist/esm/components/ReactionPicker/styles.js +5 -0
- package/dist/esm/components/Reactions/Reactions.js +7 -3
- package/dist/esm/components/ShowMore/ShowMore.js +1 -1
- package/dist/esm/components/Trigger/Trigger.js +2 -0
- package/dist/esm/components/Trigger/styles.js +6 -1
- package/dist/esm/hooks/index.js +1 -1
- package/dist/esm/hooks/useCloseManager.js +41 -0
- package/dist/esm/hooks/useFocusTrap.js +37 -0
- package/dist/esm/i18n/cs.js +14 -13
- package/dist/esm/i18n/da.js +14 -13
- package/dist/esm/i18n/de.js +14 -13
- package/dist/esm/i18n/en.js +15 -14
- package/dist/esm/i18n/en_GB.js +15 -14
- package/dist/esm/i18n/en_ZZ.js +15 -14
- package/dist/esm/i18n/es.js +14 -13
- package/dist/esm/i18n/fi.js +14 -13
- package/dist/esm/i18n/fr.js +14 -13
- package/dist/esm/i18n/hu.js +14 -13
- package/dist/esm/i18n/it.js +14 -13
- package/dist/esm/i18n/ja.js +14 -13
- package/dist/esm/i18n/ko.js +14 -13
- package/dist/esm/i18n/nb.js +14 -13
- package/dist/esm/i18n/nl.js +14 -13
- package/dist/esm/i18n/pl.js +14 -13
- package/dist/esm/i18n/pt_BR.js +14 -13
- package/dist/esm/i18n/ru.js +14 -13
- package/dist/esm/i18n/sv.js +14 -13
- package/dist/esm/i18n/th.js +14 -13
- package/dist/esm/i18n/tr.js +14 -13
- package/dist/esm/i18n/uk.js +14 -13
- package/dist/esm/i18n/vi.js +14 -13
- package/dist/esm/i18n/zh.js +14 -13
- package/dist/esm/i18n/zh_TW.js +14 -13
- package/dist/esm/shared/constants.js +4 -1
- package/dist/esm/store/MemoryReactionsStore.js +1 -1
- package/dist/esm/version.json +1 -1
- package/dist/types/analytics/analytics.d.ts +9 -0
- package/dist/types/components/ReactionPicker/ReactionPicker.d.ts +4 -0
- package/dist/types/components/ReactionPicker/styles.d.ts +1 -0
- package/dist/types/components/Trigger/Trigger.d.ts +1 -0
- package/dist/types/hooks/index.d.ts +1 -1
- package/dist/types/hooks/useCloseManager.d.ts +11 -0
- package/dist/types/hooks/useFocusTrap.d.ts +5 -0
- package/dist/types/i18n/cs.d.ts +13 -13
- package/dist/types/i18n/da.d.ts +13 -13
- package/dist/types/i18n/de.d.ts +13 -13
- package/dist/types/i18n/en.d.ts +14 -14
- package/dist/types/i18n/en_GB.d.ts +14 -14
- package/dist/types/i18n/en_ZZ.d.ts +14 -14
- package/dist/types/i18n/es.d.ts +13 -13
- package/dist/types/i18n/fi.d.ts +13 -13
- package/dist/types/i18n/fr.d.ts +13 -13
- package/dist/types/i18n/hu.d.ts +13 -13
- package/dist/types/i18n/it.d.ts +13 -13
- package/dist/types/i18n/ja.d.ts +13 -13
- package/dist/types/i18n/ko.d.ts +13 -13
- package/dist/types/i18n/nb.d.ts +13 -13
- package/dist/types/i18n/nl.d.ts +13 -13
- package/dist/types/i18n/pl.d.ts +13 -13
- package/dist/types/i18n/pt_BR.d.ts +13 -13
- package/dist/types/i18n/ru.d.ts +13 -13
- package/dist/types/i18n/sv.d.ts +13 -13
- package/dist/types/i18n/th.d.ts +13 -13
- package/dist/types/i18n/tr.d.ts +13 -13
- package/dist/types/i18n/uk.d.ts +13 -13
- package/dist/types/i18n/vi.d.ts +13 -13
- package/dist/types/i18n/zh.d.ts +13 -13
- package/dist/types/i18n/zh_TW.d.ts +13 -13
- package/dist/types/shared/constants.d.ts +1 -0
- package/package.json +13 -11
- package/README.md +0 -3
- package/dist/cjs/analytics/constants.js +0 -9
- package/dist/cjs/hooks/useClickAway.js +0 -36
- package/dist/es2019/analytics/constants.js +0 -2
- package/dist/es2019/hooks/useClickAway.js +0 -28
- package/dist/esm/analytics/constants.js +0 -2
- package/dist/esm/hooks/useClickAway.js +0 -31
- package/dist/types/analytics/constants.d.ts +0 -1
- package/dist/types/hooks/useClickAway.d.ts +0 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @atlaskit/reactions
|
|
2
2
|
|
|
3
|
+
## 22.2.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`6b5bf5505b6`](https://bitbucket.org/atlassian/atlassian-frontend/commits/6b5bf5505b6) - revert atlaskit popup refactor in reaction picker
|
|
8
|
+
- [`db658265a45`](https://bitbucket.org/atlassian/atlassian-frontend/commits/db658265a45) - add sampling for reaction view analytics
|
|
9
|
+
- [`c84afc8fbd8`](https://bitbucket.org/atlassian/atlassian-frontend/commits/c84afc8fbd8) - [ux] add focus trap to reaction picker
|
|
10
|
+
- [`ed219dee1bd`](https://bitbucket.org/atlassian/atlassian-frontend/commits/ed219dee1bd) - refactor reactions picker with @atlaskit/popup
|
|
11
|
+
- Updated dependencies
|
|
12
|
+
|
|
13
|
+
## 22.2.5
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- [`dfbecb4aa7c`](https://bitbucket.org/atlassian/atlassian-frontend/commits/dfbecb4aa7c) - [ux] [COLLAB-2263] allow `Enter` to open Show more to show emoji picker, allow `ESC` to close emoji picker / reaction selector.
|
|
18
|
+
- Updated dependencies
|
|
19
|
+
|
|
3
20
|
## 22.2.4
|
|
4
21
|
|
|
5
22
|
### Patch Changes
|
|
@@ -4,13 +4,32 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.extractErrorInfo = exports.createRestSucceededEvent = exports.createRestFailedEvent = exports.createReactionsRenderedEvent = exports.createReactionSelectionEvent = exports.createReactionHoveredEvent = exports.createReactionFocusedEvent = exports.createReactionClickedEvent = exports.createPickerMoreClickedEvent = exports.createPickerCancelledEvent = exports.createPickerButtonClickedEvent = exports.createAndFireSafe = exports.createAndFireEventInElementsChannel = void 0;
|
|
7
|
+
exports.isSampled = exports.extractErrorInfo = exports.createRestSucceededEvent = exports.createRestFailedEvent = exports.createReactionsRenderedEvent = exports.createReactionSelectionEvent = exports.createReactionHoveredEvent = exports.createReactionFocusedEvent = exports.createReactionClickedEvent = exports.createPickerMoreClickedEvent = exports.createPickerCancelledEvent = exports.createPickerButtonClickedEvent = exports.createAndFireSafe = exports.createAndFireEventInElementsChannel = void 0;
|
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
9
|
var _analyticsNext = require("@atlaskit/analytics-next");
|
|
10
10
|
var _analyticsGasTypes = require("@atlaskit/analytics-gas-types");
|
|
11
11
|
var _version = require("../version.json");
|
|
12
12
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
13
13
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
14
|
+
/**
|
|
15
|
+
* TODO: move to utility package?
|
|
16
|
+
* A random sampling function
|
|
17
|
+
* sampling algorithm is from @atlassian/jira-coinflip at https://stash.atlassian.com/projects/JIRACLOUD/repos/jira-frontend/browse/src/packages/platform/app-framework/coinflip/src/index.tsx
|
|
18
|
+
* E.g. isSampled(2) will pass 50% of the time
|
|
19
|
+
* @param rate The chance that it will pass (1 in <rate> times)
|
|
20
|
+
* @returns bool, if it passes or not
|
|
21
|
+
*/
|
|
22
|
+
// default sampling function to determine which one to be sampled
|
|
23
|
+
var isSampled = function isSampled(rate) {
|
|
24
|
+
if (rate === 1) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
if (rate === 0) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
return Math.random() * rate <= 1;
|
|
31
|
+
};
|
|
32
|
+
exports.isSampled = isSampled;
|
|
14
33
|
var createAndFireEventInElementsChannel = (0, _analyticsNext.createAndFireEvent)('fabric-elements');
|
|
15
34
|
exports.createAndFireEventInElementsChannel = createAndFireEventInElementsChannel;
|
|
16
35
|
var createAndFireSafe = function createAndFireSafe(createAnalyticsEvent, creator) {
|
|
@@ -5,7 +5,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.ReactionPicker = exports.RENDER_REACTIONPICKER_TESTID = void 0;
|
|
8
|
+
exports.ReactionPicker = exports.RENDER_REACTIONPICKER_TESTID = exports.RENDER_REACTIONPICKERPANEL_TESTID = void 0;
|
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
10
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
@@ -20,6 +20,7 @@ var _analytics = require("../../analytics");
|
|
|
20
20
|
var _shared = require("../../shared");
|
|
21
21
|
var _hooks = require("../../hooks");
|
|
22
22
|
var styles = _interopRequireWildcard(require("./styles"));
|
|
23
|
+
var _useFocusTrap = require("../../hooks/useFocusTrap");
|
|
23
24
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
24
25
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
25
26
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -30,9 +31,15 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
30
31
|
var RENDER_REACTIONPICKER_TESTID = 'reactionPicker-testid';
|
|
31
32
|
|
|
32
33
|
/**
|
|
33
|
-
*
|
|
34
|
+
* Test id for ReactionPicker panel div
|
|
34
35
|
*/
|
|
35
36
|
exports.RENDER_REACTIONPICKER_TESTID = RENDER_REACTIONPICKER_TESTID;
|
|
37
|
+
var RENDER_REACTIONPICKERPANEL_TESTID = 'reactionPickerPanel-testid';
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Emoji Picker Controller Id for Accessibility Labels
|
|
41
|
+
*/
|
|
42
|
+
exports.RENDER_REACTIONPICKERPANEL_TESTID = RENDER_REACTIONPICKERPANEL_TESTID;
|
|
36
43
|
var PICKER_CONTROL_ID = 'emoji-picker';
|
|
37
44
|
var popperModifiers = [
|
|
38
45
|
/**
|
|
@@ -81,15 +88,20 @@ var ReactionPicker = /*#__PURE__*/_react.default.memo(function (props) {
|
|
|
81
88
|
_props$tooltipContent = props.tooltipContent,
|
|
82
89
|
tooltipContent = _props$tooltipContent === void 0 ? (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _shared.i18n.messages.addReaction) : _props$tooltipContent,
|
|
83
90
|
emojiPickerSize = props.emojiPickerSize;
|
|
91
|
+
var _useState = (0, _react.useState)(null),
|
|
92
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
93
|
+
triggerRef = _useState2[0],
|
|
94
|
+
setTriggerRef = _useState2[1];
|
|
95
|
+
var _useState3 = (0, _react.useState)(null),
|
|
96
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
97
|
+
popupRef = _useState4[0],
|
|
98
|
+
setPopupRef = _useState4[1];
|
|
84
99
|
/**
|
|
85
100
|
* Container <div /> reference (used by custom hook to detect click outside)
|
|
86
101
|
*/
|
|
87
102
|
var wrapperRef = (0, _react.useRef)(null);
|
|
88
|
-
/**
|
|
89
|
-
* a function you can ask Popper to recompute your tooltip's position. It will directly call the Popper#update method
|
|
90
|
-
*/
|
|
91
103
|
var updatePopper = (0, _react.useRef)();
|
|
92
|
-
var
|
|
104
|
+
var _useState5 = (0, _react.useState)({
|
|
93
105
|
/**
|
|
94
106
|
* Show the picker floating panel
|
|
95
107
|
*/
|
|
@@ -99,27 +111,39 @@ var ReactionPicker = /*#__PURE__*/_react.default.memo(function (props) {
|
|
|
99
111
|
*/
|
|
100
112
|
showFullPicker: !!allowAllEmojis && Array.isArray(pickerQuickReactionEmojiIds) && pickerQuickReactionEmojiIds.length === 0
|
|
101
113
|
}),
|
|
102
|
-
|
|
103
|
-
settings =
|
|
104
|
-
setSettings =
|
|
114
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
115
|
+
settings = _useState6[0],
|
|
116
|
+
setSettings = _useState6[1];
|
|
105
117
|
|
|
106
118
|
/**
|
|
107
119
|
* Custom hook triggers when user clicks outside the reactions picker
|
|
108
120
|
*/
|
|
109
|
-
(0, _hooks.
|
|
110
|
-
onCancel();
|
|
121
|
+
(0, _hooks.useCloseManager)(wrapperRef, function (callbackType) {
|
|
111
122
|
close();
|
|
112
|
-
|
|
123
|
+
onCancel();
|
|
124
|
+
if (triggerRef && callbackType === 'ESCAPE') {
|
|
125
|
+
requestAnimationFrame(function () {
|
|
126
|
+
return triggerRef.focus();
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
}, true, settings.isOpen);
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* add focus lock to popup
|
|
133
|
+
*/
|
|
134
|
+
(0, _useFocusTrap.useFocusTrap)({
|
|
135
|
+
initialFocusRef: null,
|
|
136
|
+
targetRef: popupRef
|
|
137
|
+
});
|
|
113
138
|
|
|
114
139
|
/**
|
|
115
140
|
* Event callback when the picker is closed
|
|
116
141
|
* @param _id Optional id if an emoji button was selected or undefineed if was clicked outside the picker
|
|
117
142
|
*/
|
|
118
143
|
var close = (0, _react.useCallback)(function (_id) {
|
|
119
|
-
setSettings({
|
|
120
|
-
isOpen: false
|
|
121
|
-
|
|
122
|
-
});
|
|
144
|
+
setSettings(_objectSpread(_objectSpread({}, settings), {}, {
|
|
145
|
+
isOpen: false
|
|
146
|
+
}));
|
|
123
147
|
// ufo abort reaction experience
|
|
124
148
|
_analytics.UFO.PickerRender.abort({
|
|
125
149
|
metadata: {
|
|
@@ -128,7 +152,7 @@ var ReactionPicker = /*#__PURE__*/_react.default.memo(function (props) {
|
|
|
128
152
|
reason: 'close dialog'
|
|
129
153
|
}
|
|
130
154
|
});
|
|
131
|
-
}, [
|
|
155
|
+
}, [settings]);
|
|
132
156
|
|
|
133
157
|
/**
|
|
134
158
|
* Event handle rwhen selecting to show the custom emoji icons picker
|
|
@@ -170,25 +194,18 @@ var ReactionPicker = /*#__PURE__*/_react.default.memo(function (props) {
|
|
|
170
194
|
// ufo reactions picker opened success
|
|
171
195
|
_analytics.UFO.PickerRender.success();
|
|
172
196
|
};
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* When picker is opened, re-calculate the picker position
|
|
176
|
-
*/
|
|
177
|
-
(0, _react.useEffect)(function () {
|
|
178
|
-
if (settings.isOpen) {
|
|
179
|
-
if (updatePopper.current) {
|
|
180
|
-
updatePopper.current();
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}, [settings]);
|
|
184
197
|
var wrapperClassName = " ".concat(settings.isOpen ? 'isOpen' : '', " ").concat(miniMode ? 'miniMode' : '', " ").concat(className);
|
|
198
|
+
(0, _react.useLayoutEffect)(function () {
|
|
199
|
+
var _updatePopper$current;
|
|
200
|
+
(_updatePopper$current = updatePopper.current) === null || _updatePopper$current === void 0 ? void 0 : _updatePopper$current.call(updatePopper);
|
|
201
|
+
}, [settings]);
|
|
185
202
|
return (0, _react2.jsx)("div", {
|
|
186
203
|
className: wrapperClassName,
|
|
187
204
|
css: styles.pickerStyle,
|
|
188
205
|
"data-testid": RENDER_REACTIONPICKER_TESTID,
|
|
189
206
|
ref: wrapperRef
|
|
190
207
|
}, (0, _react2.jsx)(_popper.Manager, null, (0, _react2.jsx)(_popper.Reference, null, function (_ref) {
|
|
191
|
-
var
|
|
208
|
+
var _ref2 = _ref.ref;
|
|
192
209
|
return (
|
|
193
210
|
// Render a button to open the <Selector /> panel
|
|
194
211
|
(0, _react2.jsx)(_Trigger.Trigger, {
|
|
@@ -196,27 +213,48 @@ var ReactionPicker = /*#__PURE__*/_react.default.memo(function (props) {
|
|
|
196
213
|
'aria-expanded': settings.isOpen,
|
|
197
214
|
'aria-controls': PICKER_CONTROL_ID
|
|
198
215
|
},
|
|
199
|
-
ref:
|
|
216
|
+
ref: function ref(node) {
|
|
217
|
+
if (node && settings.isOpen) {
|
|
218
|
+
if (typeof _ref2 === 'function') {
|
|
219
|
+
_ref2(node);
|
|
220
|
+
} else {
|
|
221
|
+
_ref2.current = node;
|
|
222
|
+
}
|
|
223
|
+
setTriggerRef(node);
|
|
224
|
+
}
|
|
225
|
+
},
|
|
200
226
|
onClick: onTriggerClick,
|
|
201
227
|
miniMode: miniMode,
|
|
202
228
|
disabled: disabled,
|
|
203
229
|
tooltipContent: settings.isOpen ? null : tooltipContent
|
|
204
230
|
})
|
|
205
231
|
);
|
|
206
|
-
}), (0, _react2.jsx)(_popper.Popper, {
|
|
232
|
+
}), settings.isOpen && (0, _react2.jsx)(_popper.Popper, {
|
|
207
233
|
placement: "bottom-start",
|
|
208
234
|
modifiers: popperModifiers
|
|
209
|
-
}, function (
|
|
210
|
-
var
|
|
211
|
-
style =
|
|
212
|
-
update =
|
|
235
|
+
}, function (_ref3) {
|
|
236
|
+
var _ref4 = _ref3.ref,
|
|
237
|
+
style = _ref3.style,
|
|
238
|
+
update = _ref3.update;
|
|
213
239
|
updatePopper.current = update;
|
|
214
|
-
return (0, _react2.jsx)(
|
|
240
|
+
return (0, _react2.jsx)("div", {
|
|
215
241
|
id: PICKER_CONTROL_ID,
|
|
242
|
+
"data-testid": RENDER_REACTIONPICKERPANEL_TESTID,
|
|
216
243
|
style: _objectSpread({
|
|
217
244
|
zIndex: _constants.layers.layer()
|
|
218
245
|
}, style),
|
|
219
|
-
ref: ref
|
|
246
|
+
ref: function ref(node) {
|
|
247
|
+
if (node) {
|
|
248
|
+
if (typeof _ref4 === 'function') {
|
|
249
|
+
_ref4(node);
|
|
250
|
+
} else {
|
|
251
|
+
_ref4.current = node;
|
|
252
|
+
}
|
|
253
|
+
setPopupRef(node);
|
|
254
|
+
}
|
|
255
|
+
},
|
|
256
|
+
css: styles.popupWrapperStyle,
|
|
257
|
+
tabIndex: 0
|
|
220
258
|
}, (0, _react2.jsx)("div", {
|
|
221
259
|
css: styles.popupStyle
|
|
222
260
|
}, settings.showFullPicker ? (0, _react2.jsx)(_picker.EmojiPicker, {
|
|
@@ -231,7 +269,7 @@ var ReactionPicker = /*#__PURE__*/_react.default.memo(function (props) {
|
|
|
231
269
|
showMore: allowAllEmojis,
|
|
232
270
|
onMoreClick: onSelectMoreClick,
|
|
233
271
|
pickerQuickReactionEmojiIds: pickerQuickReactionEmojiIds
|
|
234
|
-
}))))
|
|
272
|
+
}))));
|
|
235
273
|
})));
|
|
236
274
|
});
|
|
237
275
|
exports.ReactionPicker = ReactionPicker;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.popupStyle = exports.pickerStyle = exports.contentStyle = void 0;
|
|
6
|
+
exports.popupWrapperStyle = exports.popupStyle = exports.pickerStyle = exports.contentStyle = void 0;
|
|
7
7
|
var _react = require("@emotion/react");
|
|
8
8
|
var _constants = require("@atlaskit/theme/constants");
|
|
9
9
|
var _colors = require("@atlaskit/theme/colors");
|
|
@@ -20,6 +20,12 @@ var contentStyle = (0, _react.css)({
|
|
|
20
20
|
display: 'flex'
|
|
21
21
|
});
|
|
22
22
|
exports.contentStyle = contentStyle;
|
|
23
|
+
var popupWrapperStyle = (0, _react.css)({
|
|
24
|
+
':focus': {
|
|
25
|
+
outline: 'none'
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
exports.popupWrapperStyle = popupWrapperStyle;
|
|
23
29
|
var popupStyle = (0, _react.css)({
|
|
24
30
|
background: "var(--ds-surface-overlay, ".concat(_colors.N0, ")"),
|
|
25
31
|
borderRadius: "".concat((0, _constants.borderRadius)(), "px"),
|
|
@@ -23,6 +23,8 @@ var _Reaction = require("../Reaction");
|
|
|
23
23
|
var _ReactionDialog = require("../ReactionDialog");
|
|
24
24
|
var _ReactionPicker = require("../ReactionPicker");
|
|
25
25
|
var styles = _interopRequireWildcard(require("./styles"));
|
|
26
|
+
var _analytics2 = require("../../analytics/analytics");
|
|
27
|
+
var _constants = require("../../shared/constants");
|
|
26
28
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
29
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
28
30
|
/** @jsx jsx */
|
|
@@ -123,9 +125,11 @@ var Reactions = /*#__PURE__*/_react.default.memo(function (_ref) {
|
|
|
123
125
|
if (status !== _types.ReactionStatus.ready) {
|
|
124
126
|
renderTime.current = Date.now();
|
|
125
127
|
} else {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
128
|
+
if ((0, _analytics2.isSampled)(_constants.SAMPLING_RATE_REACTIONS_RENDERED_EXP)) {
|
|
129
|
+
var _renderTime$current;
|
|
130
|
+
_analytics.Analytics.createAndFireSafe(createAnalyticsEvent, _analytics.Analytics.createReactionsRenderedEvent, (_renderTime$current = renderTime.current) !== null && _renderTime$current !== void 0 ? _renderTime$current : Date.now() //renderTime.current can be null during unit test cases
|
|
131
|
+
);
|
|
132
|
+
}
|
|
129
133
|
renderTime.current = undefined;
|
|
130
134
|
}
|
|
131
135
|
}, [createAnalyticsEvent, status]);
|
|
@@ -50,7 +50,7 @@ var ShowMore = function ShowMore(_ref) {
|
|
|
50
50
|
"aria-label": _shared.i18n.messages.moreEmoji.defaultMessage,
|
|
51
51
|
type: "button",
|
|
52
52
|
style: style.button,
|
|
53
|
-
|
|
53
|
+
onClick: onClick,
|
|
54
54
|
"data-testid": RENDER_SHOWMORE_TESTID
|
|
55
55
|
}, (0, _react2.jsx)(_more.default, {
|
|
56
56
|
label: "More"
|
|
@@ -5,7 +5,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.Trigger = exports.RENDER_TOOLTIP_TRIGGER_TESTID = void 0;
|
|
8
|
+
exports.Trigger = exports.RENDER_TRIGGER_BUTTON_TESTID = exports.RENDER_TOOLTIP_TRIGGER_TESTID = void 0;
|
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
10
|
var _react = _interopRequireDefault(require("react"));
|
|
11
11
|
var _react2 = require("@emotion/react");
|
|
@@ -22,6 +22,8 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
22
22
|
*/
|
|
23
23
|
var RENDER_TOOLTIP_TRIGGER_TESTID = 'render-tooltip-trigger';
|
|
24
24
|
exports.RENDER_TOOLTIP_TRIGGER_TESTID = RENDER_TOOLTIP_TRIGGER_TESTID;
|
|
25
|
+
var RENDER_TRIGGER_BUTTON_TESTID = 'render-trigger-button';
|
|
26
|
+
exports.RENDER_TRIGGER_BUTTON_TESTID = RENDER_TRIGGER_BUTTON_TESTID;
|
|
25
27
|
/**
|
|
26
28
|
* Render an emoji button to open the reactions select picker
|
|
27
29
|
*/
|
|
@@ -42,6 +44,7 @@ var Trigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
42
44
|
testId: RENDER_TOOLTIP_TRIGGER_TESTID,
|
|
43
45
|
content: tooltipContent
|
|
44
46
|
}, (0, _react2.jsx)(_standardButton.default, (0, _extends2.default)({
|
|
47
|
+
testId: RENDER_TRIGGER_BUTTON_TESTID,
|
|
45
48
|
css: styles.triggerStyle({
|
|
46
49
|
miniMode: miniMode,
|
|
47
50
|
disabled: disabled
|
|
@@ -39,6 +39,11 @@ var triggerStyle = function triggerStyle(_ref) {
|
|
|
39
39
|
}), {}, {
|
|
40
40
|
'&:hover': {
|
|
41
41
|
background: "".concat("var(--ds-background-neutral-subtle-hovered, ".concat(_colors.N20, ")"))
|
|
42
|
+
},
|
|
43
|
+
'&:focus': {
|
|
44
|
+
boxShadow: "0 0 0 2px ".concat("var(--ds-border-focused, ".concat(_colors.B100, ")")),
|
|
45
|
+
transitionDuration: '0s, 0.2s',
|
|
46
|
+
outline: 'none'
|
|
42
47
|
}
|
|
43
48
|
}));
|
|
44
49
|
};
|
package/dist/cjs/hooks/index.js
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
Object.defineProperty(exports, "
|
|
6
|
+
Object.defineProperty(exports, "useCloseManager", {
|
|
7
7
|
enumerable: true,
|
|
8
8
|
get: function get() {
|
|
9
|
-
return
|
|
9
|
+
return _useCloseManager.useCloseManager;
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
-
var
|
|
12
|
+
var _useCloseManager = require("./useCloseManager");
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useCloseManager = useCloseManager;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
/**
|
|
9
|
+
* Custom hook to detect when user action is outside given container ref or press escape key
|
|
10
|
+
* @param ref ref object to an html element
|
|
11
|
+
* @param callback event callback when detected a click outside the ref object or escape key is pressed
|
|
12
|
+
* @param useCapture (Optional) use capture phase of event. @default false
|
|
13
|
+
* @param enabled (Optional) enable/disable the outside click or escape key press handler. @default true
|
|
14
|
+
*/
|
|
15
|
+
function useCloseManager(ref, callback) {
|
|
16
|
+
var useCapture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
17
|
+
var enabled = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
|
|
18
|
+
(0, _react.useEffect)(function () {
|
|
19
|
+
if (!enabled) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Alert if clicked on outside of element
|
|
25
|
+
*/
|
|
26
|
+
function handleClickOutside(event) {
|
|
27
|
+
if (ref.current && event.target instanceof Node && !ref.current.contains(event.target)) {
|
|
28
|
+
callback('CLICK_OUTSIDE');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function handleKeydown(event) {
|
|
32
|
+
var key = event.key;
|
|
33
|
+
if (key === 'Escape' || key === 'Esc') {
|
|
34
|
+
callback('ESCAPE');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Bind the event listener
|
|
39
|
+
document.addEventListener('click', handleClickOutside, useCapture);
|
|
40
|
+
document.addEventListener('keydown', handleKeydown);
|
|
41
|
+
return function () {
|
|
42
|
+
// Unbind the event listener on clean up
|
|
43
|
+
document.removeEventListener('click', handleClickOutside, useCapture);
|
|
44
|
+
document.removeEventListener('keydown', handleKeydown);
|
|
45
|
+
};
|
|
46
|
+
}, [ref, callback, useCapture, enabled]);
|
|
47
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useFocusTrap = void 0;
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
var _focusTrap = _interopRequireDefault(require("focus-trap"));
|
|
10
|
+
/**
|
|
11
|
+
* Custom hook to add focus trap
|
|
12
|
+
* used for focus trap in ReactionPicker
|
|
13
|
+
* copied from useFocusManager in @atlaskit/popup
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
var useFocusTrap = function useFocusTrap(_ref) {
|
|
17
|
+
var targetRef = _ref.targetRef,
|
|
18
|
+
initialFocusRef = _ref.initialFocusRef;
|
|
19
|
+
(0, _react.useEffect)(function () {
|
|
20
|
+
if (!targetRef) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
var trapConfig = {
|
|
24
|
+
clickOutsideDeactivates: true,
|
|
25
|
+
escapeDeactivates: true,
|
|
26
|
+
initialFocus: initialFocusRef || targetRef,
|
|
27
|
+
fallbackFocus: targetRef,
|
|
28
|
+
returnFocusOnDeactivate: false
|
|
29
|
+
};
|
|
30
|
+
var focusTrap = (0, _focusTrap.default)(targetRef, trapConfig);
|
|
31
|
+
|
|
32
|
+
// wait for the popup to reposition itself before we focus
|
|
33
|
+
var frameId = requestAnimationFrame(function () {
|
|
34
|
+
frameId = null;
|
|
35
|
+
focusTrap.activate();
|
|
36
|
+
});
|
|
37
|
+
return function () {
|
|
38
|
+
if (frameId != null) {
|
|
39
|
+
cancelAnimationFrame(frameId);
|
|
40
|
+
frameId = null;
|
|
41
|
+
}
|
|
42
|
+
focusTrap.deactivate();
|
|
43
|
+
};
|
|
44
|
+
}, [targetRef, initialFocusRef]);
|
|
45
|
+
};
|
|
46
|
+
exports.useFocusTrap = useFocusTrap;
|
package/dist/cjs/i18n/cs.js
CHANGED
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
/* prettier-ignore */
|
|
7
8
|
/**
|
|
8
9
|
* NOTE:
|
|
9
10
|
*
|
|
@@ -12,18 +13,18 @@ exports.default = void 0;
|
|
|
12
13
|
*/
|
|
13
14
|
//Czech
|
|
14
15
|
var _default = {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
16
|
+
"fabric.reactions.add": "Přidat reakci",
|
|
17
|
+
"fabric.reactions.error.unexpected": "Reakce jsou dočasně nedostupné.",
|
|
18
|
+
"fabric.reactions.loading": "Načítání...",
|
|
19
|
+
"fabric.reactions.more.emojis": "Více smajlíků",
|
|
20
|
+
"fabric.reactions.more.info": "Další informace",
|
|
21
|
+
"fabric.reactions.other.reacted.users": "{count, plural, one {a jeden další} few {a {count} další} many {a {count} dalšího} other {a {count} dalších}}",
|
|
22
|
+
"fabric.reactions.reactwithemoji": "Reagovat pomocí smajlíku {emoji}",
|
|
23
|
+
"reactions.dialog.close": "Zavřít",
|
|
24
|
+
"reactions.dialog.left.navigate": "Navigace doleva",
|
|
25
|
+
"reactions.dialog.reactions.count": "{count, plural, one {{count,number} reakce} few {{count,number} reakce} many {{count,number} reakce} other {{count,number} reakcí}}",
|
|
26
|
+
"reactions.dialog.right.navigate": "Navigace doprava",
|
|
27
|
+
"reactions.dialog.viewall": "Podívejte se, kdo reagoval",
|
|
28
|
+
"reactions.dialog.viewall.tooltip": "Zobrazit všechny reakce uživatelů"
|
|
28
29
|
};
|
|
29
30
|
exports.default = _default;
|
package/dist/cjs/i18n/da.js
CHANGED
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
/* prettier-ignore */
|
|
7
8
|
/**
|
|
8
9
|
* NOTE:
|
|
9
10
|
*
|
|
@@ -12,18 +13,18 @@ exports.default = void 0;
|
|
|
12
13
|
*/
|
|
13
14
|
//Danish (Denmark)
|
|
14
15
|
var _default = {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
16
|
+
"fabric.reactions.add": "Tilføj reaktion",
|
|
17
|
+
"fabric.reactions.error.unexpected": "Reaktioner er midlertidigt utilgængelige",
|
|
18
|
+
"fabric.reactions.loading": "Indlæser ...",
|
|
19
|
+
"fabric.reactions.more.emojis": "Flere emojis",
|
|
20
|
+
"fabric.reactions.more.info": "Flere oplysninger",
|
|
21
|
+
"fabric.reactions.other.reacted.users": "{count, plural, one {og én anden} other {og {count} andre}}",
|
|
22
|
+
"fabric.reactions.reactwithemoji": "Reager med emojien {emoji}",
|
|
23
|
+
"reactions.dialog.close": "Luk",
|
|
24
|
+
"reactions.dialog.left.navigate": "Navigation til venstre",
|
|
25
|
+
"reactions.dialog.reactions.count": "{count, plural, one {{count,number} reaktion} other {{count,number} reaktioner}}",
|
|
26
|
+
"reactions.dialog.right.navigate": "Navigation til højre",
|
|
27
|
+
"reactions.dialog.viewall": "Se, hvem der har reageret",
|
|
28
|
+
"reactions.dialog.viewall.tooltip": "Se alle brugerreaktioner"
|
|
28
29
|
};
|
|
29
30
|
exports.default = _default;
|
package/dist/cjs/i18n/de.js
CHANGED
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
+
/* prettier-ignore */
|
|
7
8
|
/**
|
|
8
9
|
* NOTE:
|
|
9
10
|
*
|
|
@@ -12,18 +13,18 @@ exports.default = void 0;
|
|
|
12
13
|
*/
|
|
13
14
|
//German (Germany)
|
|
14
15
|
var _default = {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
16
|
+
"fabric.reactions.add": "Reaktion hinzufügen",
|
|
17
|
+
"fabric.reactions.error.unexpected": "Reaktionen sind vorübergehend nicht verfügbar.",
|
|
18
|
+
"fabric.reactions.loading": "Wird geladen...",
|
|
19
|
+
"fabric.reactions.more.emojis": "Mehr Emojis",
|
|
20
|
+
"fabric.reactions.more.info": "Weitere Informationen",
|
|
21
|
+
"fabric.reactions.other.reacted.users": "{count, plural, one {und ein weiterer} other {und {count} weitere}}",
|
|
22
|
+
"fabric.reactions.reactwithemoji": "Mit {emoji}-Emoji reagieren",
|
|
23
|
+
"reactions.dialog.close": "Schließen",
|
|
24
|
+
"reactions.dialog.left.navigate": "Nach links navigieren",
|
|
25
|
+
"reactions.dialog.reactions.count": "{count, plural, one {{count,number} Reaktion} other {{count,number} Reaktionen}}",
|
|
26
|
+
"reactions.dialog.right.navigate": "Nach rechts navigieren",
|
|
27
|
+
"reactions.dialog.viewall": "Reaktionen ansehen",
|
|
28
|
+
"reactions.dialog.viewall.tooltip": "Alle Benutzerreaktionen anzeigen"
|
|
28
29
|
};
|
|
29
30
|
exports.default = _default;
|