stream-chat-react 11.7.0 → 11.8.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.
Files changed (98) hide show
  1. package/dist/Window-7c2f264c.js +41846 -0
  2. package/dist/browser.full-bundle.js +251 -178
  3. package/dist/browser.full-bundle.js.map +1 -1
  4. package/dist/browser.full-bundle.min.js +4 -4
  5. package/dist/browser.full-bundle.min.js.map +1 -1
  6. package/dist/components/Channel/Channel.d.ts +7 -5
  7. package/dist/components/Channel/Channel.d.ts.map +1 -1
  8. package/dist/components/Channel/Channel.js +97 -56
  9. package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts.map +1 -1
  10. package/dist/components/Channel/hooks/useCreateChannelStateContext.js +3 -1
  11. package/dist/components/ChannelPreview/ChannelPreview.d.ts +0 -16
  12. package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
  13. package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts +0 -5
  14. package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts.map +1 -1
  15. package/dist/components/ChannelPreview/ChannelPreviewMessenger.js +2 -62
  16. package/dist/components/Emojis/index.cjs.js +30 -12
  17. package/dist/components/Message/MessageErrorText.d.ts +9 -0
  18. package/dist/components/Message/MessageErrorText.d.ts.map +1 -0
  19. package/dist/components/Message/MessageErrorText.js +16 -0
  20. package/dist/components/Message/MessageSimple.d.ts.map +1 -1
  21. package/dist/components/Message/MessageSimple.js +17 -5
  22. package/dist/components/Message/MessageText.d.ts.map +1 -1
  23. package/dist/components/Message/MessageText.js +3 -5
  24. package/dist/components/Message/utils.d.ts +1 -0
  25. package/dist/components/Message/utils.d.ts.map +1 -1
  26. package/dist/components/Message/utils.js +5 -0
  27. package/dist/components/MessageActions/MessageActionsBox.d.ts.map +1 -1
  28. package/dist/components/MessageActions/MessageActionsBox.js +1 -1
  29. package/dist/components/MessageBounce/MessageBounceModal.d.ts +8 -0
  30. package/dist/components/MessageBounce/MessageBounceModal.d.ts.map +1 -0
  31. package/dist/components/MessageBounce/MessageBounceModal.js +10 -0
  32. package/dist/components/MessageBounce/MessageBouncePrompt.d.ts +6 -0
  33. package/dist/components/MessageBounce/MessageBouncePrompt.d.ts.map +1 -0
  34. package/dist/components/MessageBounce/MessageBouncePrompt.js +19 -0
  35. package/dist/components/MessageBounce/index.d.ts +3 -0
  36. package/dist/components/MessageBounce/index.d.ts.map +1 -0
  37. package/dist/components/MessageBounce/index.js +2 -0
  38. package/dist/components/MessageInput/hooks/useSubmitHandler.js +1 -1
  39. package/dist/components/MessageList/MessageList.d.ts.map +1 -1
  40. package/dist/components/MessageList/MessageList.js +12 -12
  41. package/dist/components/MessageList/UnreadMessagesNotification.d.ts.map +1 -1
  42. package/dist/components/MessageList/UnreadMessagesNotification.js +2 -2
  43. package/dist/components/MessageList/UnreadMessagesSeparator.js +1 -1
  44. package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
  45. package/dist/components/MessageList/VirtualizedMessageList.js +11 -12
  46. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts +2 -1
  47. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts.map +1 -1
  48. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.js +3 -4
  49. package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.d.ts.map +1 -1
  50. package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.js +3 -3
  51. package/dist/components/MessageList/renderMessages.d.ts +8 -7
  52. package/dist/components/MessageList/renderMessages.d.ts.map +1 -1
  53. package/dist/components/MessageList/renderMessages.js +4 -4
  54. package/dist/context/ChannelActionContext.d.ts +9 -1
  55. package/dist/context/ChannelActionContext.d.ts.map +1 -1
  56. package/dist/context/ChannelStateContext.d.ts +3 -2
  57. package/dist/context/ChannelStateContext.d.ts.map +1 -1
  58. package/dist/context/ComponentContext.d.ts +3 -1
  59. package/dist/context/ComponentContext.d.ts.map +1 -1
  60. package/dist/context/MessageBounceContext.d.ts +12 -0
  61. package/dist/context/MessageBounceContext.d.ts.map +1 -0
  62. package/dist/context/MessageBounceContext.js +37 -0
  63. package/dist/context/index.d.ts +1 -0
  64. package/dist/context/index.d.ts.map +1 -1
  65. package/dist/context/index.js +1 -0
  66. package/dist/css/v2/index.css +1 -1
  67. package/dist/css/v2/index.layout.css +1 -1
  68. package/dist/i18n/Streami18n.d.ts +3 -0
  69. package/dist/i18n/Streami18n.d.ts.map +1 -1
  70. package/dist/i18n/de.json +3 -0
  71. package/dist/i18n/en.json +3 -0
  72. package/dist/i18n/es.json +3 -0
  73. package/dist/i18n/fr.json +3 -0
  74. package/dist/i18n/hi.json +3 -0
  75. package/dist/i18n/it.json +3 -0
  76. package/dist/i18n/ja.json +3 -0
  77. package/dist/i18n/ko.json +3 -0
  78. package/dist/i18n/nl.json +3 -0
  79. package/dist/i18n/pt.json +3 -0
  80. package/dist/i18n/ru.json +3 -0
  81. package/dist/i18n/tr.json +3 -0
  82. package/dist/index.cjs.js +1391 -39772
  83. package/dist/index.d.ts +1 -0
  84. package/dist/index.d.ts.map +1 -1
  85. package/dist/index.js +1 -0
  86. package/dist/scss/v2/{MessageBounceOptions/MessageBounceOptions-layout.scss → MessageBouncePrompt/MessageBouncePrompt-layout.scss} +2 -1
  87. package/dist/scss/v2/{MessageBounceOptions/MessageBounceOptions-theme.scss → MessageBouncePrompt/MessageBouncePrompt-theme.scss} +1 -1
  88. package/dist/scss/v2/index.layout.scss +1 -1
  89. package/dist/scss/v2/index.scss +1 -1
  90. package/dist/types/index.d.ts +2 -0
  91. package/dist/types/index.d.ts.map +1 -0
  92. package/dist/types/index.js +1 -0
  93. package/dist/types/types.d.ts +12 -10
  94. package/dist/types/types.d.ts.map +1 -1
  95. package/dist/version.d.ts +1 -1
  96. package/dist/version.js +1 -1
  97. package/package.json +3 -3
  98. package/dist/icons-7ead3d97.js +0 -3172
@@ -1,3172 +0,0 @@
1
- 'use strict';
2
-
3
- var React = require('react');
4
- var ReactDOM = require('react-dom');
5
- var deepequal = require('react-fast-compare');
6
- var crypto = require('crypto');
7
- var Dayjs = require('dayjs');
8
- var calendar = require('dayjs/plugin/calendar');
9
- var LocalizedFormat = require('dayjs/plugin/localizedFormat');
10
- var i18n = require('i18next');
11
- var updateLocale = require('dayjs/plugin/updateLocale');
12
- var localeData = require('dayjs/plugin/localeData');
13
- var relativeTime = require('dayjs/plugin/relativeTime');
14
- var utc = require('dayjs/plugin/utc');
15
- var timezone = require('dayjs/plugin/timezone');
16
- require('dayjs/locale/de');
17
- require('dayjs/locale/es');
18
- require('dayjs/locale/fr');
19
- require('dayjs/locale/hi');
20
- require('dayjs/locale/it');
21
- require('dayjs/locale/ja');
22
- require('dayjs/locale/ko');
23
- require('dayjs/locale/nl');
24
- require('dayjs/locale/pt');
25
- require('dayjs/locale/ru');
26
- require('dayjs/locale/tr');
27
- require('dayjs/locale/en');
28
-
29
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
30
-
31
- function _interopNamespace(e) {
32
- if (e && e.__esModule) return e;
33
- var n = Object.create(null);
34
- if (e) {
35
- Object.keys(e).forEach(function (k) {
36
- if (k !== 'default') {
37
- var d = Object.getOwnPropertyDescriptor(e, k);
38
- Object.defineProperty(n, k, d.get ? d : {
39
- enumerable: true,
40
- get: function () { return e[k]; }
41
- });
42
- }
43
- });
44
- }
45
- n["default"] = e;
46
- return Object.freeze(n);
47
- }
48
-
49
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
50
- var React__namespace = /*#__PURE__*/_interopNamespace(React);
51
- var ReactDOM__namespace = /*#__PURE__*/_interopNamespace(ReactDOM);
52
- var deepequal__default = /*#__PURE__*/_interopDefaultLegacy(deepequal);
53
- var crypto__default = /*#__PURE__*/_interopDefaultLegacy(crypto);
54
- var Dayjs__default = /*#__PURE__*/_interopDefaultLegacy(Dayjs);
55
- var calendar__default = /*#__PURE__*/_interopDefaultLegacy(calendar);
56
- var LocalizedFormat__default = /*#__PURE__*/_interopDefaultLegacy(LocalizedFormat);
57
- var i18n__default = /*#__PURE__*/_interopDefaultLegacy(i18n);
58
- var updateLocale__default = /*#__PURE__*/_interopDefaultLegacy(updateLocale);
59
- var localeData__default = /*#__PURE__*/_interopDefaultLegacy(localeData);
60
- var relativeTime__default = /*#__PURE__*/_interopDefaultLegacy(relativeTime);
61
- var utc__default = /*#__PURE__*/_interopDefaultLegacy(utc);
62
- var timezone__default = /*#__PURE__*/_interopDefaultLegacy(timezone);
63
-
64
- /******************************************************************************
65
- Copyright (c) Microsoft Corporation.
66
-
67
- Permission to use, copy, modify, and/or distribute this software for any
68
- purpose with or without fee is hereby granted.
69
-
70
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
71
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
72
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
73
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
74
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
75
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
76
- PERFORMANCE OF THIS SOFTWARE.
77
- ***************************************************************************** */
78
-
79
- exports.__assign = function() {
80
- exports.__assign = Object.assign || function __assign(t) {
81
- for (var s, i = 1, n = arguments.length; i < n; i++) {
82
- s = arguments[i];
83
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
84
- }
85
- return t;
86
- };
87
- return exports.__assign.apply(this, arguments);
88
- };
89
-
90
- function __rest(s, e) {
91
- var t = {};
92
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
93
- t[p] = s[p];
94
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
95
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
96
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
97
- t[p[i]] = s[p[i]];
98
- }
99
- return t;
100
- }
101
-
102
- function __awaiter(thisArg, _arguments, P, generator) {
103
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
104
- return new (P || (P = Promise))(function (resolve, reject) {
105
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
106
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
107
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
108
- step((generator = generator.apply(thisArg, _arguments || [])).next());
109
- });
110
- }
111
-
112
- function __generator(thisArg, body) {
113
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
114
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
115
- function verb(n) { return function (v) { return step([n, v]); }; }
116
- function step(op) {
117
- if (f) throw new TypeError("Generator is already executing.");
118
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
119
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
120
- if (y = 0, t) op = [op[0] & 2, t.value];
121
- switch (op[0]) {
122
- case 0: case 1: t = op; break;
123
- case 4: _.label++; return { value: op[1], done: false };
124
- case 5: _.label++; y = op[1]; op = [0]; continue;
125
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
126
- default:
127
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
128
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
129
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
130
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
131
- if (t[2]) _.ops.pop();
132
- _.trys.pop(); continue;
133
- }
134
- op = body.call(thisArg, _);
135
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
136
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
137
- }
138
- }
139
-
140
- function __read(o, n) {
141
- var m = typeof Symbol === "function" && o[Symbol.iterator];
142
- if (!m) return o;
143
- var i = m.call(o), r, ar = [], e;
144
- try {
145
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
146
- }
147
- catch (error) { e = { error: error }; }
148
- finally {
149
- try {
150
- if (r && !r.done && (m = i["return"])) m.call(i);
151
- }
152
- finally { if (e) throw e.error; }
153
- }
154
- return ar;
155
- }
156
-
157
- function __spreadArray(to, from, pack) {
158
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
159
- if (ar || !(i in from)) {
160
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
161
- ar[i] = from[i];
162
- }
163
- }
164
- return to.concat(ar || Array.prototype.slice.call(from));
165
- }
166
-
167
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
168
- var e = new Error(message);
169
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
170
- };
171
-
172
- var ChannelActionContext = React__default["default"].createContext(undefined);
173
- var ChannelActionProvider = function (_a) {
174
- var children = _a.children, value = _a.value;
175
- return (React__default["default"].createElement(ChannelActionContext.Provider, { value: value }, children));
176
- };
177
- var useChannelActionContext = function (componentName) {
178
- var contextValue = React.useContext(ChannelActionContext);
179
- if (!contextValue) {
180
- console.warn("The useChannelActionContext hook was called outside of the ChannelActionContext provider. Make sure this hook is called within a child of the Channel component. The errored call is located in the ".concat(componentName, " component."));
181
- return {};
182
- }
183
- return contextValue;
184
- };
185
- /**
186
- * Typescript currently does not support partial inference, so if ChannelActionContext
187
- * typing is desired while using the HOC withChannelActionContext, the Props for the
188
- * wrapped component must be provided as the first generic.
189
- */
190
- var withChannelActionContext = function (Component) {
191
- var WithChannelActionContextComponent = function (props) {
192
- var channelActionContext = useChannelActionContext();
193
- return React__default["default"].createElement(Component, exports.__assign({}, props, channelActionContext));
194
- };
195
- WithChannelActionContextComponent.displayName = (Component.displayName ||
196
- Component.name ||
197
- 'Component').replace('Base', '');
198
- return WithChannelActionContextComponent;
199
- };
200
-
201
- var ChannelListContext = React.createContext(undefined);
202
- /**
203
- * Context provider for components rendered within the `ChannelList`
204
- */
205
- var ChannelListContextProvider = function (_a) {
206
- var children = _a.children, value = _a.value;
207
- return (React__default["default"].createElement(ChannelListContext.Provider, { value: value }, children));
208
- };
209
- var useChannelListContext = function (componentName) {
210
- var contextValue = React.useContext(ChannelListContext);
211
- if (!contextValue) {
212
- console.warn("The useChannelListContext hook was called outside of the ChannelListContext provider. Make sure this hook is called within the ChannelList component. The errored call is located in the ".concat(componentName, " component."));
213
- return {};
214
- }
215
- return contextValue;
216
- };
217
-
218
- var ChannelStateContext = React__default["default"].createContext(undefined);
219
- var ChannelStateProvider = function (_a) {
220
- var children = _a.children, value = _a.value;
221
- return (React__default["default"].createElement(ChannelStateContext.Provider, { value: value }, children));
222
- };
223
- var useChannelStateContext = function (componentName) {
224
- var contextValue = React.useContext(ChannelStateContext);
225
- if (!contextValue) {
226
- console.warn("The useChannelStateContext hook was called outside of the ChannelStateContext provider. Make sure this hook is called within a child of the Channel component. The errored call is located in the ".concat(componentName, " component."));
227
- return {};
228
- }
229
- return contextValue;
230
- };
231
- /**
232
- * Typescript currently does not support partial inference, so if ChannelStateContext
233
- * typing is desired while using the HOC withChannelStateContext, the Props for the
234
- * wrapped component must be provided as the first generic.
235
- */
236
- var withChannelStateContext = function (Component) {
237
- var WithChannelStateContextComponent = function (props) {
238
- var channelStateContext = useChannelStateContext();
239
- return React__default["default"].createElement(Component, exports.__assign({}, props, channelStateContext));
240
- };
241
- WithChannelStateContextComponent.displayName = (Component.displayName ||
242
- Component.name ||
243
- 'Component').replace('Base', '');
244
- return WithChannelStateContextComponent;
245
- };
246
-
247
- var getDisplayName = function (Component) {
248
- return Component.displayName || Component.name || 'Component';
249
- };
250
-
251
- var ChatContext = React__default["default"].createContext(undefined);
252
- var ChatProvider = function (_a) {
253
- var children = _a.children, value = _a.value;
254
- return (React__default["default"].createElement(ChatContext.Provider, { value: value }, children));
255
- };
256
- var useChatContext = function (componentName) {
257
- var contextValue = React.useContext(ChatContext);
258
- if (!contextValue) {
259
- console.warn("The useChatContext hook was called outside of the ChatContext provider. Make sure this hook is called within a child of the Chat component. The errored call is located in the ".concat(componentName, " component."));
260
- return {};
261
- }
262
- return contextValue;
263
- };
264
- /**
265
- * Typescript currently does not support partial inference so if ChatContext
266
- * typing is desired while using the HOC withChatContext the Props for the
267
- * wrapped component must be provided as the first generic.
268
- */
269
- var withChatContext = function (Component) {
270
- var WithChatContextComponent = function (props) {
271
- var chatContext = useChatContext();
272
- return React__default["default"].createElement(Component, exports.__assign({}, props, chatContext));
273
- };
274
- WithChatContextComponent.displayName = "WithChatContext".concat(getDisplayName(Component));
275
- return WithChatContextComponent;
276
- };
277
-
278
- var ComponentContext = React__default["default"].createContext(undefined);
279
- var ComponentProvider = function (_a) {
280
- var children = _a.children, value = _a.value;
281
- return (React__default["default"].createElement(ComponentContext.Provider, { value: value }, children));
282
- };
283
- var useComponentContext = function (componentName) {
284
- var contextValue = React.useContext(ComponentContext);
285
- if (!contextValue) {
286
- console.warn("The useComponentContext hook was called outside of the ComponentContext provider. Make sure this hook is called within a child of the Channel component. The errored call is located in the ".concat(componentName, " component."));
287
- return {};
288
- }
289
- return contextValue;
290
- };
291
- /**
292
- * Typescript currently does not support partial inference, so if ComponentContext
293
- * typing is desired while using the HOC withComponentContext, the Props for the
294
- * wrapped component must be provided as the first generic.
295
- */
296
- var withComponentContext = function (Component) {
297
- var WithComponentContextComponent = function (props) {
298
- var componentContext = useComponentContext();
299
- return React__default["default"].createElement(Component, exports.__assign({}, props, componentContext));
300
- };
301
- WithComponentContextComponent.displayName = (Component.displayName ||
302
- Component.name ||
303
- 'Component').replace('Base', '');
304
- return WithComponentContextComponent;
305
- };
306
-
307
- var MessageContext = React__default["default"].createContext(undefined);
308
- var MessageProvider = function (_a) {
309
- var children = _a.children, value = _a.value;
310
- return (React__default["default"].createElement(MessageContext.Provider, { value: value }, children));
311
- };
312
- var useMessageContext = function (componentName) {
313
- var contextValue = React.useContext(MessageContext);
314
- if (!contextValue) {
315
- console.warn("The useMessageContext hook was called outside of the MessageContext provider. Make sure this hook is called within the Message's UI component. The errored call is located in the ".concat(componentName, " component."));
316
- return {};
317
- }
318
- return contextValue;
319
- };
320
- /**
321
- * Typescript currently does not support partial inference, so if MessageContext
322
- * typing is desired while using the HOC withMessageContext, the Props for the
323
- * wrapped component must be provided as the first generic.
324
- */
325
- var withMessageContext = function (Component) {
326
- var WithMessageContextComponent = function (props) {
327
- var messageContext = useMessageContext();
328
- return React__default["default"].createElement(Component, exports.__assign({}, props, messageContext));
329
- };
330
- WithMessageContextComponent.displayName = (Component.displayName ||
331
- Component.name ||
332
- 'Component').replace('Base', '');
333
- return WithMessageContextComponent;
334
- };
335
-
336
- var MessageInputContext = React.createContext(undefined);
337
- var MessageInputContextProvider = function (_a) {
338
- var children = _a.children, value = _a.value;
339
- return (React__default["default"].createElement(MessageInputContext.Provider, { value: value }, children));
340
- };
341
- var useMessageInputContext = function (componentName) {
342
- var contextValue = React.useContext(MessageInputContext);
343
- if (!contextValue) {
344
- console.warn("The useMessageInputContext hook was called outside of the MessageInputContext provider. Make sure this hook is called within the MessageInput's UI component. The errored call is located in the ".concat(componentName, " component."));
345
- return {};
346
- }
347
- return contextValue;
348
- };
349
-
350
- var MessageListContext = React.createContext(undefined);
351
- /**
352
- * Context provider for components rendered within the `MessageList`
353
- */
354
- var MessageListContextProvider = function (_a) {
355
- var children = _a.children, value = _a.value;
356
- return (React__default["default"].createElement(MessageListContext.Provider, { value: value }, children));
357
- };
358
- var useMessageListContext = function (componentName) {
359
- var contextValue = React.useContext(MessageListContext);
360
- if (!contextValue) {
361
- console.warn("The useMessageListContext hook was called outside of the MessageListContext provider. Make sure this hook is called within the MessageList component. The errored call is located in the ".concat(componentName, " component."));
362
- return {};
363
- }
364
- return contextValue;
365
- };
366
-
367
- var Cancel$b="Stornieren";var Close$b="Schließen";var Delete$b="Löschen";var Delivered$b="Zugestellt";var Flag$b="Meldung";var Menu$b="Menü";var Mute$b="Stumm schalten";var New$b="Neu";var Pin$b="Pin";var Reply$b="Antworten";var Search$b="Suche";var Send$b="Senden";var Shuffle$b="Mischen";var Thread$b="Thread";var Unmute$b="Stummschaltung aufheben";var Unpin$b="Pin entfernen";var live$b="live";var replyCount_one$b="1 Antwort";var replyCount_other$b="{{ count }} Antworten";var searchResultsCount_one$b="1 Ergebnis";var searchResultsCount_other$b="{{ count }} Ergebnisse";var unreadMessagesSeparatorText_one$9="1 ungelesene Nachricht";var unreadMessagesSeparatorText_other$b="{{count}} ungelesene Nachrichten";var deTranslations = {"Attach files":"Dateien anhängen",Cancel:Cancel$b,"Channel Missing":"Kanal fehlt",Close:Close$b,"Close emoji picker":"Emoji-Picker schließen","Commands matching":"Übereinstimmende Befehle","Connection failure, reconnecting now...":"Verbindungsfehler, Wiederherstellung der Verbindung...",Delete:Delete$b,Delivered:Delivered$b,"Drag your files here":"Ziehen Sie Ihre Dateien hierher","Drag your files here to add to your post":"Ziehen Sie Ihre Dateien hierher, um sie Ihrem Beitrag hinzuzufügen","Edit Message":"Nachricht bearbeiten","Edit message request failed":"Anfrage zum Bearbeiten der Nachricht fehlgeschlagen","Emoji matching":"Emoji passend","Empty message...":"Leere Nachricht...","Error adding flag":"Fehler beim Hinzufügen des Flags","Error connecting to chat, refresh the page to try again.":"Verbindungsfehler zum Chat, Aktualisiere die Seite um es erneut zu versuchen.","Error deleting message":"Fehler beim Löschen der Nachricht","Error fetching reactions":"Fehler beim Laden von Reaktionen","Error marking message unread. Cannot mark unread messages older than the newest 100 channel messages.":"Fehler beim Markieren der Nachricht als ungelesen. Kann keine älteren ungelesenen Nachrichten markieren als die neuesten 100 Kanalnachrichten.","Error muting a user ...":"Fehler beim Stummschalten eines Nutzers.","Error pinning message":"Fehler beim Pinnen der Nachricht","Error removing message pin":"Fehler beim Entfernen der gepinnten Nachricht","Error unmuting a user ...":"Stummschaltung des Nutzers fehlgeschlagen ...","Error uploading file":"Fehler beim Hochladen der Datei","Error uploading image":"Hochladen des Bildes fehlgeschlagen","Error · Unsent":"Fehler nicht gesendet","Error: {{ errorMessage }}":"Fehler: {{ errorMessage }}","Failed to jump to the first unread message":"Fehler beim Springen zur ersten ungelesenen Nachricht",Flag:Flag$b,"Latest Messages":"Neueste Nachrichten","Load more":"Mehr laden","Mark as unread":"Als ungelesen markieren",Menu:Menu$b,"Message Failed · Click to try again":"Nachricht fehlgeschlagen · Klicken, um es erneut zu versuchen","Message Failed · Unauthorized":"Nachricht fehlgeschlagen · Nicht autorisiert","Message deleted":"Nachricht gelöscht","Message has been successfully flagged":"Nachricht wurde erfolgreich gemeldet","Message pinned":"Nachricht gepinnt","Messages have been marked unread.":"Nachrichten wurden als ungelesen markiert.",Mute:Mute$b,New:New$b,"New Messages!":"Neue Nachrichten!","No chats here yet…":"Noch keine Chats hier...","No results found":"keine Ergebnisse gefunden","Nothing yet...":"Noch nichts...","Open emoji picker":"Emoji-Picker öffnen","People matching":"Passende Personen",Pin:Pin$b,"Pinned by":"Gepinnt von",Reply:Reply$b,"Reply to Message":"Auf Nachricht antworten",Search:Search$b,"Searching...":"Suchen...",Send:Send$b,"Send message request failed":"Senden der Nachrichtenanfrage fehlgeschlagen","Sending...":"Senden...",Shuffle:Shuffle$b,"Slow Mode ON":"Slow-Mode EIN","Some of the files will not be accepted":"Einige der Dateien werden nicht akzeptiert","This message was deleted...":"Diese Nachricht wurde gelöscht...",Thread:Thread$b,"Type your message":"Nachricht eingeben",Unmute:Unmute$b,Unpin:Unpin$b,"Unread messages":"Ungelesene Nachrichten","Upload type: \"{{ type }}\" is not allowed":"Upload-Typ: \"{{ type }}\" ist nicht erlaubt","User uploaded content":"Benutzer hochgeladenen Inhalts","Wait until all attachments have uploaded":"Bitte warten, bis alle Anhänge hochgeladen wurden","You have no channels currently":"Du hast momentan noch keinen Channels","You've reached the maximum number of files":"Die maximale Dateianzahl ist erreicht","ban-command-args":"[@Benutzername] [Text]","ban-command-description":"Einen Benutzer verbannen","giphy-command-args":"[Text]","giphy-command-description":"Poste ein zufälliges Gif in den Kanal",live:live$b,"mute-command-args":"[@Benutzername]","mute-command-description":"Stummschalten eines Benutzers",replyCount_one:replyCount_one$b,replyCount_other:replyCount_other$b,searchResultsCount_one:searchResultsCount_one$b,searchResultsCount_other:searchResultsCount_other$b,"this content could not be displayed":"Dieser Inhalt konnte nicht angezeigt werden","unban-command-args":"[@Benutzername]","unban-command-description":"Einen Benutzer entbannen","unmute-command-args":"[@Benutzername]","unmute-command-description":"Stummschaltung eines Benutzers aufheben",unreadMessagesSeparatorText_one:unreadMessagesSeparatorText_one$9,unreadMessagesSeparatorText_other:unreadMessagesSeparatorText_other$b,"{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} und {{moreCount}} Mehr","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} und {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} und {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} mehr","{{ memberCount }} members":"{{ memberCount }} Mitglieder","{{ user }} has been muted":"{{ user }} wurde stummgeschaltet","{{ user }} has been unmuted":"{{ user }} wurde nicht stummgeschaltet","{{ user }} is typing...":"{{ user }} tippt...","{{ users }} and more are typing...":"{{ users }} und mehr tippen...","{{ users }} and {{ user }} are typing...":"{{ users }} und {{ user }} tippen...","{{ watcherCount }} online":"{{ watcherCount }} online","{{count}} unread_one":"{{count}} ungelesen","{{count}} unread_other":"{{count}} ungelesen","🏙 Attachment...":"🏙 Anhang..."};
368
-
369
- var Cancel$a="Cancel";var Close$a="Close";var Delete$a="Delete";var Delivered$a="Delivered";var Flag$a="Flag";var Menu$a="Menu";var Mute$a="Mute";var New$a="New";var Pin$a="Pin";var Reply$a="Reply";var Search$a="Search";var Send$a="Send";var Shuffle$a="Shuffle";var Thread$a="Thread";var Unmute$a="Unmute";var Unpin$a="Unpin";var live$a="live";var replyCount_one$a="1 reply";var replyCount_other$a="{{ count }} replies";var searchResultsCount_one$a="1 result";var searchResultsCount_other$a="{{ count }} results";var unreadMessagesSeparatorText_one$8="1 unread message";var unreadMessagesSeparatorText_other$a="{{count}} unread messages";var enTranslations = {"Attach files":"Attach files",Cancel:Cancel$a,"Channel Missing":"Channel Missing",Close:Close$a,"Close emoji picker":"Close emoji picker","Commands matching":"Commands matching","Connection failure, reconnecting now...":"Connection failure, reconnecting now...",Delete:Delete$a,Delivered:Delivered$a,"Drag your files here":"Drag your files here","Drag your files here to add to your post":"Drag your files here to add to your post","Edit Message":"Edit Message","Edit message request failed":"Edit message request failed","Emoji matching":"Emoji matching","Empty message...":"Empty message...","Error adding flag":"Error adding flag","Error connecting to chat, refresh the page to try again.":"Error connecting to chat, refresh the page to try again.","Error deleting message":"Error deleting message","Error fetching reactions":"Error loading reactions","Error marking message unread. Cannot mark unread messages older than the newest 100 channel messages.":"Error marking message unread. Cannot mark unread messages older than the newest 100 channel messages.","Error muting a user ...":"Error muting a user ...","Error pinning message":"Error pinning message","Error removing message pin":"Error removing message pin","Error unmuting a user ...":"Error unmuting a user ...","Error uploading file":"Error uploading file","Error uploading image":"Error uploading image","Error · Unsent":"Error · Unsent","Error: {{ errorMessage }}":"Error: {{ errorMessage }}","Failed to jump to the first unread message":"Failed to jump to the first unread message",Flag:Flag$a,"Latest Messages":"Latest Messages","Load more":"Load more","Mark as unread":"Mark as unread",Menu:Menu$a,"Message Failed · Click to try again":"Message Failed · Click to try again","Message Failed · Unauthorized":"Message Failed · Unauthorized","Message deleted":"Message deleted","Message has been successfully flagged":"Message has been successfully flagged","Message pinned":"Message pinned","Messages have been marked unread.":"Messages have been marked unread.",Mute:Mute$a,New:New$a,"New Messages!":"New Messages!","No chats here yet…":"No chats here yet…","No results found":"No results found","Nothing yet...":"Nothing yet...","Open emoji picker":"Open emoji picker","People matching":"People matching",Pin:Pin$a,"Pinned by":"Pinned by",Reply:Reply$a,"Reply to Message":"Reply to Message",Search:Search$a,"Searching...":"Searching...",Send:Send$a,"Send message request failed":"Send message request failed","Sending...":"Sending...",Shuffle:Shuffle$a,"Slow Mode ON":"Slow Mode ON","Some of the files will not be accepted":"Some of the files will not be accepted","This message was deleted...":"This message was deleted...",Thread:Thread$a,"Type your message":"Type your message",Unmute:Unmute$a,Unpin:Unpin$a,"Unread messages":"Unread messages","Upload type: \"{{ type }}\" is not allowed":"Upload type: \"{{ type }}\" is not allowed","User uploaded content":"User uploaded content","Wait until all attachments have uploaded":"Wait until all attachments have uploaded","You have no channels currently":"You have no channels currently","You've reached the maximum number of files":"You've reached the maximum number of files",live:live$a,replyCount_one:replyCount_one$a,replyCount_other:replyCount_other$a,searchResultsCount_one:searchResultsCount_one$a,searchResultsCount_other:searchResultsCount_other$a,"this content could not be displayed":"this content could not be displayed",unreadMessagesSeparatorText_one:unreadMessagesSeparatorText_one$8,unreadMessagesSeparatorText_other:unreadMessagesSeparatorText_other$a,"{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} and {{ moreCount }} more","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }}, and {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} and {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} more","{{ memberCount }} members":"{{ memberCount }} members","{{ user }} has been muted":"{{ user }} has been muted","{{ user }} has been unmuted":"{{ user }} has been unmuted","{{ user }} is typing...":"{{ user }} is typing...","{{ users }} and more are typing...":"{{ users }} and more are typing...","{{ users }} and {{ user }} are typing...":"{{ users }} and {{ user }} are typing...","{{ watcherCount }} online":"{{ watcherCount }} online","{{count}} unread_one":"{{count}} unread","{{count}} unread_other":"{{count}} unread","🏙 Attachment...":"🏙 Attachment..."};
370
-
371
- var Cancel$9="Cancelar";var Close$9="Cerca";var Delete$9="Borrar";var Delivered$9="Entregado";var Flag$9="Bandera";var Menu$9="Menú";var Mute$9="Mudo";var New$9="Nuevo";var Pin$9="Alfiler";var Reply$9="Respuesta";var Search$9="Buscar";var Send$9="Enviar";var Shuffle$9="Mezclar";var Thread$9="Hilo";var Unmute$9="Activar sonido";var Unpin$9="Desprender";var live$9="En Vivo";var replyCount_many$4="{{ count }} respuestas";var replyCount_one$9="1 respuesta";var replyCount_other$9="{{ count }} respuestas";var searchResultsCount_many$4="{{ count }} resultados";var searchResultsCount_one$9="1 resultado";var searchResultsCount_other$9="{{ count }} resultados";var unreadMessagesSeparatorText_many$4="{{count}} mensajes no leídos";var unreadMessagesSeparatorText_one$7="1 mensaje no leído";var unreadMessagesSeparatorText_other$9="{{count}} mensajes no leídos";var esTranslations = {"Attach files":"Adjuntar archivos",Cancel:Cancel$9,"Channel Missing":"Falta canal",Close:Close$9,"Close emoji picker":"Cerrar el selector de emojis","Commands matching":"Coincidencia de comandos","Connection failure, reconnecting now...":"Fallo de conexión, reconectando ahora ...",Delete:Delete$9,Delivered:Delivered$9,"Drag your files here":"Arrastra tus archivos aquí","Drag your files here to add to your post":"Arrastra tus archivos aquí para agregarlos a tu publicación","Edit Message":"Editar mensaje","Edit message request failed":"Error al editar la solicitud de mensaje","Emoji matching":"Coincidencia de emoji","Empty message...":"Mensaje vacío ...","Error adding flag":"Error al agregar la bandera","Error connecting to chat, refresh the page to try again.":"Error al conectarse al chat, actualice la página para volver a intentarlo.","Error deleting message":"Error al eliminar el mensaje","Error fetching reactions":"Error al cargar las reacciones","Error marking message unread. Cannot mark unread messages older than the newest 100 channel messages.":"Error al marcar el mensaje como no leído. No se pueden marcar mensajes no leídos más antiguos que los últimos 100 mensajes del canal.","Error muting a user ...":"Error al silenciar a un usuario ...","Error pinning message":"Mensaje de error al fijar","Error removing message pin":"Error al quitar el pin del mensaje","Error unmuting a user ...":"Error al activar el silencio de un usuario ...","Error uploading file":"Error al cargar el archivo","Error uploading image":"Error subiendo imagen","Error · Unsent":"Error · No enviado","Error: {{ errorMessage }}":"Error: {{ errorMessage }}","Failed to jump to the first unread message":"Error al saltar al primer mensaje no leído",Flag:Flag$9,"Latest Messages":"Últimos mensajes","Load more":"Cargar más","Mark as unread":"Marcar como no leído",Menu:Menu$9,"Message Failed · Click to try again":"Mensaje fallido · Haga clic para volver a intentarlo","Message Failed · Unauthorized":"Mensaje fallido · No autorizado","Message deleted":"Mensaje borrado","Message has been successfully flagged":"El mensaje se marcó correctamente","Message pinned":"Mensaje fijado","Messages have been marked unread.":"Los mensajes han sido marcados como no leídos.",Mute:Mute$9,New:New$9,"New Messages!":"¡Nuevos mensajes!","No chats here yet…":"Aún no hay mensajes aquí...","No results found":"No se han encontrado resultados","Nothing yet...":"Nada aún...","Open emoji picker":"Selector de emoji abierto","People matching":"Personas que coinciden",Pin:Pin$9,"Pinned by":"Fijado por",Reply:Reply$9,"Reply to Message":"Responder al mensaje",Search:Search$9,"Searching...":"Buscando...",Send:Send$9,"Send message request failed":"Error al enviar la solicitud de mensaje","Sending...":"Enviando...",Shuffle:Shuffle$9,"Slow Mode ON":"Modo lento activado","Some of the files will not be accepted":"Algunos de los archivos no serán aceptados","This message was deleted...":"Este mensaje fue eliminado ...",Thread:Thread$9,"Type your message":"Escribe tu mensaje",Unmute:Unmute$9,Unpin:Unpin$9,"Unread messages":"Mensajes no leídos","Upload type: \"{{ type }}\" is not allowed":"Tipo de carga: \"{{ type }}\" no está permitido","User uploaded content":"Contenido subido por el usuario","Wait until all attachments have uploaded":"Espere hasta que se hayan cargado todos los archivos adjuntos","You have no channels currently":"Actualmente no tienes canales","You've reached the maximum number of files":"Has alcanzado el número máximo de archivos","ban-command-args":"[@usuario] [texto]","ban-command-description":"Prohibir a un usuario","giphy-command-args":"[texto]","giphy-command-description":"Publicar un gif aleatorio en el canal",live:live$9,"mute-command-args":"[@usuario]","mute-command-description":"Silenciar a un usuario",replyCount_many:replyCount_many$4,replyCount_one:replyCount_one$9,replyCount_other:replyCount_other$9,searchResultsCount_many:searchResultsCount_many$4,searchResultsCount_one:searchResultsCount_one$9,searchResultsCount_other:searchResultsCount_other$9,"this content could not be displayed":"este contenido no se pudo mostrar","unban-command-args":"[@usuario]","unban-command-description":"Quitar la prohibición a un usuario","unmute-command-args":"[@usuario]","unmute-command-description":"Anular el silencio de un usuario",unreadMessagesSeparatorText_many:unreadMessagesSeparatorText_many$4,unreadMessagesSeparatorText_one:unreadMessagesSeparatorText_one$7,unreadMessagesSeparatorText_other:unreadMessagesSeparatorText_other$9,"{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} y {{ moreCount }} más","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} y {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} y {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} más","{{ memberCount }} members":"{{ memberCount }} miembros","{{ user }} has been muted":"{{ user }} ha sido silenciado","{{ user }} has been unmuted":"{{ user }} se ha desactivado","{{ user }} is typing...":"{{ user }} está escribiendo...","{{ users }} and more are typing...":"{{ users }} y más están escribiendo...","{{ users }} and {{ user }} are typing...":"{{ users }} y {{ user }} están escribiendo...","{{ watcherCount }} online":"{{ watcherCount }} en línea","{{count}} unread_many":"{{count}} no leídos","{{count}} unread_one":"{{count}} no leído","{{count}} unread_other":"{{count}} no leídos","🏙 Attachment...":"🏙 Adjunto..."};
372
-
373
- var Cancel$8="Annuler";var Close$8="Fermer";var Delete$8="Supprimer";var Delivered$8="Publié";var Flag$8="Signaler";var Menu$8="Menu";var Mute$8="Muet";var New$8="Nouveaux";var Pin$8="Épingle";var Reply$8="Réponse";var Search$8="Rechercher";var Send$8="Envoyer";var Shuffle$8="Mélanger";var Thread$8="Fil de discussion";var Unmute$8="Désactiver muet";var Unpin$8="Détacher";var live$8="en direct";var replyCount_many$3="{{ count }} réponses";var replyCount_one$8="1 réponse";var replyCount_other$8="{{ count }} réponses";var searchResultsCount_many$3="{{ count }} résultats";var searchResultsCount_one$8="1 résultat";var searchResultsCount_other$8="{{ count }} résultats";var unreadMessagesSeparatorText_many$3="{{count}} messages non lus";var unreadMessagesSeparatorText_one$6="1 message non lu";var unreadMessagesSeparatorText_other$8="{{count}} messages non lus";var frTranslations = {"Attach files":"Pièces jointes",Cancel:Cancel$8,"Channel Missing":"Canal Manquant",Close:Close$8,"Close emoji picker":"Fermer le sélecteur d'emojis","Commands matching":"Correspondance des commandes","Connection failure, reconnecting now...":"Échec de la connexion, reconnexion en cours...",Delete:Delete$8,Delivered:Delivered$8,"Drag your files here":"Glissez vos fichiers ici","Drag your files here to add to your post":"Glissez vos fichiers ici pour les ajouter à votre publication","Edit Message":"Éditer un message","Edit message request failed":"Échec de la demande de modification du message","Emoji matching":"Correspondance emoji","Empty message...":"Message vide...","Error adding flag":"Erreur lors de l'ajout du drapeau","Error connecting to chat, refresh the page to try again.":"Erreur de connexion au chat, rafraîchissez la page pour réessayer.","Error deleting message":"Erreur lors de la suppression du message","Error fetching reactions":"Erreur de chargement des réactions","Error marking message unread. Cannot mark unread messages older than the newest 100 channel messages.":"Erreur lors de la marque du message comme non lu. Impossible de marquer des messages non lus plus anciens que les 100 derniers messages du canal.","Error muting a user ...":"Erreur de mise en sourdine d'un utilisateur ...","Error pinning message":"Erreur d'épinglage du message","Error removing message pin":"Erreur lors de la suppression du code PIN du message","Error unmuting a user ...":"Erreur de désactivation de la fonction sourdine pour un utilisateur ...","Error uploading file":"Erreur lors du téléchargement du fichier","Error uploading image":"Erreur lors de l'envoi de l'image","Error · Unsent":"Erreur - Non envoyé","Error: {{ errorMessage }}":"Erreur : {{ errorMessage }}","Failed to jump to the first unread message":"Échec de saut vers le premier message non lu",Flag:Flag$8,"Latest Messages":"Derniers messages","Load more":"Charger plus","Mark as unread":"Marquer comme non lu",Menu:Menu$8,"Message Failed · Click to try again":"Échec de l'envoi du message - Cliquez pour réessayer","Message Failed · Unauthorized":"Échec de l'envoi du message - Non autorisé","Message deleted":"Message supprimé","Message has been successfully flagged":"Le message a été signalé avec succès","Message pinned":"Message épinglé","Messages have been marked unread.":"Les messages ont été marqués comme non lus.",Mute:Mute$8,New:New$8,"New Messages!":"Nouveaux Messages!","No chats here yet…":"Pas encore de messages ici...","No results found":"Aucun résultat trouvé","Nothing yet...":"Aucun message...","Open emoji picker":"Ouvrez le sélecteur d'emoji","People matching":"Correspondance de personnes",Pin:Pin$8,"Pinned by":"Épinglé par",Reply:Reply$8,"Reply to Message":"Répondre au message",Search:Search$8,"Searching...":"Recherche...",Send:Send$8,"Send message request failed":"Échec de la demande d'envoi de message","Sending...":"Envoi en cours...",Shuffle:Shuffle$8,"Slow Mode ON":"Mode lent activé","Some of the files will not be accepted":"Certains fichiers ne seront pas acceptés","This message was deleted...":"Ce message a été supprimé...",Thread:Thread$8,"Type your message":"Saisissez votre message",Unmute:Unmute$8,Unpin:Unpin$8,"Unread messages":"Messages non lus","Upload type: \"{{ type }}\" is not allowed":"Le type de téléchargement: \"{{ type }}\" n'est pas autorisé","User uploaded content":"Contenu téléchargé par l'utilisateur","Wait until all attachments have uploaded":"Attendez que toutes les pièces jointes soient téléchargées","You have no channels currently":"Vous n'avez actuellement aucun canal","You've reached the maximum number of files":"Vous avez atteint le nombre maximum de fichiers","ban-command-args":"[@nomdutilisateur] [texte]","ban-command-description":"Bannir un utilisateur","giphy-command-args":"[texte]","giphy-command-description":"Poster un GIF aléatoire dans le canal",live:live$8,"mute-command-args":"[@nomdutilisateur]","mute-command-description":"Muter un utilisateur",replyCount_many:replyCount_many$3,replyCount_one:replyCount_one$8,replyCount_other:replyCount_other$8,searchResultsCount_many:searchResultsCount_many$3,searchResultsCount_one:searchResultsCount_one$8,searchResultsCount_other:searchResultsCount_other$8,"this content could not be displayed":"ce contenu n'a pu être affiché","unban-command-args":"[@nomdutilisateur]","unban-command-description":"Débannir un utilisateur","unmute-command-args":"[@nomdutilisateur]","unmute-command-description":"Démuter un utilisateur",unreadMessagesSeparatorText_many:unreadMessagesSeparatorText_many$3,unreadMessagesSeparatorText_one:unreadMessagesSeparatorText_one$6,unreadMessagesSeparatorText_other:unreadMessagesSeparatorText_other$8,"{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} et {{ moreCount }} autres","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} et {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} et {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} supplémentaires","{{ memberCount }} members":"{{ memberCount }} membres","{{ user }} has been muted":"{{ user }} a été mis en sourdine","{{ user }} has been unmuted":"{{ user }} n'est plus en sourdine","{{ user }} is typing...":"{{ user }} is typing...","{{ users }} and more are typing...":"{{ users }} and more are typing...","{{ users }} and {{ user }} are typing...":"{{ users }} and {{ user }} are typing...","{{ watcherCount }} online":"{{ watcherCount }} en ligne","{{count}} unread_many":"{{count}} non lus","{{count}} unread_one":"{{count}} non lu","{{count}} unread_other":"{{count}} non lus","🏙 Attachment...":"🏙 Pièce jointe..."};
374
-
375
- var Cancel$7="रद्द करें";var Close$7="बंद करे";var Delete$7="डिलीट";var Delivered$7="पहुंच गया";var Flag$7="फ्लैग करे";var Menu$7="मेन्यू";var Mute$7="म्यूट करे";var New$7="नए";var Pin$7="पिन";var Reply$7="जवाब दे दो";var Search$7="खोज";var Send$7="भेजे";var Shuffle$7="मिश्रित करें";var Thread$7="रिप्लाई थ्रेड";var Unmute$7="अनम्यूट";var Unpin$7="अनपिन";var live$7="लाइव";var replyCount_one$7="1 रिप्लाई";var replyCount_other$7="{{ count }} रिप्लाई";var searchResultsCount_one$7="1 परिणाम";var searchResultsCount_other$7="{{ count }} परिणाम";var unreadMessagesSeparatorText_one$5="1 अपठित संदेश";var unreadMessagesSeparatorText_other$7="{{count}} अपठित संदेश";var hiTranslations = {"Attach files":"फाइल्स अटैच करे",Cancel:Cancel$7,"Channel Missing":"चैनल उपलब्ध नहीं है",Close:Close$7,"Close emoji picker":"इमोजी पिकर बंद करें","Commands matching":"मेल खाती है","Connection failure, reconnecting now...":"कनेक्शन विफल रहा, अब पुनः कनेक्ट हो रहा है ...",Delete:Delete$7,Delivered:Delivered$7,"Drag your files here":"अपनी फ़ाइलें यहाँ खींचें","Drag your files here to add to your post":"अपनी फ़ाइलें यहाँ खींचें और अपने पोस्ट में जोड़ने के लिए","Edit Message":"मैसेज में बदलाव करे","Edit message request failed":"संदेश संपादित करने का अनुरोध विफल रहा","Emoji matching":"इमोजी मिलान","Empty message...":"खाली संदेश ...","Error adding flag":"ध्वज जोड़ने में त्रुटि","Error connecting to chat, refresh the page to try again.":"चैट से कनेक्ट करने में त्रुटि, पेज को रिफ्रेश करें","Error deleting message":"संदेश हटाने में त्रुटि","Error fetching reactions":"प्रतिक्रियाएँ लोड करने में त्रुटि","Error marking message unread":"संदेश को अपठित चिह्नित करने में त्रुटि","Error marking message unread. Cannot mark unread messages older than the newest 100 channel messages.":"संदेश को अपठित मार्क करने में त्रुटि। सबसे नए 100 चैनल संदेश से पहले के सभी अपठित संदेशों को अपठित मार्क नहीं किया जा सकता है।","Error muting a user ...":"यूजर को म्यूट करने का प्रयास फेल हुआ","Error pinning message":"संदेश को पिन करने में त्रुटि","Error removing message pin":"संदेश पिन निकालने में त्रुटि","Error unmuting a user ...":"यूजर को अनम्यूट करने का प्रयास फेल हुआ","Error uploading file":"फ़ाइल अपलोड करने में त्रुटि","Error uploading image":"छवि अपलोड करने में त्रुटि","Error · Unsent":"फेल","Error: {{ errorMessage }}":"फेल: {{ errorMessage }}","Failed to jump to the first unread message":"पहले अपठित संदेश पर जाने में विफल",Flag:Flag$7,"Latest Messages":"नवीनतम संदेश","Load more":"और लोड करें","Mark as unread":"अपठित चिह्नित करें",Menu:Menu$7,"Message Failed · Click to try again":"मैसेज फ़ैल - पुनः कोशिश करें","Message Failed · Unauthorized":"मैसेज फ़ैल - अनधिकृत","Message deleted":"मैसेज हटा दिया गया","Message has been successfully flagged":"मैसेज को फ्लैग कर दिया गया है","Message pinned":"संदेश पिन किया गया","Messages have been marked unread.":"संदेशों को अपठित चिह्नित किया गया है।",Mute:Mute$7,New:New$7,"New Messages!":"नए मैसेज!","No chats here yet…":"यहां अभी तक कोई चैट नहीं...","No results found":"कोई परिणाम नहीं मिला","Nothing yet...":"कोई मैसेज नहीं है","Open emoji picker":"इमोजी पिकर खोलिये","People matching":"मेल खाते लोग",Pin:Pin$7,"Pinned by":"द्वारा पिन किया गया",Reply:Reply$7,"Reply to Message":"संदेश का जवाब दें",Search:Search$7,"Searching...":"खोज कर...",Send:Send$7,"Send message request failed":"संदेश भेजने का अनुरोध विफल रहा","Sending...":"भेजा जा रहा है",Shuffle:Shuffle$7,"Slow Mode ON":"स्लो मोड ऑन","Some of the files will not be accepted":"कुछ फ़ाइलें स्वीकार नहीं की जाएंगी","This message was deleted...":"मैसेज हटा दिया गया",Thread:Thread$7,"Type your message":"अपना मैसेज लिखे",Unmute:Unmute$7,Unpin:Unpin$7,"Unread messages":"अपठित संदेश","Upload type: \"{{ type }}\" is not allowed":"अपलोड प्रकार: \"{{ type }}\" की अनुमति नहीं है","User uploaded content":"उपयोगकर्ता अपलोड की गई सामग्री","Wait until all attachments have uploaded":"सभी अटैचमेंट अपलोड होने तक प्रतीक्षा करें","You have no channels currently":"आपके पास कोई चैनल नहीं है","You've reached the maximum number of files":"आप अधिकतम फ़ाइलों तक पहुँच गए हैं","ban-command-args":"[@उपयोगकर्तनाम] [पाठ]","ban-command-description":"एक उपयोगकर्ता को प्रतिषेधित करें","giphy-command-args":"[पाठ]","giphy-command-description":"चैनल पर एक क्रॉफिल जीआइएफ पोस्ट करें",live:live$7,"mute-command-args":"[@उपयोगकर्तनाम]","mute-command-description":"एक उपयोगकर्ता को म्यूट करें",replyCount_one:replyCount_one$7,replyCount_other:replyCount_other$7,searchResultsCount_one:searchResultsCount_one$7,searchResultsCount_other:searchResultsCount_other$7,"this content could not be displayed":"यह कॉन्टेंट लोड नहीं हो पाया","unban-command-args":"[@उपयोगकर्तनाम]","unban-command-description":"एक उपयोगकर्ता को प्रतिषेध से मुक्त करें","unmute-command-args":"[@उपयोगकर्तनाम]","unmute-command-description":"एक उपयोगकर्ता को अनम्यूट करें",unreadMessagesSeparatorText_one:unreadMessagesSeparatorText_one$5,unreadMessagesSeparatorText_other:unreadMessagesSeparatorText_other$7,"{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} और {{ moreCount }} और","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} और {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} और {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} और","{{ memberCount }} members":"{{ memberCount }} मेंबर्स","{{ user }} has been muted":"{{ user }} को म्यूट कर दिया गया है","{{ user }} has been unmuted":"{{ user }} को अनम्यूट कर दिया गया है","{{ user }} is typing...":"{{ user }} is typing...","{{ users }} and more are typing...":"{{ users }} and more are typing...","{{ users }} and {{ user }} are typing...":"{{ users }} and {{ user }} are typing...","{{ watcherCount }} online":"{{ watcherCount }} online","{{count}} unread_one":"{{count}} अपठित","{{count}} unread_other":"{{count}} अपठित","🏙 Attachment...":"🏙 अटैचमेंट"};
376
-
377
- var Cancel$6="Annulla";var Close$6="Chiudi";var Delete$6="Cancella";var Delivered$6="Consegnato";var Flag$6="Segnala";var Menu$6="Menù";var Mute$6="Silenzia";var New$6="Nuovo";var Pin$6="Pin";var Reply$6="Rispondere";var Search$6="Ricerca";var Send$6="Invia";var Shuffle$6="Mescolare";var Thread$6="Thread";var Unmute$6="Riattiva le notifiche";var Unpin$6="Sblocca";var live$6="live";var replyCount_many$2="{{ count }} risposte";var replyCount_one$6="Una risposta";var replyCount_other$6="{{ count }} risposte";var searchResultsCount_many$2="{{ count }} risultati";var searchResultsCount_one$6="1 risultato";var searchResultsCount_other$6="{{ count }} risultati";var unreadMessagesSeparatorText_many$2="{{count}} messaggi non letti";var unreadMessagesSeparatorText_one$4="1 messaggio non letto";var unreadMessagesSeparatorText_other$6="{{count}} messaggi non letti";var itTranslations = {"Attach files":"Allega file",Cancel:Cancel$6,"Channel Missing":"Il canale non esiste",Close:Close$6,"Close emoji picker":"Chiudi il selettore di emoji","Commands matching":"Comandi corrispondenti","Connection failure, reconnecting now...":"Connessione fallitta, riconnessione in corso...",Delete:Delete$6,Delivered:Delivered$6,"Drag your files here":"Trascina i tuoi file qui","Drag your files here to add to your post":"Trascina i tuoi file qui per aggiungerli al tuo post","Edit Message":"Modifica messaggio","Edit message request failed":"Richiesta di modifica del messaggio non riuscita","Emoji matching":"Abbinamento emoji","Empty message...":"Message vuoto...","Error adding flag":"Errore durante l'aggiunta del flag","Error connecting to chat, refresh the page to try again.":"Errore di connessione alla chat, aggiorna la pagina per riprovare","Error deleting message":"Errore durante l'eliminazione del messaggio","Error fetching reactions":"Errore nel caricamento delle reazioni","Error marking message unread. Cannot mark unread messages older than the newest 100 channel messages.":"Errore durante la marcatura del messaggio come non letto. Impossibile marcare messaggi non letti più vecchi dei più recenti 100 messaggi del canale.","Error muting a user ...":"Errore silenziando un utente ...","Error pinning message":"Errore durante il blocco del messaggio","Error removing message pin":"Errore durante la rimozione del PIN del messaggio","Error unmuting a user ...":"Errore riattivando le notifiche per l'utente ...","Error uploading file":"Errore durante il caricamento del file","Error uploading image":"Errore durante il caricamento dell'immagine","Error · Unsent":"Errore · Non inviato","Error: {{ errorMessage }}":"Errore: {{ errorMessage }}","Failed to jump to the first unread message":"Impossibile passare al primo messaggio non letto",Flag:Flag$6,"Latest Messages":"Ultimi messaggi","Load more":"Carica di più","Mark as unread":"Contrassegna come non letto",Menu:Menu$6,"Message Failed · Click to try again":"Invio messaggio fallito · Clicca per riprovare","Message Failed · Unauthorized":"Invio messaggio fallito · Non autorizzato","Message deleted":"Messaggio cancellato","Message has been successfully flagged":"Il messaggio é stato segnalato con successo","Message pinned":"Messaggio bloccato","Messages have been marked unread.":"I messaggi sono stati contrassegnati come non letti.",Mute:Mute$6,New:New$6,"New Messages!":"Nuovo messaggio!","No chats here yet…":"Non ci sono ancora messaggi qui...","No results found":"Nessun risultato trovato","Nothing yet...":"Ancora niente...","Open emoji picker":"Apri il selettore dellle emoji","People matching":"Persone che corrispondono",Pin:Pin$6,"Pinned by":"Appuntato da",Reply:Reply$6,"Reply to Message":"Rispondi al messaggio",Search:Search$6,"Searching...":"Ricerca in corso ...",Send:Send$6,"Send message request failed":"Invia messaggio di richiesta non riuscito","Sending...":"Invio in corso...",Shuffle:Shuffle$6,"Slow Mode ON":"Modalità lenta attivata","Some of the files will not be accepted":"Alcuni dei file non saranno accettati","This message was deleted...":"Questo messaggio é stato cancellato",Thread:Thread$6,"Type your message":"Scrivi il tuo messaggio",Unmute:Unmute$6,Unpin:Unpin$6,"Unread messages":"Messaggi non letti","Upload type: \"{{ type }}\" is not allowed":"Tipo di caricamento: \"{{ type }}\" non è consentito","User uploaded content":"Contenuto caricato dall'utente","Wait until all attachments have uploaded":"Attendi il caricamento di tutti gli allegati","You have no channels currently":"Al momento non sono presenti canali","You've reached the maximum number of files":"Hai raggiunto il numero massimo di file","ban-command-args":"[@nomeutente] [testo]","ban-command-description":"Vietare un utente","giphy-command-args":"[testo]","giphy-command-description":"Pubblica un gif casuale sul canale",live:live$6,"mute-command-args":"[@nomeutente]","mute-command-description":"Silenzia un utente",replyCount_many:replyCount_many$2,replyCount_one:replyCount_one$6,replyCount_other:replyCount_other$6,searchResultsCount_many:searchResultsCount_many$2,searchResultsCount_one:searchResultsCount_one$6,searchResultsCount_other:searchResultsCount_other$6,"this content could not be displayed":"questo contenuto non puó essere mostrato","unban-command-args":"[@nomeutente]","unban-command-description":"Togliere il divieto a un utente","unmute-command-args":"[@nomeutente]","unmute-command-description":"Togliere il silenzio a un utente",unreadMessagesSeparatorText_many:unreadMessagesSeparatorText_many$2,unreadMessagesSeparatorText_one:unreadMessagesSeparatorText_one$4,unreadMessagesSeparatorText_other:unreadMessagesSeparatorText_other$6,"{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} e altri {{ moreCount }}","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} e {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} e {{ secondUser }}","{{ imageCount }} more":"+ {{ imageCount }}","{{ memberCount }} members":"{{ memberCount }} membri","{{ user }} has been muted":"{{ user }} é stato silenziato","{{ user }} has been unmuted":"Notifiche riattivate per {{ user }}","{{ user }} is typing...":"{{ user }} is typing...","{{ users }} and more are typing...":"{{ users }} and more are typing...","{{ users }} and {{ user }} are typing...":"{{ users }} and {{ user }} are typing...","{{ watcherCount }} online":"{{ watcherCount }} online","{{count}} unread_many":"{{count}} non letti","{{count}} unread_one":"{{count}} non letto","{{count}} unread_other":"{{count}} non letti","🏙 Attachment...":"🏙 Allegato..."};
378
-
379
- var Cancel$5="キャンセル";var Close$5="閉める";var Delete$5="消去";var Delivered$5="配信しました";var Flag$5="フラグ";var Menu$5="メニュー";var Mute$5="無音";var New$5="新しい";var Pin$5="ピン";var Reply$5="返事";var Search$5="探す";var Send$5="送信";var Shuffle$5="シャッフル";var Thread$5="スレッド";var Unmute$5="無音を解除する";var Unpin$5="ピンを解除する";var live$5="ライブ";var replyCount_one$5="1件の返信";var replyCount_other$5="{{ count }} 返信";var searchResultsCount_one$5="1件の結果";var searchResultsCount_other$5="{{ count }}件の結果";var unreadMessagesSeparatorText_other$5="未読メッセージ {{count}} 件";var jaTranslations = {"Attach files":"ファイルを添付する",Cancel:Cancel$5,"Channel Missing":"チャネルがありません",Close:Close$5,"Close emoji picker":"絵文字ピッカーを閉める","Commands matching":"一致するコマンド","Connection failure, reconnecting now...":"接続が失敗しました。再接続中...",Delete:Delete$5,Delivered:Delivered$5,"Drag your files here":"ここにファイルをドラッグ","Drag your files here to add to your post":"投稿に追加するためにここにファイルをドラッグ","Edit Message":"メッセージを編集","Edit message request failed":"メッセージの編集要求が失敗しました","Emoji matching":"絵文字マッチング","Empty message...":"空のメッセージ...","Error adding flag":"フラグを追加のエラーが発生しました","Error connecting to chat, refresh the page to try again.":"チャットへの接続ができませんでした。ページを更新してください。","Error deleting message":"メッセージを削除するエラーが発生しました","Error fetching reactions":"反応の読み込みエラー","Error marking message unread. Cannot mark unread messages older than the newest 100 channel messages.":"メッセージを未読にする際にエラーが発生しました。最新の100件のチャンネルメッセージより古い未読メッセージはマークできません。","Error muting a user ...":"ユーザーを無音するエラーが発生しました...","Error pinning message":"メッセージをピンのエラーが発生しました","Error removing message pin":"メッセージのピンを削除のエラーが発生しました","Error unmuting a user ...":"ユーザーの無音解除のエラーが発生しました...","Error uploading file":"ファイルをアップロードのエラーが発生しました","Error uploading image":"画像をアップロードのエラーが発生しました","Error · Unsent":"エラー・未送信","Error: {{ errorMessage }}":"エラー: {{ errorMessage }}","Failed to jump to the first unread message":"最初の未読メッセージにジャンプできませんでした",Flag:Flag$5,"Latest Messages":"最新のメッセージ","Load more":"もっと読み込む","Mark as unread":"未読としてマーク",Menu:Menu$5,"Message Failed · Click to try again":"メッセージが失敗しました · クリックして再試行してください","Message Failed · Unauthorized":"メッセージが失敗しました · 許可されていません","Message deleted":"メッセージが削除されました","Message has been successfully flagged":"メッセージに正常にフラグが付けられました","Message pinned":"メッセージにピンが付けられました","Messages have been marked unread.":"メッセージは未読としてマークされました。",Mute:Mute$5,New:New$5,"New Messages!":"新しいメッセージ!","No chats here yet…":"ここにはまだチャットはありません…","No results found":"結果が見つかりません","Nothing yet...":"まだ何もありません...","Open emoji picker":"絵文字ピッカーを開く","People matching":"一致する人",Pin:Pin$5,"Pinned by":"ピンした方",Reply:Reply$5,"Reply to Message":"メッセージに返信",Search:Search$5,"Searching...":"検索中...",Send:Send$5,"Send message request failed":"メッセージ送信リクエストが失敗しました","Sending...":"送信中...",Shuffle:Shuffle$5,"Slow Mode ON":"スローモードオン","Some of the files will not be accepted":"一部のファイルは受け付けられません","This message was deleted...":"このメッセージは削除されました...",Thread:Thread$5,"Type your message":"メッセージを入力してください",Unmute:Unmute$5,Unpin:Unpin$5,"Unread messages":"未読メッセージ","Upload type: \"{{ type }}\" is not allowed":"アップロードタイプ:\"{{ type }}\"は許可されていません","User uploaded content":"ユーザーがアップロードしたコンテンツ","Wait until all attachments have uploaded":"すべての添付ファイルがアップロードされるまでお待ちください","You have no channels currently":"現在チャンネルはありません","You've reached the maximum number of files":"ファイルの最大数に達しました","ban-command-args":"[@ユーザ名] [テキスト]","ban-command-description":"ユーザーを禁止する","giphy-command-args":"[テキスト]","giphy-command-description":"チャンネルにランダムなGIFを投稿する",live:live$5,"mute-command-args":"[@ユーザ名]","mute-command-description":"ユーザーをミュートする",replyCount_one:replyCount_one$5,replyCount_other:replyCount_other$5,searchResultsCount_one:searchResultsCount_one$5,searchResultsCount_other:searchResultsCount_other$5,"this content could not be displayed":"このコンテンツは表示できませんでした","unban-command-args":"[@ユーザ名]","unban-command-description":"ユーザーの禁止を解除する","unmute-command-args":"[@ユーザ名]","unmute-command-description":"ユーザーのミュートを解除する",unreadMessagesSeparatorText_other:unreadMessagesSeparatorText_other$5,"{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} と {{ moreCount }} 他人","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} と {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} と {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} イメージ","{{ memberCount }} members":"{{ memberCount }} メンバー","{{ user }} has been muted":"{{ user }} 無音されています","{{ user }} has been unmuted":"{{ user }} 無音されていません","{{ user }} is typing...":"{{ user }} is typing...","{{ users }} and more are typing...":"{{ users }} and more are typing...","{{ users }} and {{ user }} are typing...":"{{ users }} and {{ user }} are typing...","{{ watcherCount }} online":"{{ watcherCount }} オンライン","{{count}} unread_other":"{{count}} 未読","🏙 Attachment...":"🏙 アタッチメント..."};
380
-
381
- var Cancel$4="취소";var Close$4="닫기";var Delete$4="삭제";var Delivered$4="배달됨";var Flag$4="플래그";var Menu$4="메뉴";var Mute$4="무음";var New$4="새로운";var Pin$4="핀";var Reply$4="답장";var Search$4="찾다";var Send$4="보내다";var Shuffle$4="셔플";var Thread$4="스레드";var Unmute$4="음소거 해제";var Unpin$4="핀 해제";var live$4="라이브";var replyCount_one$4="답장 1개";var replyCount_other$4="{{ count }} 답장";var searchResultsCount_one$4="1개의 결과";var searchResultsCount_other$4="{{ count }}개 결과";var unreadMessagesSeparatorText_other$4="읽지 않은 메시지 {{count}}개";var koTranslations = {"Attach files":"파일 첨부",Cancel:Cancel$4,"Channel Missing":"채널 누락",Close:Close$4,"Close emoji picker":"이모티콘 선택기 닫기","Commands matching":"일치하는 명령","Connection failure, reconnecting now...":"연결 실패, 지금 다시 연결 중...",Delete:Delete$4,Delivered:Delivered$4,"Drag your files here":"여기로 파일을 끌어다 놓으세요","Drag your files here to add to your post":"게시물에 추가하려면 파일을 여기로 끌어다 놓으세요","Edit Message":"메시지 수정","Edit message request failed":"메시지 수정 요청 실패","Emoji matching":"이모티콘 매칭","Empty message...":"빈 메시지...","Error adding flag":"플래그를 추가하는 동안 오류가 발생했습니다.","Error connecting to chat, refresh the page to try again.":"채팅에 연결하는 동안 오류가 발생했습니다. 페이지를 새로고침하여 다시 시도하세요.","Error deleting message":"메시지를 삭제하는 중에 오류가 발생했습니다.","Error fetching reactions":"반응 로딩 오류.","Error marking message unread. Cannot mark unread messages older than the newest 100 channel messages.":"메시지를 읽지 않음으로 표시하는 중 오류가 발생했습니다. 가장 최근 100개의 채널 메시지보다 오래된 읽지 않은 메시지는 표시할 수 없습니다.","Error muting a user ...":"사용자를 음소거하는 중에 오류가 발생했습니다...","Error pinning message":"메시지를 핀하는 중에 오류가 발생했습니다.","Error removing message pin":"메시지 핀을 제거하는 중에 오류가 발생했습니다.","Error unmuting a user ...":"사용자 음소거 해제 중 오류 발생...","Error uploading file":"파일 업로드 오류","Error uploading image":"이미지를 업로드하는 동안 오류가 발생했습니다.","Error · Unsent":"오류 · 전송되지 않음","Error: {{ errorMessage }}":"오류: {{ errorMessage }}","Failed to jump to the first unread message":"첫 번째 읽지 않은 메시지로 이동하지 못했습니다",Flag:Flag$4,"Latest Messages":"최신 메시지","Load more":"더 불러오기","Mark as unread":"읽지 않음으로 표시",Menu:Menu$4,"Message Failed · Click to try again":"메시지 실패 · 다시 시도하려면 클릭하세요.","Message Failed · Unauthorized":"메시지 실패 · 승인되지 않음","Message deleted":"메시지가 삭제되었습니다.","Message has been successfully flagged":"메시지에 플래그가 지정되었습니다.","Message pinned":"메시지 핀했습니다","Messages have been marked unread.":"메시지가 읽지 않음으로 표시되었습니다.",Mute:Mute$4,New:New$4,"New Messages!":"새 메시지!","No chats here yet…":"아직 채팅이 없습니다...","No results found":"검색 결과가 없습니다","Nothing yet...":"아직 아무것도...","Open emoji picker":"이모티콘 선택기 열기","People matching":"일치하는 사람",Pin:Pin$4,"Pinned by":"핀했던 분:",Reply:Reply$4,"Reply to Message":"메시지에 답장",Search:Search$4,"Searching...":"수색...",Send:Send$4,"Send message request failed":"메시지 보내기 요청 실패","Sending...":"배상중...",Shuffle:Shuffle$4,"Slow Mode ON":"슬로우 모드 켜짐","Some of the files will not be accepted":"일부 파일은 허용되지 않을 수 있습니다","This message was deleted...":"이 메시지는 삭제되었습니다...",Thread:Thread$4,"Type your message":"메시지 입력",Unmute:Unmute$4,Unpin:Unpin$4,"Unread messages":"읽지 않은 메시지","Upload type: \"{{ type }}\" is not allowed":"업로드 유형: \"{{ type }}\"은(는) 허용되지 않습니다.","User uploaded content":"사용자 업로드 콘텐츠","Wait until all attachments have uploaded":"모든 첨부 파일이 업로드될 때까지 기다립니다.","You have no channels currently":"현재 채널이 없습니다.","You've reached the maximum number of files":"최대 파일 수에 도달했습니다.","ban-command-args":"[@사용자이름] [텍스트]","ban-command-description":"사용자를 차단","giphy-command-args":"[텍스트]","giphy-command-description":"채널에 무작위 GIF 게시",live:live$4,"mute-command-args":"[@사용자이름]","mute-command-description":"사용자 음소거",replyCount_one:replyCount_one$4,replyCount_other:replyCount_other$4,searchResultsCount_one:searchResultsCount_one$4,searchResultsCount_other:searchResultsCount_other$4,"this content could not be displayed":"이 콘텐츠를 표시할 수 없습니다","unban-command-args":"[@사용자이름]","unban-command-description":"사용자 차단 해제","unmute-command-args":"[@사용자이름]","unmute-command-description":"사용자 음소거 해제",unreadMessagesSeparatorText_other:unreadMessagesSeparatorText_other$4,"{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} 그리고 {{ moreCount }}명 더","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} 그리고 {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} 그리고 {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }}개 더","{{ memberCount }} members":"{{ memberCount }}명","{{ user }} has been muted":"{{ user }} 음소거되었습니다","{{ user }} has been unmuted":"{{ user }} 음소거가 해제되었습니다","{{ user }} is typing...":"{{ user }} is typing...","{{ users }} and more are typing...":"{{ users }} and more are typing...","{{ users }} and {{ user }} are typing...":"{{ users }} and {{ user }} are typing...","{{ watcherCount }} online":"{{ watcherCount }} 온라인","{{count}} unread_other":"{{count}} 읽지 않음","🏙 Attachment...":"🏙 부착..."};
382
-
383
- var Cancel$3="Annuleer";var Close$3="Sluit";var Delete$3="Verwijder";var Delivered$3="Afgeleverd";var Flag$3="Markeer";var Menu$3="Menu";var Mute$3="Mute";var New$3="Nieuwe";var Pin$3="Pin";var Reply$3="Antwoord";var Search$3="Zoeken";var Send$3="Verstuur";var Shuffle$3="Schudden";var Thread$3="Draadje";var Unmute$3="Unmute";var Unpin$3="Losmaken";var live$3="live";var replyCount_one$3="1 antwoord";var replyCount_other$3="{{ count }} antwoorden";var searchResultsCount_one$3="1 resultaat";var searchResultsCount_other$3="{{ count }} resultaten";var unreadMessagesSeparatorText_one$3="1 ongelezen bericht";var unreadMessagesSeparatorText_other$3="{{count}} ongelezen berichten";var nlTranslations = {"Attach files":"Bijlage toevoegen",Cancel:Cancel$3,"Channel Missing":"Kanaal niet gevonden",Close:Close$3,"Close emoji picker":"Sluit de emoji-kiezer","Commands matching":"Bijpassende opdrachten","Connection failure, reconnecting now...":"Probleem met de verbinding, opnieuw verbinding maken...",Delete:Delete$3,Delivered:Delivered$3,"Drag your files here":"Sleep je bestanden hier naartoe","Drag your files here to add to your post":"Sleep je bestanden hier naartoe om aan je bericht toe te voegen","Edit Message":"Pas bericht aan","Edit message request failed":"Verzoek om bericht bewerken mislukt","Emoji matching":"Emoji-overeenkomsten","Empty message...":"Leeg bericht...","Error adding flag":"Fout bij toevoegen van vlag","Error connecting to chat, refresh the page to try again.":"Fout bij het verbinden, ververs de pagina om nogmaals te proberen","Error deleting message":"Fout bij verwijderen van bericht","Error fetching reactions":"Fout bij het laden van reacties","Error marking message unread. Cannot mark unread messages older than the newest 100 channel messages.":"Fout bij markeren van bericht als ongelezen. Kan geen oudere ongelezen berichten markeren dan de nieuwste 100 kanaalberichten.","Error muting a user ...":"Fout bij het muten van de gebruiker","Error pinning message":"Fout bij vastzetten van bericht","Error removing message pin":"Fout bij verwijderen van berichtpin","Error unmuting a user ...":"Fout bij het unmuten van de gebruiker","Error uploading file":"Fout bij uploaden bestand","Error uploading image":"Fout bij uploaden afbeelding","Error · Unsent":"Error: · niet verzonden","Error: {{ errorMessage }}":"Error: {{ errorMessage }}","Failed to jump to the first unread message":"Niet gelukt om naar het eerste ongelezen bericht te springen",Flag:Flag$3,"Latest Messages":"Laatste berichten","Load more":"Meer laden","Mark as unread":"Markeren als ongelezen",Menu:Menu$3,"Message Failed · Click to try again":"Bericht mislukt, klik om het nogmaals te proberen","Message Failed · Unauthorized":"Bericht mislukt, ongeautoriseerd","Message deleted":"Bericht verwijderd","Message has been successfully flagged":"Bericht is succesvol gemarkeerd","Message pinned":"Bericht vastgezet","Messages have been marked unread.":"Berichten zijn gemarkeerd als ongelezen.",Mute:Mute$3,New:New$3,"New Messages!":"Nieuwe Berichten!","No chats here yet…":"Nog geen chats hier...","No results found":"Geen resultaten gevonden","Nothing yet...":"Nog niets ...","Open emoji picker":"Open emojipicker","People matching":"Mensen die matchen",Pin:Pin$3,"Pinned by":"Vastgemaakt door",Reply:Reply$3,"Reply to Message":"Antwoord op bericht",Search:Search$3,"Searching...":"Zoeken...",Send:Send$3,"Send message request failed":"Verzoek om bericht te verzenden mislukt","Sending...":"Aan het verzenden...",Shuffle:Shuffle$3,"Slow Mode ON":"Langzame modus aan","Some of the files will not be accepted":"Sommige bestanden zullen niet worden geaccepteerd","This message was deleted...":"Dit bericht was verwijderd",Thread:Thread$3,"Type your message":"Type je bericht",Unmute:Unmute$3,Unpin:Unpin$3,"Unread messages":"Ongelezen berichten","Upload type: \"{{ type }}\" is not allowed":"Uploadtype: \"{{ type }}\" is niet toegestaan","User uploaded content":"Gebruikersgeüploade inhoud","Wait until all attachments have uploaded":"Wacht tot alle bijlagen zijn geüpload","You have no channels currently":"Er zijn geen chats beschikbaar","You've reached the maximum number of files":"Je hebt het maximale aantal bestanden bereikt","ban-command-args":"[@gebruikersnaam] [tekst]","ban-command-description":"Een gebruiker verbannen","giphy-command-args":"[tekst]","giphy-command-description":"Plaats een willekeurige gif in het kanaal",live:live$3,"mute-command-args":"[@gebruikersnaam]","mute-command-description":"Een gebruiker dempen",replyCount_one:replyCount_one$3,replyCount_other:replyCount_other$3,searchResultsCount_one:searchResultsCount_one$3,searchResultsCount_other:searchResultsCount_other$3,"this content could not be displayed":"Deze inhoud kan niet weergegeven worden","unban-command-args":"[@gebruikersnaam]","unban-command-description":"Een gebruiker debannen","unmute-command-args":"[@gebruikersnaam]","unmute-command-description":"Een gebruiker niet meer dempen",unreadMessagesSeparatorText_one:unreadMessagesSeparatorText_one$3,unreadMessagesSeparatorText_other:unreadMessagesSeparatorText_other$3,"{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} en {{ moreCount }} meer","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} en {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} en {{ secondUser }}","{{ imageCount }} more":"+{{ imageCount }}","{{ memberCount }} members":"{{ memberCount }} deelnemers","{{ user }} has been muted":"{{ user }} is muted","{{ user }} has been unmuted":"{{ user }} is unmuted","{{ user }} is typing...":"{{ user }} is typing...","{{ users }} and more are typing...":"{{ users }} and more are typing...","{{ users }} and {{ user }} are typing...":"{{ users }} and {{ user }} are typing...","{{ watcherCount }} online":"{{ watcherCount }} online","{{count}} unread_one":"{{count}} ongelezen","{{count}} unread_other":"{{count}} ongelezen","🏙 Attachment...":"🏙 Bijlage..."};
384
-
385
- var Cancel$2="Cancelar";var Close$2="Fechar";var Delete$2="Excluir";var Delivered$2="Entregue";var Flag$2="Reportar";var Menu$2="Menu";var Mute$2="Mudo";var New$2="Novo";var Pin$2="Fixar";var Reply$2="Responder";var Search$2="Procurar";var Send$2="Enviar";var Shuffle$2="Embaralhar";var Thread$2="Fio";var Unmute$2="Ativar som";var Unpin$2="Liberar";var live$2="ao vivo";var replyCount_many$1="{{ count }} respostas";var replyCount_one$2="1 resposta";var replyCount_other$2="{{ count }} respostas";var searchResultsCount_many$1="{{ count }} resultados";var searchResultsCount_one$2="1 resultado";var searchResultsCount_other$2="{{ count }} resultados";var unreadMessagesSeparatorText_many$1="{{count}} mensagens não lidas";var unreadMessagesSeparatorText_one$2="1 mensagem não lida";var unreadMessagesSeparatorText_other$2="{{count}} mensagens não lidas";var ptTranslations = {"Attach files":"Anexar arquivos",Cancel:Cancel$2,"Channel Missing":"Canal ausente",Close:Close$2,"Close emoji picker":"Fechar seletor de emoji","Commands matching":"Comandos correspondentes","Connection failure, reconnecting now...":"Falha de conexão, reconectando agora...",Delete:Delete$2,Delivered:Delivered$2,"Drag your files here":"Arraste seus arquivos aqui","Drag your files here to add to your post":"Arraste seus arquivos aqui para adicionar ao seu post","Edit Message":"Editar Mensagem","Edit message request failed":"O pedido de edição da mensagem falhou","Emoji matching":"Emoji correspondente","Empty message...":"Mensagem vazia...","Error adding flag":"Erro ao reportar","Error connecting to chat, refresh the page to try again.":"Erro ao conectar ao bate-papo, atualize a página para tentar novamente.","Error deleting message":"Erro ao deletar mensagem","Error fetching reactions":"Erro ao carregar reacções","Error marking message unread. Cannot mark unread messages older than the newest 100 channel messages.":"Erro ao marcar a mensagem como não lida. Não é possível marcar mensagens não lidas mais antigas do que as 100 mensagens mais recentes do canal.","Error muting a user ...":"Erro ao silenciar um usuário...","Error pinning message":"Erro ao fixar mensagem","Error removing message pin":"Erro ao remover o PIN da mensagem","Error unmuting a user ...":"Erro ao ativar o som de um usuário...","Error uploading file":"Erro ao enviar arquivo","Error uploading image":"Erro ao carregar a imagem","Error · Unsent":"Erro · Não enviado","Error: {{ errorMessage }}":"Erro: {{ errorMessage }}","Failed to jump to the first unread message":"Falha ao pular para a primeira mensagem não lida",Flag:Flag$2,"Latest Messages":"Mensagens mais recentes","Load more":"Carregar mais","Mark as unread":"Marcar como não lida",Menu:Menu$2,"Message Failed · Click to try again":"A mensagem falhou · Clique para tentar novamente","Message Failed · Unauthorized":"A mensagem falhou · não autorizado","Message deleted":"Mensagem apagada","Message has been successfully flagged":"A mensagem foi reportada com sucesso","Message pinned":"Mensagem fixada","Messages have been marked unread.":"Mensagens foram marcadas como não lidas.",Mute:Mute$2,New:New$2,"New Messages!":"Novas mensagens!","No chats here yet…":"Ainda não há conversas aqui...","No results found":"Nenhum resultado encontrado","Nothing yet...":"Nada ainda...","Open emoji picker":"Abrir seletor de emoji","People matching":"Pessoas correspondentes",Pin:Pin$2,"Pinned by":"Fixado por",Reply:Reply$2,"Reply to Message":"Responder a mensagem",Search:Search$2,"Searching...":"Procurando...",Send:Send$2,"Send message request failed":"O pedido de envio de mensagem falhou","Sending...":"Enviando...",Shuffle:Shuffle$2,"Slow Mode ON":"Modo lento LIGADO","Some of the files will not be accepted":"Alguns dos arquivos não serão aceitos","This message was deleted...":"Esta mensagem foi excluída...",Thread:Thread$2,"Type your message":"Digite sua mensagem",Unmute:Unmute$2,Unpin:Unpin$2,"Unread messages":"Mensagens não lidas","Upload type: \"{{ type }}\" is not allowed":"Tipo de upload: \"{{ type }}\" não é permitido","User uploaded content":"Conteúdo enviado pelo usuário","Wait until all attachments have uploaded":"Espere até que todos os anexos tenham sido carregados","You have no channels currently":"Você não tem canais atualmente","You've reached the maximum number of files":"Você atingiu o número máximo de arquivos","ban-command-args":"[@nomedeusuário] [texto]","ban-command-description":"Banir um usuário","giphy-command-args":"[texto]","giphy-command-description":"Postar um gif aleatório no canal",live:live$2,"mute-command-args":"[@nomedeusuário]","mute-command-description":"Silenciar um usuário",replyCount_many:replyCount_many$1,replyCount_one:replyCount_one$2,replyCount_other:replyCount_other$2,searchResultsCount_many:searchResultsCount_many$1,searchResultsCount_one:searchResultsCount_one$2,searchResultsCount_other:searchResultsCount_other$2,"this content could not be displayed":"este conteúdo não pôde ser exibido","unban-command-args":"[@nomedeusuário]","unban-command-description":"Desbanir um usuário","unmute-command-args":"[@nomedeusuário]","unmute-command-description":"Retirar o silenciamento de um usuário",unreadMessagesSeparatorText_many:unreadMessagesSeparatorText_many$1,unreadMessagesSeparatorText_one:unreadMessagesSeparatorText_one$2,unreadMessagesSeparatorText_other:unreadMessagesSeparatorText_other$2,"{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} e mais {{ moreCount }}","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} e {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} e {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} mais","{{ memberCount }} members":"{{ memberCount }} membros","{{ user }} has been muted":"{{ user }} foi silenciado","{{ user }} has been unmuted":"{{ user }} foi reativado","{{ user }} is typing...":"{{ user }} is typing...","{{ users }} and more are typing...":"{{ users }} and more are typing...","{{ users }} and {{ user }} are typing...":"{{ users }} and {{ user }} are typing...","{{ watcherCount }} online":"{{ watcherCount }} online","{{count}} unread_many":"{{count}} não lidos","{{count}} unread_one":"{{count}} não lido","{{count}} unread_other":"{{count}} não lidos","🏙 Attachment...":"🏙 Anexo..."};
386
-
387
- var Cancel$1="Отмена";var Close$1="Закрыть";var Delete$1="Удалить";var Delivered$1="Отправлено";var Flag$1="Пожаловаться";var Menu$1="Меню";var Mute$1="Отключить уведомления";var New$1="Новые";var Pin$1="Штырь";var Reply$1="Отвечать";var Search$1="Поиск";var Send$1="Отправить";var Shuffle$1="Перемешать";var Thread$1="Ветка";var Unmute$1="Включить уведомления";var Unpin$1="Открепить";var live$1="В прямом эфире";var replyCount_few="{{ count }} ответов";var replyCount_many="{{ count }} ответов";var replyCount_one$1="1 ответ";var replyCount_other$1="{{ count }} ответов";var searchResultsCount_few="{{ count }} результата";var searchResultsCount_many="{{ count }} результатов";var searchResultsCount_one$1="1 результат";var searchResultsCount_other$1="{{ count }} результатов";var unreadMessagesSeparatorText_few="1 непрочитанное сообщения";var unreadMessagesSeparatorText_many="{{count}} непрочитанных сообщений";var unreadMessagesSeparatorText_one$1="1 непрочитанное сообщение";var unreadMessagesSeparatorText_other$1="{{count}} непрочитанных сообщений";var ruTranslations = {"Attach files":"Прикрепить файлы",Cancel:Cancel$1,"Channel Missing":"Канал не найден",Close:Close$1,"Close emoji picker":"Закрыть окно выбора смайлов","Commands matching":"Соответствие команд","Connection failure, reconnecting now...":"Ошибка соединения, переподключение...",Delete:Delete$1,Delivered:Delivered$1,"Drag your files here":"Перетащите ваши файлы сюда","Drag your files here to add to your post":"Перетащите ваши файлы сюда, чтобы добавить их в ваш пост","Edit Message":"Редактировать сообщение","Edit message request failed":"Не удалось изменить запрос сообщения","Emoji matching":"Соответствие эмодзи","Empty message...":"Пустое сообщение...","Error adding flag":"Ошибка добавления флага","Error connecting to chat, refresh the page to try again.":"Ошибка подключения к чату, обновите страницу чтобы попробовать снова.","Error deleting message":"Ошибка при удалении сообщения","Error fetching reactions":"Ошибка при загрузке реакций","Error marking message unread. Cannot mark unread messages older than the newest 100 channel messages.":"Ошибка при отметке сообщения как непрочитанного. Невозможно отметить как непрочитанные сообщения старше последних 100 сообщений в канале.","Error muting a user ...":"Ошибка отключения уведомлений от пользователя...","Error pinning message":"Сообщение об ошибке при закреплении","Error removing message pin":"Ошибка при удалении булавки сообщения","Error unmuting a user ...":"Ошибка включения уведомлений...","Error uploading file":"Ошибка при загрузке файла","Error uploading image":"Ошибка загрузки изображения","Error · Unsent":"Ошибка · Не отправлено","Error: {{ errorMessage }}":"Ошибка: {{ errorMessage }}","Failed to jump to the first unread message":"Не удалось перейти к первому непрочитанному сообщению",Flag:Flag$1,"Latest Messages":"Последние сообщения","Load more":"Загрузить больше","Mark as unread":"Отметить как непрочитанное",Menu:Menu$1,"Message Failed · Click to try again":"Ошибка отправки сообщения · Нажмите чтобы повторить","Message Failed · Unauthorized":"Ошибка отправки сообщения · Неавторизованный","Message deleted":"Сообщение удалено","Message has been successfully flagged":"Жалоба на сообщение была принята","Message pinned":"Сообщение закреплено","Messages have been marked unread.":"Сообщения были отмечены как непрочитанные.",Mute:Mute$1,New:New$1,"New Messages!":"Новые сообщения!","No chats here yet…":"Здесь еще нет чатов...","No results found":"результаты не найдены","Nothing yet...":"Пока ничего нет...","Open emoji picker":"Выбрать emoji","People matching":"Соответствующие люди",Pin:Pin$1,"Pinned by":"Закреплено",Reply:Reply$1,"Reply to Message":"Ответить на сообщение",Search:Search$1,"Searching...":"Ищем...",Send:Send$1,"Send message request failed":"Не удалось отправить запрос на отправку сообщения","Sending...":"Отправка...",Shuffle:Shuffle$1,"Slow Mode ON":"Медленный режим включен","Some of the files will not be accepted":"Некоторые файлы не будут приняты","This message was deleted...":"Сообщение было удалено...",Thread:Thread$1,"Type your message":"Ваше сообщение",Unmute:Unmute$1,Unpin:Unpin$1,"Unread messages":"Непрочитанные сообщения","Upload type: \"{{ type }}\" is not allowed":"Тип загрузки: \"{{ type }}\" не разрешен","User uploaded content":"Пользователь загрузил контент","Wait until all attachments have uploaded":"Подождите, пока все вложения загрузятся","You have no channels currently":"У вас нет каналов в данный момент","You've reached the maximum number of files":"Вы достигли максимального количества файлов","ban-command-args":"[@имяпользователя] [текст]","ban-command-description":"Заблокировать пользователя","giphy-command-args":"[текст]","giphy-command-description":"Опубликовать случайную GIF-анимацию в канале",live:live$1,"mute-command-args":"[@имяпользователя]","mute-command-description":"Выключить микрофон у пользователя",replyCount_few:replyCount_few,replyCount_many:replyCount_many,replyCount_one:replyCount_one$1,replyCount_other:replyCount_other$1,searchResultsCount_few:searchResultsCount_few,searchResultsCount_many:searchResultsCount_many,searchResultsCount_one:searchResultsCount_one$1,searchResultsCount_other:searchResultsCount_other$1,"this content could not be displayed":"Этот контент не может быть отображен в данный момент","unban-command-args":"[@имяпользователя]","unban-command-description":"Разблокировать пользователя","unmute-command-args":"[@имяпользователя]","unmute-command-description":"Включить микрофон у пользователя",unreadMessagesSeparatorText_few:unreadMessagesSeparatorText_few,unreadMessagesSeparatorText_many:unreadMessagesSeparatorText_many,unreadMessagesSeparatorText_one:unreadMessagesSeparatorText_one$1,unreadMessagesSeparatorText_other:unreadMessagesSeparatorText_other$1,"{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} и {{ moreCount }} еще","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} и {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} и {{ secondUser }}","{{ imageCount }} more":"Ещё {{ imageCount }}","{{ memberCount }} members":"{{ memberCount }} члены","{{ user }} has been muted":"Вы отписались от уведомлений от {{ user }}","{{ user }} has been unmuted":"Уведомления от {{ user }} были включены","{{ user }} is typing...":"{{ user }} is typing...","{{ users }} and more are typing...":"{{ users }} and more are typing...","{{ users }} and {{ user }} are typing...":"{{ users }} and {{ user }} are typing...","{{ watcherCount }} online":"{{ watcherCount }} в сети","{{count}} unread_few":"{{count}} непрочитанных","{{count}} unread_many":"{{count}} непрочитанных","{{count}} unread_one":"{{count}} непрочитанное","{{count}} unread_other":"{{count}} непрочитанных","🏙 Attachment...":"🏙 Вложение..."};
388
-
389
- var Cancel="İptal";var Close="Kapat";var Delete="Sil";var Delivered="İletildi";var Flag="Bayrak";var Menu="Menü";var Mute="Sessiz";var New="Yeni";var Pin="Toplu iğne";var Reply="Cevapla";var Search="Arama";var Send="Gönder";var Shuffle="Karıştır";var Thread="Konu";var Unmute="Sesini aç";var Unpin="Sabitlemeyi kaldır";var live="canlı";var replyCount_one="1 cevap";var replyCount_other="{{ count }} cevaplar";var searchResultsCount_one="1 sonuç";var searchResultsCount_other="{{ count }} sonuç";var unreadMessagesSeparatorText_one="1 okunmamış mesaj";var unreadMessagesSeparatorText_other="{{count}} okunmamış mesaj";var trTranslations = {"Attach files":"Dosya ekle",Cancel:Cancel,"Channel Missing":"Kanal bulunamıyor",Close:Close,"Close emoji picker":"Emoji seçiciyi kapat","Commands matching":"Eşleşen komutlar","Connection failure, reconnecting now...":"Bağlantı hatası, tekrar bağlanılıyor...",Delete:Delete,Delivered:Delivered,"Drag your files here":"Dosyalarınızı buraya sürükleyin","Drag your files here to add to your post":"Gönderinize eklemek için dosyalarınızı buraya sürükleyin","Edit Message":"Mesajı Düzenle","Edit message request failed":"Mesaj düzenleme isteği başarısız oldu","Emoji matching":"Emoji eşleştirme","Empty message...":"Boş mesaj...","Error adding flag":"Bayrak eklenirken hata oluştu","Error connecting to chat, refresh the page to try again.":"Bağlantı hatası, sayfayı yenileyip tekrar deneyin.","Error deleting message":"Mesaj silinirken hata oluştu","Error fetching reactions":"Reaksiyonlar alınırken hata oluştu","Error marking message unread. Cannot mark unread messages older than the newest 100 channel messages.":"Mesajı okunmamış olarak işaretleme hatası. En yeni 100 kanal mesajından daha eski okunmamış mesajları işaretleme yapılamaz.","Error muting a user ...":"Kullanıcıyı sessize alırken hata oluştu ...","Error pinning message":"Mesaj sabitlenirken hata oluştu","Error removing message pin":"Mesaj PIN'i kaldırılırken hata oluştu","Error unmuting a user ...":"Kullanıcının sesini açarken hata oluştu ...","Error uploading file":"Dosya yüklenirken hata oluştu","Error uploading image":"Resmi yüklerken hata","Error · Unsent":"Hata · Gönderilemedi","Error: {{ errorMessage }}":"Hata: {{ errorMessage }}","Failed to jump to the first unread message":"İlk okunmamış mesaja atlamada hata oluştu",Flag:Flag,"Latest Messages":"Son Mesajlar","Load more":"Daha fazla yükle","Mark as unread":"Okunmamış olarak işaretle",Menu:Menu,"Message Failed · Click to try again":"Mesaj Başarısız · Tekrar denemek için tıklayın","Message Failed · Unauthorized":"Mesaj Başarısız · Yetkisiz","Message deleted":"Mesaj silindi","Message has been successfully flagged":"Mesaj başarıyla bayraklandı","Message pinned":"Mesaj sabitlendi","Messages have been marked unread.":"Mesajlar okunmamış olarak işaretlendi.",Mute:Mute,New:New,"New Messages!":"Yeni Mesajlar!","No chats here yet…":"Henüz burada sohbet yok...","No results found":"Sonuç bulunamadı","Nothing yet...":"Şimdilik hiçbir şey...","Open emoji picker":"Emoji klavyesini aç","People matching":"Eşleşen kişiler",Pin:Pin,"Pinned by":"Sabitleyen",Reply:Reply,"Reply to Message":"Mesajı Cevapla",Search:Search,"Searching...":"Aranıyor...",Send:Send,"Send message request failed":"Mesaj gönderme isteği başarısız oldu","Sending...":"Gönderiliyor...",Shuffle:Shuffle,"Slow Mode ON":"Yavaş Mod Açık","Some of the files will not be accepted":"Bazı dosyalar kabul edilmeyecektir","This message was deleted...":"Bu mesaj silindi",Thread:Thread,"Type your message":"Mesajınızı yazın",Unmute:Unmute,Unpin:Unpin,"Unread messages":"Okunmamış mesajlar","Upload type: \"{{ type }}\" is not allowed":"Yükleme türü: \"{{ type }}\" izin verilmez","User uploaded content":"Kullanıcı tarafından yüklenen içerik","Wait until all attachments have uploaded":"Tüm ekler yüklenene kadar bekleyin","You have no channels currently":"Henüz kanalınız yok","You've reached the maximum number of files":"Maksimum dosya sayısına ulaştınız","ban-command-args":"[@kullanıcıadı] [metin]","ban-command-description":"Bir kullanıcıyı yasakla","giphy-command-args":"[metin]","giphy-command-description":"Rastgele bir gif'i kanala gönder",live:live,"mute-command-args":"[@kullanıcıadı]","mute-command-description":"Bir kullanıcının sesini kapat",replyCount_one:replyCount_one,replyCount_other:replyCount_other,searchResultsCount_one:searchResultsCount_one,searchResultsCount_other:searchResultsCount_other,"this content could not be displayed":"bu içerik gösterilemiyor","unban-command-args":"[@kullanıcıadı]","unban-command-description":"Bir kullanıcının yasağını kaldır","unmute-command-args":"[@kullanıcıadı]","unmute-command-description":"Bir kullanıcının sesini aç",unreadMessagesSeparatorText_one:unreadMessagesSeparatorText_one,unreadMessagesSeparatorText_other:unreadMessagesSeparatorText_other,"{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} ve {{ moreCount }} daha","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }}, ve {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} ve {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} adet daha","{{ memberCount }} members":"{{ memberCount }} üyeler","{{ user }} has been muted":"{{ user }} sessize alındı","{{ user }} has been unmuted":"{{ user }} sesi açıldı","{{ user }} is typing...":"{{ user }} is typing...","{{ users }} and more are typing...":"{{ users }} and more are typing...","{{ users }} and {{ user }} are typing...":"{{ users }} and {{ user }} are typing...","{{ watcherCount }} online":"{{ watcherCount }} çevrimiçi","{{count}} unread_one":"{{count}} okunmamış","{{count}} unread_other":"{{count}} okunmamış","🏙 Attachment...":"🏙 Ek..."};
390
-
391
- var defaultNS = 'translation';
392
- var defaultLng = 'en';
393
- Dayjs__default["default"].extend(updateLocale__default["default"]);
394
- Dayjs__default["default"].extend(utc__default["default"]);
395
- Dayjs__default["default"].extend(timezone__default["default"]);
396
- Dayjs__default["default"].updateLocale('de', {
397
- calendar: {
398
- lastDay: '[gestern um] LT',
399
- lastWeek: '[letzten] dddd [um] LT',
400
- nextDay: '[morgen um] LT',
401
- nextWeek: 'dddd [um] LT',
402
- sameDay: '[heute um] LT',
403
- sameElse: 'L',
404
- },
405
- });
406
- Dayjs__default["default"].updateLocale('es', {
407
- calendar: {
408
- lastDay: '[ayer a las] LT',
409
- lastWeek: '[pasado] dddd [a] LT',
410
- nextDay: '[mañana a] LT',
411
- nextWeek: 'dddd [a] LT',
412
- sameDay: '[hoy a las] LT',
413
- sameElse: 'L',
414
- },
415
- });
416
- Dayjs__default["default"].updateLocale('fr', {
417
- calendar: {
418
- lastDay: '[Hier à] LT',
419
- lastWeek: 'dddd [dernier à] LT',
420
- nextDay: '[Demain à] LT',
421
- nextWeek: 'dddd [à] LT',
422
- sameDay: '[Aujourd’hui à] LT',
423
- sameElse: 'L',
424
- },
425
- });
426
- Dayjs__default["default"].updateLocale('hi', {
427
- calendar: {
428
- lastDay: '[कल] LT',
429
- lastWeek: '[पिछले] dddd, LT',
430
- nextDay: '[कल] LT',
431
- nextWeek: 'dddd, LT',
432
- sameDay: '[आज] LT',
433
- sameElse: 'L',
434
- },
435
- // Hindi notation for meridiems are quite fuzzy in practice. While there exists
436
- // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
437
- meridiem: function (hour) {
438
- if (hour < 4) {
439
- return 'रात';
440
- }
441
- else if (hour < 10) {
442
- return 'सुबह';
443
- }
444
- else if (hour < 17) {
445
- return 'दोपहर';
446
- }
447
- else if (hour < 20) {
448
- return 'शाम';
449
- }
450
- else {
451
- return 'रात';
452
- }
453
- },
454
- meridiemHour: function (hour, meridiem) {
455
- if (hour === 12) {
456
- hour = 0;
457
- }
458
- if (meridiem === 'रात') {
459
- return hour < 4 ? hour : hour + 12;
460
- }
461
- else if (meridiem === 'सुबह') {
462
- return hour;
463
- }
464
- else if (meridiem === 'दोपहर') {
465
- return hour >= 10 ? hour : hour + 12;
466
- }
467
- else if (meridiem === 'शाम') {
468
- return hour + 12;
469
- }
470
- return hour;
471
- },
472
- meridiemParse: /रात|सुबह|दोपहर|शाम/,
473
- });
474
- Dayjs__default["default"].updateLocale('it', {
475
- calendar: {
476
- lastDay: '[Ieri alle] LT',
477
- lastWeek: '[lo scorso] dddd [alle] LT',
478
- nextDay: '[Domani alle] LT',
479
- nextWeek: 'dddd [alle] LT',
480
- sameDay: '[Oggi alle] LT',
481
- sameElse: 'L',
482
- },
483
- });
484
- Dayjs__default["default"].updateLocale('ja', {
485
- calendar: {
486
- lastDay: '[昨日] LT',
487
- lastWeek: 'dddd LT',
488
- nextDay: '[明日] LT',
489
- nextWeek: '[次の] dddd LT',
490
- sameDay: '[今日] LT',
491
- sameElse: 'L',
492
- },
493
- });
494
- Dayjs__default["default"].updateLocale('ko', {
495
- calendar: {
496
- lastDay: '[어제] LT',
497
- lastWeek: '[지난] dddd LT',
498
- nextDay: '[내일] LT',
499
- nextWeek: 'dddd LT',
500
- sameDay: '[오늘] LT',
501
- sameElse: 'L',
502
- },
503
- });
504
- Dayjs__default["default"].updateLocale('nl', {
505
- calendar: {
506
- lastDay: '[gisteren om] LT',
507
- lastWeek: '[afgelopen] dddd [om] LT',
508
- nextDay: '[morgen om] LT',
509
- nextWeek: 'dddd [om] LT',
510
- sameDay: '[vandaag om] LT',
511
- sameElse: 'L',
512
- },
513
- });
514
- Dayjs__default["default"].updateLocale('pt', {
515
- calendar: {
516
- lastDay: '[ontem às] LT',
517
- lastWeek: 'dddd [passada às] LT',
518
- nextDay: '[amanhã às] LT',
519
- nextWeek: 'dddd [às] LT',
520
- sameDay: '[hoje às] LT',
521
- sameElse: 'L',
522
- },
523
- });
524
- Dayjs__default["default"].updateLocale('ru', {
525
- calendar: {
526
- lastDay: '[Вчера, в] LT',
527
- nextDay: '[Завтра, в] LT',
528
- sameDay: '[Сегодня, в] LT',
529
- },
530
- });
531
- Dayjs__default["default"].updateLocale('tr', {
532
- calendar: {
533
- lastDay: '[dün] LT',
534
- lastWeek: '[geçen] dddd [saat] LT',
535
- nextDay: '[yarın saat] LT',
536
- nextWeek: '[gelecek] dddd [saat] LT',
537
- sameDay: '[bugün saat] LT',
538
- sameElse: 'L',
539
- },
540
- });
541
- var en_locale = {
542
- formats: {},
543
- months: [
544
- 'January',
545
- 'February',
546
- 'March',
547
- 'April',
548
- 'May',
549
- 'June',
550
- 'July',
551
- 'August',
552
- 'September',
553
- 'October',
554
- 'November',
555
- 'December',
556
- ],
557
- relativeTime: {},
558
- weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
559
- };
560
- // Type guards to check DayJs
561
- var isDayJs = function (dateTimeParser) {
562
- return dateTimeParser.extend !== undefined;
563
- };
564
- var supportsTz = function (dateTimeParser) {
565
- return dateTimeParser.tz !== undefined;
566
- };
567
- /**
568
- * Wrapper around [i18next](https://www.i18next.com/) class for Stream related translations.
569
- * Instance of this class should be provided to Chat component to handle translations.
570
- * Stream provides following list of in-built translations:
571
- * 1. English (en)
572
- * 2. Dutch (nl)
573
- * 3. Russian (ru)
574
- * 4. Turkish (tr)
575
- * 5. French (fr)
576
- * 6. Italian (it)
577
- * 7. Hindi (hi)
578
- * 8. Spanish (es)
579
- * 9. Portuguese (pt)
580
- * 10. German (de)
581
- * 11. Japanese (ja)
582
- * 12. Korean (ko)
583
- *
584
- * Simplest way to start using chat components in one of the in-built languages would be following:
585
- *
586
- * ```
587
- * const i18n = new Streami18n({ language 'nl' });
588
- * <Chat client={chatClient} i18nInstance={i18n}>
589
- * ...
590
- * </Chat>
591
- * ```
592
- *
593
- * If you would like to override certain keys in in-built translation.
594
- * UI will be automatically updated in this case.
595
- *
596
- * ```
597
- * const i18n = new Streami18n({
598
- * language: 'nl',
599
- * translationsForLanguage: {
600
- * 'Nothing yet...': 'Nog Niet ...',
601
- * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',
602
- * }
603
- * });
604
- *
605
- * If you would like to register additional languages, use registerTranslation. You can add as many languages as you want:
606
- *
607
- * i18n.registerTranslation('zh', {
608
- * 'Nothing yet...': 'Nog Niet ...',
609
- * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',
610
- * });
611
- *
612
- * <Chat client={chatClient} i18nInstance={i18n}>
613
- * ...
614
- * </Chat>
615
- * ```
616
- *
617
- * You can use the same function to add whole new language as well.
618
- *
619
- * ```
620
- * const i18n = new Streami18n();
621
- *
622
- * i18n.registerTranslation('mr', {
623
- * 'Nothing yet...': 'काहीही नाही ...',
624
- * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} आणि {{ secondUser }} टीपी करत आहेत ',
625
- * });
626
- *
627
- * // Make sure to call setLanguage to reflect new language in UI.
628
- * i18n.setLanguage('it');
629
- * <Chat client={chatClient} i18nInstance={i18n}>
630
- * ...
631
- * </Chat>
632
- * ```
633
- *
634
- * ## Datetime translations
635
- *
636
- * Stream react chat components uses [dayjs](https://day.js.org/en/) internally by default to format datetime stamp.
637
- * e.g., in ChannelPreview, MessageContent components.
638
- * Dayjs has locale support as well - https://day.js.org/docs/en/i18n/i18n
639
- * Dayjs is a lightweight alternative to Momentjs with the same modern API.
640
- *
641
- * Dayjs provides locale config for plenty of languages, you can check the whole list of locale configs at following url
642
- * https://github.com/iamkun/dayjs/tree/dev/src/locale
643
- *
644
- * You can either provide the dayjs locale config while registering
645
- * language with Streami18n (either via constructor or registerTranslation()) or you can provide your own Dayjs or Moment instance
646
- * to Streami18n constructor, which will be then used internally (using the language locale) in components.
647
- *
648
- * 1. Via language registration
649
- *
650
- * e.g.,
651
- * ```
652
- * const i18n = new Streami18n({
653
- * language: 'nl',
654
- * dayjsLocaleConfigForLanguage: {
655
- * months: [...],
656
- * monthsShort: [...],
657
- * calendar: {
658
- * sameDay: ...'
659
- * }
660
- * }
661
- * });
662
- * ```
663
- *
664
- * Similarly, you can add locale config for moment while registering translation via `registerTranslation` function.
665
- *
666
- * e.g.,
667
- * ```
668
- * const i18n = new Streami18n();
669
- *
670
- * i18n.registerTranslation(
671
- * 'mr',
672
- * {
673
- * 'Nothing yet...': 'काहीही नाही ...',
674
- * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} आणि {{ secondUser }} टीपी करत आहेत ',
675
- * },
676
- * {
677
- * months: [...],
678
- * monthsShort: [...],
679
- * calendar: {
680
- * sameDay: ...'
681
- * }
682
- * }
683
- * );
684
- *```
685
- * 2. Provide your own Moment object
686
- *
687
- * ```js
688
- * import 'moment/locale/nl';
689
- * import 'moment/locale/it';
690
- * // or if you want to include all locales
691
- * import 'moment/min/locales';
692
- *
693
- * import Moment from moment
694
- *
695
- * const i18n = new Streami18n({
696
- * language: 'nl',
697
- * DateTimeParser: Moment
698
- * })
699
- * ```
700
- *
701
- * 3. Provide your own Dayjs object
702
- *
703
- * ```js
704
- * import Dayjs from 'dayjs'
705
- *
706
- * import 'dayjs/locale/nl';
707
- * import 'dayjs/locale/it';
708
- * // or if you want to include all locales
709
- * import 'dayjs/min/locales';
710
- *
711
- * const i18n = new Streami18n({
712
- * language: 'nl',
713
- * DateTimeParser: Dayjs
714
- * })
715
- * ```
716
- * If you would like to stick with english language for datetimes in Stream components, you can set `disableDateTimeTranslations` to true.
717
- *
718
- */
719
- var defaultStreami18nOptions = {
720
- DateTimeParser: Dayjs__default["default"],
721
- dayjsLocaleConfigForLanguage: null,
722
- debug: false,
723
- disableDateTimeTranslations: false,
724
- language: 'en',
725
- logger: function (message) { return console.warn(message); },
726
- };
727
- var defaultTranslatorFunction = function (key) { return key; };
728
- var Streami18n = /** @class */ (function () {
729
- /**
730
- * Constructor accepts following options:
731
- * - language (String) default: 'en'
732
- * Language code e.g., en, tr
733
- *
734
- * - translationsForLanguage (object)
735
- * Translations object. Please check src/i18n/en.json for example.
736
- *
737
- * - disableDateTimeTranslations (boolean) default: false
738
- * Disable translations for date-times
739
- *
740
- * - debug (boolean) default: false
741
- * Enable debug mode in internal i18n class
742
- *
743
- * - logger (function) default: () => {}
744
- * Logger function to log warnings/errors from this class
745
- *
746
- * - dayjsLocaleConfigForLanguage (object) default: 'enConfig'
747
- * [Config object](https://momentjs.com/docs/#/i18n/changing-locale/) for internal moment object,
748
- * corresponding to language (param)
749
- *
750
- * - DateTimeParser (function) Moment or Dayjs instance/function.
751
- * Make sure to load all the required locales in this Moment or Dayjs instance that you will be provide to Streami18n
752
- *
753
- * @param {*} options
754
- */
755
- function Streami18n(options) {
756
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
757
- if (options === void 0) { options = {}; }
758
- var _this = this;
759
- this.i18nInstance = i18n__default["default"].createInstance();
760
- this.Dayjs = null;
761
- this.setLanguageCallback = function () { return null; };
762
- this.initialized = false;
763
- this.t = defaultTranslatorFunction;
764
- this.translations = {
765
- de: (_a = {}, _a[defaultNS] = deTranslations, _a),
766
- en: (_b = {}, _b[defaultNS] = enTranslations, _b),
767
- es: (_c = {}, _c[defaultNS] = esTranslations, _c),
768
- fr: (_d = {}, _d[defaultNS] = frTranslations, _d),
769
- hi: (_e = {}, _e[defaultNS] = hiTranslations, _e),
770
- it: (_f = {}, _f[defaultNS] = itTranslations, _f),
771
- ja: (_g = {}, _g[defaultNS] = jaTranslations, _g),
772
- ko: (_h = {}, _h[defaultNS] = koTranslations, _h),
773
- nl: (_j = {}, _j[defaultNS] = nlTranslations, _j),
774
- pt: (_k = {}, _k[defaultNS] = ptTranslations, _k),
775
- ru: (_l = {}, _l[defaultNS] = ruTranslations, _l),
776
- tr: (_m = {}, _m[defaultNS] = trTranslations, _m),
777
- };
778
- /**
779
- * dayjs.defineLanguage('nl') also changes the global locale. We don't want to do that
780
- * when user calls registerTranslation() function. So instead we will store the locale configs
781
- * given to registerTranslation() function in `dayjsLocales` object, and register the required locale
782
- * with moment, when setLanguage is called.
783
- * */
784
- this.dayjsLocales = {};
785
- this.localeExists = function (language) {
786
- if (_this.isCustomDateTimeParser)
787
- return true;
788
- return Object.keys(Dayjs__default["default"].Ls).indexOf(language) > -1;
789
- };
790
- this.validateCurrentLanguage = function () {
791
- var availableLanguages = Object.keys(_this.translations);
792
- if (availableLanguages.indexOf(_this.currentLanguage) === -1) {
793
- _this.logger("Streami18n: '".concat(_this.currentLanguage, "' language is not registered.") +
794
- " Please make sure to call streami18n.registerTranslation('".concat(_this.currentLanguage, "', {...}) or ") +
795
- "use one the built-in supported languages - ".concat(_this.getAvailableLanguages()));
796
- _this.currentLanguage = defaultLng;
797
- }
798
- };
799
- /** Returns an instance of i18next used within this class instance */
800
- this.geti18Instance = function () { return _this.i18nInstance; };
801
- /** Returns list of available languages. */
802
- this.getAvailableLanguages = function () { return Object.keys(_this.translations); };
803
- /** Returns all the translation dictionary for all inbuilt-languages */
804
- this.getTranslations = function () { return _this.translations; };
805
- var finalOptions = exports.__assign(exports.__assign({}, defaultStreami18nOptions), options);
806
- // Prepare the i18next configuration.
807
- this.logger = finalOptions.logger;
808
- this.currentLanguage = finalOptions.language;
809
- this.DateTimeParser = finalOptions.DateTimeParser;
810
- this.timezone = finalOptions.timezone;
811
- try {
812
- if (this.DateTimeParser && isDayJs(this.DateTimeParser)) {
813
- this.DateTimeParser.extend(LocalizedFormat__default["default"]);
814
- this.DateTimeParser.extend(calendar__default["default"]);
815
- this.DateTimeParser.extend(localeData__default["default"]);
816
- this.DateTimeParser.extend(relativeTime__default["default"]);
817
- }
818
- }
819
- catch (error) {
820
- throw Error("Streami18n: Looks like you wanted to provide Dayjs instance, but something went wrong while adding plugins ".concat(error));
821
- }
822
- this.isCustomDateTimeParser = !!options.DateTimeParser;
823
- var translationsForLanguage = finalOptions.translationsForLanguage;
824
- if (translationsForLanguage) {
825
- this.translations[this.currentLanguage] = (_o = {},
826
- _o[defaultNS] = this.translations[this.currentLanguage] &&
827
- this.translations[this.currentLanguage][defaultNS]
828
- ? exports.__assign(exports.__assign({}, this.translations[this.currentLanguage][defaultNS]), translationsForLanguage) : translationsForLanguage,
829
- _o);
830
- }
831
- // If translations don't exist for given language, then set it as empty object.
832
- if (!this.translations[this.currentLanguage]) {
833
- this.translations[this.currentLanguage] = (_p = {},
834
- _p[defaultNS] = {},
835
- _p);
836
- }
837
- this.i18nextConfig = {
838
- debug: finalOptions.debug,
839
- fallbackLng: false,
840
- interpolation: { escapeValue: false },
841
- keySeparator: false,
842
- lng: this.currentLanguage,
843
- nsSeparator: false,
844
- };
845
- if (finalOptions.parseMissingKeyHandler) {
846
- this.i18nextConfig.parseMissingKeyHandler = finalOptions.parseMissingKeyHandler;
847
- }
848
- this.validateCurrentLanguage();
849
- var dayjsLocaleConfigForLanguage = finalOptions.dayjsLocaleConfigForLanguage;
850
- if (dayjsLocaleConfigForLanguage) {
851
- this.addOrUpdateLocale(this.currentLanguage, exports.__assign({}, dayjsLocaleConfigForLanguage));
852
- }
853
- else if (!this.localeExists(this.currentLanguage)) {
854
- this.logger("Streami18n: Streami18n(...) - Locale config for ".concat(this.currentLanguage, " does not exist in momentjs.") +
855
- "Please import the locale file using \"import 'moment/locale/".concat(this.currentLanguage, "';\" in your app or ") +
856
- "register the locale config with Streami18n using registerTranslation(language, translation, customDayjsLocale)");
857
- }
858
- this.tDateTimeParser = function (timestamp) {
859
- var language = finalOptions.disableDateTimeTranslations || !_this.localeExists(_this.currentLanguage)
860
- ? defaultLng
861
- : _this.currentLanguage;
862
- if (isDayJs(_this.DateTimeParser)) {
863
- return supportsTz(_this.DateTimeParser)
864
- ? _this.DateTimeParser(timestamp).tz(_this.timezone).locale(language)
865
- : _this.DateTimeParser(timestamp).locale(language);
866
- }
867
- if (supportsTz(_this.DateTimeParser) && _this.timezone) {
868
- return _this.DateTimeParser(timestamp).tz(_this.timezone).locale(language);
869
- }
870
- return _this.DateTimeParser(timestamp).locale(language);
871
- };
872
- }
873
- /**
874
- * Initializes the i18next instance with configuration (which enables natural language as default keys)
875
- */
876
- Streami18n.prototype.init = function () {
877
- return __awaiter(this, void 0, void 0, function () {
878
- var _a, error_1;
879
- return __generator(this, function (_b) {
880
- switch (_b.label) {
881
- case 0:
882
- this.validateCurrentLanguage();
883
- _b.label = 1;
884
- case 1:
885
- _b.trys.push([1, 3, , 4]);
886
- _a = this;
887
- return [4 /*yield*/, this.i18nInstance.init(exports.__assign(exports.__assign({}, this.i18nextConfig), { lng: this.currentLanguage, resources: this.translations }))];
888
- case 2:
889
- _a.t = _b.sent();
890
- this.initialized = true;
891
- return [3 /*break*/, 4];
892
- case 3:
893
- error_1 = _b.sent();
894
- this.logger("Something went wrong with init: ".concat(JSON.stringify(error_1)));
895
- return [3 /*break*/, 4];
896
- case 4: return [2 /*return*/, {
897
- t: this.t,
898
- tDateTimeParser: this.tDateTimeParser,
899
- }];
900
- }
901
- });
902
- });
903
- };
904
- /**
905
- * Returns current version translator function.
906
- */
907
- Streami18n.prototype.getTranslators = function () {
908
- return __awaiter(this, void 0, void 0, function () {
909
- return __generator(this, function (_a) {
910
- switch (_a.label) {
911
- case 0:
912
- if (!!this.initialized) return [3 /*break*/, 2];
913
- if (this.dayjsLocales[this.currentLanguage]) {
914
- this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);
915
- }
916
- return [4 /*yield*/, this.init()];
917
- case 1: return [2 /*return*/, _a.sent()];
918
- case 2: return [2 /*return*/, {
919
- t: this.t,
920
- tDateTimeParser: this.tDateTimeParser,
921
- }];
922
- }
923
- });
924
- });
925
- };
926
- Streami18n.prototype.registerTranslation = function (language, translation, customDayjsLocale) {
927
- var _a;
928
- if (!translation) {
929
- this.logger("Streami18n: registerTranslation(language, translation, customDayjsLocale) called without translation");
930
- return;
931
- }
932
- if (!this.translations[language]) {
933
- this.translations[language] = (_a = {}, _a[defaultNS] = translation, _a);
934
- }
935
- else {
936
- this.translations[language][defaultNS] = translation;
937
- }
938
- if (customDayjsLocale) {
939
- this.dayjsLocales[language] = exports.__assign({}, customDayjsLocale);
940
- }
941
- else if (!this.localeExists(language)) {
942
- this.logger("Streami18n: registerTranslation(language, translation, customDayjsLocale) - " +
943
- "Locale config for ".concat(language, " does not exist in Dayjs.") +
944
- "Please import the locale file using \"import 'dayjs/locale/".concat(language, "';\" in your app or ") +
945
- "register the locale config with Streami18n using registerTranslation(language, translation, customDayjsLocale)");
946
- }
947
- if (this.initialized) {
948
- this.i18nInstance.addResources(language, defaultNS, translation);
949
- }
950
- };
951
- Streami18n.prototype.addOrUpdateLocale = function (key, config) {
952
- if (this.localeExists(key)) {
953
- Dayjs__default["default"].updateLocale(key, exports.__assign({}, config));
954
- }
955
- else {
956
- // Merging the custom locale config with en config, so missing keys can default to english.
957
- Dayjs__default["default"].locale(exports.__assign(exports.__assign({ name: key }, en_locale), config), undefined, true);
958
- }
959
- };
960
- Streami18n.prototype.setLanguage = function (language) {
961
- return __awaiter(this, void 0, void 0, function () {
962
- var t, error_2;
963
- return __generator(this, function (_a) {
964
- switch (_a.label) {
965
- case 0:
966
- this.currentLanguage = language;
967
- if (!this.initialized)
968
- return [2 /*return*/];
969
- _a.label = 1;
970
- case 1:
971
- _a.trys.push([1, 3, , 4]);
972
- return [4 /*yield*/, this.i18nInstance.changeLanguage(language)];
973
- case 2:
974
- t = _a.sent();
975
- if (this.dayjsLocales[language]) {
976
- this.addOrUpdateLocale(this.currentLanguage, this.dayjsLocales[this.currentLanguage]);
977
- }
978
- this.setLanguageCallback(t);
979
- return [2 /*return*/, t];
980
- case 3:
981
- error_2 = _a.sent();
982
- this.logger("Failed to set language: ".concat(JSON.stringify(error_2)));
983
- return [2 /*return*/, this.t];
984
- case 4: return [2 /*return*/];
985
- }
986
- });
987
- });
988
- };
989
- Streami18n.prototype.registerSetLanguageCallback = function (callback) {
990
- this.setLanguageCallback = callback;
991
- };
992
- return Streami18n;
993
- }());
994
-
995
- Dayjs__default["default"].extend(calendar__default["default"]);
996
- Dayjs__default["default"].extend(LocalizedFormat__default["default"]);
997
- var isLanguageSupported = function (language) {
998
- var translations = ['de', 'en', 'es', 'fr', 'hi', 'it', 'ja', 'ko', 'nl', 'pt', 'ru', 'tr'];
999
- return translations.some(function (translation) { return language === translation; });
1000
- };
1001
- var isDayOrMoment = function (output) {
1002
- return !!(output === null || output === void 0 ? void 0 : output.isSame);
1003
- };
1004
- var isDate = function (output) {
1005
- return !!(output === null || output === void 0 ? void 0 : output.getMonth);
1006
- };
1007
- var isNumberOrString = function (output) {
1008
- return typeof output === 'string' || typeof output === 'number';
1009
- };
1010
- var defaultDateTimeParser = function (input) { return Dayjs__default["default"](input); };
1011
- var TranslationContext = React__default["default"].createContext({
1012
- t: defaultTranslatorFunction,
1013
- tDateTimeParser: defaultDateTimeParser,
1014
- userLanguage: 'en',
1015
- });
1016
- var TranslationProvider = function (_a) {
1017
- var children = _a.children, value = _a.value;
1018
- return (React__default["default"].createElement(TranslationContext.Provider, { value: value }, children));
1019
- };
1020
- var useTranslationContext = function (componentName) {
1021
- var contextValue = React.useContext(TranslationContext);
1022
- if (!contextValue) {
1023
- console.warn("The useTranslationContext hook was called outside of the TranslationContext provider. Make sure this hook is called within a child of the Chat component. The errored call is located in the ".concat(componentName, " component."));
1024
- return {};
1025
- }
1026
- return contextValue;
1027
- };
1028
- var withTranslationContext = function (Component) {
1029
- var WithTranslationContextComponent = function (props) {
1030
- var translationContext = useTranslationContext();
1031
- return React__default["default"].createElement(Component, exports.__assign({}, props, translationContext));
1032
- };
1033
- WithTranslationContextComponent.displayName = "WithTranslationContext".concat(getDisplayName(Component));
1034
- return WithTranslationContextComponent;
1035
- };
1036
-
1037
- var TypingContext = React__default["default"].createContext(undefined);
1038
- var TypingProvider = function (_a) {
1039
- var children = _a.children, value = _a.value;
1040
- return (React__default["default"].createElement(TypingContext.Provider, { value: value }, children));
1041
- };
1042
- var useTypingContext = function (componentName) {
1043
- var contextValue = React.useContext(TypingContext);
1044
- if (!contextValue) {
1045
- console.warn("The useTypingContext hook was called outside of the TypingContext provider. Make sure this hook is called within a child of the Channel component. The errored call is located in the ".concat(componentName, " component."));
1046
- return {};
1047
- }
1048
- return contextValue;
1049
- };
1050
- /**
1051
- * Typescript currently does not support partial inference, so if TypingContext
1052
- * typing is desired while using the HOC withTypingContext, the Props for the
1053
- * wrapped component must be provided as the first generic.
1054
- */
1055
- var withTypingContext = function (Component) {
1056
- var WithTypingContextComponent = function (props) {
1057
- var typingContext = useTypingContext();
1058
- return React__default["default"].createElement(Component, exports.__assign({}, props, typingContext));
1059
- };
1060
- WithTypingContextComponent.displayName = (Component.displayName ||
1061
- Component.name ||
1062
- 'Component').replace('Base', '');
1063
- return WithTypingContextComponent;
1064
- };
1065
-
1066
- let urlAlphabet =
1067
- 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict';
1068
-
1069
- const POOL_SIZE_MULTIPLIER = 128;
1070
- let pool, poolOffset;
1071
- let fillPool = bytes => {
1072
- if (!pool || pool.length < bytes) {
1073
- pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER);
1074
- crypto__default["default"].randomFillSync(pool);
1075
- poolOffset = 0;
1076
- } else if (poolOffset + bytes > pool.length) {
1077
- crypto__default["default"].randomFillSync(pool);
1078
- poolOffset = 0;
1079
- }
1080
- poolOffset += bytes;
1081
- };
1082
- let nanoid = (size = 21) => {
1083
- fillPool((size -= 0));
1084
- let id = '';
1085
- for (let i = poolOffset - size; i < poolOffset; i++) {
1086
- id += urlAlphabet[pool[i] & 63];
1087
- }
1088
- return id
1089
- };
1090
-
1091
- React__namespace.createContext();
1092
- React__namespace.createContext();
1093
-
1094
- /**
1095
- * Simple ponyfill for Object.fromEntries
1096
- */
1097
-
1098
- var fromEntries = function fromEntries(entries) {
1099
- return entries.reduce(function (acc, _ref) {
1100
- var key = _ref[0],
1101
- value = _ref[1];
1102
- acc[key] = value;
1103
- return acc;
1104
- }, {});
1105
- };
1106
- /**
1107
- * Small wrapper around `useLayoutEffect` to get rid of the warning on SSR envs
1108
- */
1109
-
1110
- var useIsomorphicLayoutEffect = typeof window !== 'undefined' && window.document && window.document.createElement ? React__namespace.useLayoutEffect : React__namespace.useEffect;
1111
-
1112
- var top = 'top';
1113
- var bottom = 'bottom';
1114
- var right = 'right';
1115
- var left = 'left';
1116
- var auto = 'auto';
1117
- var basePlacements = [top, bottom, right, left];
1118
- var start = 'start';
1119
- var end = 'end';
1120
- var clippingParents = 'clippingParents';
1121
- var viewport = 'viewport';
1122
- var popper = 'popper';
1123
- var reference = 'reference';
1124
- var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {
1125
- return acc.concat([placement + "-" + start, placement + "-" + end]);
1126
- }, []);
1127
- var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {
1128
- return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
1129
- }, []); // modifiers that need to read the DOM
1130
-
1131
- var beforeRead = 'beforeRead';
1132
- var read = 'read';
1133
- var afterRead = 'afterRead'; // pure-logic modifiers
1134
-
1135
- var beforeMain = 'beforeMain';
1136
- var main = 'main';
1137
- var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)
1138
-
1139
- var beforeWrite = 'beforeWrite';
1140
- var write = 'write';
1141
- var afterWrite = 'afterWrite';
1142
- var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
1143
-
1144
- function getNodeName(element) {
1145
- return element ? (element.nodeName || '').toLowerCase() : null;
1146
- }
1147
-
1148
- function getWindow(node) {
1149
- if (node == null) {
1150
- return window;
1151
- }
1152
-
1153
- if (node.toString() !== '[object Window]') {
1154
- var ownerDocument = node.ownerDocument;
1155
- return ownerDocument ? ownerDocument.defaultView || window : window;
1156
- }
1157
-
1158
- return node;
1159
- }
1160
-
1161
- function isElement(node) {
1162
- var OwnElement = getWindow(node).Element;
1163
- return node instanceof OwnElement || node instanceof Element;
1164
- }
1165
-
1166
- function isHTMLElement(node) {
1167
- var OwnElement = getWindow(node).HTMLElement;
1168
- return node instanceof OwnElement || node instanceof HTMLElement;
1169
- }
1170
-
1171
- function isShadowRoot(node) {
1172
- // IE 11 has no ShadowRoot
1173
- if (typeof ShadowRoot === 'undefined') {
1174
- return false;
1175
- }
1176
-
1177
- var OwnElement = getWindow(node).ShadowRoot;
1178
- return node instanceof OwnElement || node instanceof ShadowRoot;
1179
- }
1180
-
1181
- // and applies them to the HTMLElements such as popper and arrow
1182
-
1183
- function applyStyles(_ref) {
1184
- var state = _ref.state;
1185
- Object.keys(state.elements).forEach(function (name) {
1186
- var style = state.styles[name] || {};
1187
- var attributes = state.attributes[name] || {};
1188
- var element = state.elements[name]; // arrow is optional + virtual elements
1189
-
1190
- if (!isHTMLElement(element) || !getNodeName(element)) {
1191
- return;
1192
- } // Flow doesn't support to extend this property, but it's the most
1193
- // effective way to apply styles to an HTMLElement
1194
- // $FlowFixMe[cannot-write]
1195
-
1196
-
1197
- Object.assign(element.style, style);
1198
- Object.keys(attributes).forEach(function (name) {
1199
- var value = attributes[name];
1200
-
1201
- if (value === false) {
1202
- element.removeAttribute(name);
1203
- } else {
1204
- element.setAttribute(name, value === true ? '' : value);
1205
- }
1206
- });
1207
- });
1208
- }
1209
-
1210
- function effect$2(_ref2) {
1211
- var state = _ref2.state;
1212
- var initialStyles = {
1213
- popper: {
1214
- position: state.options.strategy,
1215
- left: '0',
1216
- top: '0',
1217
- margin: '0'
1218
- },
1219
- arrow: {
1220
- position: 'absolute'
1221
- },
1222
- reference: {}
1223
- };
1224
- Object.assign(state.elements.popper.style, initialStyles.popper);
1225
- state.styles = initialStyles;
1226
-
1227
- if (state.elements.arrow) {
1228
- Object.assign(state.elements.arrow.style, initialStyles.arrow);
1229
- }
1230
-
1231
- return function () {
1232
- Object.keys(state.elements).forEach(function (name) {
1233
- var element = state.elements[name];
1234
- var attributes = state.attributes[name] || {};
1235
- var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them
1236
-
1237
- var style = styleProperties.reduce(function (style, property) {
1238
- style[property] = '';
1239
- return style;
1240
- }, {}); // arrow is optional + virtual elements
1241
-
1242
- if (!isHTMLElement(element) || !getNodeName(element)) {
1243
- return;
1244
- }
1245
-
1246
- Object.assign(element.style, style);
1247
- Object.keys(attributes).forEach(function (attribute) {
1248
- element.removeAttribute(attribute);
1249
- });
1250
- });
1251
- };
1252
- } // eslint-disable-next-line import/no-unused-modules
1253
-
1254
-
1255
- var applyStyles$1 = {
1256
- name: 'applyStyles',
1257
- enabled: true,
1258
- phase: 'write',
1259
- fn: applyStyles,
1260
- effect: effect$2,
1261
- requires: ['computeStyles']
1262
- };
1263
-
1264
- function getBasePlacement(placement) {
1265
- return placement.split('-')[0];
1266
- }
1267
-
1268
- var max = Math.max;
1269
- var min = Math.min;
1270
- var round = Math.round;
1271
-
1272
- function getBoundingClientRect(element, includeScale) {
1273
- if (includeScale === void 0) {
1274
- includeScale = false;
1275
- }
1276
-
1277
- var rect = element.getBoundingClientRect();
1278
- var scaleX = 1;
1279
- var scaleY = 1;
1280
-
1281
- if (isHTMLElement(element) && includeScale) {
1282
- var offsetHeight = element.offsetHeight;
1283
- var offsetWidth = element.offsetWidth; // Do not attempt to divide by 0, otherwise we get `Infinity` as scale
1284
- // Fallback to 1 in case both values are `0`
1285
-
1286
- if (offsetWidth > 0) {
1287
- scaleX = round(rect.width) / offsetWidth || 1;
1288
- }
1289
-
1290
- if (offsetHeight > 0) {
1291
- scaleY = round(rect.height) / offsetHeight || 1;
1292
- }
1293
- }
1294
-
1295
- return {
1296
- width: rect.width / scaleX,
1297
- height: rect.height / scaleY,
1298
- top: rect.top / scaleY,
1299
- right: rect.right / scaleX,
1300
- bottom: rect.bottom / scaleY,
1301
- left: rect.left / scaleX,
1302
- x: rect.left / scaleX,
1303
- y: rect.top / scaleY
1304
- };
1305
- }
1306
-
1307
- // means it doesn't take into account transforms.
1308
-
1309
- function getLayoutRect(element) {
1310
- var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.
1311
- // Fixes https://github.com/popperjs/popper-core/issues/1223
1312
-
1313
- var width = element.offsetWidth;
1314
- var height = element.offsetHeight;
1315
-
1316
- if (Math.abs(clientRect.width - width) <= 1) {
1317
- width = clientRect.width;
1318
- }
1319
-
1320
- if (Math.abs(clientRect.height - height) <= 1) {
1321
- height = clientRect.height;
1322
- }
1323
-
1324
- return {
1325
- x: element.offsetLeft,
1326
- y: element.offsetTop,
1327
- width: width,
1328
- height: height
1329
- };
1330
- }
1331
-
1332
- function contains(parent, child) {
1333
- var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method
1334
-
1335
- if (parent.contains(child)) {
1336
- return true;
1337
- } // then fallback to custom implementation with Shadow DOM support
1338
- else if (rootNode && isShadowRoot(rootNode)) {
1339
- var next = child;
1340
-
1341
- do {
1342
- if (next && parent.isSameNode(next)) {
1343
- return true;
1344
- } // $FlowFixMe[prop-missing]: need a better way to handle this...
1345
-
1346
-
1347
- next = next.parentNode || next.host;
1348
- } while (next);
1349
- } // Give up, the result is false
1350
-
1351
-
1352
- return false;
1353
- }
1354
-
1355
- function getComputedStyle(element) {
1356
- return getWindow(element).getComputedStyle(element);
1357
- }
1358
-
1359
- function isTableElement(element) {
1360
- return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;
1361
- }
1362
-
1363
- function getDocumentElement(element) {
1364
- // $FlowFixMe[incompatible-return]: assume body is always available
1365
- return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]
1366
- element.document) || window.document).documentElement;
1367
- }
1368
-
1369
- function getParentNode(element) {
1370
- if (getNodeName(element) === 'html') {
1371
- return element;
1372
- }
1373
-
1374
- return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle
1375
- // $FlowFixMe[incompatible-return]
1376
- // $FlowFixMe[prop-missing]
1377
- element.assignedSlot || // step into the shadow DOM of the parent of a slotted node
1378
- element.parentNode || ( // DOM Element detected
1379
- isShadowRoot(element) ? element.host : null) || // ShadowRoot detected
1380
- // $FlowFixMe[incompatible-call]: HTMLElement is a Node
1381
- getDocumentElement(element) // fallback
1382
-
1383
- );
1384
- }
1385
-
1386
- function getTrueOffsetParent(element) {
1387
- if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837
1388
- getComputedStyle(element).position === 'fixed') {
1389
- return null;
1390
- }
1391
-
1392
- return element.offsetParent;
1393
- } // `.offsetParent` reports `null` for fixed elements, while absolute elements
1394
- // return the containing block
1395
-
1396
-
1397
- function getContainingBlock(element) {
1398
- var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1;
1399
- var isIE = navigator.userAgent.indexOf('Trident') !== -1;
1400
-
1401
- if (isIE && isHTMLElement(element)) {
1402
- // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport
1403
- var elementCss = getComputedStyle(element);
1404
-
1405
- if (elementCss.position === 'fixed') {
1406
- return null;
1407
- }
1408
- }
1409
-
1410
- var currentNode = getParentNode(element);
1411
-
1412
- if (isShadowRoot(currentNode)) {
1413
- currentNode = currentNode.host;
1414
- }
1415
-
1416
- while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {
1417
- var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that
1418
- // create a containing block.
1419
- // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
1420
-
1421
- if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {
1422
- return currentNode;
1423
- } else {
1424
- currentNode = currentNode.parentNode;
1425
- }
1426
- }
1427
-
1428
- return null;
1429
- } // Gets the closest ancestor positioned element. Handles some edge cases,
1430
- // such as table ancestors and cross browser bugs.
1431
-
1432
-
1433
- function getOffsetParent(element) {
1434
- var window = getWindow(element);
1435
- var offsetParent = getTrueOffsetParent(element);
1436
-
1437
- while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {
1438
- offsetParent = getTrueOffsetParent(offsetParent);
1439
- }
1440
-
1441
- if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {
1442
- return window;
1443
- }
1444
-
1445
- return offsetParent || getContainingBlock(element) || window;
1446
- }
1447
-
1448
- function getMainAxisFromPlacement(placement) {
1449
- return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';
1450
- }
1451
-
1452
- function within(min$1, value, max$1) {
1453
- return max(min$1, min(value, max$1));
1454
- }
1455
- function withinMaxClamp(min, value, max) {
1456
- var v = within(min, value, max);
1457
- return v > max ? max : v;
1458
- }
1459
-
1460
- function getFreshSideObject() {
1461
- return {
1462
- top: 0,
1463
- right: 0,
1464
- bottom: 0,
1465
- left: 0
1466
- };
1467
- }
1468
-
1469
- function mergePaddingObject(paddingObject) {
1470
- return Object.assign({}, getFreshSideObject(), paddingObject);
1471
- }
1472
-
1473
- function expandToHashMap(value, keys) {
1474
- return keys.reduce(function (hashMap, key) {
1475
- hashMap[key] = value;
1476
- return hashMap;
1477
- }, {});
1478
- }
1479
-
1480
- var toPaddingObject = function toPaddingObject(padding, state) {
1481
- padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {
1482
- placement: state.placement
1483
- })) : padding;
1484
- return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
1485
- };
1486
-
1487
- function arrow(_ref) {
1488
- var _state$modifiersData$;
1489
-
1490
- var state = _ref.state,
1491
- name = _ref.name,
1492
- options = _ref.options;
1493
- var arrowElement = state.elements.arrow;
1494
- var popperOffsets = state.modifiersData.popperOffsets;
1495
- var basePlacement = getBasePlacement(state.placement);
1496
- var axis = getMainAxisFromPlacement(basePlacement);
1497
- var isVertical = [left, right].indexOf(basePlacement) >= 0;
1498
- var len = isVertical ? 'height' : 'width';
1499
-
1500
- if (!arrowElement || !popperOffsets) {
1501
- return;
1502
- }
1503
-
1504
- var paddingObject = toPaddingObject(options.padding, state);
1505
- var arrowRect = getLayoutRect(arrowElement);
1506
- var minProp = axis === 'y' ? top : left;
1507
- var maxProp = axis === 'y' ? bottom : right;
1508
- var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];
1509
- var startDiff = popperOffsets[axis] - state.rects.reference[axis];
1510
- var arrowOffsetParent = getOffsetParent(arrowElement);
1511
- var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
1512
- var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is
1513
- // outside of the popper bounds
1514
-
1515
- var min = paddingObject[minProp];
1516
- var max = clientSize - arrowRect[len] - paddingObject[maxProp];
1517
- var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
1518
- var offset = within(min, center, max); // Prevents breaking syntax highlighting...
1519
-
1520
- var axisProp = axis;
1521
- state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);
1522
- }
1523
-
1524
- function effect$1(_ref2) {
1525
- var state = _ref2.state,
1526
- options = _ref2.options;
1527
- var _options$element = options.element,
1528
- arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;
1529
-
1530
- if (arrowElement == null) {
1531
- return;
1532
- } // CSS selector
1533
-
1534
-
1535
- if (typeof arrowElement === 'string') {
1536
- arrowElement = state.elements.popper.querySelector(arrowElement);
1537
-
1538
- if (!arrowElement) {
1539
- return;
1540
- }
1541
- }
1542
-
1543
- if (!contains(state.elements.popper, arrowElement)) {
1544
-
1545
- return;
1546
- }
1547
-
1548
- state.elements.arrow = arrowElement;
1549
- } // eslint-disable-next-line import/no-unused-modules
1550
-
1551
-
1552
- var arrow$1 = {
1553
- name: 'arrow',
1554
- enabled: true,
1555
- phase: 'main',
1556
- fn: arrow,
1557
- effect: effect$1,
1558
- requires: ['popperOffsets'],
1559
- requiresIfExists: ['preventOverflow']
1560
- };
1561
-
1562
- function getVariation(placement) {
1563
- return placement.split('-')[1];
1564
- }
1565
-
1566
- var unsetSides = {
1567
- top: 'auto',
1568
- right: 'auto',
1569
- bottom: 'auto',
1570
- left: 'auto'
1571
- }; // Round the offsets to the nearest suitable subpixel based on the DPR.
1572
- // Zooming can change the DPR, but it seems to report a value that will
1573
- // cleanly divide the values into the appropriate subpixels.
1574
-
1575
- function roundOffsetsByDPR(_ref) {
1576
- var x = _ref.x,
1577
- y = _ref.y;
1578
- var win = window;
1579
- var dpr = win.devicePixelRatio || 1;
1580
- return {
1581
- x: round(x * dpr) / dpr || 0,
1582
- y: round(y * dpr) / dpr || 0
1583
- };
1584
- }
1585
-
1586
- function mapToStyles(_ref2) {
1587
- var _Object$assign2;
1588
-
1589
- var popper = _ref2.popper,
1590
- popperRect = _ref2.popperRect,
1591
- placement = _ref2.placement,
1592
- variation = _ref2.variation,
1593
- offsets = _ref2.offsets,
1594
- position = _ref2.position,
1595
- gpuAcceleration = _ref2.gpuAcceleration,
1596
- adaptive = _ref2.adaptive,
1597
- roundOffsets = _ref2.roundOffsets,
1598
- isFixed = _ref2.isFixed;
1599
- var _offsets$x = offsets.x,
1600
- x = _offsets$x === void 0 ? 0 : _offsets$x,
1601
- _offsets$y = offsets.y,
1602
- y = _offsets$y === void 0 ? 0 : _offsets$y;
1603
-
1604
- var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({
1605
- x: x,
1606
- y: y
1607
- }) : {
1608
- x: x,
1609
- y: y
1610
- };
1611
-
1612
- x = _ref3.x;
1613
- y = _ref3.y;
1614
- var hasX = offsets.hasOwnProperty('x');
1615
- var hasY = offsets.hasOwnProperty('y');
1616
- var sideX = left;
1617
- var sideY = top;
1618
- var win = window;
1619
-
1620
- if (adaptive) {
1621
- var offsetParent = getOffsetParent(popper);
1622
- var heightProp = 'clientHeight';
1623
- var widthProp = 'clientWidth';
1624
-
1625
- if (offsetParent === getWindow(popper)) {
1626
- offsetParent = getDocumentElement(popper);
1627
-
1628
- if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {
1629
- heightProp = 'scrollHeight';
1630
- widthProp = 'scrollWidth';
1631
- }
1632
- } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it
1633
-
1634
-
1635
- offsetParent = offsetParent;
1636
-
1637
- if (placement === top || (placement === left || placement === right) && variation === end) {
1638
- sideY = bottom;
1639
- var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]
1640
- offsetParent[heightProp];
1641
- y -= offsetY - popperRect.height;
1642
- y *= gpuAcceleration ? 1 : -1;
1643
- }
1644
-
1645
- if (placement === left || (placement === top || placement === bottom) && variation === end) {
1646
- sideX = right;
1647
- var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]
1648
- offsetParent[widthProp];
1649
- x -= offsetX - popperRect.width;
1650
- x *= gpuAcceleration ? 1 : -1;
1651
- }
1652
- }
1653
-
1654
- var commonStyles = Object.assign({
1655
- position: position
1656
- }, adaptive && unsetSides);
1657
-
1658
- var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
1659
- x: x,
1660
- y: y
1661
- }) : {
1662
- x: x,
1663
- y: y
1664
- };
1665
-
1666
- x = _ref4.x;
1667
- y = _ref4.y;
1668
-
1669
- if (gpuAcceleration) {
1670
- var _Object$assign;
1671
-
1672
- return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
1673
- }
1674
-
1675
- return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2));
1676
- }
1677
-
1678
- function computeStyles(_ref5) {
1679
- var state = _ref5.state,
1680
- options = _ref5.options;
1681
- var _options$gpuAccelerat = options.gpuAcceleration,
1682
- gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,
1683
- _options$adaptive = options.adaptive,
1684
- adaptive = _options$adaptive === void 0 ? true : _options$adaptive,
1685
- _options$roundOffsets = options.roundOffsets,
1686
- roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
1687
-
1688
- var commonStyles = {
1689
- placement: getBasePlacement(state.placement),
1690
- variation: getVariation(state.placement),
1691
- popper: state.elements.popper,
1692
- popperRect: state.rects.popper,
1693
- gpuAcceleration: gpuAcceleration,
1694
- isFixed: state.options.strategy === 'fixed'
1695
- };
1696
-
1697
- if (state.modifiersData.popperOffsets != null) {
1698
- state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
1699
- offsets: state.modifiersData.popperOffsets,
1700
- position: state.options.strategy,
1701
- adaptive: adaptive,
1702
- roundOffsets: roundOffsets
1703
- })));
1704
- }
1705
-
1706
- if (state.modifiersData.arrow != null) {
1707
- state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
1708
- offsets: state.modifiersData.arrow,
1709
- position: 'absolute',
1710
- adaptive: false,
1711
- roundOffsets: roundOffsets
1712
- })));
1713
- }
1714
-
1715
- state.attributes.popper = Object.assign({}, state.attributes.popper, {
1716
- 'data-popper-placement': state.placement
1717
- });
1718
- } // eslint-disable-next-line import/no-unused-modules
1719
-
1720
-
1721
- var computeStyles$1 = {
1722
- name: 'computeStyles',
1723
- enabled: true,
1724
- phase: 'beforeWrite',
1725
- fn: computeStyles,
1726
- data: {}
1727
- };
1728
-
1729
- var passive = {
1730
- passive: true
1731
- };
1732
-
1733
- function effect(_ref) {
1734
- var state = _ref.state,
1735
- instance = _ref.instance,
1736
- options = _ref.options;
1737
- var _options$scroll = options.scroll,
1738
- scroll = _options$scroll === void 0 ? true : _options$scroll,
1739
- _options$resize = options.resize,
1740
- resize = _options$resize === void 0 ? true : _options$resize;
1741
- var window = getWindow(state.elements.popper);
1742
- var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
1743
-
1744
- if (scroll) {
1745
- scrollParents.forEach(function (scrollParent) {
1746
- scrollParent.addEventListener('scroll', instance.update, passive);
1747
- });
1748
- }
1749
-
1750
- if (resize) {
1751
- window.addEventListener('resize', instance.update, passive);
1752
- }
1753
-
1754
- return function () {
1755
- if (scroll) {
1756
- scrollParents.forEach(function (scrollParent) {
1757
- scrollParent.removeEventListener('scroll', instance.update, passive);
1758
- });
1759
- }
1760
-
1761
- if (resize) {
1762
- window.removeEventListener('resize', instance.update, passive);
1763
- }
1764
- };
1765
- } // eslint-disable-next-line import/no-unused-modules
1766
-
1767
-
1768
- var eventListeners = {
1769
- name: 'eventListeners',
1770
- enabled: true,
1771
- phase: 'write',
1772
- fn: function fn() {},
1773
- effect: effect,
1774
- data: {}
1775
- };
1776
-
1777
- var hash$1 = {
1778
- left: 'right',
1779
- right: 'left',
1780
- bottom: 'top',
1781
- top: 'bottom'
1782
- };
1783
- function getOppositePlacement(placement) {
1784
- return placement.replace(/left|right|bottom|top/g, function (matched) {
1785
- return hash$1[matched];
1786
- });
1787
- }
1788
-
1789
- var hash = {
1790
- start: 'end',
1791
- end: 'start'
1792
- };
1793
- function getOppositeVariationPlacement(placement) {
1794
- return placement.replace(/start|end/g, function (matched) {
1795
- return hash[matched];
1796
- });
1797
- }
1798
-
1799
- function getWindowScroll(node) {
1800
- var win = getWindow(node);
1801
- var scrollLeft = win.pageXOffset;
1802
- var scrollTop = win.pageYOffset;
1803
- return {
1804
- scrollLeft: scrollLeft,
1805
- scrollTop: scrollTop
1806
- };
1807
- }
1808
-
1809
- function getWindowScrollBarX(element) {
1810
- // If <html> has a CSS width greater than the viewport, then this will be
1811
- // incorrect for RTL.
1812
- // Popper 1 is broken in this case and never had a bug report so let's assume
1813
- // it's not an issue. I don't think anyone ever specifies width on <html>
1814
- // anyway.
1815
- // Browsers where the left scrollbar doesn't cause an issue report `0` for
1816
- // this (e.g. Edge 2019, IE11, Safari)
1817
- return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
1818
- }
1819
-
1820
- function getViewportRect(element) {
1821
- var win = getWindow(element);
1822
- var html = getDocumentElement(element);
1823
- var visualViewport = win.visualViewport;
1824
- var width = html.clientWidth;
1825
- var height = html.clientHeight;
1826
- var x = 0;
1827
- var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper
1828
- // can be obscured underneath it.
1829
- // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even
1830
- // if it isn't open, so if this isn't available, the popper will be detected
1831
- // to overflow the bottom of the screen too early.
1832
-
1833
- if (visualViewport) {
1834
- width = visualViewport.width;
1835
- height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently)
1836
- // In Chrome, it returns a value very close to 0 (+/-) but contains rounding
1837
- // errors due to floating point numbers, so we need to check precision.
1838
- // Safari returns a number <= 0, usually < -1 when pinch-zoomed
1839
- // Feature detection fails in mobile emulation mode in Chrome.
1840
- // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) <
1841
- // 0.001
1842
- // Fallback here: "Not Safari" userAgent
1843
-
1844
- if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {
1845
- x = visualViewport.offsetLeft;
1846
- y = visualViewport.offsetTop;
1847
- }
1848
- }
1849
-
1850
- return {
1851
- width: width,
1852
- height: height,
1853
- x: x + getWindowScrollBarX(element),
1854
- y: y
1855
- };
1856
- }
1857
-
1858
- // of the `<html>` and `<body>` rect bounds if horizontally scrollable
1859
-
1860
- function getDocumentRect(element) {
1861
- var _element$ownerDocumen;
1862
-
1863
- var html = getDocumentElement(element);
1864
- var winScroll = getWindowScroll(element);
1865
- var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
1866
- var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
1867
- var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
1868
- var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
1869
- var y = -winScroll.scrollTop;
1870
-
1871
- if (getComputedStyle(body || html).direction === 'rtl') {
1872
- x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
1873
- }
1874
-
1875
- return {
1876
- width: width,
1877
- height: height,
1878
- x: x,
1879
- y: y
1880
- };
1881
- }
1882
-
1883
- function isScrollParent(element) {
1884
- // Firefox wants us to check `-x` and `-y` variations as well
1885
- var _getComputedStyle = getComputedStyle(element),
1886
- overflow = _getComputedStyle.overflow,
1887
- overflowX = _getComputedStyle.overflowX,
1888
- overflowY = _getComputedStyle.overflowY;
1889
-
1890
- return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
1891
- }
1892
-
1893
- function getScrollParent(node) {
1894
- if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {
1895
- // $FlowFixMe[incompatible-return]: assume body is always available
1896
- return node.ownerDocument.body;
1897
- }
1898
-
1899
- if (isHTMLElement(node) && isScrollParent(node)) {
1900
- return node;
1901
- }
1902
-
1903
- return getScrollParent(getParentNode(node));
1904
- }
1905
-
1906
- /*
1907
- given a DOM element, return the list of all scroll parents, up the list of ancesors
1908
- until we get to the top window object. This list is what we attach scroll listeners
1909
- to, because if any of these parent elements scroll, we'll need to re-calculate the
1910
- reference element's position.
1911
- */
1912
-
1913
- function listScrollParents(element, list) {
1914
- var _element$ownerDocumen;
1915
-
1916
- if (list === void 0) {
1917
- list = [];
1918
- }
1919
-
1920
- var scrollParent = getScrollParent(element);
1921
- var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
1922
- var win = getWindow(scrollParent);
1923
- var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
1924
- var updatedList = list.concat(target);
1925
- return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
1926
- updatedList.concat(listScrollParents(getParentNode(target)));
1927
- }
1928
-
1929
- function rectToClientRect(rect) {
1930
- return Object.assign({}, rect, {
1931
- left: rect.x,
1932
- top: rect.y,
1933
- right: rect.x + rect.width,
1934
- bottom: rect.y + rect.height
1935
- });
1936
- }
1937
-
1938
- function getInnerBoundingClientRect(element) {
1939
- var rect = getBoundingClientRect(element);
1940
- rect.top = rect.top + element.clientTop;
1941
- rect.left = rect.left + element.clientLeft;
1942
- rect.bottom = rect.top + element.clientHeight;
1943
- rect.right = rect.left + element.clientWidth;
1944
- rect.width = element.clientWidth;
1945
- rect.height = element.clientHeight;
1946
- rect.x = rect.left;
1947
- rect.y = rect.top;
1948
- return rect;
1949
- }
1950
-
1951
- function getClientRectFromMixedType(element, clippingParent) {
1952
- return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
1953
- } // A "clipping parent" is an overflowable container with the characteristic of
1954
- // clipping (or hiding) overflowing elements with a position different from
1955
- // `initial`
1956
-
1957
-
1958
- function getClippingParents(element) {
1959
- var clippingParents = listScrollParents(getParentNode(element));
1960
- var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;
1961
- var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
1962
-
1963
- if (!isElement(clipperElement)) {
1964
- return [];
1965
- } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414
1966
-
1967
-
1968
- return clippingParents.filter(function (clippingParent) {
1969
- return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';
1970
- });
1971
- } // Gets the maximum area that the element is visible in due to any number of
1972
- // clipping parents
1973
-
1974
-
1975
- function getClippingRect(element, boundary, rootBoundary) {
1976
- var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);
1977
- var clippingParents = [].concat(mainClippingParents, [rootBoundary]);
1978
- var firstClippingParent = clippingParents[0];
1979
- var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {
1980
- var rect = getClientRectFromMixedType(element, clippingParent);
1981
- accRect.top = max(rect.top, accRect.top);
1982
- accRect.right = min(rect.right, accRect.right);
1983
- accRect.bottom = min(rect.bottom, accRect.bottom);
1984
- accRect.left = max(rect.left, accRect.left);
1985
- return accRect;
1986
- }, getClientRectFromMixedType(element, firstClippingParent));
1987
- clippingRect.width = clippingRect.right - clippingRect.left;
1988
- clippingRect.height = clippingRect.bottom - clippingRect.top;
1989
- clippingRect.x = clippingRect.left;
1990
- clippingRect.y = clippingRect.top;
1991
- return clippingRect;
1992
- }
1993
-
1994
- function computeOffsets(_ref) {
1995
- var reference = _ref.reference,
1996
- element = _ref.element,
1997
- placement = _ref.placement;
1998
- var basePlacement = placement ? getBasePlacement(placement) : null;
1999
- var variation = placement ? getVariation(placement) : null;
2000
- var commonX = reference.x + reference.width / 2 - element.width / 2;
2001
- var commonY = reference.y + reference.height / 2 - element.height / 2;
2002
- var offsets;
2003
-
2004
- switch (basePlacement) {
2005
- case top:
2006
- offsets = {
2007
- x: commonX,
2008
- y: reference.y - element.height
2009
- };
2010
- break;
2011
-
2012
- case bottom:
2013
- offsets = {
2014
- x: commonX,
2015
- y: reference.y + reference.height
2016
- };
2017
- break;
2018
-
2019
- case right:
2020
- offsets = {
2021
- x: reference.x + reference.width,
2022
- y: commonY
2023
- };
2024
- break;
2025
-
2026
- case left:
2027
- offsets = {
2028
- x: reference.x - element.width,
2029
- y: commonY
2030
- };
2031
- break;
2032
-
2033
- default:
2034
- offsets = {
2035
- x: reference.x,
2036
- y: reference.y
2037
- };
2038
- }
2039
-
2040
- var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
2041
-
2042
- if (mainAxis != null) {
2043
- var len = mainAxis === 'y' ? 'height' : 'width';
2044
-
2045
- switch (variation) {
2046
- case start:
2047
- offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);
2048
- break;
2049
-
2050
- case end:
2051
- offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);
2052
- break;
2053
- }
2054
- }
2055
-
2056
- return offsets;
2057
- }
2058
-
2059
- function detectOverflow(state, options) {
2060
- if (options === void 0) {
2061
- options = {};
2062
- }
2063
-
2064
- var _options = options,
2065
- _options$placement = _options.placement,
2066
- placement = _options$placement === void 0 ? state.placement : _options$placement,
2067
- _options$boundary = _options.boundary,
2068
- boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,
2069
- _options$rootBoundary = _options.rootBoundary,
2070
- rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,
2071
- _options$elementConte = _options.elementContext,
2072
- elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,
2073
- _options$altBoundary = _options.altBoundary,
2074
- altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,
2075
- _options$padding = _options.padding,
2076
- padding = _options$padding === void 0 ? 0 : _options$padding;
2077
- var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));
2078
- var altContext = elementContext === popper ? reference : popper;
2079
- var popperRect = state.rects.popper;
2080
- var element = state.elements[altBoundary ? altContext : elementContext];
2081
- var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary);
2082
- var referenceClientRect = getBoundingClientRect(state.elements.reference);
2083
- var popperOffsets = computeOffsets({
2084
- reference: referenceClientRect,
2085
- element: popperRect,
2086
- strategy: 'absolute',
2087
- placement: placement
2088
- });
2089
- var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));
2090
- var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect
2091
- // 0 or negative = within the clipping rect
2092
-
2093
- var overflowOffsets = {
2094
- top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
2095
- bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
2096
- left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
2097
- right: elementClientRect.right - clippingClientRect.right + paddingObject.right
2098
- };
2099
- var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element
2100
-
2101
- if (elementContext === popper && offsetData) {
2102
- var offset = offsetData[placement];
2103
- Object.keys(overflowOffsets).forEach(function (key) {
2104
- var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
2105
- var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';
2106
- overflowOffsets[key] += offset[axis] * multiply;
2107
- });
2108
- }
2109
-
2110
- return overflowOffsets;
2111
- }
2112
-
2113
- function computeAutoPlacement(state, options) {
2114
- if (options === void 0) {
2115
- options = {};
2116
- }
2117
-
2118
- var _options = options,
2119
- placement = _options.placement,
2120
- boundary = _options.boundary,
2121
- rootBoundary = _options.rootBoundary,
2122
- padding = _options.padding,
2123
- flipVariations = _options.flipVariations,
2124
- _options$allowedAutoP = _options.allowedAutoPlacements,
2125
- allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
2126
- var variation = getVariation(placement);
2127
- var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {
2128
- return getVariation(placement) === variation;
2129
- }) : basePlacements;
2130
- var allowedPlacements = placements$1.filter(function (placement) {
2131
- return allowedAutoPlacements.indexOf(placement) >= 0;
2132
- });
2133
-
2134
- if (allowedPlacements.length === 0) {
2135
- allowedPlacements = placements$1;
2136
- } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...
2137
-
2138
-
2139
- var overflows = allowedPlacements.reduce(function (acc, placement) {
2140
- acc[placement] = detectOverflow(state, {
2141
- placement: placement,
2142
- boundary: boundary,
2143
- rootBoundary: rootBoundary,
2144
- padding: padding
2145
- })[getBasePlacement(placement)];
2146
- return acc;
2147
- }, {});
2148
- return Object.keys(overflows).sort(function (a, b) {
2149
- return overflows[a] - overflows[b];
2150
- });
2151
- }
2152
-
2153
- function getExpandedFallbackPlacements(placement) {
2154
- if (getBasePlacement(placement) === auto) {
2155
- return [];
2156
- }
2157
-
2158
- var oppositePlacement = getOppositePlacement(placement);
2159
- return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
2160
- }
2161
-
2162
- function flip(_ref) {
2163
- var state = _ref.state,
2164
- options = _ref.options,
2165
- name = _ref.name;
2166
-
2167
- if (state.modifiersData[name]._skip) {
2168
- return;
2169
- }
2170
-
2171
- var _options$mainAxis = options.mainAxis,
2172
- checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
2173
- _options$altAxis = options.altAxis,
2174
- checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,
2175
- specifiedFallbackPlacements = options.fallbackPlacements,
2176
- padding = options.padding,
2177
- boundary = options.boundary,
2178
- rootBoundary = options.rootBoundary,
2179
- altBoundary = options.altBoundary,
2180
- _options$flipVariatio = options.flipVariations,
2181
- flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,
2182
- allowedAutoPlacements = options.allowedAutoPlacements;
2183
- var preferredPlacement = state.options.placement;
2184
- var basePlacement = getBasePlacement(preferredPlacement);
2185
- var isBasePlacement = basePlacement === preferredPlacement;
2186
- var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
2187
- var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {
2188
- return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {
2189
- placement: placement,
2190
- boundary: boundary,
2191
- rootBoundary: rootBoundary,
2192
- padding: padding,
2193
- flipVariations: flipVariations,
2194
- allowedAutoPlacements: allowedAutoPlacements
2195
- }) : placement);
2196
- }, []);
2197
- var referenceRect = state.rects.reference;
2198
- var popperRect = state.rects.popper;
2199
- var checksMap = new Map();
2200
- var makeFallbackChecks = true;
2201
- var firstFittingPlacement = placements[0];
2202
-
2203
- for (var i = 0; i < placements.length; i++) {
2204
- var placement = placements[i];
2205
-
2206
- var _basePlacement = getBasePlacement(placement);
2207
-
2208
- var isStartVariation = getVariation(placement) === start;
2209
- var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
2210
- var len = isVertical ? 'width' : 'height';
2211
- var overflow = detectOverflow(state, {
2212
- placement: placement,
2213
- boundary: boundary,
2214
- rootBoundary: rootBoundary,
2215
- altBoundary: altBoundary,
2216
- padding: padding
2217
- });
2218
- var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
2219
-
2220
- if (referenceRect[len] > popperRect[len]) {
2221
- mainVariationSide = getOppositePlacement(mainVariationSide);
2222
- }
2223
-
2224
- var altVariationSide = getOppositePlacement(mainVariationSide);
2225
- var checks = [];
2226
-
2227
- if (checkMainAxis) {
2228
- checks.push(overflow[_basePlacement] <= 0);
2229
- }
2230
-
2231
- if (checkAltAxis) {
2232
- checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
2233
- }
2234
-
2235
- if (checks.every(function (check) {
2236
- return check;
2237
- })) {
2238
- firstFittingPlacement = placement;
2239
- makeFallbackChecks = false;
2240
- break;
2241
- }
2242
-
2243
- checksMap.set(placement, checks);
2244
- }
2245
-
2246
- if (makeFallbackChecks) {
2247
- // `2` may be desired in some cases – research later
2248
- var numberOfChecks = flipVariations ? 3 : 1;
2249
-
2250
- var _loop = function _loop(_i) {
2251
- var fittingPlacement = placements.find(function (placement) {
2252
- var checks = checksMap.get(placement);
2253
-
2254
- if (checks) {
2255
- return checks.slice(0, _i).every(function (check) {
2256
- return check;
2257
- });
2258
- }
2259
- });
2260
-
2261
- if (fittingPlacement) {
2262
- firstFittingPlacement = fittingPlacement;
2263
- return "break";
2264
- }
2265
- };
2266
-
2267
- for (var _i = numberOfChecks; _i > 0; _i--) {
2268
- var _ret = _loop(_i);
2269
-
2270
- if (_ret === "break") break;
2271
- }
2272
- }
2273
-
2274
- if (state.placement !== firstFittingPlacement) {
2275
- state.modifiersData[name]._skip = true;
2276
- state.placement = firstFittingPlacement;
2277
- state.reset = true;
2278
- }
2279
- } // eslint-disable-next-line import/no-unused-modules
2280
-
2281
-
2282
- var flip$1 = {
2283
- name: 'flip',
2284
- enabled: true,
2285
- phase: 'main',
2286
- fn: flip,
2287
- requiresIfExists: ['offset'],
2288
- data: {
2289
- _skip: false
2290
- }
2291
- };
2292
-
2293
- function getSideOffsets(overflow, rect, preventedOffsets) {
2294
- if (preventedOffsets === void 0) {
2295
- preventedOffsets = {
2296
- x: 0,
2297
- y: 0
2298
- };
2299
- }
2300
-
2301
- return {
2302
- top: overflow.top - rect.height - preventedOffsets.y,
2303
- right: overflow.right - rect.width + preventedOffsets.x,
2304
- bottom: overflow.bottom - rect.height + preventedOffsets.y,
2305
- left: overflow.left - rect.width - preventedOffsets.x
2306
- };
2307
- }
2308
-
2309
- function isAnySideFullyClipped(overflow) {
2310
- return [top, right, bottom, left].some(function (side) {
2311
- return overflow[side] >= 0;
2312
- });
2313
- }
2314
-
2315
- function hide(_ref) {
2316
- var state = _ref.state,
2317
- name = _ref.name;
2318
- var referenceRect = state.rects.reference;
2319
- var popperRect = state.rects.popper;
2320
- var preventedOffsets = state.modifiersData.preventOverflow;
2321
- var referenceOverflow = detectOverflow(state, {
2322
- elementContext: 'reference'
2323
- });
2324
- var popperAltOverflow = detectOverflow(state, {
2325
- altBoundary: true
2326
- });
2327
- var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
2328
- var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
2329
- var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
2330
- var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
2331
- state.modifiersData[name] = {
2332
- referenceClippingOffsets: referenceClippingOffsets,
2333
- popperEscapeOffsets: popperEscapeOffsets,
2334
- isReferenceHidden: isReferenceHidden,
2335
- hasPopperEscaped: hasPopperEscaped
2336
- };
2337
- state.attributes.popper = Object.assign({}, state.attributes.popper, {
2338
- 'data-popper-reference-hidden': isReferenceHidden,
2339
- 'data-popper-escaped': hasPopperEscaped
2340
- });
2341
- } // eslint-disable-next-line import/no-unused-modules
2342
-
2343
-
2344
- var hide$1 = {
2345
- name: 'hide',
2346
- enabled: true,
2347
- phase: 'main',
2348
- requiresIfExists: ['preventOverflow'],
2349
- fn: hide
2350
- };
2351
-
2352
- function distanceAndSkiddingToXY(placement, rects, offset) {
2353
- var basePlacement = getBasePlacement(placement);
2354
- var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
2355
-
2356
- var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {
2357
- placement: placement
2358
- })) : offset,
2359
- skidding = _ref[0],
2360
- distance = _ref[1];
2361
-
2362
- skidding = skidding || 0;
2363
- distance = (distance || 0) * invertDistance;
2364
- return [left, right].indexOf(basePlacement) >= 0 ? {
2365
- x: distance,
2366
- y: skidding
2367
- } : {
2368
- x: skidding,
2369
- y: distance
2370
- };
2371
- }
2372
-
2373
- function offset(_ref2) {
2374
- var state = _ref2.state,
2375
- options = _ref2.options,
2376
- name = _ref2.name;
2377
- var _options$offset = options.offset,
2378
- offset = _options$offset === void 0 ? [0, 0] : _options$offset;
2379
- var data = placements.reduce(function (acc, placement) {
2380
- acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);
2381
- return acc;
2382
- }, {});
2383
- var _data$state$placement = data[state.placement],
2384
- x = _data$state$placement.x,
2385
- y = _data$state$placement.y;
2386
-
2387
- if (state.modifiersData.popperOffsets != null) {
2388
- state.modifiersData.popperOffsets.x += x;
2389
- state.modifiersData.popperOffsets.y += y;
2390
- }
2391
-
2392
- state.modifiersData[name] = data;
2393
- } // eslint-disable-next-line import/no-unused-modules
2394
-
2395
-
2396
- var offset$1 = {
2397
- name: 'offset',
2398
- enabled: true,
2399
- phase: 'main',
2400
- requires: ['popperOffsets'],
2401
- fn: offset
2402
- };
2403
-
2404
- function popperOffsets(_ref) {
2405
- var state = _ref.state,
2406
- name = _ref.name;
2407
- // Offsets are the actual position the popper needs to have to be
2408
- // properly positioned near its reference element
2409
- // This is the most basic placement, and will be adjusted by
2410
- // the modifiers in the next step
2411
- state.modifiersData[name] = computeOffsets({
2412
- reference: state.rects.reference,
2413
- element: state.rects.popper,
2414
- strategy: 'absolute',
2415
- placement: state.placement
2416
- });
2417
- } // eslint-disable-next-line import/no-unused-modules
2418
-
2419
-
2420
- var popperOffsets$1 = {
2421
- name: 'popperOffsets',
2422
- enabled: true,
2423
- phase: 'read',
2424
- fn: popperOffsets,
2425
- data: {}
2426
- };
2427
-
2428
- function getAltAxis(axis) {
2429
- return axis === 'x' ? 'y' : 'x';
2430
- }
2431
-
2432
- function preventOverflow(_ref) {
2433
- var state = _ref.state,
2434
- options = _ref.options,
2435
- name = _ref.name;
2436
- var _options$mainAxis = options.mainAxis,
2437
- checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,
2438
- _options$altAxis = options.altAxis,
2439
- checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,
2440
- boundary = options.boundary,
2441
- rootBoundary = options.rootBoundary,
2442
- altBoundary = options.altBoundary,
2443
- padding = options.padding,
2444
- _options$tether = options.tether,
2445
- tether = _options$tether === void 0 ? true : _options$tether,
2446
- _options$tetherOffset = options.tetherOffset,
2447
- tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
2448
- var overflow = detectOverflow(state, {
2449
- boundary: boundary,
2450
- rootBoundary: rootBoundary,
2451
- padding: padding,
2452
- altBoundary: altBoundary
2453
- });
2454
- var basePlacement = getBasePlacement(state.placement);
2455
- var variation = getVariation(state.placement);
2456
- var isBasePlacement = !variation;
2457
- var mainAxis = getMainAxisFromPlacement(basePlacement);
2458
- var altAxis = getAltAxis(mainAxis);
2459
- var popperOffsets = state.modifiersData.popperOffsets;
2460
- var referenceRect = state.rects.reference;
2461
- var popperRect = state.rects.popper;
2462
- var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {
2463
- placement: state.placement
2464
- })) : tetherOffset;
2465
- var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {
2466
- mainAxis: tetherOffsetValue,
2467
- altAxis: tetherOffsetValue
2468
- } : Object.assign({
2469
- mainAxis: 0,
2470
- altAxis: 0
2471
- }, tetherOffsetValue);
2472
- var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
2473
- var data = {
2474
- x: 0,
2475
- y: 0
2476
- };
2477
-
2478
- if (!popperOffsets) {
2479
- return;
2480
- }
2481
-
2482
- if (checkMainAxis) {
2483
- var _offsetModifierState$;
2484
-
2485
- var mainSide = mainAxis === 'y' ? top : left;
2486
- var altSide = mainAxis === 'y' ? bottom : right;
2487
- var len = mainAxis === 'y' ? 'height' : 'width';
2488
- var offset = popperOffsets[mainAxis];
2489
- var min$1 = offset + overflow[mainSide];
2490
- var max$1 = offset - overflow[altSide];
2491
- var additive = tether ? -popperRect[len] / 2 : 0;
2492
- var minLen = variation === start ? referenceRect[len] : popperRect[len];
2493
- var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go
2494
- // outside the reference bounds
2495
-
2496
- var arrowElement = state.elements.arrow;
2497
- var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
2498
- width: 0,
2499
- height: 0
2500
- };
2501
- var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();
2502
- var arrowPaddingMin = arrowPaddingObject[mainSide];
2503
- var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want
2504
- // to include its full size in the calculation. If the reference is small
2505
- // and near the edge of a boundary, the popper can overflow even if the
2506
- // reference is not overflowing as well (e.g. virtual elements with no
2507
- // width or height)
2508
-
2509
- var arrowLen = within(0, referenceRect[len], arrowRect[len]);
2510
- var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
2511
- var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
2512
- var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
2513
- var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
2514
- var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
2515
- var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;
2516
- var tetherMax = offset + maxOffset - offsetModifierValue;
2517
- var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1);
2518
- popperOffsets[mainAxis] = preventedOffset;
2519
- data[mainAxis] = preventedOffset - offset;
2520
- }
2521
-
2522
- if (checkAltAxis) {
2523
- var _offsetModifierState$2;
2524
-
2525
- var _mainSide = mainAxis === 'x' ? top : left;
2526
-
2527
- var _altSide = mainAxis === 'x' ? bottom : right;
2528
-
2529
- var _offset = popperOffsets[altAxis];
2530
-
2531
- var _len = altAxis === 'y' ? 'height' : 'width';
2532
-
2533
- var _min = _offset + overflow[_mainSide];
2534
-
2535
- var _max = _offset - overflow[_altSide];
2536
-
2537
- var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
2538
-
2539
- var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
2540
-
2541
- var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
2542
-
2543
- var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
2544
-
2545
- var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
2546
-
2547
- popperOffsets[altAxis] = _preventedOffset;
2548
- data[altAxis] = _preventedOffset - _offset;
2549
- }
2550
-
2551
- state.modifiersData[name] = data;
2552
- } // eslint-disable-next-line import/no-unused-modules
2553
-
2554
-
2555
- var preventOverflow$1 = {
2556
- name: 'preventOverflow',
2557
- enabled: true,
2558
- phase: 'main',
2559
- fn: preventOverflow,
2560
- requiresIfExists: ['offset']
2561
- };
2562
-
2563
- function getHTMLElementScroll(element) {
2564
- return {
2565
- scrollLeft: element.scrollLeft,
2566
- scrollTop: element.scrollTop
2567
- };
2568
- }
2569
-
2570
- function getNodeScroll(node) {
2571
- if (node === getWindow(node) || !isHTMLElement(node)) {
2572
- return getWindowScroll(node);
2573
- } else {
2574
- return getHTMLElementScroll(node);
2575
- }
2576
- }
2577
-
2578
- function isElementScaled(element) {
2579
- var rect = element.getBoundingClientRect();
2580
- var scaleX = round(rect.width) / element.offsetWidth || 1;
2581
- var scaleY = round(rect.height) / element.offsetHeight || 1;
2582
- return scaleX !== 1 || scaleY !== 1;
2583
- } // Returns the composite rect of an element relative to its offsetParent.
2584
- // Composite means it takes into account transforms as well as layout.
2585
-
2586
-
2587
- function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
2588
- if (isFixed === void 0) {
2589
- isFixed = false;
2590
- }
2591
-
2592
- var isOffsetParentAnElement = isHTMLElement(offsetParent);
2593
- var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
2594
- var documentElement = getDocumentElement(offsetParent);
2595
- var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled);
2596
- var scroll = {
2597
- scrollLeft: 0,
2598
- scrollTop: 0
2599
- };
2600
- var offsets = {
2601
- x: 0,
2602
- y: 0
2603
- };
2604
-
2605
- if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
2606
- if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078
2607
- isScrollParent(documentElement)) {
2608
- scroll = getNodeScroll(offsetParent);
2609
- }
2610
-
2611
- if (isHTMLElement(offsetParent)) {
2612
- offsets = getBoundingClientRect(offsetParent, true);
2613
- offsets.x += offsetParent.clientLeft;
2614
- offsets.y += offsetParent.clientTop;
2615
- } else if (documentElement) {
2616
- offsets.x = getWindowScrollBarX(documentElement);
2617
- }
2618
- }
2619
-
2620
- return {
2621
- x: rect.left + scroll.scrollLeft - offsets.x,
2622
- y: rect.top + scroll.scrollTop - offsets.y,
2623
- width: rect.width,
2624
- height: rect.height
2625
- };
2626
- }
2627
-
2628
- function order(modifiers) {
2629
- var map = new Map();
2630
- var visited = new Set();
2631
- var result = [];
2632
- modifiers.forEach(function (modifier) {
2633
- map.set(modifier.name, modifier);
2634
- }); // On visiting object, check for its dependencies and visit them recursively
2635
-
2636
- function sort(modifier) {
2637
- visited.add(modifier.name);
2638
- var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
2639
- requires.forEach(function (dep) {
2640
- if (!visited.has(dep)) {
2641
- var depModifier = map.get(dep);
2642
-
2643
- if (depModifier) {
2644
- sort(depModifier);
2645
- }
2646
- }
2647
- });
2648
- result.push(modifier);
2649
- }
2650
-
2651
- modifiers.forEach(function (modifier) {
2652
- if (!visited.has(modifier.name)) {
2653
- // check for visited object
2654
- sort(modifier);
2655
- }
2656
- });
2657
- return result;
2658
- }
2659
-
2660
- function orderModifiers(modifiers) {
2661
- // order based on dependencies
2662
- var orderedModifiers = order(modifiers); // order based on phase
2663
-
2664
- return modifierPhases.reduce(function (acc, phase) {
2665
- return acc.concat(orderedModifiers.filter(function (modifier) {
2666
- return modifier.phase === phase;
2667
- }));
2668
- }, []);
2669
- }
2670
-
2671
- function debounce(fn) {
2672
- var pending;
2673
- return function () {
2674
- if (!pending) {
2675
- pending = new Promise(function (resolve) {
2676
- Promise.resolve().then(function () {
2677
- pending = undefined;
2678
- resolve(fn());
2679
- });
2680
- });
2681
- }
2682
-
2683
- return pending;
2684
- };
2685
- }
2686
-
2687
- function mergeByName(modifiers) {
2688
- var merged = modifiers.reduce(function (merged, current) {
2689
- var existing = merged[current.name];
2690
- merged[current.name] = existing ? Object.assign({}, existing, current, {
2691
- options: Object.assign({}, existing.options, current.options),
2692
- data: Object.assign({}, existing.data, current.data)
2693
- }) : current;
2694
- return merged;
2695
- }, {}); // IE11 does not support Object.values
2696
-
2697
- return Object.keys(merged).map(function (key) {
2698
- return merged[key];
2699
- });
2700
- }
2701
-
2702
- var DEFAULT_OPTIONS = {
2703
- placement: 'bottom',
2704
- modifiers: [],
2705
- strategy: 'absolute'
2706
- };
2707
-
2708
- function areValidElements() {
2709
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
2710
- args[_key] = arguments[_key];
2711
- }
2712
-
2713
- return !args.some(function (element) {
2714
- return !(element && typeof element.getBoundingClientRect === 'function');
2715
- });
2716
- }
2717
-
2718
- function popperGenerator(generatorOptions) {
2719
- if (generatorOptions === void 0) {
2720
- generatorOptions = {};
2721
- }
2722
-
2723
- var _generatorOptions = generatorOptions,
2724
- _generatorOptions$def = _generatorOptions.defaultModifiers,
2725
- defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,
2726
- _generatorOptions$def2 = _generatorOptions.defaultOptions,
2727
- defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
2728
- return function createPopper(reference, popper, options) {
2729
- if (options === void 0) {
2730
- options = defaultOptions;
2731
- }
2732
-
2733
- var state = {
2734
- placement: 'bottom',
2735
- orderedModifiers: [],
2736
- options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
2737
- modifiersData: {},
2738
- elements: {
2739
- reference: reference,
2740
- popper: popper
2741
- },
2742
- attributes: {},
2743
- styles: {}
2744
- };
2745
- var effectCleanupFns = [];
2746
- var isDestroyed = false;
2747
- var instance = {
2748
- state: state,
2749
- setOptions: function setOptions(setOptionsAction) {
2750
- var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;
2751
- cleanupModifierEffects();
2752
- state.options = Object.assign({}, defaultOptions, state.options, options);
2753
- state.scrollParents = {
2754
- reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],
2755
- popper: listScrollParents(popper)
2756
- }; // Orders the modifiers based on their dependencies and `phase`
2757
- // properties
2758
-
2759
- var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers
2760
-
2761
- state.orderedModifiers = orderedModifiers.filter(function (m) {
2762
- return m.enabled;
2763
- }); // Validate the provided modifiers so that the consumer will get warned
2764
-
2765
- runModifierEffects();
2766
- return instance.update();
2767
- },
2768
- // Sync update – it will always be executed, even if not necessary. This
2769
- // is useful for low frequency updates where sync behavior simplifies the
2770
- // logic.
2771
- // For high frequency updates (e.g. `resize` and `scroll` events), always
2772
- // prefer the async Popper#update method
2773
- forceUpdate: function forceUpdate() {
2774
- if (isDestroyed) {
2775
- return;
2776
- }
2777
-
2778
- var _state$elements = state.elements,
2779
- reference = _state$elements.reference,
2780
- popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements
2781
- // anymore
2782
-
2783
- if (!areValidElements(reference, popper)) {
2784
-
2785
- return;
2786
- } // Store the reference and popper rects to be read by modifiers
2787
-
2788
-
2789
- state.rects = {
2790
- reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),
2791
- popper: getLayoutRect(popper)
2792
- }; // Modifiers have the ability to reset the current update cycle. The
2793
- // most common use case for this is the `flip` modifier changing the
2794
- // placement, which then needs to re-run all the modifiers, because the
2795
- // logic was previously ran for the previous placement and is therefore
2796
- // stale/incorrect
2797
-
2798
- state.reset = false;
2799
- state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier
2800
- // is filled with the initial data specified by the modifier. This means
2801
- // it doesn't persist and is fresh on each update.
2802
- // To ensure persistent data, use `${name}#persistent`
2803
-
2804
- state.orderedModifiers.forEach(function (modifier) {
2805
- return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
2806
- });
2807
-
2808
- for (var index = 0; index < state.orderedModifiers.length; index++) {
2809
-
2810
- if (state.reset === true) {
2811
- state.reset = false;
2812
- index = -1;
2813
- continue;
2814
- }
2815
-
2816
- var _state$orderedModifie = state.orderedModifiers[index],
2817
- fn = _state$orderedModifie.fn,
2818
- _state$orderedModifie2 = _state$orderedModifie.options,
2819
- _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,
2820
- name = _state$orderedModifie.name;
2821
-
2822
- if (typeof fn === 'function') {
2823
- state = fn({
2824
- state: state,
2825
- options: _options,
2826
- name: name,
2827
- instance: instance
2828
- }) || state;
2829
- }
2830
- }
2831
- },
2832
- // Async and optimistically optimized update – it will not be executed if
2833
- // not necessary (debounced to run at most once-per-tick)
2834
- update: debounce(function () {
2835
- return new Promise(function (resolve) {
2836
- instance.forceUpdate();
2837
- resolve(state);
2838
- });
2839
- }),
2840
- destroy: function destroy() {
2841
- cleanupModifierEffects();
2842
- isDestroyed = true;
2843
- }
2844
- };
2845
-
2846
- if (!areValidElements(reference, popper)) {
2847
-
2848
- return instance;
2849
- }
2850
-
2851
- instance.setOptions(options).then(function (state) {
2852
- if (!isDestroyed && options.onFirstUpdate) {
2853
- options.onFirstUpdate(state);
2854
- }
2855
- }); // Modifiers have the ability to execute arbitrary code before the first
2856
- // update cycle runs. They will be executed in the same order as the update
2857
- // cycle. This is useful when a modifier adds some persistent data that
2858
- // other modifiers need to use, but the modifier is run after the dependent
2859
- // one.
2860
-
2861
- function runModifierEffects() {
2862
- state.orderedModifiers.forEach(function (_ref3) {
2863
- var name = _ref3.name,
2864
- _ref3$options = _ref3.options,
2865
- options = _ref3$options === void 0 ? {} : _ref3$options,
2866
- effect = _ref3.effect;
2867
-
2868
- if (typeof effect === 'function') {
2869
- var cleanupFn = effect({
2870
- state: state,
2871
- name: name,
2872
- instance: instance,
2873
- options: options
2874
- });
2875
-
2876
- var noopFn = function noopFn() {};
2877
-
2878
- effectCleanupFns.push(cleanupFn || noopFn);
2879
- }
2880
- });
2881
- }
2882
-
2883
- function cleanupModifierEffects() {
2884
- effectCleanupFns.forEach(function (fn) {
2885
- return fn();
2886
- });
2887
- effectCleanupFns = [];
2888
- }
2889
-
2890
- return instance;
2891
- };
2892
- }
2893
-
2894
- var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1];
2895
- var createPopper = /*#__PURE__*/popperGenerator({
2896
- defaultModifiers: defaultModifiers
2897
- }); // eslint-disable-next-line import/no-unused-modules
2898
-
2899
- var EMPTY_MODIFIERS = [];
2900
- var usePopper = function usePopper(referenceElement, popperElement, options) {
2901
- if (options === void 0) {
2902
- options = {};
2903
- }
2904
-
2905
- var prevOptions = React__namespace.useRef(null);
2906
- var optionsWithDefaults = {
2907
- onFirstUpdate: options.onFirstUpdate,
2908
- placement: options.placement || 'bottom',
2909
- strategy: options.strategy || 'absolute',
2910
- modifiers: options.modifiers || EMPTY_MODIFIERS
2911
- };
2912
-
2913
- var _React$useState = React__namespace.useState({
2914
- styles: {
2915
- popper: {
2916
- position: optionsWithDefaults.strategy,
2917
- left: '0',
2918
- top: '0'
2919
- },
2920
- arrow: {
2921
- position: 'absolute'
2922
- }
2923
- },
2924
- attributes: {}
2925
- }),
2926
- state = _React$useState[0],
2927
- setState = _React$useState[1];
2928
-
2929
- var updateStateModifier = React__namespace.useMemo(function () {
2930
- return {
2931
- name: 'updateState',
2932
- enabled: true,
2933
- phase: 'write',
2934
- fn: function fn(_ref) {
2935
- var state = _ref.state;
2936
- var elements = Object.keys(state.elements);
2937
- ReactDOM__namespace.flushSync(function () {
2938
- setState({
2939
- styles: fromEntries(elements.map(function (element) {
2940
- return [element, state.styles[element] || {}];
2941
- })),
2942
- attributes: fromEntries(elements.map(function (element) {
2943
- return [element, state.attributes[element]];
2944
- }))
2945
- });
2946
- });
2947
- },
2948
- requires: ['computeStyles']
2949
- };
2950
- }, []);
2951
- var popperOptions = React__namespace.useMemo(function () {
2952
- var newOptions = {
2953
- onFirstUpdate: optionsWithDefaults.onFirstUpdate,
2954
- placement: optionsWithDefaults.placement,
2955
- strategy: optionsWithDefaults.strategy,
2956
- modifiers: [].concat(optionsWithDefaults.modifiers, [updateStateModifier, {
2957
- name: 'applyStyles',
2958
- enabled: false
2959
- }])
2960
- };
2961
-
2962
- if (deepequal__default["default"](prevOptions.current, newOptions)) {
2963
- return prevOptions.current || newOptions;
2964
- } else {
2965
- prevOptions.current = newOptions;
2966
- return newOptions;
2967
- }
2968
- }, [optionsWithDefaults.onFirstUpdate, optionsWithDefaults.placement, optionsWithDefaults.strategy, optionsWithDefaults.modifiers, updateStateModifier]);
2969
- var popperInstanceRef = React__namespace.useRef();
2970
- useIsomorphicLayoutEffect(function () {
2971
- if (popperInstanceRef.current) {
2972
- popperInstanceRef.current.setOptions(popperOptions);
2973
- }
2974
- }, [popperOptions]);
2975
- useIsomorphicLayoutEffect(function () {
2976
- if (referenceElement == null || popperElement == null) {
2977
- return;
2978
- }
2979
-
2980
- var createPopper$1 = options.createPopper || createPopper;
2981
- var popperInstance = createPopper$1(referenceElement, popperElement, popperOptions);
2982
- popperInstanceRef.current = popperInstance;
2983
- return function () {
2984
- popperInstance.destroy();
2985
- popperInstanceRef.current = null;
2986
- };
2987
- }, [referenceElement, popperElement, options.createPopper]);
2988
- return {
2989
- state: popperInstanceRef.current ? popperInstanceRef.current.state : null,
2990
- styles: state.styles,
2991
- attributes: state.attributes,
2992
- update: popperInstanceRef.current ? popperInstanceRef.current.update : null,
2993
- forceUpdate: popperInstanceRef.current ? popperInstanceRef.current.forceUpdate : null
2994
- };
2995
- };
2996
-
2997
- var Tooltip = function (_a) {
2998
- var children = _a.children, rest = __rest(_a, ["children"]);
2999
- return (React__default["default"].createElement("div", exports.__assign({ className: 'str-chat__tooltip' }, rest), children));
3000
- };
3001
- var PopperTooltip = function (_a) {
3002
- var children = _a.children, _b = _a.offset, offset = _b === void 0 ? [0, 10] : _b, referenceElement = _a.referenceElement, _c = _a.placement, placement = _c === void 0 ? 'top' : _c, _d = _a.visible, visible = _d === void 0 ? false : _d;
3003
- var _e = React.useState(null), popperElement = _e[0], setPopperElement = _e[1];
3004
- var _f = usePopper(referenceElement, popperElement, {
3005
- modifiers: [
3006
- {
3007
- name: 'offset',
3008
- options: {
3009
- offset: offset,
3010
- },
3011
- },
3012
- ],
3013
- placement: placement,
3014
- }), attributes = _f.attributes, styles = _f.styles;
3015
- if (!visible)
3016
- return null;
3017
- return (React__default["default"].createElement("div", exports.__assign({ className: 'str-chat__tooltip', ref: setPopperElement, style: styles.popper }, attributes.popper), children));
3018
- };
3019
-
3020
- var EmojiIconLarge = function () {
3021
- var t = useTranslationContext('EmojiIconLarge').t;
3022
- return (React__default["default"].createElement("svg", { height: '28', viewBox: '0 0 28 28', width: '28', xmlns: 'http://www.w3.org/2000/svg' },
3023
- React__default["default"].createElement("title", null, t('Open emoji picker')),
3024
- React__default["default"].createElement("g", { clipRule: 'evenodd', fillRule: 'evenodd' },
3025
- React__default["default"].createElement("path", { d: 'M14 4.4C8.6 4.4 4.4 8.6 4.4 14c0 5.4 4.2 9.6 9.6 9.6c5.4 0 9.6-4.2 9.6-9.6c0-5.4-4.2-9.6-9.6-9.6zM2 14c0-6.6 5.4-12 12-12s12 5.4 12 12s-5.4 12-12 12s-12-5.4-12-12zM12.8 11c0 1-.8 1.8-1.8 1.8s-1.8-.8-1.8-1.8s.8-1.8 1.8-1.8s1.8.8 1.8 1.8zM18.8 11c0 1-.8 1.8-1.8 1.8s-1.8-.8-1.8-1.8s.8-1.8 1.8-1.8s1.8.8 1.8 1.8zM8.6 15.4c.6-.4 1.2-.2 1.6.2c.6.8 1.6 1.8 3 2c1.2.4 2.8.2 4.8-2c.4-.4 1.2-.6 1.6 0c.4.4.6 1.2 0 1.6c-2.2 2.6-4.8 3.4-7 3c-2-.4-3.6-1.8-4.4-3c-.4-.6-.2-1.2.4-1.8z' }))));
3026
- };
3027
- var EmojiIconSmall = function () {
3028
- var t = useTranslationContext('EmojiIconSmall').t;
3029
- return (React__default["default"].createElement("svg", { height: '14', viewBox: '0 0 14 14', width: '14', xmlns: 'http://www.w3.org/2000/svg' },
3030
- React__default["default"].createElement("title", null, t('Open emoji picker')),
3031
- React__default["default"].createElement("g", { clipRule: 'evenodd', fillRule: 'evenodd' },
3032
- React__default["default"].createElement("path", { d: 'M6.7 1.42C3.73 1.42 1.42 3.73 1.42 6.7c0 2.97 2.31 5.28 5.28 5.28c2.97 0 5.28-2.31 5.28-5.28c0-2.97-2.31-5.28-5.28-5.28zM.1 6.7c0-3.63 2.97-6.6 6.6-6.6s6.6 2.97 6.6 6.6s-2.97 6.6-6.6 6.6s-6.6-2.97-6.6-6.6zM6.04 5.05c0 .55-.44.99-.99.99s-.99-.44-.99-.99s.44-.99.99-.99s.99.44.99.99zM9.34 5.05c0 .55-.44.99-.99.99s-.99-.44-.99-.99s.44-.99.99-.99s.99.44.99.99zM3.73 7.47c.33-.22.66-.11.88.11c.33.44.88.99 1.65 1.1c.66.22 1.54.11 2.64-1.1c.22-.22.66-.33.88 0c.22.22.33.66 0 .88c-1.21 1.43-2.64 1.87-3.85 1.65c-1.1-.22-1.98-.99-2.42-1.65c-.22-.33-.11-.66.22-.99z' }))));
3033
- };
3034
- // ThemingV2 icon
3035
- var EmojiPickerIcon = function () { return (React__default["default"].createElement("svg", { preserveAspectRatio: 'xMinYMin', viewBox: '0 0 28 28', width: '100%', xmlns: 'http://www.w3.org/2000/svg' },
3036
- React__default["default"].createElement("g", { clipRule: 'evenodd', fillRule: 'evenodd' },
3037
- React__default["default"].createElement("path", { d: 'M14 4.4C8.6 4.4 4.4 8.6 4.4 14c0 5.4 4.2 9.6 9.6 9.6c5.4 0 9.6-4.2 9.6-9.6c0-5.4-4.2-9.6-9.6-9.6zM2 14c0-6.6 5.4-12 12-12s12 5.4 12 12s-5.4 12-12 12s-12-5.4-12-12zM12.8 11c0 1-.8 1.8-1.8 1.8s-1.8-.8-1.8-1.8s.8-1.8 1.8-1.8s1.8.8 1.8 1.8zM18.8 11c0 1-.8 1.8-1.8 1.8s-1.8-.8-1.8-1.8s.8-1.8 1.8-1.8s1.8.8 1.8 1.8zM8.6 15.4c.6-.4 1.2-.2 1.6.2c.6.8 1.6 1.8 3 2c1.2.4 2.8.2 4.8-2c.4-.4 1.2-.6 1.6 0c.4.4.6 1.2 0 1.6c-2.2 2.6-4.8 3.4-7 3c-2-.4-3.6-1.8-4.4-3c-.4-.6-.2-1.2.4-1.8z' })))); };
3038
- var FileUploadIcon = function () {
3039
- var t = useTranslationContext('FileUploadIcon').t;
3040
- return (React__default["default"].createElement("svg", { height: '14', viewBox: '0 0 14 14', width: '14', xmlns: 'http://www.w3.org/2000/svg' },
3041
- React__default["default"].createElement("title", null, t('Attach files')),
3042
- React__default["default"].createElement("path", { d: 'M7 .5c3.59 0 6.5 2.91 6.5 6.5s-2.91 6.5-6.5 6.5S.5 10.59.5 7 3.41.5 7 .5zm0 12c3.031 0 5.5-2.469 5.5-5.5S10.031 1.5 7 1.5A5.506 5.506 0 0 0 1.5 7c0 3.034 2.469 5.5 5.5 5.5zM7.506 3v3.494H11v1.05H7.506V11h-1.05V7.544H3v-1.05h3.456V3h1.05z', fillRule: 'nonzero' })));
3043
- };
3044
- var FileUploadIconFlat = function () {
3045
- var t = useTranslationContext('FileUploadIconFlat').t;
3046
- return (React__default["default"].createElement("svg", { height: '14', viewBox: '0 0 14 14', width: '14', xmlns: 'http://www.w3.org/2000/svg' },
3047
- React__default["default"].createElement("title", null, t('Attach files')),
3048
- React__default["default"].createElement("path", { d: 'M1.667.333h10.666c.737 0 1.334.597 1.334 1.334v10.666c0 .737-.597 1.334-1.334 1.334H1.667a1.333 1.333 0 0 1-1.334-1.334V1.667C.333.93.93.333 1.667.333zm2 1.334a1.667 1.667 0 1 0 0 3.333 1.667 1.667 0 0 0 0-3.333zm-2 9.333v1.333h10.666v-4l-2-2-4 4-2-2L1.667 11z', fillRule: 'nonzero' })));
3049
- };
3050
- var LoadingIndicatorIcon = function (_a) {
3051
- var _b = _a.size, size = _b === void 0 ? 20 : _b;
3052
- var id = React.useMemo(function () { return nanoid(); }, []);
3053
- return (React__default["default"].createElement("div", { className: 'str-chat__loading-indicator' },
3054
- React__default["default"].createElement("svg", { "data-testid": 'loading-indicator', height: size, viewBox: '0 0 30 30', width: size, xmlns: 'http://www.w3.org/2000/svg' },
3055
- React__default["default"].createElement("defs", null,
3056
- React__default["default"].createElement("linearGradient", { id: "".concat(id, "-linear-gradient"), x1: '50%', x2: '50%', y1: '0%', y2: '100%' },
3057
- React__default["default"].createElement("stop", { offset: '0%', stopColor: '#FFF', stopOpacity: '0' }),
3058
- React__default["default"].createElement("stop", { "data-testid": 'stop-color', offset: '100%', stopOpacity: '1' }))),
3059
- React__default["default"].createElement("path", { d: 'M2.518 23.321l1.664-1.11A12.988 12.988 0 0 0 15 28c7.18 0 13-5.82 13-13S22.18 2 15 2V0c8.284 0 15 6.716 15 15 0 8.284-6.716 15-15 15-5.206 0-9.792-2.652-12.482-6.679z', fill: "url(#".concat(id, "-linear-gradient)"), fillRule: 'evenodd' }))));
3060
- };
3061
- // ThemingV2 icon
3062
- var UploadIcon = function () { return (React__default["default"].createElement("svg", { "data-testid": 'attach', fill: 'none', height: '24', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
3063
- React__default["default"].createElement("g", { clipPath: 'url(#clip0_10878_5)' },
3064
- React__default["default"].createElement("path", { d: 'M12.9997 6.99993L10.9997 6.99993L10.9997 10.9999L6.99972 10.9999L6.99972 12.9999L10.9997 12.9999L10.9997 16.9999L12.9997 16.9999L12.9997 12.9999L16.9997 12.9999L16.9997 10.9999L12.9997 10.9999L12.9997 6.99993ZM11.9997 1.99992C6.47972 1.99992 1.99972 6.47993 1.99972 11.9999C1.99972 17.5199 6.47972 21.9999 11.9997 21.9999C17.5197 21.9999 21.9997 17.5199 21.9997 11.9999C21.9997 6.47993 17.5197 1.99992 11.9997 1.99992ZM11.9997 19.9999C7.58972 19.9999 3.99972 16.4099 3.99972 11.9999C3.99972 7.58993 7.58972 3.99993 11.9997 3.99993C16.4097 3.99993 19.9997 7.58993 19.9997 11.9999C19.9997 16.4099 16.4097 19.9999 11.9997 19.9999Z', fill: 'black' })),
3065
- React__default["default"].createElement("defs", null,
3066
- React__default["default"].createElement("clipPath", { id: 'clip0_10878_5' },
3067
- React__default["default"].createElement("rect", { fill: 'white', height: '24', width: '24' }))))); };
3068
- var CloseIcon = function () { return (React__default["default"].createElement("svg", { "data-testid": 'close-no-outline', fill: 'none', height: '24', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
3069
- React__default["default"].createElement("path", { d: 'M19 6.41L17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12L19 6.41Z', fill: 'black' }))); };
3070
- var RetryIcon = function () { return (React__default["default"].createElement("svg", { "data-testid": 'retry', fill: 'none', height: '24', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
3071
- React__default["default"].createElement("path", { d: 'M17.6449 6.35C16.1949 4.9 14.2049 4 11.9949 4C7.57488 4 4.00488 7.58 4.00488 12C4.00488 16.42 7.57488 20 11.9949 20C15.7249 20 18.8349 17.45 19.7249 14H17.6449C16.8249 16.33 14.6049 18 11.9949 18C8.68488 18 5.99488 15.31 5.99488 12C5.99488 8.69 8.68488 6 11.9949 6C13.6549 6 15.1349 6.69 16.2149 7.78L12.9949 11H19.9949V4L17.6449 6.35Z', fill: 'black' }))); };
3072
- var DownloadIcon = function () { return (React__default["default"].createElement("svg", { "data-testid": 'download', fill: 'none', height: '24', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
3073
- React__default["default"].createElement("path", { d: 'M19.35 10.04C18.67 6.59 15.64 4 12 4C9.11 4 6.6 5.64 5.35 8.04C2.34 8.36 0 10.91 0 14C0 17.31 2.69 20 6 20H19C21.76 20 24 17.76 24 15C24 12.36 21.95 10.22 19.35 10.04ZM19 18H6C3.79 18 2 16.21 2 14C2 11.95 3.53 10.24 5.56 10.03L6.63 9.92L7.13 8.97C8.08 7.14 9.94 6 12 6C14.62 6 16.88 7.86 17.39 10.43L17.69 11.93L19.22 12.04C20.78 12.14 22 13.45 22 15C22 16.65 20.65 18 19 18ZM13.45 10H10.55V13H8L12 17L16 13H13.45V10Z', fill: 'black' }))); };
3074
- var LinkIcon = function () { return (React__default["default"].createElement("svg", { fill: 'none', height: '11', viewBox: '0 0 20 11', width: '20', xmlns: 'http://www.w3.org/2000/svg' },
3075
- React__default["default"].createElement("path", { clipRule: 'evenodd', d: 'M1.9 5.5C1.9 3.79 3.29 2.4 5 2.4H8.05C8.57467 2.4 9 1.97467 9 1.45C9 0.925329 8.57467 0.5 8.05 0.5H5C2.24 0.5 0 2.74 0 5.5C0 8.26 2.24 10.5 5 10.5H8.05C8.57467 10.5 9 10.0747 9 9.55C9 9.02533 8.57467 8.6 8.05 8.6H5C3.29 8.6 1.9 7.21 1.9 5.5ZM6 5.5C6 6.05228 6.44772 6.5 7 6.5H13C13.5523 6.5 14 6.05228 14 5.5C14 4.94772 13.5523 4.5 13 4.5H7C6.44772 4.5 6 4.94772 6 5.5ZM15 0.5H11.95C11.4253 0.5 11 0.925329 11 1.45C11 1.97467 11.4253 2.4 11.95 2.4H15C16.71 2.4 18.1 3.79 18.1 5.5C18.1 7.21 16.71 8.6 15 8.6H11.95C11.4253 8.6 11 9.02533 11 9.55C11 10.0747 11.4253 10.5 11.95 10.5H15C17.76 10.5 20 8.26 20 5.5C20 2.74 17.76 0.5 15 0.5Z', fill: '#005DFF', fillRule: 'evenodd' }))); };
3076
- var SendIconV1 = function () {
3077
- var t = useTranslationContext('SendButton').t;
3078
- return (React__default["default"].createElement("svg", { height: '17', viewBox: '0 0 18 17', width: '18', xmlns: 'http://www.w3.org/2000/svg' },
3079
- React__default["default"].createElement("title", null, t('Send')),
3080
- React__default["default"].createElement("path", { d: 'M0 17.015l17.333-8.508L0 0v6.617l12.417 1.89L0 10.397z', fill: '#006cff', fillRule: 'evenodd' })));
3081
- };
3082
- var SendIconV2 = function () {
3083
- var t = useTranslationContext('SendButton').t;
3084
- return (React__default["default"].createElement("svg", { "data-testid": 'send', fill: 'none', height: '24', viewBox: '0 0 24 24', width: '24', xmlns: 'http://www.w3.org/2000/svg' },
3085
- React__default["default"].createElement("title", null, t('Send')),
3086
- React__default["default"].createElement("path", { d: 'M4.00952 22L24 12L4.00952 2L4 9.77778L18.2857 12L4 14.2222L4.00952 22Z', fill: 'black' })));
3087
- };
3088
- var SendButton = function (_a) {
3089
- var sendMessage = _a.sendMessage, rest = __rest(_a, ["sendMessage"]);
3090
- var themeVersion = useChatContext('SendButton').themeVersion;
3091
- return (React__default["default"].createElement("button", exports.__assign({ "aria-label": 'Send', className: 'str-chat__send-button', "data-testid": 'send-button', onClick: sendMessage, type: 'button' }, rest), themeVersion === '2' ? React__default["default"].createElement(SendIconV2, null) : React__default["default"].createElement(SendIconV1, null)));
3092
- };
3093
-
3094
- exports.ChannelActionContext = ChannelActionContext;
3095
- exports.ChannelActionProvider = ChannelActionProvider;
3096
- exports.ChannelListContext = ChannelListContext;
3097
- exports.ChannelListContextProvider = ChannelListContextProvider;
3098
- exports.ChannelStateContext = ChannelStateContext;
3099
- exports.ChannelStateProvider = ChannelStateProvider;
3100
- exports.ChatContext = ChatContext;
3101
- exports.ChatProvider = ChatProvider;
3102
- exports.CloseIcon = CloseIcon;
3103
- exports.ComponentContext = ComponentContext;
3104
- exports.ComponentProvider = ComponentProvider;
3105
- exports.DownloadIcon = DownloadIcon;
3106
- exports.EmojiIconLarge = EmojiIconLarge;
3107
- exports.EmojiIconSmall = EmojiIconSmall;
3108
- exports.EmojiPickerIcon = EmojiPickerIcon;
3109
- exports.FileUploadIcon = FileUploadIcon;
3110
- exports.FileUploadIconFlat = FileUploadIconFlat;
3111
- exports.LinkIcon = LinkIcon;
3112
- exports.LoadingIndicatorIcon = LoadingIndicatorIcon;
3113
- exports.MessageContext = MessageContext;
3114
- exports.MessageInputContext = MessageInputContext;
3115
- exports.MessageInputContextProvider = MessageInputContextProvider;
3116
- exports.MessageListContext = MessageListContext;
3117
- exports.MessageListContextProvider = MessageListContextProvider;
3118
- exports.MessageProvider = MessageProvider;
3119
- exports.PopperTooltip = PopperTooltip;
3120
- exports.RetryIcon = RetryIcon;
3121
- exports.SendButton = SendButton;
3122
- exports.SendIconV1 = SendIconV1;
3123
- exports.SendIconV2 = SendIconV2;
3124
- exports.Streami18n = Streami18n;
3125
- exports.Tooltip = Tooltip;
3126
- exports.TranslationContext = TranslationContext;
3127
- exports.TranslationProvider = TranslationProvider;
3128
- exports.TypingContext = TypingContext;
3129
- exports.TypingProvider = TypingProvider;
3130
- exports.UploadIcon = UploadIcon;
3131
- exports.__awaiter = __awaiter;
3132
- exports.__generator = __generator;
3133
- exports.__read = __read;
3134
- exports.__rest = __rest;
3135
- exports.__spreadArray = __spreadArray;
3136
- exports.deTranslations = deTranslations;
3137
- exports.defaultDateTimeParser = defaultDateTimeParser;
3138
- exports.defaultTranslatorFunction = defaultTranslatorFunction;
3139
- exports.enTranslations = enTranslations;
3140
- exports.esTranslations = esTranslations;
3141
- exports.frTranslations = frTranslations;
3142
- exports.hiTranslations = hiTranslations;
3143
- exports.isDate = isDate;
3144
- exports.isDayOrMoment = isDayOrMoment;
3145
- exports.isLanguageSupported = isLanguageSupported;
3146
- exports.isNumberOrString = isNumberOrString;
3147
- exports.itTranslations = itTranslations;
3148
- exports.jaTranslations = jaTranslations;
3149
- exports.koTranslations = koTranslations;
3150
- exports.nanoid = nanoid;
3151
- exports.nlTranslations = nlTranslations;
3152
- exports.ptTranslations = ptTranslations;
3153
- exports.ruTranslations = ruTranslations;
3154
- exports.trTranslations = trTranslations;
3155
- exports.useChannelActionContext = useChannelActionContext;
3156
- exports.useChannelListContext = useChannelListContext;
3157
- exports.useChannelStateContext = useChannelStateContext;
3158
- exports.useChatContext = useChatContext;
3159
- exports.useComponentContext = useComponentContext;
3160
- exports.useMessageContext = useMessageContext;
3161
- exports.useMessageInputContext = useMessageInputContext;
3162
- exports.useMessageListContext = useMessageListContext;
3163
- exports.usePopper = usePopper;
3164
- exports.useTranslationContext = useTranslationContext;
3165
- exports.useTypingContext = useTypingContext;
3166
- exports.withChannelActionContext = withChannelActionContext;
3167
- exports.withChannelStateContext = withChannelStateContext;
3168
- exports.withChatContext = withChatContext;
3169
- exports.withComponentContext = withComponentContext;
3170
- exports.withMessageContext = withMessageContext;
3171
- exports.withTranslationContext = withTranslationContext;
3172
- exports.withTypingContext = withTypingContext;