@talkjs/web-components 0.0.29 → 0.0.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/default.js CHANGED
@@ -1,87 +1,92 @@
1
1
  "use client";
2
- import na from "htm";
3
- import * as se from "react";
4
- import { useMemo as P, useRef as b, useState as H, useEffect as F, useCallback as U, createElement as ie, Fragment as aa, useLayoutEffect as ce, useContext as sa, forwardRef as $e, useImperativeHandle as qt } from "react";
5
- import * as ia from "universal-base64";
6
- import { jsx as O, jsxs as V, Fragment as Le } from "react/jsx-runtime";
7
- import ra from "wavesurfer.js";
8
- import { Decoration as Jt, DecorationSet as Zt, EditorView as oa } from "prosemirror-view";
9
- import { useSession as he, useStore as f, useController as _e, useTheme as G, schema as y, useEditorInternals as ge, useEmojiPicker as Ea, usePopover as ua, EmojiPickerContext as Qt, PopoverContext as Da, useChatboxCallbacks as la, EditorInternalsContext as en, PermissionContext as tn, StoreContext as nn, ThemeContext as an, ControllerContext as sn, SessionContext as rn, ChatboxCallbacksContext as ca } from "./globalConstants.js";
10
- import { PluginKey as on, Plugin as En, TextSelection as Tt, EditorState as _a } from "prosemirror-state";
11
- import { keymap as dt } from "prosemirror-keymap";
12
- import { history as Aa, undo as Oa, redo as Ta } from "prosemirror-history";
13
- import { baseKeymap as ve } from "prosemirror-commands";
14
- import da, { EmailMatch as Sa, UrlMatch as Ia } from "autolinker";
15
- import { ReplaceStep as Na } from "prosemirror-transform";
16
- import { observable as B, ObservableHint as St, batch as ue, observe as It, internal as Ra } from "@legendapp/state";
17
- import { useObservable as J, useSelector as v, useObserveEffect as De, For as tt } from "@legendapp/state/react";
18
- import { CSSTransition as La } from "react-transition-group";
19
- import { useFloating as Ca } from "@floating-ui/react-dom";
20
- import * as ze from "@radix-ui/react-popover";
21
- import * as Me from "@radix-ui/react-dropdown-menu";
22
- import { ErrorBoundary as un } from "react-error-boundary";
23
- import { getTalkSession as ma } from "@talkjs/core";
24
- import pa from "lodash.merge";
25
- import { configureLegendState as ha } from "@legendapp/state/config/configureLegendState";
26
- import { polyfillCountryFlagEmojis as ga } from "country-flag-emoji-polyfill";
27
- import { createRoot as Fa } from "react-dom/client";
28
- var va = { TALK_GMK: "AIzaSyAs_WXNLlj31EHJI_Lw8siO2B3ZJLUzBH0", BASE_URL: "/", MODE: "production", DEV: !1, PROD: !0, SSR: !1 };
29
- const fa = function(e) {
30
- return va[e];
31
- }("TALK_GMK"), ka = /[^a-zA-Z\u00C0-\u024F\u1E00-\u1EFF\u0400-\u044f\u0300-\u036e]+/, Ma = (e) => e.split(ka).filter((t) => t).map((t) => t[0]).join("") || e[Symbol.iterator]().next().value || "";
32
- function Dn(e) {
2
+ var vt = (e) => {
3
+ throw TypeError(e);
4
+ };
5
+ var ft = (e, t, n) => t.has(e) || vt("Cannot " + n);
6
+ var Y = (e, t, n) => (ft(e, t, "read from private field"), n ? n.call(e) : t.get(e)), me = (e, t, n) => t.has(e) ? vt("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(e) : t.set(e, n), st = (e, t, n, a) => (ft(e, t, "write to private field"), a ? a.call(e, n) : t.set(e, n), n);
7
+ import Ia from "htm";
8
+ import * as ue from "react";
9
+ import { useMemo as M, useRef as P, useState as b, useEffect as h, useCallback as H, createElement as le, Fragment as Na, useLayoutEffect as Ie, useContext as Ra, forwardRef as Je, useImperativeHandle as Ze } from "react";
10
+ import * as La from "universal-base64";
11
+ import { jsx as O, jsxs as K, Fragment as ve } from "react/jsx-runtime";
12
+ import ma from "wavesurfer.js";
13
+ import { Decoration as Dn, DecorationSet as _n, EditorView as Ca } from "prosemirror-view";
14
+ import { useSession as Pe, useStore as f, usePublicController as An, useTheme as W, schema as y, useEditorInternals as He, useController as Ue, useEmojiPicker as pa, usePopover as ha, EmojiPickerContext as On, PopoverContext as ga, useChatboxCallbacks as Fa, EditorInternalsContext as Tn, PermissionContext as dn, StoreContext as Sn, ThemeContext as In, ControllerContext as Nn, SessionContext as Rn, ChatboxCallbacksContext as va, PublicControllerContext as Ln } from "./globalConstants.js";
15
+ import { PluginKey as mn, Plugin as Cn, TextSelection as kt, EditorState as fa } from "prosemirror-state";
16
+ import { keymap as Mt } from "prosemirror-keymap";
17
+ import { history as ka, undo as Ma, redo as Ba } from "prosemirror-history";
18
+ import { baseKeymap as ye } from "prosemirror-commands";
19
+ import Pa, { EmailMatch as Ha, UrlMatch as Ua } from "autolinker";
20
+ import { ReplaceStep as ba } from "prosemirror-transform";
21
+ import { observable as U, ObservableHint as Bt, batch as Te, observe as Pt, internal as ya } from "@legendapp/state";
22
+ import { useObservable as te, useSelector as F, useObserveEffect as de, For as _t } from "@legendapp/state/react";
23
+ import { CSSTransition as wa } from "react-transition-group";
24
+ import { useFloating as Ya } from "@floating-ui/react-dom";
25
+ import * as it from "@radix-ui/react-popover";
26
+ import * as $e from "@radix-ui/react-dropdown-menu";
27
+ import { configureLegendState as $a } from "@legendapp/state/config/configureLegendState";
28
+ import { polyfillCountryFlagEmojis as ja } from "country-flag-emoji-polyfill";
29
+ import { ErrorBoundary as pn } from "react-error-boundary";
30
+ import { getTalkSession as xa } from "@talkjs/core";
31
+ import Va from "lodash.merge";
32
+ import { createRoot as Xa } from "react-dom/client";
33
+ var Ga = { TALK_GMK: "AIzaSyAs_WXNLlj31EHJI_Lw8siO2B3ZJLUzBH0", BASE_URL: "/", MODE: "production", DEV: !1, PROD: !0, SSR: !1 };
34
+ const za = function(e) {
35
+ return Ga[e];
36
+ }("TALK_GMK"), Ka = /[^a-zA-Z\u00C0-\u024F\u1E00-\u1EFF\u0400-\u044f\u0300-\u036e]+/, Wa = (e) => e.split(Ka).filter((t) => t).map((t) => t[0]).join("") || e[Symbol.iterator]().next().value || "";
37
+ function hn(e) {
33
38
  const t = function(n) {
34
39
  let a = 0;
35
40
  for (let s = 0; s < n.length; s++) a = (a << 5) - a + n.charCodeAt(s), a |= 0;
36
41
  return Math.abs(a);
37
- }(e) % Rt.length;
38
- return Rt[t];
42
+ }(e) % Ut.length;
43
+ return Ut[t];
39
44
  }
40
- function je(e, t) {
45
+ function Qe(e, t) {
41
46
  const n = t.lastIndex;
42
47
  let a;
43
48
  const s = [];
44
49
  for (; (a = t.exec(e)) !== null; ) s.push(a);
45
50
  return t.lastIndex = n, s;
46
51
  }
47
- function nt(e, t, n) {
52
+ function At(e, t, n) {
48
53
  let a = 0;
49
54
  const s = [];
50
55
  for (const i of t) i.offset < a || (i.offset > a && s.push(e.substring(a, i.offset)), s.push(...n(i)), a = i.offset + i.matchedText.length);
51
56
  return a < e.length && s.push(e.substring(a)), s;
52
57
  }
53
- function ln(e) {
58
+ function gn(e) {
54
59
  try {
55
60
  return new URL(e).hostname;
56
61
  } catch (t) {
57
62
  return;
58
63
  }
59
64
  }
60
- function fe(e) {
65
+ function we(e) {
61
66
  const t = e.replace(/%2F/g, "/").replace(/^.*?\/([^/]+?)(?:\?.*)?$/, "$1");
62
67
  return decodeURIComponent(t);
63
68
  }
64
- function Nt(e, t) {
69
+ function Ht(e, t) {
65
70
  return e.localeCompare(t, void 0, { usage: "search", sensitivity: "base" }) === 0;
66
71
  }
67
- const Rt = ["#996666", "#9A6E61", "#8D7662", "#8E775E", "#948771", "#8A8360", "#888D65", "#6F8E63", "#749378", "#678975", "#779E86", "#639A8F", "#6D92A1", "#65869F", "#697E9A", "#736C9F", "#8C6495", "#956387", "#B05D54", "#B16D52", "#AF8751", "#AC8A56", "#B7A458", "#B5B35C", "#83AA5D", "#4F9D5D", "#5FA777", "#66B58F", "#5FB3AC", "#589AAF", "#4E7F9E", "#456CAC", "#6456B7", "#714AB2", "#9771B5", "#C154C1", "#B05E81", "#B04C6A", "#B94E48", "#AF593E", "#C5994B", "#B8C25D", "#87AB39", "#4FA83D", "#40A860", "#41AA78", "#3AB09E", "#3FC1AA", "#56B4BE", "#3EABBF", "#4682B4", "#7A58C1", "#9966CC", "#C54B8C", "#B44668", "#AE4560", "#A3807B", "#AB917A", "#ACA586", "#A8AF8E", "#9EA587", "#8BA690", "#7DA98D", "#7CB0A1", "#8BA9A5", "#7CA1A6", "#859FAF", "#8D90A1", "#A397B4", "#AE809E", "#C08081", "#BB8983", "#B19461", "#B5A27F", "#B8B56A", "#9AB973", "#7AC488", "#7CB7BB", "#80B3C4", "#788BBA", "#7A89B8", "#9678B6", "#CB8FA9", "#B57281", "#C6726B", "#C88A65", "#C2955D", "#C8B568", "#B9C46A", "#74C365", "#6FD0C5", "#6093D1", "#7666C6", "#D06DA1"], Ba = Symbol("no_render");
68
- function x(e) {
69
- const t = J(!1), n = b({ _value: typeof e == "function" ? e() : e.peek(), get value() {
72
+ const Ut = ["#996666", "#9A6E61", "#8D7662", "#8E775E", "#948771", "#8A8360", "#888D65", "#6F8E63", "#749378", "#678975", "#779E86", "#639A8F", "#6D92A1", "#65869F", "#697E9A", "#736C9F", "#8C6495", "#956387", "#B05D54", "#B16D52", "#AF8751", "#AC8A56", "#B7A458", "#B5B35C", "#83AA5D", "#4F9D5D", "#5FA777", "#66B58F", "#5FB3AC", "#589AAF", "#4E7F9E", "#456CAC", "#6456B7", "#714AB2", "#9771B5", "#C154C1", "#B05E81", "#B04C6A", "#B94E48", "#AF593E", "#C5994B", "#B8C25D", "#87AB39", "#4FA83D", "#40A860", "#41AA78", "#3AB09E", "#3FC1AA", "#56B4BE", "#3EABBF", "#4682B4", "#7A58C1", "#9966CC", "#C54B8C", "#B44668", "#AE4560", "#A3807B", "#AB917A", "#ACA586", "#A8AF8E", "#9EA587", "#8BA690", "#7DA98D", "#7CB0A1", "#8BA9A5", "#7CA1A6", "#859FAF", "#8D90A1", "#A397B4", "#AE809E", "#C08081", "#BB8983", "#B19461", "#B5A27F", "#B8B56A", "#9AB973", "#7AC488", "#7CB7BB", "#80B3C4", "#788BBA", "#7A89B8", "#9678B6", "#CB8FA9", "#B57281", "#C6726B", "#C88A65", "#C2955D", "#C8B568", "#B9C46A", "#74C365", "#6FD0C5", "#6093D1", "#7666C6", "#D06DA1"], qa = Symbol("no_render");
73
+ function z(e) {
74
+ const t = te(!1), n = P({ _value: typeof e == "function" ? e() : e.peek(), get value() {
70
75
  return setTimeout(() => {
71
76
  t.set(!0);
72
77
  }), n.current._value;
73
78
  }, set value(a) {
74
79
  n.current._value = a;
75
80
  } });
76
- return v(() => {
77
- if (!t.get()) return Ba;
81
+ return F(() => {
82
+ if (!t.get()) return qa;
78
83
  const a = typeof e == "function" ? e() : e.get();
79
84
  return n.current.value = a, a;
80
85
  }), n.current;
81
86
  }
82
- function Ae() {
83
- const e = he(), t = f(), n = _e(), a = G(), s = x(t.app$.appMetadata), i = x(t.currentUser$), r = x(t.state$.currentConversation), o = x(t.t$), E = x(t.device$), u = x(t.themeCustom$), D = x(() => t.state$.typing.child(t.state$.extCurrentConversationId.get()).get()), l = x(() => t.state$.participants.child(t.state$.extCurrentConversationId.get()).get());
84
- return P(() => ({ session: e, store: t, chatbox: n, theme: a, get app() {
87
+ function Ne() {
88
+ const e = Pe(), t = f(), n = An(), a = W(), s = z(t.app$.appMetadata), i = z(t.currentUser$), r = z(t.state$.currentConversation), o = z(t.t$), E = z(t.device$), u = z(t.themeCustom$), l = z(() => t.state$.typing.child(t.state$.extCurrentConversationId.get()).get()), c = z(() => t.state$.participants.child(t.state$.extCurrentConversationId.get()).get());
89
+ return M(() => ({ session: e, store: t, chatbox: n, theme: a, get app() {
85
90
  return s.value;
86
91
  }, get currentUser() {
87
92
  return i.value;
@@ -94,14 +99,14 @@ function Ae() {
94
99
  }, get themeCustom() {
95
100
  return u.value.value;
96
101
  }, get typing() {
97
- return D.value;
98
- }, get participants() {
99
102
  return l.value;
100
- } }), [s, n, r, i, E, t, o, a, u, D, l, e]);
103
+ }, get participants() {
104
+ return c.value;
105
+ } }), [s, n, r, i, E, t, o, a, u, l, c, e]);
101
106
  }
102
- function cn() {
103
- const e = he(), t = f(), n = G(), a = _e(), s = x(t.app$.appMetadata), i = x(t.currentUser$), r = x(t.t$), o = x(t.device$), E = x(t.themeCustom$);
104
- return P(() => ({ session: e, store: t, theme: n, conversationList: a, get app() {
107
+ function Fn() {
108
+ const e = Pe(), t = f(), n = W(), a = An(), s = z(t.app$.appMetadata), i = z(t.currentUser$), r = z(t.t$), o = z(t.device$), E = z(t.themeCustom$);
109
+ return M(() => ({ session: e, store: t, theme: n, conversationList: a, get app() {
105
110
  return s.value;
106
111
  }, get currentUser() {
107
112
  return i.value;
@@ -113,12 +118,12 @@ function cn() {
113
118
  return E.value.value;
114
119
  } }), [s, a, i, o, e, t, r, n, E]);
115
120
  }
116
- class xe {
121
+ class et {
117
122
  constructor(t = {}) {
118
123
  this._handlers = /* @__PURE__ */ new Set(), this._meta = t;
119
124
  }
120
125
  meta(t) {
121
- return new xe(t);
126
+ return new et(t);
122
127
  }
123
128
  _emit(t, n) {
124
129
  for (const a of this._handlers) a({ level: t, data: n, timestamp: Date.now(), meta: this._meta });
@@ -142,72 +147,72 @@ class xe {
142
147
  return this._handlers.add(t), () => this._handlers.delete(t);
143
148
  }
144
149
  }
145
- const Ue = new xe(), q = new xe(), A = { code: "en-US", name: "English (US)", translation: { YESTERDAY: "Yesterday", TODAY: "Today", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "just now", LOCATION: "Location", CANCEL: "Cancel", INBOX: "Inbox", DESKTOP_NOTIFICATIONS: "Browser notifications", DESKTOP_NOTIFICATIONS_ERROR: "Can't enable browser notifications because your browser actively blocks them. Try looking in the settings or using a different browser.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo notification`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "If you keep your browser tab open, you'll see this pop up when someone talks to you.", SEND_BUTTON_TEXT: "Send", ENTRYBOX_TEXT_LIMIT: "Only 10,000 characters are allowed.", ENTRYBOX_PLACEHOLDER: "Say something...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "This conversation is no longer active.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "You can read, but not send messages.", MESSAGELIST_LOADING_OLDER: "Loading older messages...", MESSAGELIST_SHOW_OLDER: "Show older messages", MESSAGELIST_NEW_MARKER: "New", MESSAGE_SENT_VIA_EMAIL: "This message was sent via email", YOU_MARKER: "you", UPLOAD_IN_PROGRESS: "Uploading...", UPLOAD_SEND_FILE: "Send file", UPLOAD_SHARE_LOCATION: "Share location", UPLOAD_ERROR: "Unfortunately, something went wrong uploading. The file might be unsupported or too large.", SHARE_LOCATION_ERROR: "Cannot share location: ", LOADING: "Loading...", HUB_EMPTY: "Your chat history will show up here", HUB_SHOW_EARLIER: "Show earlier chats", INBOX_NO_CHATS_TITLE: "No chats yet!", INBOX_NO_CHATS_BODY: "Once you've had one or more conversations, they will show up here.", ENABLE_TRANSLATION: "Translate this conversation to English", DISABLE_TRANSLATION: "Show original", SEARCH_PLACEHOLDER_TEXT: "Search...", SEARCH_SEARCHING: "Searching...", SEARCH_NO_RESULTS: "No results found", SEARCH_NO_MORE_RESULTS: "No more results", CHAT_NOT_FOUND: "Chat not found", DELETE_MESSAGE: "Delete message", DELETION_EXPLANATION: "If you delete this message, it will disappear for everybody.", EDIT_MESSAGE: "Edit message", SAVE: "Save", EDITED_INDICATOR: "edited", REPLY_TO_MESSAGE: "Reply", REPLY_TO_ARIA_LABEL: (e, t) => `Replying to ${e}: ${t}`, REPLY_MODE_LEAVE_ARIA_LABEL: "Exit reply mode", ADD_REACTION: "Add reaction", AUTH_EXPIRED_OVERLAY_TITLE: "Your chat session has expired", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Refresh the page to continue", VOICE_MESSAGE: "Voice message", LEAVE_CONVERSATION: "Leave conversation", MARK_CONVERSATION_AS_UNREAD: "Mark as unread", STATUS_INDICATOR_ONLINE: "Active", STATUS_INDICATOR_OFFLINE: "Away", CONTACT_INFORMATION_HIDDEN: "hidden information" } }, Pa = { code: "ar", name: "Arabic", translation: { YESTERDAY: "الأمس", TODAY: "اليوم", DAYS: "يوم", HOURS: "ساعة", MINUTES: "دقيقة", JUST_NOW: "فقط الآن", LOCATION: "الموقع", CANCEL: "إلغاء", INBOX: "علبة الوارد", DESKTOP_NOTIFICATIONS: "إشعارات المتصفح", DESKTOP_NOTIFICATIONS_ERROR: "لا يمكن تمكين إشعارات المتصفح لأن متصفحك يمنعها بشكل نشط. جرّب البحث في الإعدادات أو استخدام متصفح آخر.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `إعلام ${e} التجريبي`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "إذا أبقيت علامة تبويب المتصفح مفتوحة ، فسترى هذا ينبثق عندما يتحدث شخص معك.", SEND_BUTTON_TEXT: "إرسال", ENTRYBOX_TEXT_LIMIT: "يُسمح فقط بـ 10.000 حرف.", ENTRYBOX_PLACEHOLDER: "قل شيئًا ...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "هذه المحادثة لم تعد نشطة.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "يمكنك القراءة ، لكن لا يمكنك إرسال الرسائل.", MESSAGELIST_LOADING_OLDER: "جارٍ تحميل الرسائل القديمة ...", MESSAGELIST_SHOW_OLDER: "عرض الرسائل الأقدم", MESSAGELIST_NEW_MARKER: "جديد", MESSAGE_SENT_VIA_EMAIL: "تم إرسال هذه الرسالة عبر البريد الإلكتروني", YOU_MARKER: "أنت", UPLOAD_IN_PROGRESS: "جارٍ التحميل ...", UPLOAD_SEND_FILE: "إرسال ملف", UPLOAD_SHARE_LOCATION: "مشاركة الموقع", UPLOAD_ERROR: "حدث خطأ ما في تحميل شيء. ربما يكون الملف غير متوافق أو كبير جدًا.", SHARE_LOCATION_ERROR: "لا يمكن مشاركة الموقع:", LOADING: "جارٍ التحميل ...", HUB_EMPTY: "سوف يظهر سجل الدردشات هنا", HUB_SHOW_EARLIER: "إظهار الدردشات السابقة", INBOX_NO_CHATS_TITLE: "لا توجد دردشات بعد!", INBOX_NO_CHATS_BODY: "بمجرد أن يكون لديك واحد أو أكثر من المحادثات ، سوف تظهر هنا.", ENABLE_TRANSLATION: "ترجم هذه المحادثة إلى العربية", DISABLE_TRANSLATION: "إظهار الأصلي", SEARCH_PLACEHOLDER_TEXT: "...بحث", SEARCH_SEARCHING: "...يتم الآن البحث", SEARCH_NO_RESULTS: "لم يتم العثور على نتائج", SEARCH_NO_MORE_RESULTS: "لا يوجد المزيد من النتائج", CHAT_NOT_FOUND: "لم يتم العثور على الدردشة", DELETE_MESSAGE: "احذف الرسالة", DELETION_EXPLANATION: "إذا قمت بحذف هذه الرسالة، فهي ستختفي للجميع.", EDIT_MESSAGE: "تعديل الرسالة", SAVE: "حفظ", EDITED_INDICATOR: "معدّلة", REPLY_TO_MESSAGE: "رد", ADD_REACTION: "أضف تفاعلاً", AUTH_EXPIRED_OVERLAY_TITLE: "انتهت جلسة الدردشة المخصصة لك", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "يُرجى إعادة تحميل الصفحة للمتابعة", VOICE_MESSAGE: "رسالة صوتية", CONTACT_INFORMATION_HIDDEN: "المعلومات المخفية", LEAVE_CONVERSATION: "الخروج من المحادثة", MARK_CONVERSATION_AS_UNREAD: "وضع علامة غير مقروءة", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Ha = { code: "bg-BG", name: "Bulgarian", translation: { YESTERDAY: "Вчера", TODAY: "Днес", DAYS: "Ден", HOURS: "Час", MINUTES: "m", JUST_NOW: "Току-що", LOCATION: "местоположението", CANCEL: "Откажи", INBOX: "Кутия", DESKTOP_NOTIFICATIONS: "Известия на браузъра", DESKTOP_NOTIFICATIONS_ERROR: "Не можете да активирате известията на браузъра, защото браузърът ви ги блокира активно. Опитайте да погледнете в настройките или да използвате друг браузър.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} демо известие`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Ако държите раздела на браузъра си отворен, ще видите този изскачащ прозорец, когато някой говори с вас.", SEND_BUTTON_TEXT: "Изпрати", ENTRYBOX_TEXT_LIMIT: "Разрешени са само до 10.000 знака.", ENTRYBOX_PLACEHOLDER: "Кажете нещо...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Този ​​разговор вече не е активен.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Можете да четете, но не и да изпращате съобщения.", MESSAGELIST_LOADING_OLDER: "Зареждане на по-стари съобщения...", MESSAGELIST_SHOW_OLDER: "Показване на по-стари съобщения", MESSAGELIST_NEW_MARKER: "Нови", MESSAGE_SENT_VIA_EMAIL: "Това съобщение беше изпратено по имейл", YOU_MARKER: "Вие", UPLOAD_IN_PROGRESS: "Качване...", UPLOAD_SEND_FILE: "Изпращане на файл", UPLOAD_SHARE_LOCATION: "Споделяне на местоположението", UPLOAD_ERROR: "За съжаление нещо се обърка при качването. Файлът може да не се поддържа или е твърде голям.", SHARE_LOCATION_ERROR: "Не може да се сподели местоположението: ", LOADING: "Зареждане...", HUB_EMPTY: "Историята на вашите разговори ще се покаже тук", HUB_SHOW_EARLIER: "Показване на по-ранни чатове", INBOX_NO_CHATS_TITLE: "Все още нямате разговори!", INBOX_NO_CHATS_BODY: "След като проведете един или повече разговори, те ще се покажат тук.", ENABLE_TRANSLATION: "Преведете този разговор на български", DISABLE_TRANSLATION: "Показване на оригинал", SEARCH_PLACEHOLDER_TEXT: "Търсене...", SEARCH_SEARCHING: "Търсене...", SEARCH_NO_RESULTS: "Няма намерени резултати", SEARCH_NO_MORE_RESULTS: "Няма повече резултати", CHAT_NOT_FOUND: "Чатът не е намерен", DELETE_MESSAGE: "Изтриване на съобщение", DELETION_EXPLANATION: "Ако изтриете това съобщение, то ще изчезне за всички.", EDIT_MESSAGE: "Редактиране на съобщението", SAVE: "Запиши", EDITED_INDICATOR: "редактирано", REPLY_TO_MESSAGE: "Отговори", ADD_REACTION: "Добави реакция", AUTH_EXPIRED_OVERLAY_TITLE: "Вашата чат сесия е изтекла", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Обновете страницата, за да продължите", VOICE_MESSAGE: "Гласово съобщение", CONTACT_INFORMATION_HIDDEN: "Скрита информация", LEAVE_CONVERSATION: "Напускане на разговора", MARK_CONVERSATION_AS_UNREAD: "Маркирай като непрочетено", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Ua = { code: "bs-BA", name: "Bosnian", translation: { YESTERDAY: "Jučer", TODAY: "Danas", DAYS: "d", HOURS: "s", MINUTES: "m", JUST_NOW: "Upravo sad", LOCATION: "Lokacija", CANCEL: "Otkaži", INBOX: "Pretinac", DESKTOP_NOTIFICATIONS: "Obavijesti preglednika", DESKTOP_NOTIFICATIONS_ERROR: "Notifikacije preglednika se ne mogu omogućiti jer ih vaš preglednik aktivno blokira. Pokušajte pregledati postavke ili koristiti drugi preglednik.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo notifikacija`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Ako karticu preglednika ostavite otvorenu, pojavit će se ovaj pop-up kada netko razgovara s vama.", SEND_BUTTON_TEXT: "Pošalji", ENTRYBOX_TEXT_LIMIT: "Dozvoljeno je samo 10.000 znakova.", ENTRYBOX_PLACEHOLDER: "Reci nešto...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Ovaj razgovor više nije aktivan.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Možeš čitati, ali ne i slati poruke.", MESSAGELIST_LOADING_OLDER: "Učitavam starije poruke...", MESSAGELIST_SHOW_OLDER: "Prikaži starije poruke", MESSAGELIST_NEW_MARKER: "Novo", MESSAGE_SENT_VIA_EMAIL: "Ova poruka je poslana e-poštom", YOU_MARKER: "ti", UPLOAD_IN_PROGRESS: "Učitavam...", UPLOAD_SEND_FILE: "Pošalji datoteku", UPLOAD_SHARE_LOCATION: "Podijeli lokaciju", UPLOAD_ERROR: "Nažalost, nešto je pošlo krivo. Datoteka možda nije podržana ili je prevelika.", SHARE_LOCATION_ERROR: "Nije moguće podijeliti lokaciju: ", LOADING: "Učitavam...", HUB_EMPTY: "Ovdje će se prikazati vaša povijest razgovora", HUB_SHOW_EARLIER: "Prikaži ranije razgovore", INBOX_NO_CHATS_TITLE: "Nema razgovora!", INBOX_NO_CHATS_BODY: "Nakon što vodite jedan ili više razgovora, oni će se pojaviti ovdje.", ENABLE_TRANSLATION: "Prevedi ovaj razgovor na bosanski jezik", DISABLE_TRANSLATION: "Prikaži original", SEARCH_PLACEHOLDER_TEXT: "Pretraži...", SEARCH_SEARCHING: "Pretraživanje...", SEARCH_NO_RESULTS: "Nema rezultata", SEARCH_NO_MORE_RESULTS: "Nema više rezultata", CHAT_NOT_FOUND: "Ćaskanje nije pronađeno", DELETE_MESSAGE: "Obriši poruku", DELETION_EXPLANATION: "Ako izbrišete ovu poruku, ona će nestati za sve.", EDIT_MESSAGE: "Uredi poruku", SAVE: "Sačuvati", EDITED_INDICATOR: "uređeno", REPLY_TO_MESSAGE: "Odgovorite", ADD_REACTION: "Dodajte reakciju", AUTH_EXPIRED_OVERLAY_TITLE: "Vaša chat sesija je istekla", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Osvježite stranicu da nastavite", VOICE_MESSAGE: "Glasovna poruka", CONTACT_INFORMATION_HIDDEN: "Skrivene informacije", LEAVE_CONVERSATION: "Napusti razgovor", MARK_CONVERSATION_AS_UNREAD: "Označi kao nepročitano", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, ba = { code: "ca-ES", name: "Catalan (ES)", translation: { YESTERDAY: "Ahir", TODAY: "Avui", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "ara mateix", LOCATION: "Ubicació", CANCEL: "Cancel·lar", INBOX: "Safata d'entrada", DESKTOP_NOTIFICATIONS: "Notificacions d'escriptori", DESKTOP_NOTIFICATIONS_ERROR: "No es poden habilitar les notificacions del navegador perquè el teu navegador les bloqueja activament. Prova de buscar a la configuració o utilitza un altre navegador.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `Notificació de demostració de ${e}`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Si mantens la pestanya del navegador oberta, veuràs aquesta notificació quan algú et parli.", SEND_BUTTON_TEXT: "Enviar", ENTRYBOX_TEXT_LIMIT: "Només es permeten 10.000 caràcters.", ENTRYBOX_PLACEHOLDER: "Digues alguna cosa...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Aquesta conversa ja no està activa.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Pots llegir, però no enviar missatges.", MESSAGELIST_LOADING_OLDER: "Carregant missatges antics...", MESSAGELIST_SHOW_OLDER: "Mostrar missatges més antics", MESSAGELIST_NEW_MARKER: "Nou", MESSAGE_SENT_VIA_EMAIL: "Aquest missatge s'ha enviat per correu electrònic", YOU_MARKER: "tu", UPLOAD_IN_PROGRESS: "S'està pujant...", UPLOAD_SEND_FILE: "Enviar arxiu", UPLOAD_SHARE_LOCATION: "Compartir ubicació", UPLOAD_ERROR: "Desafortunadament, alguna cosa ha anat malament en pujar. L'arxiu pot ser no compatible o massa gran.", SHARE_LOCATION_ERROR: "No es pot compartir la ubicació: ", LOADING: "Carregant...", HUB_EMPTY: "El teu historial de xat apareixerà aquí", HUB_SHOW_EARLIER: "Mostra xats anteriors", INBOX_NO_CHATS_TITLE: "Encara no hi ha xats!", INBOX_NO_CHATS_BODY: "Un cop hagis tingut una o més converses, apareixeran aquí.", ENABLE_TRANSLATION: "Traduir aquesta conversa al català", DISABLE_TRANSLATION: "Mostrar original", SEARCH_PLACEHOLDER_TEXT: "Cerca...", SEARCH_SEARCHING: "Buscant...", SEARCH_NO_RESULTS: "No s'han trobat resultats", SEARCH_NO_MORE_RESULTS: "No hi ha més resultats", CHAT_NOT_FOUND: "Xat no trobat", DELETE_MESSAGE: "Esborrar missatge", DELETION_EXPLANATION: "Si esborres aquest missatge, desapareixerà per a tothom.", EDIT_MESSAGE: "Editar missatge", SAVE: "Desar", EDITED_INDICATOR: "editat", REPLY_TO_MESSAGE: "Respondre", REPLY_TO_ARIA_LABEL: (e, t) => `Responent a ${e}: ${t}`, REPLY_MODE_LEAVE_ARIA_LABEL: "Sortir del mode de resposta", ADD_REACTION: "Afegir reacció", VOICE_MESSAGE: "Missatge de veu", LEAVE_CONVERSATION: "Abandonar la conversa", MARK_CONVERSATION_AS_UNREAD: "marcar com no llegit", STATUS_INDICATOR_ONLINE: "Actiu", STATUS_INDICATOR_OFFLINE: "Absent", CONTACT_INFORMATION_HIDDEN: "informació oculta", AUTH_EXPIRED_OVERLAY_TITLE: "La teva sessió de xat ha caducat", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Actualitza la pàgina per continuar" } }, ya = { code: "cs-CZ", name: "Czech", translation: { YESTERDAY: "Včera", TODAY: "Dnes", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "právě teď", LOCATION: "Lokace", CANCEL: "Zrušit", INBOX: "Doručené", DESKTOP_NOTIFICATIONS: "Oznámení v prohlížeči", DESKTOP_NOTIFICATIONS_ERROR: "Nelze povolit notifikace prohlížeče, protože váš prohlížeč je aktivně blokuje. Zkuste se podívat na nastavení nebo zkuste použít jiný prohlížeč.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo notifikace`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Pokud necháte kartu prohlížeče otevřenou, uvidíte tento popup jakmile s vámi bude někdo mluvit.", SEND_BUTTON_TEXT: "Odeslat", ENTRYBOX_TEXT_LIMIT: "Je povoleno Maximálně 10.000 znaků.", ENTRYBOX_PLACEHOLDER: "Napište něco...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Tato konverzace již není aktivní.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Můžete číst, ale nemůžete posílat zprávy.", MESSAGELIST_LOADING_OLDER: "Nahrávám starší zprávy...", MESSAGELIST_SHOW_OLDER: "Zobrazit starší zprávy", MESSAGELIST_NEW_MARKER: "Nové", MESSAGE_SENT_VIA_EMAIL: "Tato zpráva byla odeslána přes mail.", YOU_MARKER: "vy", UPLOAD_IN_PROGRESS: "Nahrávám...", UPLOAD_SEND_FILE: "Poslat soubor", UPLOAD_SHARE_LOCATION: "Sdílet pozici", UPLOAD_ERROR: "Nepodařilo se nahrát soubor. Ten je buď nepodporován a/nebo příliš velký.", SHARE_LOCATION_ERROR: "Není možné sdílet pozici: ", LOADING: "Nahrávám...", HUB_EMPTY: "Vaše historie se zde zobrazí", HUB_SHOW_EARLIER: "Zobrazit dřívější konverzace", INBOX_NO_CHATS_TITLE: "Zatím zde nejsou žádné konverzace!", INBOX_NO_CHATS_BODY: "Jakmile budete mít jednu nebo více konverzací, objeví se zde.", ENABLE_TRANSLATION: "Přeložit tuto konverzaci do češtiny", DISABLE_TRANSLATION: "Zobrazit původní", SEARCH_PLACEHOLDER_TEXT: "Hledat...", SEARCH_SEARCHING: "Hledání...", SEARCH_NO_RESULTS: "Nenašly se žádné výsledky", SEARCH_NO_MORE_RESULTS: "Žádné další výsledky", CHAT_NOT_FOUND: "Chat nenalezen", DELETE_MESSAGE: "Smazat zprávu", DELETION_EXPLANATION: "Pokud tuto zprávu smažete, zmizí pro všechny.", EDIT_MESSAGE: "Upravit zprávu", SAVE: "Uložit", EDITED_INDICATOR: "upraveno", REPLY_TO_MESSAGE: "Odpovědět", ADD_REACTION: "Reagovat", AUTH_EXPIRED_OVERLAY_TITLE: "Váš chat byl kvůli nečinnosti odpojen", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Pro pokračování obnovte stránku", VOICE_MESSAGE: "Hlasová zpráva", CONTACT_INFORMATION_HIDDEN: "Skrytá informace", LEAVE_CONVERSATION: "Opustit konverzaci", MARK_CONVERSATION_AS_UNREAD: "Označit jako nepřečtené", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, wa = { code: "da-DK", name: "Danish", translation: { YESTERDAY: "I går", TODAY: "I dag", DAYS: "d", HOURS: "t", MINUTES: "m", JUST_NOW: "lige nu", LOCATION: "Placering", CANCEL: "Annuller", INBOX: "Indbakke", DESKTOP_NOTIFICATIONS: "Browsermeddelelser", DESKTOP_NOTIFICATIONS_ERROR: "Kan ikke aktivere Browsermeddelelser, fordi din browser aktivt blokerer dem. Prøv at kigge i indstillingerne eller benyt en anden browser.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demomeddelelse`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Hvis du holder dit browser-faneblad åben, vil du se det her komme op, når nogen taler til dig.", SEND_BUTTON_TEXT: "Send", ENTRYBOX_TEXT_LIMIT: "Kun 10.000 tegn er tilladt.", ENTRYBOX_PLACEHOLDER: "Sig noget...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Denne samtale er ikke længere aktiv.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Du kan læse, men ikke sende beskeder.", MESSAGELIST_LOADING_OLDER: "Indlæser ældre beskeder...", MESSAGELIST_SHOW_OLDER: "Vis ældre beskeder", MESSAGELIST_NEW_MARKER: "Ny", MESSAGE_SENT_VIA_EMAIL: "Denne besked blev sendt via e-mail", YOU_MARKER: "dig", UPLOAD_IN_PROGRESS: "Overfører...", UPLOAD_SEND_FILE: "Send fil", UPLOAD_SHARE_LOCATION: "Del placering", UPLOAD_ERROR: "Der er sket noget forkert ved upload. Filen kan ikke understøttes eller filen er for stor.", SHARE_LOCATION_ERROR: "Kan ikke dele placering: ", LOADING: "Indlæser...", HUB_EMPTY: "Dine samtaler vises her", HUB_SHOW_EARLIER: "Vis tidligere chats", INBOX_NO_CHATS_TITLE: "Ingen chats endnu!", INBOX_NO_CHATS_BODY: "Når du har haft en eller flere samtaler, vises de her.", ENABLE_TRANSLATION: "Oversæt denne konversation til dansk", DISABLE_TRANSLATION: "Vis den oprindelige", SEARCH_PLACEHOLDER_TEXT: "Søg...", SEARCH_SEARCHING: "Søger...", SEARCH_NO_RESULTS: "Ingen resultater fundet", SEARCH_NO_MORE_RESULTS: "Ikke flere resultater", CHAT_NOT_FOUND: "Chat ikke fundet", DELETE_MESSAGE: "Slet besked", DELETION_EXPLANATION: "Hvis du sletter denne besked, vil ingen kunne se den.", EDIT_MESSAGE: "Rediger besked", SAVE: "Gem", EDITED_INDICATOR: "redigeret", REPLY_TO_MESSAGE: "Svar", ADD_REACTION: "Tilføj reaktion", AUTH_EXPIRED_OVERLAY_TITLE: "Din chatsession er udløbet", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Opdater siden for at fortsætte", VOICE_MESSAGE: "Talebesked", CONTACT_INFORMATION_HIDDEN: "Skjulte oplysninger", LEAVE_CONVERSATION: "Forlad samtale", MARK_CONVERSATION_AS_UNREAD: "Marker som ulæst", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Ya = { code: "de-DE", name: "German", translation: { YESTERDAY: "Gestern", TODAY: "Heute", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "gerade jetzt", LOCATION: "Standort", CANCEL: "Abbrechen", INBOX: "Inbox", DESKTOP_NOTIFICATIONS: "Browser-Benachrichtigungen", DESKTOP_NOTIFICATIONS_ERROR: "Browser-Benachrichtigungen können nicht aktiviert werden, da Ihr Browser sie aktiv blockiert. Versuchen Sie, in den Einstellungen nachzuschlagen oder einen anderen Browser zu verwenden.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} Demo-Benachrichtigung`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Wenn Sie Ihre Browser-Registerkarte geöffnet lassen, wird dies angezeigt, wenn jemand mit Ihnen spricht.", SEND_BUTTON_TEXT: "Senden", ENTRYBOX_TEXT_LIMIT: "Nur 10.000 Zeichen sind erlaubt.", ENTRYBOX_PLACEHOLDER: "Sag etwas...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Diese Konversation ist nicht mehr aktiv.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Sie können Nachrichten lesen, aber nicht senden.", MESSAGELIST_LOADING_OLDER: "Ältere Nachrichten werden geladen...", MESSAGELIST_SHOW_OLDER: "Zeige ältere Nachrichten", MESSAGELIST_NEW_MARKER: "Neu", MESSAGE_SENT_VIA_EMAIL: "Diese Nachricht wurde per E-Mail gesendet", YOU_MARKER: "du", UPLOAD_IN_PROGRESS: "Hochladen...", UPLOAD_SEND_FILE: "Datei senden", UPLOAD_SHARE_LOCATION: "Standort teilen", UPLOAD_ERROR: "Beim Hochladen ist ein Fehler aufgetreten. Die Datei ist möglicherweise nicht unterstützt oder zu groß.", SHARE_LOCATION_ERROR: "Standort kann nicht freigegeben werden: ", LOADING: "Laden...", HUB_EMPTY: "Ihr Chat-Verlauf wird hier angezeigt", HUB_SHOW_EARLIER: "Zeige frühere Chats", INBOX_NO_CHATS_TITLE: "Noch keine Chats!", INBOX_NO_CHATS_BODY: "Sobald Sie eine oder mehrere Unterhaltungen geführt haben, werden sie hier angezeigt.", ENABLE_TRANSLATION: "Dieses Gespräch auf Deutsch übersetzen", DISABLE_TRANSLATION: "Originaltext anzeigen", SEARCH_PLACEHOLDER_TEXT: "Suche...", SEARCH_SEARCHING: "Suchen...", SEARCH_NO_RESULTS: "Keine Suchergebnisse gefunden", SEARCH_NO_MORE_RESULTS: "Keine weiteren Suchergebnisse", CHAT_NOT_FOUND: "Chat nicht gefunden", DELETE_MESSAGE: "Nachricht löschen", DELETION_EXPLANATION: "Wenn Sie diese Nachricht löschen, wird sie für alle verschwinden.", EDIT_MESSAGE: "Nachricht bearbeiten", SAVE: "Speichern", EDITED_INDICATOR: "bearbeitet", REPLY_TO_MESSAGE: "Antworten", ADD_REACTION: "Reaktion hinzufügen", AUTH_EXPIRED_OVERLAY_TITLE: "Ihre Chatsitzung ist abgelaufen", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Laden Sie zum Fortfahren die Seite neu", VOICE_MESSAGE: "Sprachnachricht", CONTACT_INFORMATION_HIDDEN: "Geschützte Angaben", LEAVE_CONVERSATION: "Unterhaltung verlassen", MARK_CONVERSATION_AS_UNREAD: "als ungelesen markieren", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, $a = { code: "el-GR", name: "Greek (Greece)", translation: { YESTERDAY: "Χθές", TODAY: "Σήμερα", DAYS: "Ημέρες", HOURS: "'Ωρες", MINUTES: "Λεπτά", JUST_NOW: "Μόλις τώρα", LOCATION: "Τοποθεσία", CANCEL: "Ακύρωση", INBOX: "Εισερχόμενα", DESKTOP_NOTIFICATIONS: "Ειδοποιήσεις περιηγητή", DESKTOP_NOTIFICATIONS_ERROR: "Δεν είναι δυνατή η ενεργοποίηση των ειδοποιήσεων του προγράμματος περιήγησης, επειδή το πρόγραμμα περιήγησης τις αποκλείει ενεργά. Δοκιμάστε να τσεκάρετε τις ρυθμίσεις ή να χρησιμοποιήσετε διαφορετικό πρόγραμμα περιήγησης.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} Δοκιμαστική επίδειξη`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Αν διατηρήσετε ανοιχτή τη σελίδα του προγράμματος περιήγησης, θα δείτε αυτό το pop up (παράθυρο) όταν κάποιος σας μιλάει.", SEND_BUTTON_TEXT: "Αποστολή", ENTRYBOX_TEXT_LIMIT: "Επιτρέπονται μόνο 10.000 χαρακτήρες.", ENTRYBOX_PLACEHOLDER: "Πείτε κάτι...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Αυτή η συζήτηση δεν είναι πλέον ενεργή.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Μπορείτε να διαβάσετε αλλά δεν μπορείτε να στείλετε μηνύματα.", MESSAGELIST_LOADING_OLDER: "Φόρτωση παλαιοτέρων μηνυμάτων...", MESSAGELIST_SHOW_OLDER: "Εμφάνιση παλαιότερων μηνυμάτων", MESSAGELIST_NEW_MARKER: "Νέο", MESSAGE_SENT_VIA_EMAIL: "Αυτό το μήνυμα εστάλη μέσω ηλεκτρονικού ταχυδρομείου", YOU_MARKER: "Εσείς", UPLOAD_IN_PROGRESS: "Ανέβασμα...", UPLOAD_SEND_FILE: "Αποστολή αρχείου", UPLOAD_SHARE_LOCATION: "Κοινή χρήση τοποθεσίας", UPLOAD_ERROR: "Κάτι πήγε στραβά κατά τη φόρτωση. Το αρχείο ενδέχεται να μην υποστηρίζεται ή να είναι υπερβολικά μεγάλο.", SHARE_LOCATION_ERROR: "Δεν είναι δυνατή η χρήση κοινής τοποθεσίας: ", LOADING: "Φόρτωση...", HUB_EMPTY: "Το ιστορικό των συνομιλιών σας θα εμφανιστεί εδώ", HUB_SHOW_EARLIER: "Εμφάνιση προηγούμενων συνομιλιών", INBOX_NO_CHATS_TITLE: "Δεν υπάρχουν ακόμα συζητήσεις!", INBOX_NO_CHATS_BODY: "Μόλις έχετε μία ή περισσότερες συνομιλίες, θα εμφανιστούν εδώ.", ENABLE_TRANSLATION: "Μετάφραση αυτής της συνομιλίας στα ελληνικά", DISABLE_TRANSLATION: "Προβολή πρωτοτύπου", SEARCH_PLACEHOLDER_TEXT: "Αναζήτηση...", SEARCH_SEARCHING: "Αναζήτηση...", SEARCH_NO_RESULTS: "Δεν βρέθηκαν αποτελέσματα", SEARCH_NO_MORE_RESULTS: "Δεν υπάρχουν περισσότερα αποτελέσματα", CHAT_NOT_FOUND: "Η συνομιλία δεν βρέθηκε", DELETE_MESSAGE: "Διαγραφή μηνύματος", DELETION_EXPLANATION: "Εάν διαγράψετε αυτό το μήνυμα, θα εξαφανιστεί για όλους.", EDIT_MESSAGE: "Επεξεργασία μηνύματος", SAVE: "Αποθήκευση", EDITED_INDICATOR: "επεξεργασμένο", REPLY_TO_MESSAGE: "Απάντηση", ADD_REACTION: "Προσθήκη αντίδρασης", AUTH_EXPIRED_OVERLAY_TITLE: "Η συνεδρία της συνομιλίας σας έχει λήξει", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Ανανεώστε τη σελίδα για να συνεχίσετε", VOICE_MESSAGE: "Ηχητικό μήνυμα", CONTACT_INFORMATION_HIDDEN: "Κρυμμένες πληροφορίες", LEAVE_CONVERSATION: "Αποσυρθείτε από τη συζήτηση", MARK_CONVERSATION_AS_UNREAD: "Επισήμανση ως μη αναγνωσμένα", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, ja = { code: "es-ES", name: "Spanish", translation: { YESTERDAY: "Ayer", TODAY: "Hoy", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "justo ahora", LOCATION: "Ubicación", CANCEL: "Cancelar", INBOX: "Inbox", DESKTOP_NOTIFICATIONS: "Notificaciones del navigator", DESKTOP_NOTIFICATIONS_ERROR: "No se logró habilitar las notificaciones del navigador, comprueba que tu navegador no las esté bloqueando o intenta con otro navegador.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} notificación de prueba`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Si dejas esta pestaña abierta, verás este pop up cuando alguien te hable.", SEND_BUTTON_TEXT: "Enviar", ENTRYBOX_TEXT_LIMIT: "Sólo 10.000 caracteres permitidos.", ENTRYBOX_PLACEHOLDER: "Escribe algo...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Esta conversación ya no está activa.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Puedes leer pero no enviar mensajes.", MESSAGELIST_LOADING_OLDER: "Cargando mensajes pasados...", MESSAGELIST_SHOW_OLDER: "Ver mensajes pasados", MESSAGELIST_NEW_MARKER: "Nuevo", MESSAGE_SENT_VIA_EMAIL: "Este mensaje ha sido enviado vía email", YOU_MARKER: "tú", UPLOAD_IN_PROGRESS: "Subir...", UPLOAD_SEND_FILE: "Enviar archivo", UPLOAD_SHARE_LOCATION: "Compartir ubicación", UPLOAD_ERROR: "Ocurrió un problema subiendo el archivo. Puede que el archivo esté en un formato no soportado o que sea demasiado grande.", SHARE_LOCATION_ERROR: "No se logró compartir la ubicación: ", LOADING: "Cargando...", HUB_EMPTY: "Tu historial de conversaciones se mostrará aquí", HUB_SHOW_EARLIER: "Ver conversaciones pasadas", INBOX_NO_CHATS_TITLE: "¡Aún sin conversaciones!", INBOX_NO_CHATS_BODY: "Una vez que tengas una o más conversaciones, se mostrarán aquí.", ENABLE_TRANSLATION: "Traducir esta conversación al español", DISABLE_TRANSLATION: "Mostrar la conversación original", SEARCH_PLACEHOLDER_TEXT: "Buscar...", SEARCH_SEARCHING: "Buscando...", SEARCH_NO_RESULTS: "No se encontraron resultados", SEARCH_NO_MORE_RESULTS: "No hay más resultados", CHAT_NOT_FOUND: "Chat no encontrado", DELETE_MESSAGE: "Eliminar mensaje", DELETION_EXPLANATION: "Este mensaje desaparecerá para todos si lo borras.", EDIT_MESSAGE: "Editar mensaje", SAVE: "Guardar", EDITED_INDICATOR: "editado", REPLY_TO_MESSAGE: "Responder", ADD_REACTION: "Añadir reacción", AUTH_EXPIRED_OVERLAY_TITLE: "Su sesión de chat ha expirado", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Actualice la página para continuar", VOICE_MESSAGE: "Mensaje de voz", CONTACT_INFORMATION_HIDDEN: "Información oculta", LEAVE_CONVERSATION: "Abandonar conversación", MARK_CONVERSATION_AS_UNREAD: "Marcar como no leída", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, xa = { code: "et-EE", name: "Estonian", translation: { YESTERDAY: "Eile", TODAY: "Täna", DAYS: "p", HOURS: "t", MINUTES: "m", JUST_NOW: "Just nüüd", LOCATION: "Asukoht", CANCEL: "Katkesta", INBOX: "Postkast", DESKTOP_NOTIFICATIONS: "Veebibrauseri teated", DESKTOP_NOTIFICATIONS_ERROR: "Töölaua teatisi ei saa lubada, kuna Teie brauser blokeerib need aktiivselt. Proovige muuta seadeid või kasutada mõnda muud brauserit.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo teavitus`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Kui hoiate oma brauseri vahekaardi lahti ja näete seda hüpikakent, siis keegi soovib Teiega rääkida.", SEND_BUTTON_TEXT: "Saada", ENTRYBOX_TEXT_LIMIT: "Ainult kuni 10.000 tähemärki on lubatud.", ENTRYBOX_PLACEHOLDER: "Kirjuta midagi...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "See vestlus ei ole enam aktiivne.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Sa saad lugeda teateid, aga mitte kirjutada.", MESSAGELIST_LOADING_OLDER: "Laen vanemaid teateid...", MESSAGELIST_SHOW_OLDER: "Näita vanemaid teateid", MESSAGELIST_NEW_MARKER: "Uus", MESSAGE_SENT_VIA_EMAIL: "See teade on saadetud e-postiga", YOU_MARKER: "Sina", UPLOAD_IN_PROGRESS: "Laen...", UPLOAD_SEND_FILE: "Saada fail", UPLOAD_SHARE_LOCATION: "Jaga faili asukohta", UPLOAD_ERROR: "Nüüd läks midagi nihu, seoses faili ülesse laadimisega. Tundmatu fail või liiga suur.", SHARE_LOCATION_ERROR: "Ei suuda jagada faili asukohta: ", LOADING: "Laen...", HUB_EMPTY: "Siin on Sinu vestluste ajalugu", HUB_SHOW_EARLIER: "Näita vanemaid vestlusi", INBOX_NO_CHATS_TITLE: "Pole ühtegi vestlust!", INBOX_NO_CHATS_BODY: "Kui Sul tekib üks või rohkem vestlust, siis on need kuvatakse siin.", ENABLE_TRANSLATION: "Tõlgi see vestlus eesti keelde", DISABLE_TRANSLATION: "Näita algteksti", SEARCH_PLACEHOLDER_TEXT: "Otsi...", SEARCH_SEARCHING: "Otsin...", SEARCH_NO_RESULTS: "Otsingu tulemused puuduvad", SEARCH_NO_MORE_RESULTS: "Rohkem tulemusi ei ole ", CHAT_NOT_FOUND: "Vestlust ei leitud", DELETE_MESSAGE: "Kustuta sõnum", DELETION_EXPLANATION: "Kui kustutate selle sõnumi, kaob see kõigi jaoks.", EDIT_MESSAGE: "Redigeeri sõnumit", SAVE: "Salvesta", EDITED_INDICATOR: "muudetud", REPLY_TO_MESSAGE: "Vasta", ADD_REACTION: "Lisa reaktsioon", AUTH_EXPIRED_OVERLAY_TITLE: "Teie vestlussessioon on lõppenud", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Jätkamiseks värskendage lehte", VOICE_MESSAGE: "Häälsõnum", CONTACT_INFORMATION_HIDDEN: "Varjatud informatsioon", LEAVE_CONVERSATION: "Lahku vestlusest", MARK_CONVERSATION_AS_UNREAD: "Märgi mitteloetuks", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Va = { code: "fa", name: "Persian (Farsi)", translation: { YESTERDAY: "دیروز", TODAY: "امروز", DAYS: "روز", HOURS: "ساعت", MINUTES: "دقیقه", JUST_NOW: "هم اکنون", LOCATION: "مکان", CANCEL: "لغو", INBOX: "صندوق", DESKTOP_NOTIFICATIONS: "اطلاعیه‌های مرورگر", DESKTOP_NOTIFICATIONS_ERROR: "خطا در فعال سازی اعلان های مرورگر، مرورگر شما آنها را مسدود می کند سعی کنید تنظیمات مرورگر را تغییر دهید یا از یک مرورگر دیگر استفاده کنید.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `نوتیفیکیشن دمو ${e}`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "اگر صفحه ی مرورگر را باز نگهدارید این را موقعه ای که کسی با شما صحبت کند خواهید دید", SEND_BUTTON_TEXT: "بفرست", ENTRYBOX_TEXT_LIMIT: "فقط ۱۰،۰۰۰ حروف مجاز می باشد.", ENTRYBOX_PLACEHOLDER: "...چیزی بنویسید", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: ".این مکالمه دیگر فعال نمی باشد", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "شما می توانید بخوانید اما نمی توانید پیام بفرستید", MESSAGELIST_LOADING_OLDER: "...در حال بارگذاری پیام های قدیمی تر", MESSAGELIST_SHOW_OLDER: "نشان دادن پیام های قدیمی", MESSAGELIST_NEW_MARKER: "جدید", MESSAGE_SENT_VIA_EMAIL: "پیام توسط ایمل ارسال شد", YOU_MARKER: "شما", UPLOAD_IN_PROGRESS: "...در حال بارگذاری", UPLOAD_SEND_FILE: "فرستادن پوشه", UPLOAD_SHARE_LOCATION: "اشتراک گذاری مکان", UPLOAD_ERROR: "متاسفانه بارگذاری با مشکل روبه رو شد. ممکن است فایل حجیم باشد یا ساپورت نشده باشد.", SHARE_LOCATION_ERROR: "خطا در اشتراک گذاری مکان: ", LOADING: "...بارگذاری", HUB_EMPTY: "تاریخچه گفتگو اینجا نمایان می شود", HUB_SHOW_EARLIER: "دیدن گفتگو های قبلی", INBOX_NO_CHATS_TITLE: "هنوز گفتگویی وجود ندارد", INBOX_NO_CHATS_BODY: "بعد از داشتن یک مکالمه یا بیشتر، آنها اینجا نمایان می شوند.", ENABLE_TRANSLATION: "این مکالمه را به فارسی ترجمه کن", DISABLE_TRANSLATION: "زبان اصلی را نشان بده", SEARCH_PLACEHOLDER_TEXT: "...جستجو", SEARCH_SEARCHING: "...در حال جستجو", SEARCH_NO_RESULTS: "نتیجه ای یافت نشد", SEARCH_NO_MORE_RESULTS: "نتیجه بیشتری وجود ندارد", CHAT_NOT_FOUND: "مکالمه پیدا نشد", DELETE_MESSAGE: "حذف پیام ", DELETION_EXPLANATION: "اگر این پیام را حذف کنید، برای همه ناپدید می شود.", EDIT_MESSAGE: "ویرایش پیام", SAVE: "ذخیره", EDITED_INDICATOR: "ویرایش‌شده", REPLY_TO_MESSAGE: "پاسخ دادن", ADD_REACTION: "واکنش را اضافه کنید", AUTH_EXPIRED_OVERLAY_TITLE: "جلسه چت شما منقضی شده است", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "برای ادامه صفحه را بازخوانی کنید", VOICE_MESSAGE: "پیام صوتی", CONTACT_INFORMATION_HIDDEN: "اطلاعات پنهان", LEAVE_CONVERSATION: "خروج از گفتگو", MARK_CONVERSATION_AS_UNREAD: "به عنوان خوانده نشده علامت گذاری کن", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Xa = { code: "fi-FI", name: "Finnish", translation: { YESTERDAY: "Eilen", TODAY: "Tänään", DAYS: "p", HOURS: "t", MINUTES: "m", JUST_NOW: "juuri nyt", LOCATION: "Sijainti", CANCEL: "Peruuta", INBOX: "Saapuneet", DESKTOP_NOTIFICATIONS: "Selaimen ilmoitukset", DESKTOP_NOTIFICATIONS_ERROR: "Työpöydän ilmoituksia ei voitu kytkeä päälle, koska selaimesi estää ne aktiivisesti. Koeta tutkia sen asetuksia tai vaihda selainta.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo ilmoitus`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Jos pidät tämän sivun auki, näet vastaavan ilmoituksen kun joku puhuu sinulle.", SEND_BUTTON_TEXT: "Lähetä", ENTRYBOX_TEXT_LIMIT: "Maksimissaan 10000 merkkiä.", ENTRYBOX_PLACEHOLDER: "Sano jotain...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Tämä keskustelu ei ole enää aktiivinen.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Voit lukea, mutta et lähettää viestejä.", MESSAGELIST_LOADING_OLDER: "Ladataan vanhoja viestejä..", MESSAGELIST_SHOW_OLDER: "Näytä vanhat viestit", MESSAGELIST_NEW_MARKER: "Uusi", MESSAGE_SENT_VIA_EMAIL: "Tämä viesti on lähetetty sähköpostin välityksellä", YOU_MARKER: "sinä", UPLOAD_IN_PROGRESS: "Ladataan...", UPLOAD_SEND_FILE: "Lähetä tiedosto", UPLOAD_SHARE_LOCATION: "Jaa sijainti", UPLOAD_ERROR: "Valitettavasti jokin meni vikaan. Tiedostotyyppiä ei ehkä tueta tai se saattaa olla liian suuri.", SHARE_LOCATION_ERROR: "Sijaintia ei pystytty jakamaan: ", LOADING: "Ladataan...", HUB_EMPTY: "Keskusteluhistoriasi näkyy tässä", HUB_SHOW_EARLIER: "Näytä aiemmat keskustelut", INBOX_NO_CHATS_TITLE: "Ei keskusteluja, vielä!", INBOX_NO_CHATS_BODY: "Kun olet käynyt yhden tai useamman keskustelun, ne näkyvät täällä.", ENABLE_TRANSLATION: "Käännä keskustelu kielelle suomi", DISABLE_TRANSLATION: "Näytä alkuperäinen", SEARCH_PLACEHOLDER_TEXT: "Etsi...", SEARCH_SEARCHING: "Etsiminen...", SEARCH_NO_RESULTS: "Tuloksia ei löytynyt", SEARCH_NO_MORE_RESULTS: "Ei enempää tuloksia", CHAT_NOT_FOUND: "Keskustelua ei löytynyt", DELETE_MESSAGE: "Poista viesti", DELETION_EXPLANATION: "Jos poistat tämän viestin, se häviää kaikilta.", EDIT_MESSAGE: "Muokkaa viestiä", SAVE: "Tallenna", EDITED_INDICATOR: "muokattu", REPLY_TO_MESSAGE: "Vastaa", ADD_REACTION: "Lisää reaktio", AUTH_EXPIRED_OVERLAY_TITLE: "Istuntosi on vanhentunut", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Päivitä sivu jatkaaksesi", VOICE_MESSAGE: "Ääniviesti", CONTACT_INFORMATION_HIDDEN: "Piilotetut tiedot", LEAVE_CONVERSATION: "Poistu keskustelusta", MARK_CONVERSATION_AS_UNREAD: "Merkitse lukemattomaksi", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Ga = { code: "fr-FR", name: "French", translation: { YESTERDAY: "Hier", TODAY: "Aujourd'hui", DAYS: "j", HOURS: "h", MINUTES: "m", JUST_NOW: "maintenant", LOCATION: "Emplacement", CANCEL: "Annuler", INBOX: "Boîte de réception", DESKTOP_NOTIFICATIONS: "Notifications du navigateur", DESKTOP_NOTIFICATIONS_ERROR: "Impossible d'activer les notifications du navigateur car votre navigateur les bloque. Essayez de changer ses paramètres ou de changer de navigateur.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `Notification de démonstration ${e}`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Si vous maintenez l'onglet ouvert dans votre navigateur vous verrez apparaître une alerte lorsque quelqu'un vous parlera.", SEND_BUTTON_TEXT: "Envoyer", ENTRYBOX_TEXT_LIMIT: "Seuls 10.000 caractères sont autorisés.", ENTRYBOX_PLACEHOLDER: "Ecrivez quelque chose...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Cette conversation n'est plus active.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Vous pouvez lire, mais pas envoyer de messages.", MESSAGELIST_LOADING_OLDER: "Chargement des anciens messages ...", MESSAGELIST_SHOW_OLDER: "Afficher les anciens messages", MESSAGELIST_NEW_MARKER: "Nouveau", MESSAGE_SENT_VIA_EMAIL: "Ce message a été envoyé par e-mail", YOU_MARKER: "vous", UPLOAD_IN_PROGRESS: "Envoi en cours...", UPLOAD_SEND_FILE: "Envoyer un fichier", UPLOAD_SHARE_LOCATION: "Partager mon emplacement", UPLOAD_ERROR: "Un problème est survenu lors de l'envoi: le fichier est peut-être non pris en charge ou trop volumineux.", SHARE_LOCATION_ERROR: "Impossible de partager votre emplacement: ", LOADING: "Chargement en cours...", HUB_EMPTY: "Votre historique de discussion apparaîtra ici", HUB_SHOW_EARLIER: "Afficher les conversations précédentes", INBOX_NO_CHATS_TITLE: "Aucune conversation pour l'instant!", INBOX_NO_CHATS_BODY: "Une fois que vous aurez eu une ou plusieurs conversations, elles apparaîtront ici.", ENABLE_TRANSLATION: "Traduire cette conversation en français", DISABLE_TRANSLATION: "Remontrer la conversation originale", SEARCH_PLACEHOLDER_TEXT: "Rechercher...", SEARCH_SEARCHING: "Recherche...", SEARCH_NO_RESULTS: "Aucun résultat trouvé", SEARCH_NO_MORE_RESULTS: "Il n’y a plus de résultats", CHAT_NOT_FOUND: "Conversation introuvable", DELETE_MESSAGE: "Supprimer le message", DELETION_EXPLANATION: "Si vous supprimez ce message, il disparaîtra pour tout le monde.", EDIT_MESSAGE: "Modifier le message", SAVE: "Enregistrer", EDITED_INDICATOR: "modifié", REPLY_TO_MESSAGE: "Répondre", ADD_REACTION: "Ajouter une réaction", AUTH_EXPIRED_OVERLAY_TITLE: "Votre session de chat a expiré", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Actualisez la page pour continuer", VOICE_MESSAGE: "Message vocal", CONTACT_INFORMATION_HIDDEN: "Informations masquées", LEAVE_CONVERSATION: "Quitter la conversation", MARK_CONVERSATION_AS_UNREAD: "Marquer comme non lu", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, za = { code: "he-IL", name: "Hebrew", translation: { YESTERDAY: "אתמול", TODAY: "היום", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "עכשיו", LOCATION: "מיקום", CANCEL: "בטל", INBOX: "דואר נכנס", DESKTOP_NOTIFICATIONS: "התראות דפדפן", DESKTOP_NOTIFICATIONS_ERROR: "לא ניתן להפעיל התראות במרועה דפדפן מכיוון שהדפדפן שלך חוסם אותן באופן פעיל. נסה להסתכל בהגדרות או להשתמש בדפדפן אחר.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} הודעה על הדגמה`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "אם אתה שומר על כרטיסיית הדפדפן שלך פתוחה, תראה את זה צץ כשמישהו ידבר איתך.", SEND_BUTTON_TEXT: "שלח", ENTRYBOX_TEXT_LIMIT: "רק 10.000 תווים", ENTRYBOX_PLACEHOLDER: "תגיד משהו...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "שיחה זו אינה פעילה עוד.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "אתה יכול לקרוא, אך לא לשלוח הודעות.", MESSAGELIST_LOADING_OLDER: "טוען הודעות ישנות...", MESSAGELIST_SHOW_OLDER: "הצג הודעות ישנות", MESSAGELIST_NEW_MARKER: "חדש", MESSAGE_SENT_VIA_EMAIL: "הודעה זאת נשלחה דרך אימייל", YOU_MARKER: "אתה", UPLOAD_IN_PROGRESS: "מעלה ...", UPLOAD_SEND_FILE: "שלח קובץ", UPLOAD_SHARE_LOCATION: "שתף מיקום", UPLOAD_ERROR: "לרוע המזל משהו השתבש בהעלאה. ייתכן שהקובץ אינו נתמך או גדול מדי.", SHARE_LOCATION_ERROR: "לא ניתן לשתף מיקום: ", LOADING: "טוען...", HUB_EMPTY: "היסטוריית הצ'אט שלך תופיע כאן", HUB_SHOW_EARLIER: "הצג צ'אטים קודמים", INBOX_NO_CHATS_TITLE: "אין עדיין צ'אטים!", INBOX_NO_CHATS_BODY: "לאחר שניהלת שיחה אחת או יותר, הם יופיעו כאן.", ENABLE_TRANSLATION: "תרגם שיחה זו לעברית", DISABLE_TRANSLATION: "הצג מקור", SEARCH_PLACEHOLDER_TEXT: "...חפש", SEARCH_SEARCHING: "...מחפש", SEARCH_NO_RESULTS: "לא נמצאו תוצאות", SEARCH_NO_MORE_RESULTS: "אין תוצאות נוספות", CHAT_NOT_FOUND: "הצ'אט לא נמצא", DELETE_MESSAGE: "מחיקת הודעה", DELETION_EXPLANATION: "אם תמחק הודעה זו, היא תיעלם עבור כולם.", EDIT_MESSAGE: "עריכת הודעה", SAVE: "שמור", EDITED_INDICATOR: "ערוך", REPLY_TO_MESSAGE: "השב", ADD_REACTION: "הוספת תגובה", AUTH_EXPIRED_OVERLAY_TITLE: "הפעלת הצ׳אט שלכם פגה", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "רעננו את העמוד כדי להמשיך", VOICE_MESSAGE: "הודעה קולית", CONTACT_INFORMATION_HIDDEN: "מידע מוסתר", LEAVE_CONVERSATION: "צא מהשיחה", MARK_CONVERSATION_AS_UNREAD: "סמן כלא נקרא", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Ka = { code: "hi-IN", name: "Hindi (IN)", translation: { YESTERDAY: "कल", TODAY: "आज", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "अभी", LOCATION: "जगह", CANCEL: "रद्द करें", INBOX: "इनबॉक्स", DESKTOP_NOTIFICATIONS: "ब्राउज़र सूचनाएं", DESKTOP_NOTIFICATIONS_ERROR: "ब्राउज़र सूचनाएं सक्षम नहीं कर सकता क्योंकि आपका ब्राउज़र सक्रिय रूप से उन्हें ब्लॉक करता है। सेटिंग्स में देखने या एक अलग ब्राउज़र का उपयोग करने का प्रयास करें।", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} डेमो अधिसूचना`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "यदि आप अपना ब्राउज़र टैब खुला रखते हैं, तो यह पॉप अप आपको तब दिखाई देगा जब कोई आपसे बात करेगा।", SEND_BUTTON_TEXT: "भेजें", ENTRYBOX_TEXT_LIMIT: "केवल 10,000 वर्णों की अनुमति है।", ENTRYBOX_PLACEHOLDER: "कुछ कहिए...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "यह चैट अब सक्रिय नहीं है।", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "आप पढ़ सकते हैं, लेकिन संदेश नहीं भेज सकते।", MESSAGELIST_LOADING_OLDER: "पुराने संदेश लोड हो रहे हैं ...", MESSAGELIST_SHOW_OLDER: "पुराने संदेश दिखाएं", MESSAGELIST_NEW_MARKER: "नया", MESSAGE_SENT_VIA_EMAIL: "यह संदेश ईमेल के माध्यम से भेजा गया था", YOU_MARKER: "आप", UPLOAD_IN_PROGRESS: "अपलोड हो रहा है...", UPLOAD_SEND_FILE: "फाइल भेजें", UPLOAD_SHARE_LOCATION: "जगह शेयर करें", UPLOAD_ERROR: "दुर्भाग्य से, अपलोड करते समय कुछ गलत हो गया। फ़ाइल असमर्थित या बहुत बड़ी हो सकती है।", SHARE_LOCATION_ERROR: "जगह शेयर नहीं हो पाया: ", LOADING: "लोड हो रहा है...", HUB_EMPTY: "आपका चैट इतिहास यहां दिखाई देगा", HUB_SHOW_EARLIER: "पहले की चैट दिखाओ", INBOX_NO_CHATS_TITLE: "अभी तक कोई चैट नहीं!", INBOX_NO_CHATS_BODY: "एक बार जब आप एक या अधिक चैट कर लेते हैं, तो वे यहां दिखाई देंगे।", ENABLE_TRANSLATION: "इस बातचीत का हिंदी में अनुवाद कीजिए", DISABLE_TRANSLATION: "मूल दिखाएँ", SEARCH_PLACEHOLDER_TEXT: "खोजें...", SEARCH_SEARCHING: "खोज जारी है...", SEARCH_NO_RESULTS: "कोई परिणाम नहीं मिला", SEARCH_NO_MORE_RESULTS: "और कोई परिणाम नहीं", CHAT_NOT_FOUND: "चैट नहीं मिली", DELETE_MESSAGE: "संदेश डिलीट करें", DELETION_EXPLANATION: "यदि आप इस संदेश को हटाते हैं, तो यह सभी के लिए गायब हो जाएगा.", EDIT_MESSAGE: "संदेश में बदलाव करें", SAVE: "सहेजें", EDITED_INDICATOR: "संपादित किया गया", REPLY_TO_MESSAGE: "जवाब दीजिए ।", ADD_REACTION: "प्रतिक्रिया जोड़ें", AUTH_EXPIRED_OVERLAY_TITLE: "आपका चैट सेशन समाप्त हो चुका है", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "आगे बढ़ने के लिए रिफ्रेश करें", VOICE_MESSAGE: "वॉयस मैसेज", CONTACT_INFORMATION_HIDDEN: "छुपी हुई जानकारी", LEAVE_CONVERSATION: "बातचीत को ख़त्म करें", MARK_CONVERSATION_AS_UNREAD: "अपठित के रूप में चिह्नित करें", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Wa = { code: "hr-HR", name: "Croatian", translation: { YESTERDAY: "Jučer", TODAY: "Danas", DAYS: "d", HOURS: "s", MINUTES: "m", JUST_NOW: "Upravo sad", LOCATION: "Lokacija", CANCEL: "Otkaži", INBOX: "Pretinac", DESKTOP_NOTIFICATIONS: "Obavijesti preglednika", DESKTOP_NOTIFICATIONS_ERROR: "Notifikacije preglednika nisu omogućene jer ih vaš preglednik aktivno blokira. Pokušajte pogledati postavke ili koristiti neki drugi preglednik.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo notifikacija`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Ako karticu preglednika ostavite otvorenu, pojavit će se ovaj pop-up kada netko razgovara s vama.", SEND_BUTTON_TEXT: "Pošalji", ENTRYBOX_TEXT_LIMIT: "Dozvoljeno je samo 10.000 znakova.", ENTRYBOX_PLACEHOLDER: "Reci nešto...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Ovaj razgovor više nije aktivan.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Možeš čitati, ali ne i slati poruke.", MESSAGELIST_LOADING_OLDER: "Učitavam starije poruke...", MESSAGELIST_SHOW_OLDER: "Prikaži starije poruke", MESSAGELIST_NEW_MARKER: "Novo", MESSAGE_SENT_VIA_EMAIL: "Ova poruka je poslana e-poštom", YOU_MARKER: "ti", UPLOAD_IN_PROGRESS: "Učitavam...", UPLOAD_SEND_FILE: "Pošalji datoteku", UPLOAD_SHARE_LOCATION: "Podijeli lokaciju", UPLOAD_ERROR: "Nažalost, nešto je pošlo krivo. Datoteka možda nije podržana ili je prevelika.", SHARE_LOCATION_ERROR: "Nije moguće podijeliti lokaciju: ", LOADING: "Učitavam...", HUB_EMPTY: "Ovdje će se prikazati vaša povijest razgovora", HUB_SHOW_EARLIER: "Prikaži ranije razgovore", INBOX_NO_CHATS_TITLE: "Nema razgovora!", INBOX_NO_CHATS_BODY: "Nakon što vodite jedan ili više razgovora, oni će se pojaviti ovdje.", ENABLE_TRANSLATION: "Prevedi ovaj razgovor na hrvatski jezik", DISABLE_TRANSLATION: "Prikaži original", SEARCH_PLACEHOLDER_TEXT: "Pretraži...", SEARCH_SEARCHING: "Pretraživanje...", SEARCH_NO_RESULTS: "Nema rezultata", SEARCH_NO_MORE_RESULTS: "Nema više rezultata", CHAT_NOT_FOUND: "Razgovor nije pronađen", DELETE_MESSAGE: "Obriši poruku", DELETION_EXPLANATION: "Ako izbrišete ovu poruku, nestat će za sve.", EDIT_MESSAGE: "Uredi poruku", SAVE: "Spremi", EDITED_INDICATOR: "uređivao", REPLY_TO_MESSAGE: "Odgovorite", ADD_REACTION: "Dodajte reakciju", AUTH_EXPIRED_OVERLAY_TITLE: "Vaša sesija razgovora je istekla", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Osvježite stranicu za nastavak", VOICE_MESSAGE: "Glasovna poruka", CONTACT_INFORMATION_HIDDEN: "Skrivene informacije", LEAVE_CONVERSATION: "Napustiti razgovor", MARK_CONVERSATION_AS_UNREAD: "Označi kao nepročitano", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, qa = { code: "hu-HU", name: "Hungarian", translation: { YESTERDAY: "Tegnap", TODAY: "Ma", DAYS: "n", HOURS: "ó", MINUTES: "p", JUST_NOW: "éppen most", LOCATION: "Helyszín", CANCEL: "Visszavonás", INBOX: "Postaláda", DESKTOP_NOTIFICATIONS: "Böngésző értesítések", DESKTOP_NOTIFICATIONS_ERROR: "Azért nem tudja bekapcsolni a böngésző értesítések funkciót, mert böngészője aktívan blokkolja azt. Tekintse meg a beállításokat vagy használjon másik böngészőt.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo értesítés`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Ha nyitva hagyja böngészőjét, felugró ablak fog megjelenni, ha valaki beszélni szeretne Önnel.", SEND_BUTTON_TEXT: "Küldés", ENTRYBOX_TEXT_LIMIT: "Mindőssze 10.000 karakter megengedett.", ENTRYBOX_PLACEHOLDER: "Mondjon valamit...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Ez a beszélgetés már nem aktív.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Elolvashatja az üzeneteket, de nem küldhet újat.", MESSAGELIST_LOADING_OLDER: "Korábbi üzenetek betöltése...", MESSAGELIST_SHOW_OLDER: "Korábbi üzenetek megjelenítése", MESSAGELIST_NEW_MARKER: "Új", MESSAGE_SENT_VIA_EMAIL: "Ez az üzenet e-mailben került elküldésre", YOU_MARKER: "Ön", UPLOAD_IN_PROGRESS: "Feltöltés...", UPLOAD_SEND_FILE: "Fájl küldése", UPLOAD_SHARE_LOCATION: "Helyszín megosztása", UPLOAD_ERROR: "Sajnos hiba történt a feltöltés során. A fájl nem támogatott vagy túl nagy.", SHARE_LOCATION_ERROR: "Helyszín megosztása nem lehetséges: ", LOADING: "Betöltés...", HUB_EMPTY: "A beszélgetések előzményei itt láthatók", HUB_SHOW_EARLIER: "Korábbi beszélgetések megjelenítése", INBOX_NO_CHATS_TITLE: "Még nincs megjeleníthető beszélgetés!", INBOX_NO_CHATS_BODY: "Amint egy vagy több beszélgetéssel rendelkezik, azok itt fognak megjelenni.", ENABLE_TRANSLATION: "A beszélgetés lefordítása erre a nyelvre: magyar", DISABLE_TRANSLATION: "Eredeti megjelenítése", SEARCH_PLACEHOLDER_TEXT: "Keresés...", SEARCH_SEARCHING: "Keresés...", SEARCH_NO_RESULTS: "Nincs találat", SEARCH_NO_MORE_RESULTS: "Nincs több találat", CHAT_NOT_FOUND: "A csevegés nem található", DELETE_MESSAGE: "Üzenet törlése", DELETION_EXPLANATION: "Ha törlöd ezt az üzenetet, az mindenki számára eltűnik.", EDIT_MESSAGE: "Üzenet szerkesztése", SAVE: "Mentés", EDITED_INDICATOR: "szerkesztve", REPLY_TO_MESSAGE: "Válaszadás", ADD_REACTION: "Reagálás erre", AUTH_EXPIRED_OVERLAY_TITLE: "Chat munkamenete lejárt", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Folytatáshoz frissítse az oldalt", VOICE_MESSAGE: "Hangüzenet", CONTACT_INFORMATION_HIDDEN: "Rejtett információ", LEAVE_CONVERSATION: "Kilépés a beszélgetésből", MARK_CONVERSATION_AS_UNREAD: "Megjelölés olvasatlanként", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Ja = { code: "id-ID", name: "Bahasa Indonesia", translation: { YESTERDAY: "Kemarin", TODAY: "Hari ini", DAYS: "h", HOURS: "j", MINUTES: "m", JUST_NOW: "sekarang", LOCATION: "Lokasi", CANCEL: "Batal", INBOX: "Kotak Masuk", DESKTOP_NOTIFICATIONS: "Notifikasi peramban", DESKTOP_NOTIFICATIONS_ERROR: "Tidak dapat mengaktifkan pemberitahuan browser karena browser Anda secara aktif memblokir mereka. Coba cari di pengaturan atau menggunakan browser yang berbeda.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `pemberitahuan demo ${e}`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Jika Anda membiarkan tab browser tetap terbuka, Anda akan melihat ini muncul ketika seseorang berbicara kepada Anda.", SEND_BUTTON_TEXT: "Kirim", ENTRYBOX_TEXT_LIMIT: "Hanya 10.000 karakter yang diizinkan.", ENTRYBOX_PLACEHOLDER: "Katakan sesuatu...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Percakapan ini tidak lagi aktif.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Anda dapat membaca, tetapi tidak mengirim pesan.", MESSAGELIST_LOADING_OLDER: "Memuat pesan lama...", MESSAGELIST_SHOW_OLDER: "Tampilkan pesan yang lebih lama", MESSAGELIST_NEW_MARKER: "Baru", MESSAGE_SENT_VIA_EMAIL: "Pesan ini dikirim melalui email", YOU_MARKER: "Anda", UPLOAD_IN_PROGRESS: "Mengunggah...", UPLOAD_SEND_FILE: "Kirim mengajukan", UPLOAD_SHARE_LOCATION: "Bagikan lokasi", UPLOAD_ERROR: "Ada yang salah diunggah. File mungkin tidak didukung atau terlalu besar.", SHARE_LOCATION_ERROR: "Tidak dapat membagikan lokasi: ", LOADING: "Memuat...", HUB_EMPTY: "Riwayat obrolan Anda akan muncul di sini", HUB_SHOW_EARLIER: "Tampilkan obrolan sebelumnya", INBOX_NO_CHATS_TITLE: "Belum ada obrolan!", INBOX_NO_CHATS_BODY: "Setelah Anda melakukan satu atau lebih percakapan, mereka akan muncul di sini.", ENABLE_TRANSLATION: "Terjemahkan percakapan ini ke Indonesia", DISABLE_TRANSLATION: "Perlihatkan asli", SEARCH_PLACEHOLDER_TEXT: "Cari...", SEARCH_SEARCHING: "Mencari...", SEARCH_NO_RESULTS: "Tidak ditemukan hasil", SEARCH_NO_MORE_RESULTS: "Tidak ada hasil lainnya", CHAT_NOT_FOUND: "Obrolan tidak ditemukan", DELETE_MESSAGE: "Hapus pesan", DELETION_EXPLANATION: "Jika pesan ini Anda hapus, pesan ini akan tidak terlihat bagi siapa pun.", EDIT_MESSAGE: "Sunting pesan", SAVE: "Mentés", EDITED_INDICATOR: "diedit", REPLY_TO_MESSAGE: "Balas", ADD_REACTION: "Tambah reaksi", AUTH_EXPIRED_OVERLAY_TITLE: "Sesi obrolan Anda sudah lewat batas waktu", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Muat ulang halaman untuk melanjutkan", VOICE_MESSAGE: "Pesan suara", CONTACT_INFORMATION_HIDDEN: "Informasi tersembunyi", LEAVE_CONVERSATION: "Tinggalkan percakapan", MARK_CONVERSATION_AS_UNREAD: "Tandai sebagai Belum dibaca", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Za = { code: "is-IS", name: "Íslenska", translation: { YESTERDAY: "Í gær", TODAY: "Í dag", DAYS: "dagar", HOURS: "klst.", MINUTES: "mín.", JUST_NOW: "núna", LOCATION: "Staðsetning", CANCEL: "Hætta við", INBOX: "Pósthólf", DESKTOP_NOTIFICATIONS: "Tilkynningar í vafra", DESKTOP_NOTIFICATIONS_ERROR: "Ekki er hægt að birta tilkynningar í vafra vegna þess að vafrinn sem þú notar hindrar það. Reyndu að leita að stillingum eða að nota annan vafra.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} prufutilkynning`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Ef flipinn í vafranum er opinn muntu sjá þessa tilkynningu birtast þegar einhver sendir þér skilaboð.", SEND_BUTTON_TEXT: "Senda", ENTRYBOX_TEXT_LIMIT: "Aðeins 10.000 stafir komast fyrir.", ENTRYBOX_PLACEHOLDER: "Segðu eitthvað...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Þessar samræður eru ekki lengar virkar.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Þú getur lesið, en ekki sent skilaboð.", MESSAGELIST_LOADING_OLDER: "Sæki eldri skilaboð...", MESSAGELIST_SHOW_OLDER: "Sýna eldri skilaboð", MESSAGELIST_NEW_MARKER: "Ný", MESSAGE_SENT_VIA_EMAIL: "Þessi skilaboð voru send með tölvupósti", YOU_MARKER: "þú", UPLOAD_IN_PROGRESS: "Hleð upp...", UPLOAD_SEND_FILE: "Senda skrá", UPLOAD_SHARE_LOCATION: "Deila staðsetningu", UPLOAD_ERROR: "Því miður fór eitthvað úrskeiðis við að hlaða upp. Skráin gæti verið af rangri tegund eð of stór.", SHARE_LOCATION_ERROR: "Ekki er hægt að deila staðsetningu: ", LOADING: "Hleð...", HUB_EMPTY: "Fyrri samtöl munu birtast hér", HUB_SHOW_EARLIER: "Sýna fyrri samtöl", INBOX_NO_CHATS_TITLE: "Engin samtöl enn!", INBOX_NO_CHATS_BODY: "Þegar þú hefur átt eitt eða fleiri samtöl, munu þau birtast hér.", ENABLE_TRANSLATION: "Þýða þetta samtal á ensku", DISABLE_TRANSLATION: "Sýna upprunalegt", SEARCH_PLACEHOLDER_TEXT: "Leita...", SEARCH_SEARCHING: "Leita...", SEARCH_NO_RESULTS: "Ekkert fannst", SEARCH_NO_MORE_RESULTS: "Engar fleiri niðurstöður", CHAT_NOT_FOUND: "Samtal fannst ekki", DELETE_MESSAGE: "Eyða skilaboðum", DELETION_EXPLANATION: "Ef þú eyðir þessum skilaboðum munu þau hverfa hjá öllum.", EDIT_MESSAGE: "Breyta skilaboðum", SAVE: "Vista", EDITED_INDICATOR: "breytt", REPLY_TO_MESSAGE: "Svara", REPLY_TO_ARIA_LABEL: (e, t) => `Svara ${e}: ${t}`, REPLY_MODE_LEAVE_ARIA_LABEL: "Fara úr svari", ADD_REACTION: "Setja inn viðbrögð", AUTH_EXPIRED_OVERLAY_TITLE: "Spjallið hefur runnið út", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Endurnýjaðu síðuna til að halda áfram", VOICE_MESSAGE: "Raddskilaboð", LEAVE_CONVERSATION: "Skilja eftir skilaboð", MARK_CONVERSATION_AS_UNREAD: "Merkja sem ólesið", STATUS_INDICATOR_ONLINE: "Virk", STATUS_INDICATOR_OFFLINE: "Ekki við", CONTACT_INFORMATION_HIDDEN: "faldar upplýsingar" } }, Qa = { code: "it-IT", name: "Italian", translation: { YESTERDAY: "Ieri", TODAY: "Oggi", DAYS: "g", HOURS: "o", MINUTES: "m", JUST_NOW: "adesso", LOCATION: "Posizione", CANCEL: "Annulla", INBOX: "Posta in arrivo", DESKTOP_NOTIFICATIONS: "Notifiche browser", DESKTOP_NOTIFICATIONS_ERROR: "Impossibile abilitare le notifiche browser perché il browser le blocca attivamente. Prova a cercare le impostazioni o utilizzare un browser diverso.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo notification`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Se si mantiene aperta la scheda del browser, questo verrà visualizzato quando qualcuno ti parla.", SEND_BUTTON_TEXT: "Invia", ENTRYBOX_TEXT_LIMIT: "Sono consentiti solo 10.000 caratteri.", ENTRYBOX_PLACEHOLDER: "Dì qualcosa...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Questa conversazione non è più attiva.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Puoi leggere, ma non inviare messaggi.", MESSAGELIST_LOADING_OLDER: "Caricamento dei messaggi precedenti...", MESSAGELIST_SHOW_OLDER: "Mostra messaggi precedenti", MESSAGELIST_NEW_MARKER: "Nuovo", MESSAGE_SENT_VIA_EMAIL: "Questo messaggio è stato inviato via email", YOU_MARKER: "tu", UPLOAD_IN_PROGRESS: "Caricamento in corso...", UPLOAD_SEND_FILE: "Invia file", UPLOAD_SHARE_LOCATION: "Condividi posizione", UPLOAD_ERROR: "Qualcosa è andato storto durante il caricamento. Il file potrebbe non essere supportato o troppo grande.", SHARE_LOCATION_ERROR: "Impossibile condividere la posizione: ", LOADING: "Caricamento in corso...", HUB_EMPTY: "La cronologia della tua chat verrà mostrata qui", HUB_SHOW_EARLIER: "Mostra chat precedenti", INBOX_NO_CHATS_TITLE: "Non ci sono ancora chat!", INBOX_NO_CHATS_BODY: "Una volta che hai avuto una o più conversazioni, verranno visualizzate qui.", ENABLE_TRANSLATION: "Traduci questa conversazione in italiano", DISABLE_TRANSLATION: "Mostra l'originale", SEARCH_PLACEHOLDER_TEXT: "Cerca...", SEARCH_SEARCHING: "Cercando...", SEARCH_NO_RESULTS: "Nessun risultato trovato", SEARCH_NO_MORE_RESULTS: "Non ci sono più risultati", CHAT_NOT_FOUND: "Chat non trovata", DELETE_MESSAGE: "Elimina messaggio", DELETION_EXPLANATION: "Se elimini il messaggio, questo scomparirà per tutti.", EDIT_MESSAGE: "Modifica messaggio", SAVE: "Salva", EDITED_INDICATOR: "modificato", REPLY_TO_MESSAGE: "Rispondi", ADD_REACTION: "Aggiungi reazione", AUTH_EXPIRED_OVERLAY_TITLE: "La sessione di chat è scaduta", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Aggiorna la pagina per continuare", VOICE_MESSAGE: "Messaggio vocale", CONTACT_INFORMATION_HIDDEN: "Informazioni nascoste", LEAVE_CONVERSATION: "Abbandona la conversazione", MARK_CONVERSATION_AS_UNREAD: "Segna come non letto", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, es = { code: "ja-JP", name: "Japanese", translation: { YESTERDAY: "昨日", TODAY: "今日", DAYS: "日前", HOURS: "時間前", MINUTES: "分前", JUST_NOW: "たった今", LOCATION: "場所", CANCEL: "キャンセル", INBOX: "受信箱", DESKTOP_NOTIFICATIONS: "ブラウザの通知", DESKTOP_NOTIFICATIONS_ERROR: "ブラウザの通知はブロックされているため、ブラウザの通知を有効にできません。設定を確認するか、別のブラウザを使用してください。", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} デモ通知`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "ブラウザのタブを開いたままにしておくと、誰かがあなたに話しかけたときにこのポップアップが表示されます。", SEND_BUTTON_TEXT: "送信", ENTRYBOX_TEXT_LIMIT: "許可されているのは10.000文字までです。", ENTRYBOX_PLACEHOLDER: "メッセージを入力してください", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "この会話はもうアクティブではありません。", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "あなたは読むことはできますが、メッセージを送ることはできません。", MESSAGELIST_LOADING_OLDER: "古いメッセージを読み込んでいます...", MESSAGELIST_SHOW_OLDER: "古いメッセージを表示", MESSAGELIST_NEW_MARKER: "新着", MESSAGE_SENT_VIA_EMAIL: "このメッセージはメールで送信されました", YOU_MARKER: "あなたは", UPLOAD_IN_PROGRESS: "アップロード中...", UPLOAD_SEND_FILE: "ファイル送信", UPLOAD_SHARE_LOCATION: "共有場所", UPLOAD_ERROR: "アップロード中に問題が発生しました。ファイルがサポートされていないか、大きすぎる可能性があります。", SHARE_LOCATION_ERROR: "場所を共有できません: ", LOADING: "読み込み中...", HUB_EMPTY: "あなたのチャット履歴がここに表示されます", HUB_SHOW_EARLIER: "以前のチャットを表示", INBOX_NO_CHATS_TITLE: "まだチャットがありません!", INBOX_NO_CHATS_BODY: "会話が1つ以上あると、ここに表示されます", ENABLE_TRANSLATION: "この会話を日本語に翻訳する", DISABLE_TRANSLATION: "オリジナルを表示", SEARCH_PLACEHOLDER_TEXT: "検索...", SEARCH_SEARCHING: "検索中...", SEARCH_NO_RESULTS: "結果が見つかりません", SEARCH_NO_MORE_RESULTS: "これ以上結果はありません", CHAT_NOT_FOUND: "チャットが見つかりませんでした", DELETE_MESSAGE: "メッセージを削除する", DELETION_EXPLANATION: "このメッセージを削除すると、全ての人に表示されなくなります。", EDIT_MESSAGE: "メッセージを編集する", SAVE: "上書き保存", EDITED_INDICATOR: "編集", REPLY_TO_MESSAGE: "返信する", ADD_REACTION: "リアクションを追加", AUTH_EXPIRED_OVERLAY_TITLE: "チャットセッションの有効期限が切れました", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "続けるにはページを更新してください", VOICE_MESSAGE: "ボイスメッセージ", CONTACT_INFORMATION_HIDDEN: "機密情報", LEAVE_CONVERSATION: "会話をやめる", MARK_CONVERSATION_AS_UNREAD: "未読としてマーク", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, ts = { code: "ka-GE", name: "Georgian", translation: { YESTERDAY: "გუშინ", TODAY: "დღეს", DAYS: "დღ", HOURS: "სთ", MINUTES: "წთ", JUST_NOW: "ახლა", LOCATION: "ადგილმდებარეობა", CANCEL: "გაუქმება", INBOX: "მიღებული შეტყობინება", DESKTOP_NOTIFICATIONS: "ბრაუზერის შეტყობინებები", DESKTOP_NOTIFICATIONS_ERROR: "შეუძლებელია ბრაუზერის შეტკობინებების ჩართვა. ეს ბრაუზერი ბლოკავს მათ. სცადე ცვლილება ოპციებიდან ან გამოიყენე სხვა ბრაუზერი.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} შეტყობინებების დემო ვერსია`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "თუ დატოვებ ბრაუზერის ფანჯარას გახსნილს, როცა ვიღაც მოგწერს საუბარი ამოვარდება დესკტოპზე.", SEND_BUTTON_TEXT: "გაგზავნა", ENTRYBOX_TEXT_LIMIT: "დაშვებულია მხოლოდ 10.000 სიმბოლო.", ENTRYBOX_PLACEHOLDER: "დაწერე რაღაც...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "ეს დიალოგი აღარ არის ხელმისაწვდომი.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "შეგიძლია წაიკითხო, მაგრამ ვერ გააგზავნი შეტყობინებას.", MESSAGELIST_LOADING_OLDER: "იტვირთება ძველი შეტყობინებები...", MESSAGELIST_SHOW_OLDER: "ძველი შეტყობინებების ჩვენება", MESSAGELIST_NEW_MARKER: "ახალი", MESSAGE_SENT_VIA_EMAIL: "ეს შეტყობინება გამოგზავნილია იმეილით", YOU_MARKER: "you", UPLOAD_IN_PROGRESS: "იტვირთება...", UPLOAD_SEND_FILE: "ფაილის გაგზავნა", UPLOAD_SHARE_LOCATION: "ადგილმდებარეობის გაზიარება", UPLOAD_ERROR: "პრობლემაა ატვირთვისას. ფაილის შესაძლოა არის არათავსებადი ან ძალიან დიდი.", SHARE_LOCATION_ERROR: "შეუძლებელია ადგილმდებარეობის გაზიარება: ", LOADING: "იტვირთება...", HUB_EMPTY: "საუბრების ისტორია გამოჩნდება აქ", HUB_SHOW_EARLIER: "წინა საუბრების ნახვა", INBOX_NO_CHATS_TITLE: "ჯერ-ჯერობით არ არის საუბრები!", INBOX_NO_CHATS_BODY: "უკვე დასრულებული საუბარები გამოჩნდება აქ", ENABLE_TRANSLATION: "თარგმნეთ ეს საუბარი ინგლისურად", DISABLE_TRANSLATION: "ორიგინალის ჩვენება", SEARCH_PLACEHOLDER_TEXT: "ძიება...", SEARCH_SEARCHING: "მიმდინარეობს ძიება...", SEARCH_NO_RESULTS: "შედეგები ვერ ქართველი", SEARCH_NO_MORE_RESULTS: "სხვა შედეგი ვერ მოიძებნა", CHAT_NOT_FOUND: "ჩატი ვერ მოიძებნა", DELETE_MESSAGE: "შეტყობინების წაშლა ", DELETION_EXPLANATION: "თუ ამ შეტყობინებას წაშლით, ის ყველასთვის გაქრება.", EDIT_MESSAGE: "შეტყობინების რედაქტირება", SAVE: "შენახვა", EDITED_INDICATOR: "რედაქტირებულია", REPLY_TO_MESSAGE: "პასუხის გაცემა", ADD_REACTION: "დაამატეთ რეაქცია", AUTH_EXPIRED_OVERLAY_TITLE: "თქვენი ჩეთის სესიის ვადა ამოიწურა", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "განაახლეთ გვერდი გასაგრძელებლად", VOICE_MESSAGE: "ხმოვანი შეტყობინება", CONTACT_INFORMATION_HIDDEN: "ფარული ინფორმაცია", LEAVE_CONVERSATION: "საუბრის დატოვება", MARK_CONVERSATION_AS_UNREAD: "წაუკითხავად მონიშვნა", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, ns = { code: "ko-KR", name: "Korean (South Korea)", translation: { YESTERDAY: "어제", TODAY: "오늘", DAYS: "일 전", HOURS: "시간 전", MINUTES: "분 전", JUST_NOW: "방금", LOCATION: "위치", CANCEL: "취소", INBOX: "대화 목록", DESKTOP_NOTIFICATIONS: "브라우저 알림", DESKTOP_NOTIFICATIONS_ERROR: "브라우저 알림을 표시할 수 없습니다. 브라우저 설정을 확인하거나 다른 브라우저를 사용해주세요.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} 데모 알림`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "브라우저 탭을 열어 둔 상태에서 누군가 대화 할 때 이 팝업이 표시됩니다.", SEND_BUTTON_TEXT: "전송", ENTRYBOX_TEXT_LIMIT: "최대 10,000자까지 입력할 수 있습니다.", ENTRYBOX_PLACEHOLDER: "메세지를 입력하세요...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "채팅이 종료되었습니다.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "읽기만 가능하며 메시지를 보낼 수 없습니다.", MESSAGELIST_LOADING_OLDER: "이전 메시지 로드 중...", MESSAGELIST_SHOW_OLDER: "이전 메시지 표시", MESSAGELIST_NEW_MARKER: "새 메시지", MESSAGE_SENT_VIA_EMAIL: "이 메시지는 이메일을 통해 전송되었습니다.", YOU_MARKER: "나", UPLOAD_IN_PROGRESS: "업로드 중...", UPLOAD_SEND_FILE: "파일 전송", UPLOAD_SHARE_LOCATION: "위치 공유", UPLOAD_ERROR: "업로드가 실패했습니다. 파일이 지원되지 않거나 너무 클 수 있습니다.", SHARE_LOCATION_ERROR: "위치를 공유 할 수 없습니다: ", LOADING: "로드 중...", HUB_EMPTY: "채팅 기록이 여기에 표시됩니다", HUB_SHOW_EARLIER: "이전 채팅보기", INBOX_NO_CHATS_TITLE: "아직 채팅이 없습니다!", INBOX_NO_CHATS_BODY: "대화가 하나 이상 있으면 여기에 표시됩니다.", ENABLE_TRANSLATION: "이 대화를 한국어로 번역", DISABLE_TRANSLATION: "원본 표시", SEARCH_PLACEHOLDER_TEXT: "검색...", SEARCH_SEARCHING: "검색 중...", SEARCH_NO_RESULTS: "검색 결과 없음", SEARCH_NO_MORE_RESULTS: "추가 검색 결과 없음", CHAT_NOT_FOUND: "대화를 찾지 못했습니다", DELETE_MESSAGE: "메시지 삭제", DELETION_EXPLANATION: "이 메시지를 삭제하면 모든 사람이 볼 수 없게 됩니다.", EDIT_MESSAGE: "메시지 편집하기", SAVE: "저장", EDITED_INDICATOR: "편집", REPLY_TO_MESSAGE: "회신", ADD_REACTION: "반응 추가", AUTH_EXPIRED_OVERLAY_TITLE: "채팅 세션이 만료되었습니다", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "계속하려면 페이지를 새로고침하세요", VOICE_MESSAGE: "음성 메시지", CONTACT_INFORMATION_HIDDEN: "숨겨진 정보", LEAVE_CONVERSATION: "대화 떠나기", MARK_CONVERSATION_AS_UNREAD: "읽지 않은 상태로 표시", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, as = { code: "nb-NO", name: "Norwegian (Bokmål)", translation: { YESTERDAY: "I går", TODAY: "I dag", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "Nå", LOCATION: "Plassering", CANCEL: "Avbryt", INBOX: "Innboks", DESKTOP_NOTIFICATIONS: "Nettleservarsler", DESKTOP_NOTIFICATIONS_ERROR: "Kan ikke aktivere Nettleservarsler fordi nettleseren din aktivt blokkerer dem. Prøv å se i innstillingene eller bruke en annen nettleser.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo varslinger`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Hvis du holder nettleservinduet åpent, vil du se dette varsel når noen snakker til deg.", SEND_BUTTON_TEXT: "Send", ENTRYBOX_TEXT_LIMIT: "Kun 10.000 tegn er tillatt.", ENTRYBOX_PLACEHOLDER: "Si noe...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Denne samtale er ikke lengre aktiv.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Du kan lese, men ikke sende meldinger.", MESSAGELIST_LOADING_OLDER: "Laster eldre meldinger...", MESSAGELIST_SHOW_OLDER: "Vis eldre meldinger", MESSAGELIST_NEW_MARKER: "Ny", MESSAGE_SENT_VIA_EMAIL: "Denne meldingen er sendt via e-post", YOU_MARKER: "deg", UPLOAD_IN_PROGRESS: "Laster opp...", UPLOAD_SEND_FILE: "Send fil", UPLOAD_SHARE_LOCATION: "Del din plassering", UPLOAD_ERROR: "Noe gikk galt i uplastingen. Det kan være filen ikke støttes eller for stor.", SHARE_LOCATION_ERROR: "Kan ikke dele plasseringen: ", LOADING: "Laster...", HUB_EMPTY: "Din chats historikk vil vises her", HUB_SHOW_EARLIER: "Vis tidligere chats", INBOX_NO_CHATS_TITLE: "Ingen chats enda!", INBOX_NO_CHATS_BODY: "Så snart du får en eller flere samtaler, vil de vises her.", ENABLE_TRANSLATION: "Oversett denne samtalen til norsk", DISABLE_TRANSLATION: "Vis original", SEARCH_PLACEHOLDER_TEXT: "Søk...", SEARCH_SEARCHING: "Søker...", SEARCH_NO_RESULTS: "Finner ingen resultater", SEARCH_NO_MORE_RESULTS: "Ingen flere resultater", CHAT_NOT_FOUND: "Chat ikke funnet", DELETE_MESSAGE: "Slett melding", DELETION_EXPLANATION: "Hvis du sletter denne meldingen, forsvinner den for alle.", EDIT_MESSAGE: "Rediger melding", SAVE: "Lagre", EDITED_INDICATOR: "redigert", REPLY_TO_MESSAGE: "Svar", ADD_REACTION: "Legg til reaksjon", AUTH_EXPIRED_OVERLAY_TITLE: "Chatøkten er utløpt", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Oppdater siden for å fortsette", VOICE_MESSAGE: "Lydmelding", CONTACT_INFORMATION_HIDDEN: "Skjult informasjon", LEAVE_CONVERSATION: "Forlat samtalen", MARK_CONVERSATION_AS_UNREAD: "Merk som ulest", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, ss = { code: "nl-NL", name: "Dutch", translation: { YESTERDAY: "Gisteren", TODAY: "Vandaag", DAYS: "d", HOURS: "u", MINUTES: "m", JUST_NOW: "zojuist", LOCATION: "Locatie", CANCEL: "Annuleren", INBOX: "Inbox", DESKTOP_NOTIFICATIONS: "Browsermeldingen", DESKTOP_NOTIFICATIONS_ERROR: "Browsermeldingen kunnen niet geactiveerd worden omdat de browser het blokkeert. Check de instellingen van je browser of probeer een andere browser.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo notificatie`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Als je je browser open houdt, zie je deze popup als iemand tegen je praat.", SEND_BUTTON_TEXT: "Verzenden", ENTRYBOX_TEXT_LIMIT: "Maximaal 10.000 tekens toegestaan.", ENTRYBOX_PLACEHOLDER: "Typ een bericht...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Dit gesprek is niet actief meer.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Je kunt geen berichten sturen.", MESSAGELIST_LOADING_OLDER: "Eerdere berichten laden...", MESSAGELIST_SHOW_OLDER: "Laad eerdere berichten", MESSAGELIST_NEW_MARKER: "Nieuw", MESSAGE_SENT_VIA_EMAIL: "Dit bericht is verstuurd via e-mail", YOU_MARKER: "jij", UPLOAD_IN_PROGRESS: "Uploaden...", UPLOAD_SEND_FILE: "Verzend bestand", UPLOAD_SHARE_LOCATION: "Deel locatie", UPLOAD_ERROR: "Er ging iets mis. Het bestand wordt niet ondersteund of is te groot.", SHARE_LOCATION_ERROR: "Locatie delen mislukt: ", LOADING: "Bezig met laden...", HUB_EMPTY: "Berichtengeschiedenis wordt hier weergegeven", HUB_SHOW_EARLIER: "Laat eerdere berichten zien", INBOX_NO_CHATS_TITLE: "Nog geen chats!", INBOX_NO_CHATS_BODY: "Zodra je een of meerdere conversaties hebt gehad, worden deze hier weergegeven.", ENABLE_TRANSLATION: "Vertaal dit gesprek naar het Nederlands", DISABLE_TRANSLATION: "Toon oorspronkelijk gesprek", SEARCH_PLACEHOLDER_TEXT: "Zoek...", SEARCH_SEARCHING: "Zoeken...", SEARCH_NO_RESULTS: "Geen resultaten gevonden", SEARCH_NO_MORE_RESULTS: "Niet meer resultaten", CHAT_NOT_FOUND: "Chat niet gevonden", DELETE_MESSAGE: "Bericht verwijderen", DELETION_EXPLANATION: "Als je dit bericht verwijdert, zal het voor iedereen verdwijnen.", EDIT_MESSAGE: "Bericht bewerken", SAVE: "Opslaan", EDITED_INDICATOR: "bewerkt", REPLY_TO_MESSAGE: "Beantwoorden", ADD_REACTION: "Reactie toevoegen", AUTH_EXPIRED_OVERLAY_TITLE: "Je chatsessie is verlopen", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Ververs de pagina om door te gaan", VOICE_MESSAGE: "Spraakbericht", CONTACT_INFORMATION_HIDDEN: "verborgen informatie", LEAVE_CONVERSATION: "Gesprek verlaten", MARK_CONVERSATION_AS_UNREAD: "Markeren als ongelezen", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, is = { code: "pl-PL", name: "Polish", translation: { YESTERDAY: "Wczoraj", TODAY: "Dzisiaj", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "teraz", LOCATION: "Lokalizacja", CANCEL: "Anuluj", INBOX: "Skrzynka odbiorcza", DESKTOP_NOTIFICATIONS: "Powiadomienia", DESKTOP_NOTIFICATIONS_ERROR: "Nie można aktywować powiadomień, ponieważ twoja przeglądarka je blokuje. Proszę zmienić ustawienie lub spróbować innej przeglądarki.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} przykładowe powiadomienie`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Jeśli zostawisz tę kartę otwartą, zobaczysz takie powiadomienie, gdy ktoś napisze do Ciebie.", SEND_BUTTON_TEXT: "Wyślij", ENTRYBOX_TEXT_LIMIT: "Nie można wysyłać więcej niż 10000 znaków.", ENTRYBOX_PLACEHOLDER: "Napisz coś...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Ten czat nie jest aktywny.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Możesz czytać wiadomości, ale nie możesz ich wysyłać.", MESSAGELIST_LOADING_OLDER: "Wczytuję starsze wiadomości...", MESSAGELIST_SHOW_OLDER: "Zobacz starsze wiadomości", MESSAGELIST_NEW_MARKER: "Nowe", MESSAGE_SENT_VIA_EMAIL: "Ta wiadomość została wysłana przez email.", YOU_MARKER: "ty", UPLOAD_IN_PROGRESS: "Przesyłanie...", UPLOAD_SEND_FILE: "Prześlij plik", UPLOAD_SHARE_LOCATION: "Udostępnij lokalizację", UPLOAD_ERROR: "Coś poszło nie tak. Plik może być zbyt duży lub jest nieobsługiwany.", SHARE_LOCATION_ERROR: "Nie da się udostępnić lokalizacji: ", LOADING: "Ładowanie...", HUB_EMPTY: "Twoje czaty pojawią się tutaj", HUB_SHOW_EARLIER: "Zobacz starsze czaty", INBOX_NO_CHATS_TITLE: "Brak czatów!", INBOX_NO_CHATS_BODY: "Rozpoczęte konwersacje pojawią się tutaj.", ENABLE_TRANSLATION: "Przetłumacz tę konwersację na język polski", DISABLE_TRANSLATION: "Pokaż oryginał", SEARCH_PLACEHOLDER_TEXT: "Wyszukaj...", SEARCH_SEARCHING: "Wyszukiwanie...", SEARCH_NO_RESULTS: "Nie znaleziono wyników", SEARCH_NO_MORE_RESULTS: "Nie ma innych wyników", CHAT_NOT_FOUND: "Nie znaleziono konwersacji", DELETE_MESSAGE: "Usuń wiadomość", DELETION_EXPLANATION: "Jeśli usuniesz tę wiadomość, przestanie być widoczna dla wszystkich.", EDIT_MESSAGE: "Edytuj wiadomość", SAVE: "Zapisz", EDITED_INDICATOR: "edytowano", REPLY_TO_MESSAGE: "Odpowiedz", ADD_REACTION: "Dodaj reakcję", AUTH_EXPIRED_OVERLAY_TITLE: "Twoja sesja wygasła", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Odśwież stronę, aby kontynuować", VOICE_MESSAGE: "Wiadomość głosowa", CONTACT_INFORMATION_HIDDEN: "Ukryte informacje", LEAVE_CONVERSATION: "Opuść konwersację", MARK_CONVERSATION_AS_UNREAD: "Oznacz jako nieprzeczytane", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, rs = { code: "pt-BR", name: "Portuguese (Brazil)", translation: { YESTERDAY: "Ontem", TODAY: "Hoje", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "agora mesmo", LOCATION: "Localização", CANCEL: "Cancelar", INBOX: "Caixa de entrada", DESKTOP_NOTIFICATIONS: "Notificações do navegador", DESKTOP_NOTIFICATIONS_ERROR: "Não é possível ativar as notificações da navegador porque seu navegador as bloqueia. Tente procurar nas configurações ou usar um navegador diferente.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} notificação de demonstração`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Se você mantiver a guia do navegador aberta, verá essa mensagem quando alguém falar com você.", SEND_BUTTON_TEXT: "Enviar", ENTRYBOX_TEXT_LIMIT: "Apenas 10.000 caracteres são permitidos.", ENTRYBOX_PLACEHOLDER: "Diga algo...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Esta conversa não está mais ativa.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Você pode ler, mas não enviar mensagens.", MESSAGELIST_LOADING_OLDER: "Carregando mensagens antigas...", MESSAGELIST_SHOW_OLDER: "Mostrar mensagens mais antigas", MESSAGELIST_NEW_MARKER: "Novo", MESSAGE_SENT_VIA_EMAIL: "Esta mensagem foi enviada via email.", YOU_MARKER: "Você", UPLOAD_IN_PROGRESS: "Carregando...", UPLOAD_SEND_FILE: "Enviar arquivo", UPLOAD_SHARE_LOCATION: "Compartilhar localização", UPLOAD_ERROR: "Algo deu errado ao fazer o upload. O arquivo pode não ter suporte ou ser muito grande.", SHARE_LOCATION_ERROR: "Não é possível compartilhar o local: ", LOADING: "Carregando...", HUB_EMPTY: "Seu histórico de conversas será exibido aqui", HUB_SHOW_EARLIER: "Mostrar conversas anteriores", INBOX_NO_CHATS_TITLE: "Ainda não há chats!", INBOX_NO_CHATS_BODY: "Depois de ter uma ou mais conversas, elas serão exibidas aqui.", ENABLE_TRANSLATION: "Traduzir esta conversa para português", DISABLE_TRANSLATION: "Ver a conversa não traduzida", SEARCH_PLACEHOLDER_TEXT: "Busca...", SEARCH_SEARCHING: "Consultando...", SEARCH_NO_RESULTS: "Resultados nao encontrados", SEARCH_NO_MORE_RESULTS: "Não há mais resultados", CHAT_NOT_FOUND: "Conversa não encontrada", DELETE_MESSAGE: "Excluir mensagem", DELETION_EXPLANATION: "Se você excluir esta mensagem, ela desaparecerá para todos.", EDIT_MESSAGE: "Editar mensagem", SAVE: "Salvar", EDITED_INDICATOR: "editada", REPLY_TO_MESSAGE: "Responder", ADD_REACTION: "Adicionar reação", AUTH_EXPIRED_OVERLAY_TITLE: "Sua sessão de chat expirou", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Atualize a página para continuar", VOICE_MESSAGE: "Mensagem de voz", LEAVE_CONVERSATION: "Sair da conversa", MARK_CONVERSATION_AS_UNREAD: "Marcar como não lida", CONTACT_INFORMATION_HIDDEN: "Informação oculta", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, os = { code: "ro-RO", name: "Romanian (Romania)", translation: { YESTERDAY: "Ieri", TODAY: "Astăzi", DAYS: "z", HOURS: "o", MINUTES: "m", JUST_NOW: "chiar acum", LOCATION: "Locație", CANCEL: "Anulare", INBOX: "Inbox", DESKTOP_NOTIFICATIONS: "Notificări browser", DESKTOP_NOTIFICATIONS_ERROR: "Nu se pot activa notificări browser deoarece browserul dvs. le blochează în mod activ. Încercați să căutați în setări sau utilizând un alt browser.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `Notificare de debit ${e}`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Dacă țineți fișa browserului deschis, veți vedea acest pop-up atunci când cineva vorbește cu dvs.", SEND_BUTTON_TEXT: "Trimiteți", ENTRYBOX_TEXT_LIMIT: "Sunt permise numai 10.000 de caractere.", ENTRYBOX_PLACEHOLDER: "Spune ceva...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Această conversație nu mai este activă.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Puteți citi, dar nu puteți trimite mesaje.", MESSAGELIST_LOADING_OLDER: "Încărcarea mesajelor mai vechi...", MESSAGELIST_SHOW_OLDER: "Afișați mesaje mai vechi", MESSAGELIST_NEW_MARKER: "Nou", MESSAGE_SENT_VIA_EMAIL: "Acest mesaj a fost trimis prin e-mail", YOU_MARKER: "voi", UPLOAD_IN_PROGRESS: "Încărcarea...", UPLOAD_SEND_FILE: "Trimiteți fișierul", UPLOAD_SHARE_LOCATION: "Distribuiți locația", UPLOAD_ERROR: "Sa încărcat ceva în mod greșit. Fișierul ar putea fi neacceptat sau prea mare.", SHARE_LOCATION_ERROR: "Nu se poate partaja locația: ", LOADING: "Încărcare...", HUB_EMPTY: "Istoricul chat-ului dvs. va apărea aici", HUB_SHOW_EARLIER: "Afișați discuțiile anterioare", INBOX_NO_CHATS_TITLE: "Încă nu vorbești!", INBOX_NO_CHATS_BODY: "După ce ați avut una sau mai multe conversații, acestea vor apărea aici.", ENABLE_TRANSLATION: "Traduceți această conversație în română", DISABLE_TRANSLATION: "Arată originalul", SEARCH_PLACEHOLDER_TEXT: "Căutare...", SEARCH_SEARCHING: "Se caută...", SEARCH_NO_RESULTS: "Nu s-au găsit rezultate", SEARCH_NO_MORE_RESULTS: "Nu mai există rezultate", CHAT_NOT_FOUND: "Conversația nu a fost găsită", DELETE_MESSAGE: "Șterge mesajul", DELETION_EXPLANATION: "Dacă ștergi acest mesaj, acesta va dispărea pentru toată lumea.", EDIT_MESSAGE: "Redactează mesajul", SAVE: "Salvare", EDITED_INDICATOR: "editat", REPLY_TO_MESSAGE: "Răspundeți", ADD_REACTION: "Adaugă o reacție", AUTH_EXPIRED_OVERLAY_TITLE: "Sesiunea dumneavoastră de chat a expirat", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Reîmprospătați pagina pentru a continua", VOICE_MESSAGE: "Mesaj vocal", CONTACT_INFORMATION_HIDDEN: "Informații ascunse", LEAVE_CONVERSATION: "Părăsește conversația", MARK_CONVERSATION_AS_UNREAD: "Marcheaza ca necitit", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Es = { code: "ru-RU", name: "Russian", translation: { YESTERDAY: "Вчера", TODAY: "Сегодня", DAYS: "д", HOURS: "ч", MINUTES: "м", JUST_NOW: "только что", LOCATION: "Местоположение", CANCEL: "Отмена", INBOX: "Входящие", DESKTOP_NOTIFICATIONS: "Оповещения", DESKTOP_NOTIFICATIONS_ERROR: "Невозможно включить оповещения, потому что ваш браузер активно блокирует их. Проверьте ваши настройки или попробуйте другой браузер.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} демо-оповещение`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Если вкладка вашего браузера открыта, вы увидите всплывающее окошко оповещения когда кто-то отправит вам сообщение.", SEND_BUTTON_TEXT: "Отправить", ENTRYBOX_TEXT_LIMIT: "Разрешено использовать только 10 тысяч символов.", ENTRYBOX_PLACEHOLDER: "Напишите что-нибудь...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Этот разговор больше неактивен.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Вы можете читать, но не отправлять сообщения.", MESSAGELIST_LOADING_OLDER: "Загрузка старых сообщения...", MESSAGELIST_SHOW_OLDER: "Показать старые сообщения", MESSAGELIST_NEW_MARKER: "Новые", MESSAGE_SENT_VIA_EMAIL: "Это сообщение было отправлено по электронной почте", YOU_MARKER: "вы", UPLOAD_IN_PROGRESS: "Загрузка...", UPLOAD_SEND_FILE: "Отправить файл", UPLOAD_SHARE_LOCATION: "Поделиться местоположением", UPLOAD_ERROR: "Что-то пошло не так: такой файл не поддерживается или он слишком большой.", SHARE_LOCATION_ERROR: "Не удается поделиться местоположением: ", LOADING: "Загрузка...", HUB_EMPTY: "Здесь появится ваша история чата", HUB_SHOW_EARLIER: "Показать предыдущие чаты", INBOX_NO_CHATS_TITLE: "Пока нет чатов!", INBOX_NO_CHATS_BODY: "Как только у вас будет один или несколько разговоров, они появятся здесь.", ENABLE_TRANSLATION: "Переведите этот разговор на русский", DISABLE_TRANSLATION: "Show source", SEARCH_PLACEHOLDER_TEXT: "поиск...", SEARCH_SEARCHING: "Поиск...", SEARCH_NO_RESULTS: "Результаты не найдены", SEARCH_NO_MORE_RESULTS: "Больше результатов нет", CHAT_NOT_FOUND: "Чат не найден", DELETE_MESSAGE: "Удалить сообщение", DELETION_EXPLANATION: "Если вы удалите это сообщение, оно исчезнет для всех.", EDIT_MESSAGE: "Изменить сообщение", SAVE: "сохранить", EDITED_INDICATOR: "изменено", REPLY_TO_MESSAGE: "Ответить", ADD_REACTION: "Добавить реакцию", AUTH_EXPIRED_OVERLAY_TITLE: "Срок действия вашего сеанса чата истек", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Обновите страницу, чтобы продолжить", VOICE_MESSAGE: "Голосовое сообщение", CONTACT_INFORMATION_HIDDEN: "Информация скрыта", LEAVE_CONVERSATION: "Выйти из беседы", MARK_CONVERSATION_AS_UNREAD: "Отметить как непрочитанное", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, us = { code: "sq-AL", name: "Albanian", translation: { YESTERDAY: "Dje", TODAY: "Sot", DAYS: "d", HOURS: "o", MINUTES: "m", JUST_NOW: "Tani", LOCATION: "Pozicion", CANCEL: "Anulo", INBOX: "Inbox", DESKTOP_NOTIFICATIONS: "Njoftimet e shfletuesit", DESKTOP_NOTIFICATIONS_ERROR: "Nuk mund të aktivizohen njoftimet në shfletues sepse shfletuesi juaj i bllokon ato në mënyrë aktive. Provoni të shikoni cilësimet ose përdorni një shfletues të ndryshëm.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} njoftime në desktop`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Lënia e skedës së shfletuesit tuaj të hapur do të pop-up kur dikush flet me ju.", SEND_BUTTON_TEXT: "Dërgo", ENTRYBOX_TEXT_LIMIT: "Lejohen vetëm 10,000 karaktere", ENTRYBOX_PLACEHOLDER: "Thuaj diçka...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Kjo bisedë nuk është më aktive.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Mund të lexoni por jo të dërgoni mesazhe.", MESSAGELIST_LOADING_OLDER: "Duke ngarkuar mesazhe më të vjetra...", MESSAGELIST_SHOW_OLDER: "Trego mesazhe më të vjetra", MESSAGELIST_NEW_MARKER: "E ri", MESSAGE_SENT_VIA_EMAIL: "Ky mesazh u dërgua si email", YOU_MARKER: "ti", UPLOAD_IN_PROGRESS: "Ngarkim...", UPLOAD_SEND_FILE: "Dërgo datotekën", UPLOAD_SHARE_LOCATION: "Ndani lokacionin", UPLOAD_ERROR: "Na vjen keq, diçka nuk shkoi si duhet. Dosja mund të mos ket mbështetje ose mund të jetë shumë e madhe.", SHARE_LOCATION_ERROR: "Nuk mund të ndahet lokacioni: ", LOADING: "Ngarkim...", HUB_EMPTY: "Këtu do të paraqitet/ shfaqet historia e bisedës tuaj", HUB_SHOW_EARLIER: "Shfaqi bisedat e mëparshme", INBOX_NO_CHATS_TITLE: "Nuk ka biseda!", INBOX_NO_CHATS_BODY: "Pasi të keni një ose më shumë biseda, ato do të paraqiten/shfaqen këtu.", ENABLE_TRANSLATION: "Përkthejeni këtë bisedë në shqiptare", DISABLE_TRANSLATION: "Shikoni origjinalin", SEARCH_PLACEHOLDER_TEXT: "Kërko...", SEARCH_SEARCHING: "Kërko...", SEARCH_NO_RESULTS: "Nuk ka rezultate", SEARCH_NO_MORE_RESULTS: "Nuk ka më rezultate", CHAT_NOT_FOUND: "Biseda nuk u gjet", DELETE_MESSAGE: "Fshi mesazhin", DELETION_EXPLANATION: "Nëse e fshini këtë mesazh, ai do të zhduket për të gjithë.", EDIT_MESSAGE: "Redakto mesazhin", SAVE: "Ruaj", EDITED_INDICATOR: "redaktuar", REPLY_TO_MESSAGE: "Përgjigj", ADD_REACTION: "Shtoni reagimin", AUTH_EXPIRED_OVERLAY_TITLE: "Sesioni juaj i bisedës ka skaduar", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Rifresko faqen për të vazhduar", VOICE_MESSAGE: "Mesazh zanor", CONTACT_INFORMATION_HIDDEN: "informacione të fshehura", LEAVE_CONVERSATION: "Largohu nga bashkëbisedimi", MARK_CONVERSATION_AS_UNREAD: "Shëno si të palexuar", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Ds = { code: "sr-SP", name: "Serbian", translation: { YESTERDAY: "Juče", TODAY: "Danas", DAYS: "d", HOURS: "s", MINUTES: "m", JUST_NOW: "Upravo sad", LOCATION: "Lokacija", CANCEL: "Otkaži", INBOX: "Pretinac", DESKTOP_NOTIFICATIONS: "Browser Notifikacija", DESKTOP_NOTIFICATIONS_ERROR: "Browser notifikacije nisu omogućene jer ih vaš pregledač aktivno blokira. Pokušajte pogledati postavke ili koristiti neki drugi pregledač.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo notifikacija`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Ako karticu pregledača ostavite otvorenu, pojaviće se ovaj pop-up kada neko razgovara s vama.", SEND_BUTTON_TEXT: "Pošalji", ENTRYBOX_TEXT_LIMIT: "Dozvoljeno je samo 10.000 znakova.", ENTRYBOX_PLACEHOLDER: "Kaži nešto...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Ovaj razgovor više nije aktivan.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Možete da čitate, ali ne i da šaljete poruke.", MESSAGELIST_LOADING_OLDER: "Učitavam starije poruke...", MESSAGELIST_SHOW_OLDER: "Prikaži starije poruke", MESSAGELIST_NEW_MARKER: "Novo", MESSAGE_SENT_VIA_EMAIL: "Ova poruka je poslana imejlom", YOU_MARKER: "ti", UPLOAD_IN_PROGRESS: "Učitavam...", UPLOAD_SEND_FILE: "Pošalji datoteku", UPLOAD_SHARE_LOCATION: "Podeli lokaciju", UPLOAD_ERROR: "Nažalost, nešto je pošlo krivo. Datoteka možda nije podržana ili je prevelika.", SHARE_LOCATION_ERROR: "Nije moguće podeliti lokaciju: ", LOADING: "Učitavam...", HUB_EMPTY: "Ovde će biti prikazana istorija razgovora", HUB_SHOW_EARLIER: "Prikaži ranije razgovore", INBOX_NO_CHATS_TITLE: "Nema razgovora!", INBOX_NO_CHATS_BODY: "Nakon što vodite jedan ili više razgovora, oni će se pojaviti ovde.", ENABLE_TRANSLATION: "Prevedi ovaj razgovor na srpski jezik", DISABLE_TRANSLATION: "Prikaži original", SEARCH_PLACEHOLDER_TEXT: "Pretraži...", SEARCH_SEARCHING: "Pretraživanje...", SEARCH_NO_RESULTS: "Nema rezultata", SEARCH_NO_MORE_RESULTS: "Nema više rezultata", CHAT_NOT_FOUND: "Ćaskanje nije pronađeno", DELETE_MESSAGE: "Izbriši poruku", DELETION_EXPLANATION: "Ako obrišete ovu poruku, ona neće biti vidljiva ni za koga.", EDIT_MESSAGE: "Ispravi poruku", SAVE: "Sačuvaj", EDITED_INDICATOR: "ispravljeno", REPLY_TO_MESSAGE: "Odgovorite", ADD_REACTION: "Dodaj reakciju", AUTH_EXPIRED_OVERLAY_TITLE: "Vaša sesija ćaskanja je istekla", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Osvežite stranicu da biste nastavili", VOICE_MESSAGE: "Glasovna poruka", CONTACT_INFORMATION_HIDDEN: "Sakrivene informacije", LEAVE_CONVERSATION: "Napusti razgovor", MARK_CONVERSATION_AS_UNREAD: "Označi kao nepročitanu", REPLY_TO_ARIA_LABEL: (e, t) => `Odgovarate korisniku ${e}: ${t}`, REPLY_MODE_LEAVE_ARIA_LABEL: "Izađi iz moda pisanja odgovora", STATUS_INDICATOR_ONLINE: "Aktivan", STATUS_INDICATOR_OFFLINE: "Neaktivan" } }, ls = { code: "sv-SE", name: "Swedish (Sweden)", translation: { YESTERDAY: "Igår", TODAY: "Idag", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "just nu", LOCATION: "Plats", CANCEL: "Avbryt", INBOX: "Inkorg", DESKTOP_NOTIFICATIONS: "Webbläsarnotiser", DESKTOP_NOTIFICATIONS_ERROR: "Kan inte aktivera webbläsarnotiser eftersom din webbläsare aktivt blockerar dem. Se över inställningarna eller använd en annan webbläsare.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demonotis`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Om du har fliken i webbläsaren öppen så kommer den här notisen visas när någon pratar med dig.", SEND_BUTTON_TEXT: "Skicka", ENTRYBOX_TEXT_LIMIT: "Max 10 000 tecken är tillåtet.", ENTRYBOX_PLACEHOLDER: "Skriv ett meddelande...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Den här konversationen är inte längre aktiv.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Du kan läsa men inte skicka meddelanden.", MESSAGELIST_LOADING_OLDER: "Läser in tidigare meddelanden...", MESSAGELIST_SHOW_OLDER: "Visa tidigare meddelanden", MESSAGELIST_NEW_MARKER: "Nytt", MESSAGE_SENT_VIA_EMAIL: "Detta meddelande skickades via e-post", YOU_MARKER: "du", UPLOAD_IN_PROGRESS: "Laddar upp...", UPLOAD_SEND_FILE: "Skicka fil", UPLOAD_SHARE_LOCATION: "Dela plats", UPLOAD_ERROR: "Något gick fel vid uppladdningen. Filen kan vara av en typ som inte stöds eller är för stor.", SHARE_LOCATION_ERROR: "Kan inte dela plats: ", LOADING: "Laddar...", HUB_EMPTY: "Din chatthistorik kommer att visas här", HUB_SHOW_EARLIER: "Visa tidigare chattar", INBOX_NO_CHATS_TITLE: "Inga chattar ännu!", INBOX_NO_CHATS_BODY: "När du har haft en eller flera konversationer kommer de att visas här.", ENABLE_TRANSLATION: "Översätt den här konversationen till svenska", DISABLE_TRANSLATION: "Visa original", SEARCH_PLACEHOLDER_TEXT: "Sök...", SEARCH_SEARCHING: "Söker...", SEARCH_NO_RESULTS: "Inga resultat hittades", SEARCH_NO_MORE_RESULTS: "Inga fler resultat", CHAT_NOT_FOUND: "Chatten hittades inte", DELETE_MESSAGE: "Radera meddelandet", DELETION_EXPLANATION: "Om du raderar det här meddelandet försvinner det för alla.", EDIT_MESSAGE: "Redigera meddelandet", SAVE: "Spara", EDITED_INDICATOR: "redigerad", REPLY_TO_MESSAGE: "Svara", ADD_REACTION: "Lägg till reaktion", AUTH_EXPIRED_OVERLAY_TITLE: "Din chatsession har gått ut", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Uppdatera sidan för att fortsätta", VOICE_MESSAGE: "Röstmeddelande", CONTACT_INFORMATION_HIDDEN: "Dold information", LEAVE_CONVERSATION: "Lämna konversationen", MARK_CONVERSATION_AS_UNREAD: "Markera som oläst", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, cs = { code: "tr-TR", name: "Turkish", translation: { YESTERDAY: "Dün", TODAY: "Bugün", DAYS: "g", HOURS: "s", MINUTES: "d", JUST_NOW: "az önce", LOCATION: "Konum", CANCEL: "İptal", INBOX: "Gelen Kutusu", SEND_BUTTON_TEXT: "Gönder", ENTRYBOX_TEXT_LIMIT: "En fazla 10.000 karaktere izin veriliyor.", ENTRYBOX_PLACEHOLDER: "Bir şeyler söyle...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Bu konuşma artık aktif değil.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Mesajları okuyabilirsiniz ancak mesaj gönderemezsiniz.", MESSAGELIST_LOADING_OLDER: "Eski mesajlar yükleniyor...", MESSAGELIST_SHOW_OLDER: "Eski mesajları göster", MESSAGELIST_NEW_MARKER: "Yeni", DESKTOP_NOTIFICATIONS: "Tarayıcı bildirimleri", DESKTOP_NOTIFICATIONS_ERROR: "Tarayıcınız aktif olarak engellediğinden tarayıcı bildirimlerini etkinleştiremiyoruz. Ayarları kontrol etmeyi veya farklı bir tarayıcı kullanmayı deneyebilirsiniz.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} test bildirimi`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Eğer tarayıcınızın penceresini açık tutarsanız biri mesaj yazdığında bu bildirimi göreceksiniz.", MESSAGE_SENT_VIA_EMAIL: "Bu mesaj e-posta ile gönderilmiştir.", YOU_MARKER: "siz", UPLOAD_IN_PROGRESS: "Yükleniyor...", UPLOAD_SEND_FILE: "Dosya gönder", UPLOAD_SHARE_LOCATION: "Konum paylaş", UPLOAD_ERROR: "Yükleme sırasında bir şeyler yanlış gitti. Dosya desteklenmiyor veya izin verilenden büyük olabilir.", SHARE_LOCATION_ERROR: "Konum paylaşılamadı: ", LOADING: "Yükleniyor...", HUB_EMPTY: "Konuşma geçmişiniz burada görünecek", HUB_SHOW_EARLIER: "Önceki konuşmaları göster", INBOX_NO_CHATS_TITLE: "Henüz konuşma yok!", INBOX_NO_CHATS_BODY: "Bir veya daha fazla konuşma başlattığınız konuşmalar burada belirecek.", ENABLE_TRANSLATION: "Bu konuşmayı Türkçe'ye çevir", DISABLE_TRANSLATION: "Orijinali göster", SEARCH_PLACEHOLDER_TEXT: "Ara...", SEARCH_SEARCHING: "Arıyor...", SEARCH_NO_RESULTS: "Sonuç bulunamadı", SEARCH_NO_MORE_RESULTS: "Başka sonuç bulunamadı.", CHAT_NOT_FOUND: "Sohbet bulunamadı", DELETE_MESSAGE: "Mesajı sil", DELETION_EXPLANATION: "Bu mesajı silerseniz herkes için görünmez olacaktır.", EDIT_MESSAGE: "Mesajı düzenle", SAVE: "Kaydet", EDITED_INDICATOR: "düzenlenmiş", REPLY_TO_MESSAGE: "Yanıtla", ADD_REACTION: "Tepki ekle", AUTH_EXPIRED_OVERLAY_TITLE: "Sohbet oturumunuz sona erdi", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Devam etmek için sayfayı yenileyin", VOICE_MESSAGE: "Sesli mesaj", CONTACT_INFORMATION_HIDDEN: "Gizli bilgi", LEAVE_CONVERSATION: "Konuşmadan ayrıl", MARK_CONVERSATION_AS_UNREAD: "Okunmamış olarak işaretle", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, _s = { code: "uk-UA", name: "Ukrainian (Ukraine)", translation: { YESTERDAY: "Вчора", TODAY: "Сьогодні", DAYS: "d", HOURS: "h", MINUTES: "м", JUST_NOW: "просто зараз", LOCATION: "Місцезнаходження", CANCEL: "Скасувати", INBOX: "Вхідні", DESKTOP_NOTIFICATIONS: "Сповіщення в браузері", DESKTOP_NOTIFICATIONS_ERROR: "Неможливо ввімкнути сповіщення в браузері, оскільки ваш веб-переглядач активно їх блокує. Спробуйте переглянути налаштування або використовувати інший браузер.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `Демо-повідомлення про ${e}`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Якщо ви відкриєте вкладку веб-переглядача відкритою, ви побачите це спливаюче вікно, коли хтось спілкується з вами.", SEND_BUTTON_TEXT: "Надіслати", ENTRYBOX_TEXT_LIMIT: "Дозволено лише 10 000 символів.", ENTRYBOX_PLACEHOLDER: "Скажи щось...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Ця розмова більше не активна.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Ви можете читати, але не надсилати повідомлення.", MESSAGELIST_LOADING_OLDER: "Завантаження старих повідомлень...", MESSAGELIST_SHOW_OLDER: "Показати старіші повідомлення", MESSAGELIST_NEW_MARKER: "Нові", MESSAGE_SENT_VIA_EMAIL: "Це повідомлення надіслано електронною поштою", YOU_MARKER: "ти", UPLOAD_IN_PROGRESS: "Завантаження...", UPLOAD_SEND_FILE: "Надіслати файл", UPLOAD_SHARE_LOCATION: "Поділитися місцезнаходженням", UPLOAD_ERROR: "На жаль, під час завантаження щось не вдалось. Файл може бути непідтримуваним або занадто великим.", SHARE_LOCATION_ERROR: "Неможливо поділити місцезнаходження: ", LOADING: "Завантаження...", HUB_EMPTY: "Тут відобразиться ваша історія чатів", HUB_SHOW_EARLIER: "Показати попередні чати", INBOX_NO_CHATS_TITLE: "Чатів ще немає!", INBOX_NO_CHATS_BODY: "Після того, як ви проведете одну чи кілька бесід, вони з’являться тут.", ENABLE_TRANSLATION: "Перекласти цю розмову англійською", DISABLE_TRANSLATION: "Показати оригінал", SEARCH_PLACEHOLDER_TEXT: "Пошук...", SEARCH_SEARCHING: "Пошук...", SEARCH_NO_RESULTS: "Не знайдено результатів", SEARCH_NO_MORE_RESULTS: "Більше немає результатів", CHAT_NOT_FOUND: "Чат не знайдено", DELETE_MESSAGE: "Видалити повідомлення", DELETION_EXPLANATION: "Якщо ви видалите це повідомлення, воно зникне для всіх.", EDIT_MESSAGE: "Редагувати повідомлення", SAVE: "Зберегти", EDITED_INDICATOR: "відредаговано", REPLY_TO_MESSAGE: "Відповісти", ADD_REACTION: "Додати реакцію", AUTH_EXPIRED_OVERLAY_TITLE: "Ваша сесія в чаті закінчилась", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Оновіть сторінку, щоб продовжити", VOICE_MESSAGE: "Голосове повідомлення", CONTACT_INFORMATION_HIDDEN: "Прихована інформація", LEAVE_CONVERSATION: "Залишити розмову", MARK_CONVERSATION_AS_UNREAD: "Відзначити як непрочитане", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, As = { code: "vi-VN", name: "Vietnamese", translation: { YESTERDAY: "Hôm qua", TODAY: "Hôm nay", DAYS: "ngày", HOURS: "giờ", MINUTES: "phút", JUST_NOW: "vừa xong", LOCATION: "Địa điểm", CANCEL: "Hủy", INBOX: "Hộp thư đến", DESKTOP_NOTIFICATIONS: "Thông báo trình duyệt", DESKTOP_NOTIFICATIONS_ERROR: "Không thể bật thông báo trên trình duyệt vì trình duyệt của bạn đang tắt chức năng này. Hãy thử tìm trong cài đặt trình duyệt hoặc sử dụng một trình duyệt khác.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} thông báo thử nghiệm`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Nếu bạn giữ tab trình duyệt của bạn mở, bạn sẽ thấy cửa sổ bật lên khi ai đó nói chuyện với bạn.", SEND_BUTTON_TEXT: "Gửi", ENTRYBOX_TEXT_LIMIT: "Tối đa 10.000 ký tự.", ENTRYBOX_PLACEHOLDER: "Nói gì đó...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Cuộc hội thoại này không còn hoạt động.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Bạn có thể đọc, nhưng không thể gửi tin nhắn.", MESSAGELIST_LOADING_OLDER: "Đang tải tin nhắn cũ...", MESSAGELIST_SHOW_OLDER: "Hiển thị tin nhắn trước đó", MESSAGELIST_NEW_MARKER: "Mới", MESSAGE_SENT_VIA_EMAIL: "Tin nhắn này đã được gửi qua email", YOU_MARKER: "bạn", UPLOAD_IN_PROGRESS: "Đang tải lên...", UPLOAD_SEND_FILE: "Gửi tệp", UPLOAD_SHARE_LOCATION: "Chia sẻ vị trí", UPLOAD_ERROR: "Thật không may, quá trình tải lên không thành công. Tệp không được hỗ trợ hoặc quá lớn.", SHARE_LOCATION_ERROR: "Không thể chia sẻ vị trí: ", LOADING: "Đang tải...", HUB_EMPTY: "Lịch sử trò chuyện của bạn sẽ hiển thị ở đây", HUB_SHOW_EARLIER: "Hiển thị các cuộc trò chuyện trước đó", INBOX_NO_CHATS_TITLE: "Chưa có cuộc trò chuyện nào!", INBOX_NO_CHATS_BODY: "Khi bạn đã có một hoặc nhiều cuộc trò chuyện, chúng sẽ hiển thị ở đây.", ENABLE_TRANSLATION: "Dịch cuộc hội thoại sang Tiếng Việt", DISABLE_TRANSLATION: "Hiển thị nội dung gốc", SEARCH_PLACEHOLDER_TEXT: "TÌm kiếm...", SEARCH_SEARCHING: "Đang tìm kiếm...", SEARCH_NO_RESULTS: "Không tìm thấy kết quả nào", SEARCH_NO_MORE_RESULTS: "Không có kết quả nào khác", CHAT_NOT_FOUND: "Không tìm thấy cuộc trò chuyện", DELETE_MESSAGE: "Xóa tin nhắn", DELETION_EXPLANATION: "Nếu bạn xóa tin nhắn này, tất cả mọi người sẽ không còn thấy nó.", EDIT_MESSAGE: "Chỉnh sửa tin nhắn", SAVE: "lưu", EDITED_INDICATOR: "đã chỉnh sửa", REPLY_TO_MESSAGE: "đáp lại", ADD_REACTION: "Thêm biểu tượng cảm xúc", AUTH_EXPIRED_OVERLAY_TITLE: "Phiên trò chuyện của bạn đã hết hạn", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Hãy làm mới trang để tiếp tục", VOICE_MESSAGE: "Tin nhắn thoại", CONTACT_INFORMATION_HIDDEN: "Thông tin ẩn", LEAVE_CONVERSATION: "Thoát khỏi cuộc trò chuyện", MARK_CONVERSATION_AS_UNREAD: "Đánh dấu là chưa đọc", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Os = { code: "zh-CN", name: "Chinese (Simplified)", translation: { YESTERDAY: "昨天", TODAY: "今天", DAYS: "天", HOURS: "小时", MINUTES: "分钟", JUST_NOW: "刚才", LOCATION: "地点", CANCEL: "取消", INBOX: "收件箱", DESKTOP_NOTIFICATIONS: "浏览器通知", DESKTOP_NOTIFICATIONS_ERROR: "因浏览器设置为阻止,所以无法激活浏览器提醒。请去设置里查看或者尝试其他的浏览器。", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} 演示提醒`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "只要保持浏览器开着,如果有人和你对话,将会自动弹出对话窗口。", SEND_BUTTON_TEXT: "发送", ENTRYBOX_TEXT_LIMIT: "不超过10,000个字符。", ENTRYBOX_PLACEHOLDER: "写点什么吧……", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "该对话已结束。", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "你只能阅读信息,不能发送信息。", MESSAGELIST_LOADING_OLDER: "载入之前的信息……", MESSAGELIST_SHOW_OLDER: "显示之前的信息", MESSAGELIST_NEW_MARKER: "新消息", MESSAGE_SENT_VIA_EMAIL: "该信息已通过邮件发送。", YOU_MARKER: "你", UPLOAD_IN_PROGRESS: "上传中……", UPLOAD_SEND_FILE: "发送文件", UPLOAD_SHARE_LOCATION: "分享地址", UPLOAD_ERROR: "上传出错。文件格式不支持或者太大。", SHARE_LOCATION_ERROR: "无法分享地址: ", LOADING: "正在载入……", HUB_EMPTY: "你的聊天记录将在此显示。", HUB_SHOW_EARLIER: "显示之前的聊天记录。", INBOX_NO_CHATS_TITLE: "暂无任何聊天记录!", INBOX_NO_CHATS_BODY: "如果你有一个或多个对话窗口进行中,将显示在这里。", ENABLE_TRANSLATION: "翻译至简体中文", DISABLE_TRANSLATION: "查看原文", SEARCH_PLACEHOLDER_TEXT: "搜索...", SEARCH_SEARCHING: "正在搜索...", SEARCH_NO_RESULTS: "未找到结果", SEARCH_NO_MORE_RESULTS: "无更多结果", CHAT_NOT_FOUND: "未找到“聊天”", DELETE_MESSAGE: "删除消息", DELETION_EXPLANATION: "如果您删除此消息,那么所有人都将无法再看到它。", EDIT_MESSAGE: "编辑消息", SAVE: "保存", EDITED_INDICATOR: "本消息有改动", REPLY_TO_MESSAGE: "回复", ADD_REACTION: "添加反应", AUTH_EXPIRED_OVERLAY_TITLE: "您的聊天会话已过期", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "刷新页面以继续", VOICE_MESSAGE: "语音消息", CONTACT_INFORMATION_HIDDEN: "隐藏信息", LEAVE_CONVERSATION: "离开对话", MARK_CONVERSATION_AS_UNREAD: "标记为未读", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Ts = { code: "zh-TW", name: "Chinese (Traditional)", translation: { YESTERDAY: "昨天", TODAY: "昨天", DAYS: "天", HOURS: "小時", MINUTES: "分", JUST_NOW: "現在", LOCATION: "地點", CANCEL: "取消", INBOX: "收件箱", DESKTOP_NOTIFICATIONS: "瀏覽器通知", DESKTOP_NOTIFICATIONS_ERROR: "無法啟用瀏覽器通知,因為您的瀏覽器主動阻止它們。 嘗試查看設置或使用其他瀏覽器。", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} 演示通知`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "如果您持續打開瀏覽器標籤頁,當有人與您通話時,您會看到此彈出窗口。", SEND_BUTTON_TEXT: "發送", ENTRYBOX_TEXT_LIMIT: "只允許10.000個字符。", ENTRYBOX_PLACEHOLDER: "說些什麼...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "此對話不再有效。", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "您可以閱讀,但不能發送消息。", MESSAGELIST_LOADING_OLDER: "加載舊訊息...", MESSAGELIST_SHOW_OLDER: "顯示較舊的訊息", MESSAGELIST_NEW_MARKER: "新的", MESSAGE_SENT_VIA_EMAIL: "此訊息是通過電郵發送的", YOU_MARKER: "您", UPLOAD_IN_PROGRESS: "上傳中...", UPLOAD_SEND_FILE: "發送文件", UPLOAD_SHARE_LOCATION: "共享位置", UPLOAD_ERROR: "不幸的是,上傳出了問題。 該文件可能不受支持或太大。", SHARE_LOCATION_ERROR: "無法分享位置:", LOADING: "載入中...", HUB_EMPTY: "您的聊天記錄將顯示在此處", HUB_SHOW_EARLIER: "顯示早先的聊天記錄", INBOX_NO_CHATS_TITLE: "還沒聊天!", INBOX_NO_CHATS_BODY: "一旦您進行了一次或多次對話,他們就會顯示在此處。", ENABLE_TRANSLATION: "翻譯此對話至繁體中文", DISABLE_TRANSLATION: "顯示原文", SEARCH_PLACEHOLDER_TEXT: "搜尋...", SEARCH_SEARCHING: "正在搜尋...", SEARCH_NO_RESULTS: "找不到任何結果", SEARCH_NO_MORE_RESULTS: "沒有其他結果", CHAT_NOT_FOUND: "查無對話", DELETE_MESSAGE: "刪除訊息", DELETION_EXPLANATION: "您如果刪除這條訊息,所有人都將看不到它。", EDIT_MESSAGE: "編輯訊息", SAVE: "儲存", EDITED_INDICATOR: "已編輯", REPLY_TO_MESSAGE: "回覆", ADD_REACTION: "加入表情回應", AUTH_EXPIRED_OVERLAY_TITLE: "您的會話過程已過期", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "請刷新頁面以繼續", VOICE_MESSAGE: "語音訊息", CONTACT_INFORMATION_HIDDEN: "隱藏訊息", LEAVE_CONVERSATION: "離開對話", MARK_CONVERSATION_AS_UNREAD: "標記為未讀", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Lt = { ar: Pa, bg: Ha, bs: Ua, ca: ba, cs: ya, da: wa, de: Ya, el: $a, en: A, es: ja, et: xa, fa: Va, fi: Xa, fr: Ga, he: za, hi: Ka, hr: Wa, hu: qa, id: Ja, is: Za, it: Qa, ja: es, ka: ts, ko: ns, nb: as, nl: ss, pl: is, pt: rs, ro: os, ru: Es, sq: us, sr: Ds, sv: ls, tr: cs, uk: _s, vi: As, zh: Os, zhTw: Ts };
146
- function _n(e) {
147
- const t = e.replace(/_/g, "-").toLowerCase(), n = Lt[t];
150
+ const Xe = new et(), ee = new et(), A = { code: "en-US", name: "English (US)", translation: { YESTERDAY: "Yesterday", TODAY: "Today", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "just now", LOCATION: "Location", CANCEL: "Cancel", INBOX: "Inbox", DESKTOP_NOTIFICATIONS: "Browser notifications", DESKTOP_NOTIFICATIONS_ERROR: "Can't enable browser notifications because your browser actively blocks them. Try looking in the settings or using a different browser.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo notification`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "If you keep your browser tab open, you'll see this pop up when someone talks to you.", SEND_BUTTON_TEXT: "Send", ENTRYBOX_TEXT_LIMIT: "Only 10,000 characters are allowed.", ENTRYBOX_PLACEHOLDER: "Say something...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "This conversation is no longer active.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "You can read, but not send messages.", MESSAGELIST_LOADING_OLDER: "Loading older messages...", MESSAGELIST_SHOW_OLDER: "Show older messages", MESSAGELIST_NEW_MARKER: "New", MESSAGE_SENT_VIA_EMAIL: "This message was sent via email", YOU_MARKER: "you", UPLOAD_IN_PROGRESS: "Uploading...", UPLOAD_SEND_FILE: "Send file", UPLOAD_SHARE_LOCATION: "Share location", UPLOAD_ERROR: "Unfortunately, something went wrong uploading. The file might be unsupported or too large.", SHARE_LOCATION_ERROR: "Cannot share location: ", LOADING: "Loading...", HUB_EMPTY: "Your chat history will show up here", HUB_SHOW_EARLIER: "Show earlier chats", INBOX_NO_CHATS_TITLE: "No chats yet!", INBOX_NO_CHATS_BODY: "Once you've had one or more conversations, they will show up here.", ENABLE_TRANSLATION: "Translate this conversation to English", DISABLE_TRANSLATION: "Show original", SEARCH_PLACEHOLDER_TEXT: "Search...", SEARCH_SEARCHING: "Searching...", SEARCH_NO_RESULTS: "No results found", SEARCH_NO_MORE_RESULTS: "No more results", CHAT_NOT_FOUND: "Chat not found", DELETE_MESSAGE: "Delete message", DELETION_EXPLANATION: "If you delete this message, it will disappear for everybody.", EDIT_MESSAGE: "Edit message", SAVE: "Save", EDITED_INDICATOR: "edited", REPLY_TO_MESSAGE: "Reply", REPLY_TO_ARIA_LABEL: (e, t) => `Replying to ${e}: ${t}`, REPLY_MODE_LEAVE_ARIA_LABEL: "Exit reply mode", ADD_REACTION: "Add reaction", AUTH_EXPIRED_OVERLAY_TITLE: "Your chat session has expired", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Refresh the page to continue", VOICE_MESSAGE: "Voice message", LEAVE_CONVERSATION: "Leave conversation", MARK_CONVERSATION_AS_UNREAD: "Mark as unread", STATUS_INDICATOR_ONLINE: "Active", STATUS_INDICATOR_OFFLINE: "Away", CONTACT_INFORMATION_HIDDEN: "hidden information" } }, Ja = { code: "ar", name: "Arabic", translation: { YESTERDAY: "الأمس", TODAY: "اليوم", DAYS: "يوم", HOURS: "ساعة", MINUTES: "دقيقة", JUST_NOW: "فقط الآن", LOCATION: "الموقع", CANCEL: "إلغاء", INBOX: "علبة الوارد", DESKTOP_NOTIFICATIONS: "إشعارات المتصفح", DESKTOP_NOTIFICATIONS_ERROR: "لا يمكن تمكين إشعارات المتصفح لأن متصفحك يمنعها بشكل نشط. جرّب البحث في الإعدادات أو استخدام متصفح آخر.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `إعلام ${e} التجريبي`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "إذا أبقيت علامة تبويب المتصفح مفتوحة ، فسترى هذا ينبثق عندما يتحدث شخص معك.", SEND_BUTTON_TEXT: "إرسال", ENTRYBOX_TEXT_LIMIT: "يُسمح فقط بـ 10.000 حرف.", ENTRYBOX_PLACEHOLDER: "قل شيئًا ...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "هذه المحادثة لم تعد نشطة.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "يمكنك القراءة ، لكن لا يمكنك إرسال الرسائل.", MESSAGELIST_LOADING_OLDER: "جارٍ تحميل الرسائل القديمة ...", MESSAGELIST_SHOW_OLDER: "عرض الرسائل الأقدم", MESSAGELIST_NEW_MARKER: "جديد", MESSAGE_SENT_VIA_EMAIL: "تم إرسال هذه الرسالة عبر البريد الإلكتروني", YOU_MARKER: "أنت", UPLOAD_IN_PROGRESS: "جارٍ التحميل ...", UPLOAD_SEND_FILE: "إرسال ملف", UPLOAD_SHARE_LOCATION: "مشاركة الموقع", UPLOAD_ERROR: "حدث خطأ ما في تحميل شيء. ربما يكون الملف غير متوافق أو كبير جدًا.", SHARE_LOCATION_ERROR: "لا يمكن مشاركة الموقع:", LOADING: "جارٍ التحميل ...", HUB_EMPTY: "سوف يظهر سجل الدردشات هنا", HUB_SHOW_EARLIER: "إظهار الدردشات السابقة", INBOX_NO_CHATS_TITLE: "لا توجد دردشات بعد!", INBOX_NO_CHATS_BODY: "بمجرد أن يكون لديك واحد أو أكثر من المحادثات ، سوف تظهر هنا.", ENABLE_TRANSLATION: "ترجم هذه المحادثة إلى العربية", DISABLE_TRANSLATION: "إظهار الأصلي", SEARCH_PLACEHOLDER_TEXT: "...بحث", SEARCH_SEARCHING: "...يتم الآن البحث", SEARCH_NO_RESULTS: "لم يتم العثور على نتائج", SEARCH_NO_MORE_RESULTS: "لا يوجد المزيد من النتائج", CHAT_NOT_FOUND: "لم يتم العثور على الدردشة", DELETE_MESSAGE: "احذف الرسالة", DELETION_EXPLANATION: "إذا قمت بحذف هذه الرسالة، فهي ستختفي للجميع.", EDIT_MESSAGE: "تعديل الرسالة", SAVE: "حفظ", EDITED_INDICATOR: "معدّلة", REPLY_TO_MESSAGE: "رد", ADD_REACTION: "أضف تفاعلاً", AUTH_EXPIRED_OVERLAY_TITLE: "انتهت جلسة الدردشة المخصصة لك", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "يُرجى إعادة تحميل الصفحة للمتابعة", VOICE_MESSAGE: "رسالة صوتية", CONTACT_INFORMATION_HIDDEN: "المعلومات المخفية", LEAVE_CONVERSATION: "الخروج من المحادثة", MARK_CONVERSATION_AS_UNREAD: "وضع علامة غير مقروءة", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Za = { code: "bg-BG", name: "Bulgarian", translation: { YESTERDAY: "Вчера", TODAY: "Днес", DAYS: "Ден", HOURS: "Час", MINUTES: "m", JUST_NOW: "Току-що", LOCATION: "местоположението", CANCEL: "Откажи", INBOX: "Кутия", DESKTOP_NOTIFICATIONS: "Известия на браузъра", DESKTOP_NOTIFICATIONS_ERROR: "Не можете да активирате известията на браузъра, защото браузърът ви ги блокира активно. Опитайте да погледнете в настройките или да използвате друг браузър.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} демо известие`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Ако държите раздела на браузъра си отворен, ще видите този изскачащ прозорец, когато някой говори с вас.", SEND_BUTTON_TEXT: "Изпрати", ENTRYBOX_TEXT_LIMIT: "Разрешени са само до 10.000 знака.", ENTRYBOX_PLACEHOLDER: "Кажете нещо...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Този ​​разговор вече не е активен.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Можете да четете, но не и да изпращате съобщения.", MESSAGELIST_LOADING_OLDER: "Зареждане на по-стари съобщения...", MESSAGELIST_SHOW_OLDER: "Показване на по-стари съобщения", MESSAGELIST_NEW_MARKER: "Нови", MESSAGE_SENT_VIA_EMAIL: "Това съобщение беше изпратено по имейл", YOU_MARKER: "Вие", UPLOAD_IN_PROGRESS: "Качване...", UPLOAD_SEND_FILE: "Изпращане на файл", UPLOAD_SHARE_LOCATION: "Споделяне на местоположението", UPLOAD_ERROR: "За съжаление нещо се обърка при качването. Файлът може да не се поддържа или е твърде голям.", SHARE_LOCATION_ERROR: "Не може да се сподели местоположението: ", LOADING: "Зареждане...", HUB_EMPTY: "Историята на вашите разговори ще се покаже тук", HUB_SHOW_EARLIER: "Показване на по-ранни чатове", INBOX_NO_CHATS_TITLE: "Все още нямате разговори!", INBOX_NO_CHATS_BODY: "След като проведете един или повече разговори, те ще се покажат тук.", ENABLE_TRANSLATION: "Преведете този разговор на български", DISABLE_TRANSLATION: "Показване на оригинал", SEARCH_PLACEHOLDER_TEXT: "Търсене...", SEARCH_SEARCHING: "Търсене...", SEARCH_NO_RESULTS: "Няма намерени резултати", SEARCH_NO_MORE_RESULTS: "Няма повече резултати", CHAT_NOT_FOUND: "Чатът не е намерен", DELETE_MESSAGE: "Изтриване на съобщение", DELETION_EXPLANATION: "Ако изтриете това съобщение, то ще изчезне за всички.", EDIT_MESSAGE: "Редактиране на съобщението", SAVE: "Запиши", EDITED_INDICATOR: "редактирано", REPLY_TO_MESSAGE: "Отговори", ADD_REACTION: "Добави реакция", AUTH_EXPIRED_OVERLAY_TITLE: "Вашата чат сесия е изтекла", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Обновете страницата, за да продължите", VOICE_MESSAGE: "Гласово съобщение", CONTACT_INFORMATION_HIDDEN: "Скрита информация", LEAVE_CONVERSATION: "Напускане на разговора", MARK_CONVERSATION_AS_UNREAD: "Маркирай като непрочетено", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Qa = { code: "bs-BA", name: "Bosnian", translation: { YESTERDAY: "Jučer", TODAY: "Danas", DAYS: "d", HOURS: "s", MINUTES: "m", JUST_NOW: "Upravo sad", LOCATION: "Lokacija", CANCEL: "Otkaži", INBOX: "Pretinac", DESKTOP_NOTIFICATIONS: "Obavijesti preglednika", DESKTOP_NOTIFICATIONS_ERROR: "Notifikacije preglednika se ne mogu omogućiti jer ih vaš preglednik aktivno blokira. Pokušajte pregledati postavke ili koristiti drugi preglednik.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo notifikacija`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Ako karticu preglednika ostavite otvorenu, pojavit će se ovaj pop-up kada netko razgovara s vama.", SEND_BUTTON_TEXT: "Pošalji", ENTRYBOX_TEXT_LIMIT: "Dozvoljeno je samo 10.000 znakova.", ENTRYBOX_PLACEHOLDER: "Reci nešto...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Ovaj razgovor više nije aktivan.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Možeš čitati, ali ne i slati poruke.", MESSAGELIST_LOADING_OLDER: "Učitavam starije poruke...", MESSAGELIST_SHOW_OLDER: "Prikaži starije poruke", MESSAGELIST_NEW_MARKER: "Novo", MESSAGE_SENT_VIA_EMAIL: "Ova poruka je poslana e-poštom", YOU_MARKER: "ti", UPLOAD_IN_PROGRESS: "Učitavam...", UPLOAD_SEND_FILE: "Pošalji datoteku", UPLOAD_SHARE_LOCATION: "Podijeli lokaciju", UPLOAD_ERROR: "Nažalost, nešto je pošlo krivo. Datoteka možda nije podržana ili je prevelika.", SHARE_LOCATION_ERROR: "Nije moguće podijeliti lokaciju: ", LOADING: "Učitavam...", HUB_EMPTY: "Ovdje će se prikazati vaša povijest razgovora", HUB_SHOW_EARLIER: "Prikaži ranije razgovore", INBOX_NO_CHATS_TITLE: "Nema razgovora!", INBOX_NO_CHATS_BODY: "Nakon što vodite jedan ili više razgovora, oni će se pojaviti ovdje.", ENABLE_TRANSLATION: "Prevedi ovaj razgovor na bosanski jezik", DISABLE_TRANSLATION: "Prikaži original", SEARCH_PLACEHOLDER_TEXT: "Pretraži...", SEARCH_SEARCHING: "Pretraživanje...", SEARCH_NO_RESULTS: "Nema rezultata", SEARCH_NO_MORE_RESULTS: "Nema više rezultata", CHAT_NOT_FOUND: "Ćaskanje nije pronađeno", DELETE_MESSAGE: "Obriši poruku", DELETION_EXPLANATION: "Ako izbrišete ovu poruku, ona će nestati za sve.", EDIT_MESSAGE: "Uredi poruku", SAVE: "Sačuvati", EDITED_INDICATOR: "uređeno", REPLY_TO_MESSAGE: "Odgovorite", ADD_REACTION: "Dodajte reakciju", AUTH_EXPIRED_OVERLAY_TITLE: "Vaša chat sesija je istekla", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Osvježite stranicu da nastavite", VOICE_MESSAGE: "Glasovna poruka", CONTACT_INFORMATION_HIDDEN: "Skrivene informacije", LEAVE_CONVERSATION: "Napusti razgovor", MARK_CONVERSATION_AS_UNREAD: "Označi kao nepročitano", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, es = { code: "ca-ES", name: "Catalan (ES)", translation: { YESTERDAY: "Ahir", TODAY: "Avui", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "ara mateix", LOCATION: "Ubicació", CANCEL: "Cancel·lar", INBOX: "Safata d'entrada", DESKTOP_NOTIFICATIONS: "Notificacions d'escriptori", DESKTOP_NOTIFICATIONS_ERROR: "No es poden habilitar les notificacions del navegador perquè el teu navegador les bloqueja activament. Prova de buscar a la configuració o utilitza un altre navegador.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `Notificació de demostració de ${e}`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Si mantens la pestanya del navegador oberta, veuràs aquesta notificació quan algú et parli.", SEND_BUTTON_TEXT: "Enviar", ENTRYBOX_TEXT_LIMIT: "Només es permeten 10.000 caràcters.", ENTRYBOX_PLACEHOLDER: "Digues alguna cosa...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Aquesta conversa ja no està activa.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Pots llegir, però no enviar missatges.", MESSAGELIST_LOADING_OLDER: "Carregant missatges antics...", MESSAGELIST_SHOW_OLDER: "Mostrar missatges més antics", MESSAGELIST_NEW_MARKER: "Nou", MESSAGE_SENT_VIA_EMAIL: "Aquest missatge s'ha enviat per correu electrònic", YOU_MARKER: "tu", UPLOAD_IN_PROGRESS: "S'està pujant...", UPLOAD_SEND_FILE: "Enviar arxiu", UPLOAD_SHARE_LOCATION: "Compartir ubicació", UPLOAD_ERROR: "Desafortunadament, alguna cosa ha anat malament en pujar. L'arxiu pot ser no compatible o massa gran.", SHARE_LOCATION_ERROR: "No es pot compartir la ubicació: ", LOADING: "Carregant...", HUB_EMPTY: "El teu historial de xat apareixerà aquí", HUB_SHOW_EARLIER: "Mostra xats anteriors", INBOX_NO_CHATS_TITLE: "Encara no hi ha xats!", INBOX_NO_CHATS_BODY: "Un cop hagis tingut una o més converses, apareixeran aquí.", ENABLE_TRANSLATION: "Traduir aquesta conversa al català", DISABLE_TRANSLATION: "Mostrar original", SEARCH_PLACEHOLDER_TEXT: "Cerca...", SEARCH_SEARCHING: "Buscant...", SEARCH_NO_RESULTS: "No s'han trobat resultats", SEARCH_NO_MORE_RESULTS: "No hi ha més resultats", CHAT_NOT_FOUND: "Xat no trobat", DELETE_MESSAGE: "Esborrar missatge", DELETION_EXPLANATION: "Si esborres aquest missatge, desapareixerà per a tothom.", EDIT_MESSAGE: "Editar missatge", SAVE: "Desar", EDITED_INDICATOR: "editat", REPLY_TO_MESSAGE: "Respondre", REPLY_TO_ARIA_LABEL: (e, t) => `Responent a ${e}: ${t}`, REPLY_MODE_LEAVE_ARIA_LABEL: "Sortir del mode de resposta", ADD_REACTION: "Afegir reacció", VOICE_MESSAGE: "Missatge de veu", LEAVE_CONVERSATION: "Abandonar la conversa", MARK_CONVERSATION_AS_UNREAD: "marcar com no llegit", STATUS_INDICATOR_ONLINE: "Actiu", STATUS_INDICATOR_OFFLINE: "Absent", CONTACT_INFORMATION_HIDDEN: "informació oculta", AUTH_EXPIRED_OVERLAY_TITLE: "La teva sessió de xat ha caducat", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Actualitza la pàgina per continuar" } }, ts = { code: "cs-CZ", name: "Czech", translation: { YESTERDAY: "Včera", TODAY: "Dnes", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "právě teď", LOCATION: "Lokace", CANCEL: "Zrušit", INBOX: "Doručené", DESKTOP_NOTIFICATIONS: "Oznámení v prohlížeči", DESKTOP_NOTIFICATIONS_ERROR: "Nelze povolit notifikace prohlížeče, protože váš prohlížeč je aktivně blokuje. Zkuste se podívat na nastavení nebo zkuste použít jiný prohlížeč.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo notifikace`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Pokud necháte kartu prohlížeče otevřenou, uvidíte tento popup jakmile s vámi bude někdo mluvit.", SEND_BUTTON_TEXT: "Odeslat", ENTRYBOX_TEXT_LIMIT: "Je povoleno Maximálně 10.000 znaků.", ENTRYBOX_PLACEHOLDER: "Napište něco...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Tato konverzace již není aktivní.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Můžete číst, ale nemůžete posílat zprávy.", MESSAGELIST_LOADING_OLDER: "Nahrávám starší zprávy...", MESSAGELIST_SHOW_OLDER: "Zobrazit starší zprávy", MESSAGELIST_NEW_MARKER: "Nové", MESSAGE_SENT_VIA_EMAIL: "Tato zpráva byla odeslána přes mail.", YOU_MARKER: "vy", UPLOAD_IN_PROGRESS: "Nahrávám...", UPLOAD_SEND_FILE: "Poslat soubor", UPLOAD_SHARE_LOCATION: "Sdílet pozici", UPLOAD_ERROR: "Nepodařilo se nahrát soubor. Ten je buď nepodporován a/nebo příliš velký.", SHARE_LOCATION_ERROR: "Není možné sdílet pozici: ", LOADING: "Nahrávám...", HUB_EMPTY: "Vaše historie se zde zobrazí", HUB_SHOW_EARLIER: "Zobrazit dřívější konverzace", INBOX_NO_CHATS_TITLE: "Zatím zde nejsou žádné konverzace!", INBOX_NO_CHATS_BODY: "Jakmile budete mít jednu nebo více konverzací, objeví se zde.", ENABLE_TRANSLATION: "Přeložit tuto konverzaci do češtiny", DISABLE_TRANSLATION: "Zobrazit původní", SEARCH_PLACEHOLDER_TEXT: "Hledat...", SEARCH_SEARCHING: "Hledání...", SEARCH_NO_RESULTS: "Nenašly se žádné výsledky", SEARCH_NO_MORE_RESULTS: "Žádné další výsledky", CHAT_NOT_FOUND: "Chat nenalezen", DELETE_MESSAGE: "Smazat zprávu", DELETION_EXPLANATION: "Pokud tuto zprávu smažete, zmizí pro všechny.", EDIT_MESSAGE: "Upravit zprávu", SAVE: "Uložit", EDITED_INDICATOR: "upraveno", REPLY_TO_MESSAGE: "Odpovědět", ADD_REACTION: "Reagovat", AUTH_EXPIRED_OVERLAY_TITLE: "Váš chat byl kvůli nečinnosti odpojen", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Pro pokračování obnovte stránku", VOICE_MESSAGE: "Hlasová zpráva", CONTACT_INFORMATION_HIDDEN: "Skrytá informace", LEAVE_CONVERSATION: "Opustit konverzaci", MARK_CONVERSATION_AS_UNREAD: "Označit jako nepřečtené", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, ns = { code: "da-DK", name: "Danish", translation: { YESTERDAY: "I går", TODAY: "I dag", DAYS: "d", HOURS: "t", MINUTES: "m", JUST_NOW: "lige nu", LOCATION: "Placering", CANCEL: "Annuller", INBOX: "Indbakke", DESKTOP_NOTIFICATIONS: "Browsermeddelelser", DESKTOP_NOTIFICATIONS_ERROR: "Kan ikke aktivere Browsermeddelelser, fordi din browser aktivt blokerer dem. Prøv at kigge i indstillingerne eller benyt en anden browser.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demomeddelelse`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Hvis du holder dit browser-faneblad åben, vil du se det her komme op, når nogen taler til dig.", SEND_BUTTON_TEXT: "Send", ENTRYBOX_TEXT_LIMIT: "Kun 10.000 tegn er tilladt.", ENTRYBOX_PLACEHOLDER: "Sig noget...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Denne samtale er ikke længere aktiv.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Du kan læse, men ikke sende beskeder.", MESSAGELIST_LOADING_OLDER: "Indlæser ældre beskeder...", MESSAGELIST_SHOW_OLDER: "Vis ældre beskeder", MESSAGELIST_NEW_MARKER: "Ny", MESSAGE_SENT_VIA_EMAIL: "Denne besked blev sendt via e-mail", YOU_MARKER: "dig", UPLOAD_IN_PROGRESS: "Overfører...", UPLOAD_SEND_FILE: "Send fil", UPLOAD_SHARE_LOCATION: "Del placering", UPLOAD_ERROR: "Der er sket noget forkert ved upload. Filen kan ikke understøttes eller filen er for stor.", SHARE_LOCATION_ERROR: "Kan ikke dele placering: ", LOADING: "Indlæser...", HUB_EMPTY: "Dine samtaler vises her", HUB_SHOW_EARLIER: "Vis tidligere chats", INBOX_NO_CHATS_TITLE: "Ingen chats endnu!", INBOX_NO_CHATS_BODY: "Når du har haft en eller flere samtaler, vises de her.", ENABLE_TRANSLATION: "Oversæt denne konversation til dansk", DISABLE_TRANSLATION: "Vis den oprindelige", SEARCH_PLACEHOLDER_TEXT: "Søg...", SEARCH_SEARCHING: "Søger...", SEARCH_NO_RESULTS: "Ingen resultater fundet", SEARCH_NO_MORE_RESULTS: "Ikke flere resultater", CHAT_NOT_FOUND: "Chat ikke fundet", DELETE_MESSAGE: "Slet besked", DELETION_EXPLANATION: "Hvis du sletter denne besked, vil ingen kunne se den.", EDIT_MESSAGE: "Rediger besked", SAVE: "Gem", EDITED_INDICATOR: "redigeret", REPLY_TO_MESSAGE: "Svar", ADD_REACTION: "Tilføj reaktion", AUTH_EXPIRED_OVERLAY_TITLE: "Din chatsession er udløbet", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Opdater siden for at fortsætte", VOICE_MESSAGE: "Talebesked", CONTACT_INFORMATION_HIDDEN: "Skjulte oplysninger", LEAVE_CONVERSATION: "Forlad samtale", MARK_CONVERSATION_AS_UNREAD: "Marker som ulæst", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, as = { code: "de-DE", name: "German", translation: { YESTERDAY: "Gestern", TODAY: "Heute", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "gerade jetzt", LOCATION: "Standort", CANCEL: "Abbrechen", INBOX: "Inbox", DESKTOP_NOTIFICATIONS: "Browser-Benachrichtigungen", DESKTOP_NOTIFICATIONS_ERROR: "Browser-Benachrichtigungen können nicht aktiviert werden, da Ihr Browser sie aktiv blockiert. Versuchen Sie, in den Einstellungen nachzuschlagen oder einen anderen Browser zu verwenden.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} Demo-Benachrichtigung`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Wenn Sie Ihre Browser-Registerkarte geöffnet lassen, wird dies angezeigt, wenn jemand mit Ihnen spricht.", SEND_BUTTON_TEXT: "Senden", ENTRYBOX_TEXT_LIMIT: "Nur 10.000 Zeichen sind erlaubt.", ENTRYBOX_PLACEHOLDER: "Sag etwas...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Diese Konversation ist nicht mehr aktiv.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Sie können Nachrichten lesen, aber nicht senden.", MESSAGELIST_LOADING_OLDER: "Ältere Nachrichten werden geladen...", MESSAGELIST_SHOW_OLDER: "Zeige ältere Nachrichten", MESSAGELIST_NEW_MARKER: "Neu", MESSAGE_SENT_VIA_EMAIL: "Diese Nachricht wurde per E-Mail gesendet", YOU_MARKER: "du", UPLOAD_IN_PROGRESS: "Hochladen...", UPLOAD_SEND_FILE: "Datei senden", UPLOAD_SHARE_LOCATION: "Standort teilen", UPLOAD_ERROR: "Beim Hochladen ist ein Fehler aufgetreten. Die Datei ist möglicherweise nicht unterstützt oder zu groß.", SHARE_LOCATION_ERROR: "Standort kann nicht freigegeben werden: ", LOADING: "Laden...", HUB_EMPTY: "Ihr Chat-Verlauf wird hier angezeigt", HUB_SHOW_EARLIER: "Zeige frühere Chats", INBOX_NO_CHATS_TITLE: "Noch keine Chats!", INBOX_NO_CHATS_BODY: "Sobald Sie eine oder mehrere Unterhaltungen geführt haben, werden sie hier angezeigt.", ENABLE_TRANSLATION: "Dieses Gespräch auf Deutsch übersetzen", DISABLE_TRANSLATION: "Originaltext anzeigen", SEARCH_PLACEHOLDER_TEXT: "Suche...", SEARCH_SEARCHING: "Suchen...", SEARCH_NO_RESULTS: "Keine Suchergebnisse gefunden", SEARCH_NO_MORE_RESULTS: "Keine weiteren Suchergebnisse", CHAT_NOT_FOUND: "Chat nicht gefunden", DELETE_MESSAGE: "Nachricht löschen", DELETION_EXPLANATION: "Wenn Sie diese Nachricht löschen, wird sie für alle verschwinden.", EDIT_MESSAGE: "Nachricht bearbeiten", SAVE: "Speichern", EDITED_INDICATOR: "bearbeitet", REPLY_TO_MESSAGE: "Antworten", ADD_REACTION: "Reaktion hinzufügen", AUTH_EXPIRED_OVERLAY_TITLE: "Ihre Chatsitzung ist abgelaufen", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Laden Sie zum Fortfahren die Seite neu", VOICE_MESSAGE: "Sprachnachricht", CONTACT_INFORMATION_HIDDEN: "Geschützte Angaben", LEAVE_CONVERSATION: "Unterhaltung verlassen", MARK_CONVERSATION_AS_UNREAD: "als ungelesen markieren", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, ss = { code: "el-GR", name: "Greek (Greece)", translation: { YESTERDAY: "Χθές", TODAY: "Σήμερα", DAYS: "Ημέρες", HOURS: "'Ωρες", MINUTES: "Λεπτά", JUST_NOW: "Μόλις τώρα", LOCATION: "Τοποθεσία", CANCEL: "Ακύρωση", INBOX: "Εισερχόμενα", DESKTOP_NOTIFICATIONS: "Ειδοποιήσεις περιηγητή", DESKTOP_NOTIFICATIONS_ERROR: "Δεν είναι δυνατή η ενεργοποίηση των ειδοποιήσεων του προγράμματος περιήγησης, επειδή το πρόγραμμα περιήγησης τις αποκλείει ενεργά. Δοκιμάστε να τσεκάρετε τις ρυθμίσεις ή να χρησιμοποιήσετε διαφορετικό πρόγραμμα περιήγησης.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} Δοκιμαστική επίδειξη`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Αν διατηρήσετε ανοιχτή τη σελίδα του προγράμματος περιήγησης, θα δείτε αυτό το pop up (παράθυρο) όταν κάποιος σας μιλάει.", SEND_BUTTON_TEXT: "Αποστολή", ENTRYBOX_TEXT_LIMIT: "Επιτρέπονται μόνο 10.000 χαρακτήρες.", ENTRYBOX_PLACEHOLDER: "Πείτε κάτι...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Αυτή η συζήτηση δεν είναι πλέον ενεργή.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Μπορείτε να διαβάσετε αλλά δεν μπορείτε να στείλετε μηνύματα.", MESSAGELIST_LOADING_OLDER: "Φόρτωση παλαιοτέρων μηνυμάτων...", MESSAGELIST_SHOW_OLDER: "Εμφάνιση παλαιότερων μηνυμάτων", MESSAGELIST_NEW_MARKER: "Νέο", MESSAGE_SENT_VIA_EMAIL: "Αυτό το μήνυμα εστάλη μέσω ηλεκτρονικού ταχυδρομείου", YOU_MARKER: "Εσείς", UPLOAD_IN_PROGRESS: "Ανέβασμα...", UPLOAD_SEND_FILE: "Αποστολή αρχείου", UPLOAD_SHARE_LOCATION: "Κοινή χρήση τοποθεσίας", UPLOAD_ERROR: "Κάτι πήγε στραβά κατά τη φόρτωση. Το αρχείο ενδέχεται να μην υποστηρίζεται ή να είναι υπερβολικά μεγάλο.", SHARE_LOCATION_ERROR: "Δεν είναι δυνατή η χρήση κοινής τοποθεσίας: ", LOADING: "Φόρτωση...", HUB_EMPTY: "Το ιστορικό των συνομιλιών σας θα εμφανιστεί εδώ", HUB_SHOW_EARLIER: "Εμφάνιση προηγούμενων συνομιλιών", INBOX_NO_CHATS_TITLE: "Δεν υπάρχουν ακόμα συζητήσεις!", INBOX_NO_CHATS_BODY: "Μόλις έχετε μία ή περισσότερες συνομιλίες, θα εμφανιστούν εδώ.", ENABLE_TRANSLATION: "Μετάφραση αυτής της συνομιλίας στα ελληνικά", DISABLE_TRANSLATION: "Προβολή πρωτοτύπου", SEARCH_PLACEHOLDER_TEXT: "Αναζήτηση...", SEARCH_SEARCHING: "Αναζήτηση...", SEARCH_NO_RESULTS: "Δεν βρέθηκαν αποτελέσματα", SEARCH_NO_MORE_RESULTS: "Δεν υπάρχουν περισσότερα αποτελέσματα", CHAT_NOT_FOUND: "Η συνομιλία δεν βρέθηκε", DELETE_MESSAGE: "Διαγραφή μηνύματος", DELETION_EXPLANATION: "Εάν διαγράψετε αυτό το μήνυμα, θα εξαφανιστεί για όλους.", EDIT_MESSAGE: "Επεξεργασία μηνύματος", SAVE: "Αποθήκευση", EDITED_INDICATOR: "επεξεργασμένο", REPLY_TO_MESSAGE: "Απάντηση", ADD_REACTION: "Προσθήκη αντίδρασης", AUTH_EXPIRED_OVERLAY_TITLE: "Η συνεδρία της συνομιλίας σας έχει λήξει", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Ανανεώστε τη σελίδα για να συνεχίσετε", VOICE_MESSAGE: "Ηχητικό μήνυμα", CONTACT_INFORMATION_HIDDEN: "Κρυμμένες πληροφορίες", LEAVE_CONVERSATION: "Αποσυρθείτε από τη συζήτηση", MARK_CONVERSATION_AS_UNREAD: "Επισήμανση ως μη αναγνωσμένα", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, is = { code: "es-ES", name: "Spanish", translation: { YESTERDAY: "Ayer", TODAY: "Hoy", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "justo ahora", LOCATION: "Ubicación", CANCEL: "Cancelar", INBOX: "Inbox", DESKTOP_NOTIFICATIONS: "Notificaciones del navigator", DESKTOP_NOTIFICATIONS_ERROR: "No se logró habilitar las notificaciones del navigador, comprueba que tu navegador no las esté bloqueando o intenta con otro navegador.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} notificación de prueba`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Si dejas esta pestaña abierta, verás este pop up cuando alguien te hable.", SEND_BUTTON_TEXT: "Enviar", ENTRYBOX_TEXT_LIMIT: "Sólo 10.000 caracteres permitidos.", ENTRYBOX_PLACEHOLDER: "Escribe algo...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Esta conversación ya no está activa.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Puedes leer pero no enviar mensajes.", MESSAGELIST_LOADING_OLDER: "Cargando mensajes pasados...", MESSAGELIST_SHOW_OLDER: "Ver mensajes pasados", MESSAGELIST_NEW_MARKER: "Nuevo", MESSAGE_SENT_VIA_EMAIL: "Este mensaje ha sido enviado vía email", YOU_MARKER: "tú", UPLOAD_IN_PROGRESS: "Subir...", UPLOAD_SEND_FILE: "Enviar archivo", UPLOAD_SHARE_LOCATION: "Compartir ubicación", UPLOAD_ERROR: "Ocurrió un problema subiendo el archivo. Puede que el archivo esté en un formato no soportado o que sea demasiado grande.", SHARE_LOCATION_ERROR: "No se logró compartir la ubicación: ", LOADING: "Cargando...", HUB_EMPTY: "Tu historial de conversaciones se mostrará aquí", HUB_SHOW_EARLIER: "Ver conversaciones pasadas", INBOX_NO_CHATS_TITLE: "¡Aún sin conversaciones!", INBOX_NO_CHATS_BODY: "Una vez que tengas una o más conversaciones, se mostrarán aquí.", ENABLE_TRANSLATION: "Traducir esta conversación al español", DISABLE_TRANSLATION: "Mostrar la conversación original", SEARCH_PLACEHOLDER_TEXT: "Buscar...", SEARCH_SEARCHING: "Buscando...", SEARCH_NO_RESULTS: "No se encontraron resultados", SEARCH_NO_MORE_RESULTS: "No hay más resultados", CHAT_NOT_FOUND: "Chat no encontrado", DELETE_MESSAGE: "Eliminar mensaje", DELETION_EXPLANATION: "Este mensaje desaparecerá para todos si lo borras.", EDIT_MESSAGE: "Editar mensaje", SAVE: "Guardar", EDITED_INDICATOR: "editado", REPLY_TO_MESSAGE: "Responder", ADD_REACTION: "Añadir reacción", AUTH_EXPIRED_OVERLAY_TITLE: "Su sesión de chat ha expirado", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Actualice la página para continuar", VOICE_MESSAGE: "Mensaje de voz", CONTACT_INFORMATION_HIDDEN: "Información oculta", LEAVE_CONVERSATION: "Abandonar conversación", MARK_CONVERSATION_AS_UNREAD: "Marcar como no leída", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, rs = { code: "et-EE", name: "Estonian", translation: { YESTERDAY: "Eile", TODAY: "Täna", DAYS: "p", HOURS: "t", MINUTES: "m", JUST_NOW: "Just nüüd", LOCATION: "Asukoht", CANCEL: "Katkesta", INBOX: "Postkast", DESKTOP_NOTIFICATIONS: "Veebibrauseri teated", DESKTOP_NOTIFICATIONS_ERROR: "Töölaua teatisi ei saa lubada, kuna Teie brauser blokeerib need aktiivselt. Proovige muuta seadeid või kasutada mõnda muud brauserit.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo teavitus`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Kui hoiate oma brauseri vahekaardi lahti ja näete seda hüpikakent, siis keegi soovib Teiega rääkida.", SEND_BUTTON_TEXT: "Saada", ENTRYBOX_TEXT_LIMIT: "Ainult kuni 10.000 tähemärki on lubatud.", ENTRYBOX_PLACEHOLDER: "Kirjuta midagi...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "See vestlus ei ole enam aktiivne.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Sa saad lugeda teateid, aga mitte kirjutada.", MESSAGELIST_LOADING_OLDER: "Laen vanemaid teateid...", MESSAGELIST_SHOW_OLDER: "Näita vanemaid teateid", MESSAGELIST_NEW_MARKER: "Uus", MESSAGE_SENT_VIA_EMAIL: "See teade on saadetud e-postiga", YOU_MARKER: "Sina", UPLOAD_IN_PROGRESS: "Laen...", UPLOAD_SEND_FILE: "Saada fail", UPLOAD_SHARE_LOCATION: "Jaga faili asukohta", UPLOAD_ERROR: "Nüüd läks midagi nihu, seoses faili ülesse laadimisega. Tundmatu fail või liiga suur.", SHARE_LOCATION_ERROR: "Ei suuda jagada faili asukohta: ", LOADING: "Laen...", HUB_EMPTY: "Siin on Sinu vestluste ajalugu", HUB_SHOW_EARLIER: "Näita vanemaid vestlusi", INBOX_NO_CHATS_TITLE: "Pole ühtegi vestlust!", INBOX_NO_CHATS_BODY: "Kui Sul tekib üks või rohkem vestlust, siis on need kuvatakse siin.", ENABLE_TRANSLATION: "Tõlgi see vestlus eesti keelde", DISABLE_TRANSLATION: "Näita algteksti", SEARCH_PLACEHOLDER_TEXT: "Otsi...", SEARCH_SEARCHING: "Otsin...", SEARCH_NO_RESULTS: "Otsingu tulemused puuduvad", SEARCH_NO_MORE_RESULTS: "Rohkem tulemusi ei ole ", CHAT_NOT_FOUND: "Vestlust ei leitud", DELETE_MESSAGE: "Kustuta sõnum", DELETION_EXPLANATION: "Kui kustutate selle sõnumi, kaob see kõigi jaoks.", EDIT_MESSAGE: "Redigeeri sõnumit", SAVE: "Salvesta", EDITED_INDICATOR: "muudetud", REPLY_TO_MESSAGE: "Vasta", ADD_REACTION: "Lisa reaktsioon", AUTH_EXPIRED_OVERLAY_TITLE: "Teie vestlussessioon on lõppenud", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Jätkamiseks värskendage lehte", VOICE_MESSAGE: "Häälsõnum", CONTACT_INFORMATION_HIDDEN: "Varjatud informatsioon", LEAVE_CONVERSATION: "Lahku vestlusest", MARK_CONVERSATION_AS_UNREAD: "Märgi mitteloetuks", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, os = { code: "fa", name: "Persian (Farsi)", translation: { YESTERDAY: "دیروز", TODAY: "امروز", DAYS: "روز", HOURS: "ساعت", MINUTES: "دقیقه", JUST_NOW: "هم اکنون", LOCATION: "مکان", CANCEL: "لغو", INBOX: "صندوق", DESKTOP_NOTIFICATIONS: "اطلاعیه‌های مرورگر", DESKTOP_NOTIFICATIONS_ERROR: "خطا در فعال سازی اعلان های مرورگر، مرورگر شما آنها را مسدود می کند سعی کنید تنظیمات مرورگر را تغییر دهید یا از یک مرورگر دیگر استفاده کنید.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `نوتیفیکیشن دمو ${e}`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "اگر صفحه ی مرورگر را باز نگهدارید این را موقعه ای که کسی با شما صحبت کند خواهید دید", SEND_BUTTON_TEXT: "بفرست", ENTRYBOX_TEXT_LIMIT: "فقط ۱۰،۰۰۰ حروف مجاز می باشد.", ENTRYBOX_PLACEHOLDER: "...چیزی بنویسید", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: ".این مکالمه دیگر فعال نمی باشد", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "شما می توانید بخوانید اما نمی توانید پیام بفرستید", MESSAGELIST_LOADING_OLDER: "...در حال بارگذاری پیام های قدیمی تر", MESSAGELIST_SHOW_OLDER: "نشان دادن پیام های قدیمی", MESSAGELIST_NEW_MARKER: "جدید", MESSAGE_SENT_VIA_EMAIL: "پیام توسط ایمل ارسال شد", YOU_MARKER: "شما", UPLOAD_IN_PROGRESS: "...در حال بارگذاری", UPLOAD_SEND_FILE: "فرستادن پوشه", UPLOAD_SHARE_LOCATION: "اشتراک گذاری مکان", UPLOAD_ERROR: "متاسفانه بارگذاری با مشکل روبه رو شد. ممکن است فایل حجیم باشد یا ساپورت نشده باشد.", SHARE_LOCATION_ERROR: "خطا در اشتراک گذاری مکان: ", LOADING: "...بارگذاری", HUB_EMPTY: "تاریخچه گفتگو اینجا نمایان می شود", HUB_SHOW_EARLIER: "دیدن گفتگو های قبلی", INBOX_NO_CHATS_TITLE: "هنوز گفتگویی وجود ندارد", INBOX_NO_CHATS_BODY: "بعد از داشتن یک مکالمه یا بیشتر، آنها اینجا نمایان می شوند.", ENABLE_TRANSLATION: "این مکالمه را به فارسی ترجمه کن", DISABLE_TRANSLATION: "زبان اصلی را نشان بده", SEARCH_PLACEHOLDER_TEXT: "...جستجو", SEARCH_SEARCHING: "...در حال جستجو", SEARCH_NO_RESULTS: "نتیجه ای یافت نشد", SEARCH_NO_MORE_RESULTS: "نتیجه بیشتری وجود ندارد", CHAT_NOT_FOUND: "مکالمه پیدا نشد", DELETE_MESSAGE: "حذف پیام ", DELETION_EXPLANATION: "اگر این پیام را حذف کنید، برای همه ناپدید می شود.", EDIT_MESSAGE: "ویرایش پیام", SAVE: "ذخیره", EDITED_INDICATOR: "ویرایش‌شده", REPLY_TO_MESSAGE: "پاسخ دادن", ADD_REACTION: "واکنش را اضافه کنید", AUTH_EXPIRED_OVERLAY_TITLE: "جلسه چت شما منقضی شده است", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "برای ادامه صفحه را بازخوانی کنید", VOICE_MESSAGE: "پیام صوتی", CONTACT_INFORMATION_HIDDEN: "اطلاعات پنهان", LEAVE_CONVERSATION: "خروج از گفتگو", MARK_CONVERSATION_AS_UNREAD: "به عنوان خوانده نشده علامت گذاری کن", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Es = { code: "fi-FI", name: "Finnish", translation: { YESTERDAY: "Eilen", TODAY: "Tänään", DAYS: "p", HOURS: "t", MINUTES: "m", JUST_NOW: "juuri nyt", LOCATION: "Sijainti", CANCEL: "Peruuta", INBOX: "Saapuneet", DESKTOP_NOTIFICATIONS: "Selaimen ilmoitukset", DESKTOP_NOTIFICATIONS_ERROR: "Työpöydän ilmoituksia ei voitu kytkeä päälle, koska selaimesi estää ne aktiivisesti. Koeta tutkia sen asetuksia tai vaihda selainta.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo ilmoitus`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Jos pidät tämän sivun auki, näet vastaavan ilmoituksen kun joku puhuu sinulle.", SEND_BUTTON_TEXT: "Lähetä", ENTRYBOX_TEXT_LIMIT: "Maksimissaan 10000 merkkiä.", ENTRYBOX_PLACEHOLDER: "Sano jotain...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Tämä keskustelu ei ole enää aktiivinen.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Voit lukea, mutta et lähettää viestejä.", MESSAGELIST_LOADING_OLDER: "Ladataan vanhoja viestejä..", MESSAGELIST_SHOW_OLDER: "Näytä vanhat viestit", MESSAGELIST_NEW_MARKER: "Uusi", MESSAGE_SENT_VIA_EMAIL: "Tämä viesti on lähetetty sähköpostin välityksellä", YOU_MARKER: "sinä", UPLOAD_IN_PROGRESS: "Ladataan...", UPLOAD_SEND_FILE: "Lähetä tiedosto", UPLOAD_SHARE_LOCATION: "Jaa sijainti", UPLOAD_ERROR: "Valitettavasti jokin meni vikaan. Tiedostotyyppiä ei ehkä tueta tai se saattaa olla liian suuri.", SHARE_LOCATION_ERROR: "Sijaintia ei pystytty jakamaan: ", LOADING: "Ladataan...", HUB_EMPTY: "Keskusteluhistoriasi näkyy tässä", HUB_SHOW_EARLIER: "Näytä aiemmat keskustelut", INBOX_NO_CHATS_TITLE: "Ei keskusteluja, vielä!", INBOX_NO_CHATS_BODY: "Kun olet käynyt yhden tai useamman keskustelun, ne näkyvät täällä.", ENABLE_TRANSLATION: "Käännä keskustelu kielelle suomi", DISABLE_TRANSLATION: "Näytä alkuperäinen", SEARCH_PLACEHOLDER_TEXT: "Etsi...", SEARCH_SEARCHING: "Etsiminen...", SEARCH_NO_RESULTS: "Tuloksia ei löytynyt", SEARCH_NO_MORE_RESULTS: "Ei enempää tuloksia", CHAT_NOT_FOUND: "Keskustelua ei löytynyt", DELETE_MESSAGE: "Poista viesti", DELETION_EXPLANATION: "Jos poistat tämän viestin, se häviää kaikilta.", EDIT_MESSAGE: "Muokkaa viestiä", SAVE: "Tallenna", EDITED_INDICATOR: "muokattu", REPLY_TO_MESSAGE: "Vastaa", ADD_REACTION: "Lisää reaktio", AUTH_EXPIRED_OVERLAY_TITLE: "Istuntosi on vanhentunut", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Päivitä sivu jatkaaksesi", VOICE_MESSAGE: "Ääniviesti", CONTACT_INFORMATION_HIDDEN: "Piilotetut tiedot", LEAVE_CONVERSATION: "Poistu keskustelusta", MARK_CONVERSATION_AS_UNREAD: "Merkitse lukemattomaksi", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, us = { code: "fr-FR", name: "French", translation: { YESTERDAY: "Hier", TODAY: "Aujourd'hui", DAYS: "j", HOURS: "h", MINUTES: "m", JUST_NOW: "maintenant", LOCATION: "Emplacement", CANCEL: "Annuler", INBOX: "Boîte de réception", DESKTOP_NOTIFICATIONS: "Notifications du navigateur", DESKTOP_NOTIFICATIONS_ERROR: "Impossible d'activer les notifications du navigateur car votre navigateur les bloque. Essayez de changer ses paramètres ou de changer de navigateur.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `Notification de démonstration ${e}`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Si vous maintenez l'onglet ouvert dans votre navigateur vous verrez apparaître une alerte lorsque quelqu'un vous parlera.", SEND_BUTTON_TEXT: "Envoyer", ENTRYBOX_TEXT_LIMIT: "Seuls 10.000 caractères sont autorisés.", ENTRYBOX_PLACEHOLDER: "Ecrivez quelque chose...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Cette conversation n'est plus active.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Vous pouvez lire, mais pas envoyer de messages.", MESSAGELIST_LOADING_OLDER: "Chargement des anciens messages ...", MESSAGELIST_SHOW_OLDER: "Afficher les anciens messages", MESSAGELIST_NEW_MARKER: "Nouveau", MESSAGE_SENT_VIA_EMAIL: "Ce message a été envoyé par e-mail", YOU_MARKER: "vous", UPLOAD_IN_PROGRESS: "Envoi en cours...", UPLOAD_SEND_FILE: "Envoyer un fichier", UPLOAD_SHARE_LOCATION: "Partager mon emplacement", UPLOAD_ERROR: "Un problème est survenu lors de l'envoi: le fichier est peut-être non pris en charge ou trop volumineux.", SHARE_LOCATION_ERROR: "Impossible de partager votre emplacement: ", LOADING: "Chargement en cours...", HUB_EMPTY: "Votre historique de discussion apparaîtra ici", HUB_SHOW_EARLIER: "Afficher les conversations précédentes", INBOX_NO_CHATS_TITLE: "Aucune conversation pour l'instant!", INBOX_NO_CHATS_BODY: "Une fois que vous aurez eu une ou plusieurs conversations, elles apparaîtront ici.", ENABLE_TRANSLATION: "Traduire cette conversation en français", DISABLE_TRANSLATION: "Remontrer la conversation originale", SEARCH_PLACEHOLDER_TEXT: "Rechercher...", SEARCH_SEARCHING: "Recherche...", SEARCH_NO_RESULTS: "Aucun résultat trouvé", SEARCH_NO_MORE_RESULTS: "Il n’y a plus de résultats", CHAT_NOT_FOUND: "Conversation introuvable", DELETE_MESSAGE: "Supprimer le message", DELETION_EXPLANATION: "Si vous supprimez ce message, il disparaîtra pour tout le monde.", EDIT_MESSAGE: "Modifier le message", SAVE: "Enregistrer", EDITED_INDICATOR: "modifié", REPLY_TO_MESSAGE: "Répondre", ADD_REACTION: "Ajouter une réaction", AUTH_EXPIRED_OVERLAY_TITLE: "Votre session de chat a expiré", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Actualisez la page pour continuer", VOICE_MESSAGE: "Message vocal", CONTACT_INFORMATION_HIDDEN: "Informations masquées", LEAVE_CONVERSATION: "Quitter la conversation", MARK_CONVERSATION_AS_UNREAD: "Marquer comme non lu", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, ls = { code: "he-IL", name: "Hebrew", translation: { YESTERDAY: "אתמול", TODAY: "היום", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "עכשיו", LOCATION: "מיקום", CANCEL: "בטל", INBOX: "דואר נכנס", DESKTOP_NOTIFICATIONS: "התראות דפדפן", DESKTOP_NOTIFICATIONS_ERROR: "לא ניתן להפעיל התראות במרועה דפדפן מכיוון שהדפדפן שלך חוסם אותן באופן פעיל. נסה להסתכל בהגדרות או להשתמש בדפדפן אחר.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} הודעה על הדגמה`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "אם אתה שומר על כרטיסיית הדפדפן שלך פתוחה, תראה את זה צץ כשמישהו ידבר איתך.", SEND_BUTTON_TEXT: "שלח", ENTRYBOX_TEXT_LIMIT: "רק 10.000 תווים", ENTRYBOX_PLACEHOLDER: "תגיד משהו...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "שיחה זו אינה פעילה עוד.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "אתה יכול לקרוא, אך לא לשלוח הודעות.", MESSAGELIST_LOADING_OLDER: "טוען הודעות ישנות...", MESSAGELIST_SHOW_OLDER: "הצג הודעות ישנות", MESSAGELIST_NEW_MARKER: "חדש", MESSAGE_SENT_VIA_EMAIL: "הודעה זאת נשלחה דרך אימייל", YOU_MARKER: "אתה", UPLOAD_IN_PROGRESS: "מעלה ...", UPLOAD_SEND_FILE: "שלח קובץ", UPLOAD_SHARE_LOCATION: "שתף מיקום", UPLOAD_ERROR: "לרוע המזל משהו השתבש בהעלאה. ייתכן שהקובץ אינו נתמך או גדול מדי.", SHARE_LOCATION_ERROR: "לא ניתן לשתף מיקום: ", LOADING: "טוען...", HUB_EMPTY: "היסטוריית הצ'אט שלך תופיע כאן", HUB_SHOW_EARLIER: "הצג צ'אטים קודמים", INBOX_NO_CHATS_TITLE: "אין עדיין צ'אטים!", INBOX_NO_CHATS_BODY: "לאחר שניהלת שיחה אחת או יותר, הם יופיעו כאן.", ENABLE_TRANSLATION: "תרגם שיחה זו לעברית", DISABLE_TRANSLATION: "הצג מקור", SEARCH_PLACEHOLDER_TEXT: "...חפש", SEARCH_SEARCHING: "...מחפש", SEARCH_NO_RESULTS: "לא נמצאו תוצאות", SEARCH_NO_MORE_RESULTS: "אין תוצאות נוספות", CHAT_NOT_FOUND: "הצ'אט לא נמצא", DELETE_MESSAGE: "מחיקת הודעה", DELETION_EXPLANATION: "אם תמחק הודעה זו, היא תיעלם עבור כולם.", EDIT_MESSAGE: "עריכת הודעה", SAVE: "שמור", EDITED_INDICATOR: "ערוך", REPLY_TO_MESSAGE: "השב", ADD_REACTION: "הוספת תגובה", AUTH_EXPIRED_OVERLAY_TITLE: "הפעלת הצ׳אט שלכם פגה", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "רעננו את העמוד כדי להמשיך", VOICE_MESSAGE: "הודעה קולית", CONTACT_INFORMATION_HIDDEN: "מידע מוסתר", LEAVE_CONVERSATION: "צא מהשיחה", MARK_CONVERSATION_AS_UNREAD: "סמן כלא נקרא", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, cs = { code: "hi-IN", name: "Hindi (IN)", translation: { YESTERDAY: "कल", TODAY: "आज", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "अभी", LOCATION: "जगह", CANCEL: "रद्द करें", INBOX: "इनबॉक्स", DESKTOP_NOTIFICATIONS: "ब्राउज़र सूचनाएं", DESKTOP_NOTIFICATIONS_ERROR: "ब्राउज़र सूचनाएं सक्षम नहीं कर सकता क्योंकि आपका ब्राउज़र सक्रिय रूप से उन्हें ब्लॉक करता है। सेटिंग्स में देखने या एक अलग ब्राउज़र का उपयोग करने का प्रयास करें।", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} डेमो अधिसूचना`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "यदि आप अपना ब्राउज़र टैब खुला रखते हैं, तो यह पॉप अप आपको तब दिखाई देगा जब कोई आपसे बात करेगा।", SEND_BUTTON_TEXT: "भेजें", ENTRYBOX_TEXT_LIMIT: "केवल 10,000 वर्णों की अनुमति है।", ENTRYBOX_PLACEHOLDER: "कुछ कहिए...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "यह चैट अब सक्रिय नहीं है।", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "आप पढ़ सकते हैं, लेकिन संदेश नहीं भेज सकते।", MESSAGELIST_LOADING_OLDER: "पुराने संदेश लोड हो रहे हैं ...", MESSAGELIST_SHOW_OLDER: "पुराने संदेश दिखाएं", MESSAGELIST_NEW_MARKER: "नया", MESSAGE_SENT_VIA_EMAIL: "यह संदेश ईमेल के माध्यम से भेजा गया था", YOU_MARKER: "आप", UPLOAD_IN_PROGRESS: "अपलोड हो रहा है...", UPLOAD_SEND_FILE: "फाइल भेजें", UPLOAD_SHARE_LOCATION: "जगह शेयर करें", UPLOAD_ERROR: "दुर्भाग्य से, अपलोड करते समय कुछ गलत हो गया। फ़ाइल असमर्थित या बहुत बड़ी हो सकती है।", SHARE_LOCATION_ERROR: "जगह शेयर नहीं हो पाया: ", LOADING: "लोड हो रहा है...", HUB_EMPTY: "आपका चैट इतिहास यहां दिखाई देगा", HUB_SHOW_EARLIER: "पहले की चैट दिखाओ", INBOX_NO_CHATS_TITLE: "अभी तक कोई चैट नहीं!", INBOX_NO_CHATS_BODY: "एक बार जब आप एक या अधिक चैट कर लेते हैं, तो वे यहां दिखाई देंगे।", ENABLE_TRANSLATION: "इस बातचीत का हिंदी में अनुवाद कीजिए", DISABLE_TRANSLATION: "मूल दिखाएँ", SEARCH_PLACEHOLDER_TEXT: "खोजें...", SEARCH_SEARCHING: "खोज जारी है...", SEARCH_NO_RESULTS: "कोई परिणाम नहीं मिला", SEARCH_NO_MORE_RESULTS: "और कोई परिणाम नहीं", CHAT_NOT_FOUND: "चैट नहीं मिली", DELETE_MESSAGE: "संदेश डिलीट करें", DELETION_EXPLANATION: "यदि आप इस संदेश को हटाते हैं, तो यह सभी के लिए गायब हो जाएगा.", EDIT_MESSAGE: "संदेश में बदलाव करें", SAVE: "सहेजें", EDITED_INDICATOR: "संपादित किया गया", REPLY_TO_MESSAGE: "जवाब दीजिए ।", ADD_REACTION: "प्रतिक्रिया जोड़ें", AUTH_EXPIRED_OVERLAY_TITLE: "आपका चैट सेशन समाप्त हो चुका है", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "आगे बढ़ने के लिए रिफ्रेश करें", VOICE_MESSAGE: "वॉयस मैसेज", CONTACT_INFORMATION_HIDDEN: "छुपी हुई जानकारी", LEAVE_CONVERSATION: "बातचीत को ख़त्म करें", MARK_CONVERSATION_AS_UNREAD: "अपठित के रूप में चिह्नित करें", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Ds = { code: "hr-HR", name: "Croatian", translation: { YESTERDAY: "Jučer", TODAY: "Danas", DAYS: "d", HOURS: "s", MINUTES: "m", JUST_NOW: "Upravo sad", LOCATION: "Lokacija", CANCEL: "Otkaži", INBOX: "Pretinac", DESKTOP_NOTIFICATIONS: "Obavijesti preglednika", DESKTOP_NOTIFICATIONS_ERROR: "Notifikacije preglednika nisu omogućene jer ih vaš preglednik aktivno blokira. Pokušajte pogledati postavke ili koristiti neki drugi preglednik.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo notifikacija`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Ako karticu preglednika ostavite otvorenu, pojavit će se ovaj pop-up kada netko razgovara s vama.", SEND_BUTTON_TEXT: "Pošalji", ENTRYBOX_TEXT_LIMIT: "Dozvoljeno je samo 10.000 znakova.", ENTRYBOX_PLACEHOLDER: "Reci nešto...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Ovaj razgovor više nije aktivan.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Možeš čitati, ali ne i slati poruke.", MESSAGELIST_LOADING_OLDER: "Učitavam starije poruke...", MESSAGELIST_SHOW_OLDER: "Prikaži starije poruke", MESSAGELIST_NEW_MARKER: "Novo", MESSAGE_SENT_VIA_EMAIL: "Ova poruka je poslana e-poštom", YOU_MARKER: "ti", UPLOAD_IN_PROGRESS: "Učitavam...", UPLOAD_SEND_FILE: "Pošalji datoteku", UPLOAD_SHARE_LOCATION: "Podijeli lokaciju", UPLOAD_ERROR: "Nažalost, nešto je pošlo krivo. Datoteka možda nije podržana ili je prevelika.", SHARE_LOCATION_ERROR: "Nije moguće podijeliti lokaciju: ", LOADING: "Učitavam...", HUB_EMPTY: "Ovdje će se prikazati vaša povijest razgovora", HUB_SHOW_EARLIER: "Prikaži ranije razgovore", INBOX_NO_CHATS_TITLE: "Nema razgovora!", INBOX_NO_CHATS_BODY: "Nakon što vodite jedan ili više razgovora, oni će se pojaviti ovdje.", ENABLE_TRANSLATION: "Prevedi ovaj razgovor na hrvatski jezik", DISABLE_TRANSLATION: "Prikaži original", SEARCH_PLACEHOLDER_TEXT: "Pretraži...", SEARCH_SEARCHING: "Pretraživanje...", SEARCH_NO_RESULTS: "Nema rezultata", SEARCH_NO_MORE_RESULTS: "Nema više rezultata", CHAT_NOT_FOUND: "Razgovor nije pronađen", DELETE_MESSAGE: "Obriši poruku", DELETION_EXPLANATION: "Ako izbrišete ovu poruku, nestat će za sve.", EDIT_MESSAGE: "Uredi poruku", SAVE: "Spremi", EDITED_INDICATOR: "uređivao", REPLY_TO_MESSAGE: "Odgovorite", ADD_REACTION: "Dodajte reakciju", AUTH_EXPIRED_OVERLAY_TITLE: "Vaša sesija razgovora je istekla", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Osvježite stranicu za nastavak", VOICE_MESSAGE: "Glasovna poruka", CONTACT_INFORMATION_HIDDEN: "Skrivene informacije", LEAVE_CONVERSATION: "Napustiti razgovor", MARK_CONVERSATION_AS_UNREAD: "Označi kao nepročitano", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, _s = { code: "hu-HU", name: "Hungarian", translation: { YESTERDAY: "Tegnap", TODAY: "Ma", DAYS: "n", HOURS: "ó", MINUTES: "p", JUST_NOW: "éppen most", LOCATION: "Helyszín", CANCEL: "Visszavonás", INBOX: "Postaláda", DESKTOP_NOTIFICATIONS: "Böngésző értesítések", DESKTOP_NOTIFICATIONS_ERROR: "Azért nem tudja bekapcsolni a böngésző értesítések funkciót, mert böngészője aktívan blokkolja azt. Tekintse meg a beállításokat vagy használjon másik böngészőt.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo értesítés`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Ha nyitva hagyja böngészőjét, felugró ablak fog megjelenni, ha valaki beszélni szeretne Önnel.", SEND_BUTTON_TEXT: "Küldés", ENTRYBOX_TEXT_LIMIT: "Mindőssze 10.000 karakter megengedett.", ENTRYBOX_PLACEHOLDER: "Mondjon valamit...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Ez a beszélgetés már nem aktív.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Elolvashatja az üzeneteket, de nem küldhet újat.", MESSAGELIST_LOADING_OLDER: "Korábbi üzenetek betöltése...", MESSAGELIST_SHOW_OLDER: "Korábbi üzenetek megjelenítése", MESSAGELIST_NEW_MARKER: "Új", MESSAGE_SENT_VIA_EMAIL: "Ez az üzenet e-mailben került elküldésre", YOU_MARKER: "Ön", UPLOAD_IN_PROGRESS: "Feltöltés...", UPLOAD_SEND_FILE: "Fájl küldése", UPLOAD_SHARE_LOCATION: "Helyszín megosztása", UPLOAD_ERROR: "Sajnos hiba történt a feltöltés során. A fájl nem támogatott vagy túl nagy.", SHARE_LOCATION_ERROR: "Helyszín megosztása nem lehetséges: ", LOADING: "Betöltés...", HUB_EMPTY: "A beszélgetések előzményei itt láthatók", HUB_SHOW_EARLIER: "Korábbi beszélgetések megjelenítése", INBOX_NO_CHATS_TITLE: "Még nincs megjeleníthető beszélgetés!", INBOX_NO_CHATS_BODY: "Amint egy vagy több beszélgetéssel rendelkezik, azok itt fognak megjelenni.", ENABLE_TRANSLATION: "A beszélgetés lefordítása erre a nyelvre: magyar", DISABLE_TRANSLATION: "Eredeti megjelenítése", SEARCH_PLACEHOLDER_TEXT: "Keresés...", SEARCH_SEARCHING: "Keresés...", SEARCH_NO_RESULTS: "Nincs találat", SEARCH_NO_MORE_RESULTS: "Nincs több találat", CHAT_NOT_FOUND: "A csevegés nem található", DELETE_MESSAGE: "Üzenet törlése", DELETION_EXPLANATION: "Ha törlöd ezt az üzenetet, az mindenki számára eltűnik.", EDIT_MESSAGE: "Üzenet szerkesztése", SAVE: "Mentés", EDITED_INDICATOR: "szerkesztve", REPLY_TO_MESSAGE: "Válaszadás", ADD_REACTION: "Reagálás erre", AUTH_EXPIRED_OVERLAY_TITLE: "Chat munkamenete lejárt", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Folytatáshoz frissítse az oldalt", VOICE_MESSAGE: "Hangüzenet", CONTACT_INFORMATION_HIDDEN: "Rejtett információ", LEAVE_CONVERSATION: "Kilépés a beszélgetésből", MARK_CONVERSATION_AS_UNREAD: "Megjelölés olvasatlanként", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, As = { code: "id-ID", name: "Bahasa Indonesia", translation: { YESTERDAY: "Kemarin", TODAY: "Hari ini", DAYS: "h", HOURS: "j", MINUTES: "m", JUST_NOW: "sekarang", LOCATION: "Lokasi", CANCEL: "Batal", INBOX: "Kotak Masuk", DESKTOP_NOTIFICATIONS: "Notifikasi peramban", DESKTOP_NOTIFICATIONS_ERROR: "Tidak dapat mengaktifkan pemberitahuan browser karena browser Anda secara aktif memblokir mereka. Coba cari di pengaturan atau menggunakan browser yang berbeda.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `pemberitahuan demo ${e}`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Jika Anda membiarkan tab browser tetap terbuka, Anda akan melihat ini muncul ketika seseorang berbicara kepada Anda.", SEND_BUTTON_TEXT: "Kirim", ENTRYBOX_TEXT_LIMIT: "Hanya 10.000 karakter yang diizinkan.", ENTRYBOX_PLACEHOLDER: "Katakan sesuatu...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Percakapan ini tidak lagi aktif.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Anda dapat membaca, tetapi tidak mengirim pesan.", MESSAGELIST_LOADING_OLDER: "Memuat pesan lama...", MESSAGELIST_SHOW_OLDER: "Tampilkan pesan yang lebih lama", MESSAGELIST_NEW_MARKER: "Baru", MESSAGE_SENT_VIA_EMAIL: "Pesan ini dikirim melalui email", YOU_MARKER: "Anda", UPLOAD_IN_PROGRESS: "Mengunggah...", UPLOAD_SEND_FILE: "Kirim mengajukan", UPLOAD_SHARE_LOCATION: "Bagikan lokasi", UPLOAD_ERROR: "Ada yang salah diunggah. File mungkin tidak didukung atau terlalu besar.", SHARE_LOCATION_ERROR: "Tidak dapat membagikan lokasi: ", LOADING: "Memuat...", HUB_EMPTY: "Riwayat obrolan Anda akan muncul di sini", HUB_SHOW_EARLIER: "Tampilkan obrolan sebelumnya", INBOX_NO_CHATS_TITLE: "Belum ada obrolan!", INBOX_NO_CHATS_BODY: "Setelah Anda melakukan satu atau lebih percakapan, mereka akan muncul di sini.", ENABLE_TRANSLATION: "Terjemahkan percakapan ini ke Indonesia", DISABLE_TRANSLATION: "Perlihatkan asli", SEARCH_PLACEHOLDER_TEXT: "Cari...", SEARCH_SEARCHING: "Mencari...", SEARCH_NO_RESULTS: "Tidak ditemukan hasil", SEARCH_NO_MORE_RESULTS: "Tidak ada hasil lainnya", CHAT_NOT_FOUND: "Obrolan tidak ditemukan", DELETE_MESSAGE: "Hapus pesan", DELETION_EXPLANATION: "Jika pesan ini Anda hapus, pesan ini akan tidak terlihat bagi siapa pun.", EDIT_MESSAGE: "Sunting pesan", SAVE: "Mentés", EDITED_INDICATOR: "diedit", REPLY_TO_MESSAGE: "Balas", ADD_REACTION: "Tambah reaksi", AUTH_EXPIRED_OVERLAY_TITLE: "Sesi obrolan Anda sudah lewat batas waktu", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Muat ulang halaman untuk melanjutkan", VOICE_MESSAGE: "Pesan suara", CONTACT_INFORMATION_HIDDEN: "Informasi tersembunyi", LEAVE_CONVERSATION: "Tinggalkan percakapan", MARK_CONVERSATION_AS_UNREAD: "Tandai sebagai Belum dibaca", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Os = { code: "is-IS", name: "Íslenska", translation: { YESTERDAY: "Í gær", TODAY: "Í dag", DAYS: "dagar", HOURS: "klst.", MINUTES: "mín.", JUST_NOW: "núna", LOCATION: "Staðsetning", CANCEL: "Hætta við", INBOX: "Pósthólf", DESKTOP_NOTIFICATIONS: "Tilkynningar í vafra", DESKTOP_NOTIFICATIONS_ERROR: "Ekki er hægt að birta tilkynningar í vafra vegna þess að vafrinn sem þú notar hindrar það. Reyndu að leita að stillingum eða að nota annan vafra.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} prufutilkynning`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Ef flipinn í vafranum er opinn muntu sjá þessa tilkynningu birtast þegar einhver sendir þér skilaboð.", SEND_BUTTON_TEXT: "Senda", ENTRYBOX_TEXT_LIMIT: "Aðeins 10.000 stafir komast fyrir.", ENTRYBOX_PLACEHOLDER: "Segðu eitthvað...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Þessar samræður eru ekki lengar virkar.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Þú getur lesið, en ekki sent skilaboð.", MESSAGELIST_LOADING_OLDER: "Sæki eldri skilaboð...", MESSAGELIST_SHOW_OLDER: "Sýna eldri skilaboð", MESSAGELIST_NEW_MARKER: "Ný", MESSAGE_SENT_VIA_EMAIL: "Þessi skilaboð voru send með tölvupósti", YOU_MARKER: "þú", UPLOAD_IN_PROGRESS: "Hleð upp...", UPLOAD_SEND_FILE: "Senda skrá", UPLOAD_SHARE_LOCATION: "Deila staðsetningu", UPLOAD_ERROR: "Því miður fór eitthvað úrskeiðis við að hlaða upp. Skráin gæti verið af rangri tegund eð of stór.", SHARE_LOCATION_ERROR: "Ekki er hægt að deila staðsetningu: ", LOADING: "Hleð...", HUB_EMPTY: "Fyrri samtöl munu birtast hér", HUB_SHOW_EARLIER: "Sýna fyrri samtöl", INBOX_NO_CHATS_TITLE: "Engin samtöl enn!", INBOX_NO_CHATS_BODY: "Þegar þú hefur átt eitt eða fleiri samtöl, munu þau birtast hér.", ENABLE_TRANSLATION: "Þýða þetta samtal á ensku", DISABLE_TRANSLATION: "Sýna upprunalegt", SEARCH_PLACEHOLDER_TEXT: "Leita...", SEARCH_SEARCHING: "Leita...", SEARCH_NO_RESULTS: "Ekkert fannst", SEARCH_NO_MORE_RESULTS: "Engar fleiri niðurstöður", CHAT_NOT_FOUND: "Samtal fannst ekki", DELETE_MESSAGE: "Eyða skilaboðum", DELETION_EXPLANATION: "Ef þú eyðir þessum skilaboðum munu þau hverfa hjá öllum.", EDIT_MESSAGE: "Breyta skilaboðum", SAVE: "Vista", EDITED_INDICATOR: "breytt", REPLY_TO_MESSAGE: "Svara", REPLY_TO_ARIA_LABEL: (e, t) => `Svara ${e}: ${t}`, REPLY_MODE_LEAVE_ARIA_LABEL: "Fara úr svari", ADD_REACTION: "Setja inn viðbrögð", AUTH_EXPIRED_OVERLAY_TITLE: "Spjallið hefur runnið út", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Endurnýjaðu síðuna til að halda áfram", VOICE_MESSAGE: "Raddskilaboð", LEAVE_CONVERSATION: "Skilja eftir skilaboð", MARK_CONVERSATION_AS_UNREAD: "Merkja sem ólesið", STATUS_INDICATOR_ONLINE: "Virk", STATUS_INDICATOR_OFFLINE: "Ekki við", CONTACT_INFORMATION_HIDDEN: "faldar upplýsingar" } }, Ts = { code: "it-IT", name: "Italian", translation: { YESTERDAY: "Ieri", TODAY: "Oggi", DAYS: "g", HOURS: "o", MINUTES: "m", JUST_NOW: "adesso", LOCATION: "Posizione", CANCEL: "Annulla", INBOX: "Posta in arrivo", DESKTOP_NOTIFICATIONS: "Notifiche browser", DESKTOP_NOTIFICATIONS_ERROR: "Impossibile abilitare le notifiche browser perché il browser le blocca attivamente. Prova a cercare le impostazioni o utilizzare un browser diverso.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo notification`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Se si mantiene aperta la scheda del browser, questo verrà visualizzato quando qualcuno ti parla.", SEND_BUTTON_TEXT: "Invia", ENTRYBOX_TEXT_LIMIT: "Sono consentiti solo 10.000 caratteri.", ENTRYBOX_PLACEHOLDER: "Dì qualcosa...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Questa conversazione non è più attiva.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Puoi leggere, ma non inviare messaggi.", MESSAGELIST_LOADING_OLDER: "Caricamento dei messaggi precedenti...", MESSAGELIST_SHOW_OLDER: "Mostra messaggi precedenti", MESSAGELIST_NEW_MARKER: "Nuovo", MESSAGE_SENT_VIA_EMAIL: "Questo messaggio è stato inviato via email", YOU_MARKER: "tu", UPLOAD_IN_PROGRESS: "Caricamento in corso...", UPLOAD_SEND_FILE: "Invia file", UPLOAD_SHARE_LOCATION: "Condividi posizione", UPLOAD_ERROR: "Qualcosa è andato storto durante il caricamento. Il file potrebbe non essere supportato o troppo grande.", SHARE_LOCATION_ERROR: "Impossibile condividere la posizione: ", LOADING: "Caricamento in corso...", HUB_EMPTY: "La cronologia della tua chat verrà mostrata qui", HUB_SHOW_EARLIER: "Mostra chat precedenti", INBOX_NO_CHATS_TITLE: "Non ci sono ancora chat!", INBOX_NO_CHATS_BODY: "Una volta che hai avuto una o più conversazioni, verranno visualizzate qui.", ENABLE_TRANSLATION: "Traduci questa conversazione in italiano", DISABLE_TRANSLATION: "Mostra l'originale", SEARCH_PLACEHOLDER_TEXT: "Cerca...", SEARCH_SEARCHING: "Cercando...", SEARCH_NO_RESULTS: "Nessun risultato trovato", SEARCH_NO_MORE_RESULTS: "Non ci sono più risultati", CHAT_NOT_FOUND: "Chat non trovata", DELETE_MESSAGE: "Elimina messaggio", DELETION_EXPLANATION: "Se elimini il messaggio, questo scomparirà per tutti.", EDIT_MESSAGE: "Modifica messaggio", SAVE: "Salva", EDITED_INDICATOR: "modificato", REPLY_TO_MESSAGE: "Rispondi", ADD_REACTION: "Aggiungi reazione", AUTH_EXPIRED_OVERLAY_TITLE: "La sessione di chat è scaduta", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Aggiorna la pagina per continuare", VOICE_MESSAGE: "Messaggio vocale", CONTACT_INFORMATION_HIDDEN: "Informazioni nascoste", LEAVE_CONVERSATION: "Abbandona la conversazione", MARK_CONVERSATION_AS_UNREAD: "Segna come non letto", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, ds = { code: "ja-JP", name: "Japanese", translation: { YESTERDAY: "昨日", TODAY: "今日", DAYS: "日前", HOURS: "時間前", MINUTES: "分前", JUST_NOW: "たった今", LOCATION: "場所", CANCEL: "キャンセル", INBOX: "受信箱", DESKTOP_NOTIFICATIONS: "ブラウザの通知", DESKTOP_NOTIFICATIONS_ERROR: "ブラウザの通知はブロックされているため、ブラウザの通知を有効にできません。設定を確認するか、別のブラウザを使用してください。", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} デモ通知`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "ブラウザのタブを開いたままにしておくと、誰かがあなたに話しかけたときにこのポップアップが表示されます。", SEND_BUTTON_TEXT: "送信", ENTRYBOX_TEXT_LIMIT: "許可されているのは10.000文字までです。", ENTRYBOX_PLACEHOLDER: "メッセージを入力してください", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "この会話はもうアクティブではありません。", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "あなたは読むことはできますが、メッセージを送ることはできません。", MESSAGELIST_LOADING_OLDER: "古いメッセージを読み込んでいます...", MESSAGELIST_SHOW_OLDER: "古いメッセージを表示", MESSAGELIST_NEW_MARKER: "新着", MESSAGE_SENT_VIA_EMAIL: "このメッセージはメールで送信されました", YOU_MARKER: "あなたは", UPLOAD_IN_PROGRESS: "アップロード中...", UPLOAD_SEND_FILE: "ファイル送信", UPLOAD_SHARE_LOCATION: "共有場所", UPLOAD_ERROR: "アップロード中に問題が発生しました。ファイルがサポートされていないか、大きすぎる可能性があります。", SHARE_LOCATION_ERROR: "場所を共有できません: ", LOADING: "読み込み中...", HUB_EMPTY: "あなたのチャット履歴がここに表示されます", HUB_SHOW_EARLIER: "以前のチャットを表示", INBOX_NO_CHATS_TITLE: "まだチャットがありません!", INBOX_NO_CHATS_BODY: "会話が1つ以上あると、ここに表示されます", ENABLE_TRANSLATION: "この会話を日本語に翻訳する", DISABLE_TRANSLATION: "オリジナルを表示", SEARCH_PLACEHOLDER_TEXT: "検索...", SEARCH_SEARCHING: "検索中...", SEARCH_NO_RESULTS: "結果が見つかりません", SEARCH_NO_MORE_RESULTS: "これ以上結果はありません", CHAT_NOT_FOUND: "チャットが見つかりませんでした", DELETE_MESSAGE: "メッセージを削除する", DELETION_EXPLANATION: "このメッセージを削除すると、全ての人に表示されなくなります。", EDIT_MESSAGE: "メッセージを編集する", SAVE: "上書き保存", EDITED_INDICATOR: "編集", REPLY_TO_MESSAGE: "返信する", ADD_REACTION: "リアクションを追加", AUTH_EXPIRED_OVERLAY_TITLE: "チャットセッションの有効期限が切れました", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "続けるにはページを更新してください", VOICE_MESSAGE: "ボイスメッセージ", CONTACT_INFORMATION_HIDDEN: "機密情報", LEAVE_CONVERSATION: "会話をやめる", MARK_CONVERSATION_AS_UNREAD: "未読としてマーク", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Ss = { code: "ka-GE", name: "Georgian", translation: { YESTERDAY: "გუშინ", TODAY: "დღეს", DAYS: "დღ", HOURS: "სთ", MINUTES: "წთ", JUST_NOW: "ახლა", LOCATION: "ადგილმდებარეობა", CANCEL: "გაუქმება", INBOX: "მიღებული შეტყობინება", DESKTOP_NOTIFICATIONS: "ბრაუზერის შეტყობინებები", DESKTOP_NOTIFICATIONS_ERROR: "შეუძლებელია ბრაუზერის შეტკობინებების ჩართვა. ეს ბრაუზერი ბლოკავს მათ. სცადე ცვლილება ოპციებიდან ან გამოიყენე სხვა ბრაუზერი.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} შეტყობინებების დემო ვერსია`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "თუ დატოვებ ბრაუზერის ფანჯარას გახსნილს, როცა ვიღაც მოგწერს საუბარი ამოვარდება დესკტოპზე.", SEND_BUTTON_TEXT: "გაგზავნა", ENTRYBOX_TEXT_LIMIT: "დაშვებულია მხოლოდ 10.000 სიმბოლო.", ENTRYBOX_PLACEHOLDER: "დაწერე რაღაც...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "ეს დიალოგი აღარ არის ხელმისაწვდომი.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "შეგიძლია წაიკითხო, მაგრამ ვერ გააგზავნი შეტყობინებას.", MESSAGELIST_LOADING_OLDER: "იტვირთება ძველი შეტყობინებები...", MESSAGELIST_SHOW_OLDER: "ძველი შეტყობინებების ჩვენება", MESSAGELIST_NEW_MARKER: "ახალი", MESSAGE_SENT_VIA_EMAIL: "ეს შეტყობინება გამოგზავნილია იმეილით", YOU_MARKER: "you", UPLOAD_IN_PROGRESS: "იტვირთება...", UPLOAD_SEND_FILE: "ფაილის გაგზავნა", UPLOAD_SHARE_LOCATION: "ადგილმდებარეობის გაზიარება", UPLOAD_ERROR: "პრობლემაა ატვირთვისას. ფაილის შესაძლოა არის არათავსებადი ან ძალიან დიდი.", SHARE_LOCATION_ERROR: "შეუძლებელია ადგილმდებარეობის გაზიარება: ", LOADING: "იტვირთება...", HUB_EMPTY: "საუბრების ისტორია გამოჩნდება აქ", HUB_SHOW_EARLIER: "წინა საუბრების ნახვა", INBOX_NO_CHATS_TITLE: "ჯერ-ჯერობით არ არის საუბრები!", INBOX_NO_CHATS_BODY: "უკვე დასრულებული საუბარები გამოჩნდება აქ", ENABLE_TRANSLATION: "თარგმნეთ ეს საუბარი ინგლისურად", DISABLE_TRANSLATION: "ორიგინალის ჩვენება", SEARCH_PLACEHOLDER_TEXT: "ძიება...", SEARCH_SEARCHING: "მიმდინარეობს ძიება...", SEARCH_NO_RESULTS: "შედეგები ვერ ქართველი", SEARCH_NO_MORE_RESULTS: "სხვა შედეგი ვერ მოიძებნა", CHAT_NOT_FOUND: "ჩატი ვერ მოიძებნა", DELETE_MESSAGE: "შეტყობინების წაშლა ", DELETION_EXPLANATION: "თუ ამ შეტყობინებას წაშლით, ის ყველასთვის გაქრება.", EDIT_MESSAGE: "შეტყობინების რედაქტირება", SAVE: "შენახვა", EDITED_INDICATOR: "რედაქტირებულია", REPLY_TO_MESSAGE: "პასუხის გაცემა", ADD_REACTION: "დაამატეთ რეაქცია", AUTH_EXPIRED_OVERLAY_TITLE: "თქვენი ჩეთის სესიის ვადა ამოიწურა", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "განაახლეთ გვერდი გასაგრძელებლად", VOICE_MESSAGE: "ხმოვანი შეტყობინება", CONTACT_INFORMATION_HIDDEN: "ფარული ინფორმაცია", LEAVE_CONVERSATION: "საუბრის დატოვება", MARK_CONVERSATION_AS_UNREAD: "წაუკითხავად მონიშვნა", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Is = { code: "ko-KR", name: "Korean (South Korea)", translation: { YESTERDAY: "어제", TODAY: "오늘", DAYS: "일 전", HOURS: "시간 전", MINUTES: "분 전", JUST_NOW: "방금", LOCATION: "위치", CANCEL: "취소", INBOX: "대화 목록", DESKTOP_NOTIFICATIONS: "브라우저 알림", DESKTOP_NOTIFICATIONS_ERROR: "브라우저 알림을 표시할 수 없습니다. 브라우저 설정을 확인하거나 다른 브라우저를 사용해주세요.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} 데모 알림`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "브라우저 탭을 열어 둔 상태에서 누군가 대화 할 때 이 팝업이 표시됩니다.", SEND_BUTTON_TEXT: "전송", ENTRYBOX_TEXT_LIMIT: "최대 10,000자까지 입력할 수 있습니다.", ENTRYBOX_PLACEHOLDER: "메세지를 입력하세요...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "채팅이 종료되었습니다.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "읽기만 가능하며 메시지를 보낼 수 없습니다.", MESSAGELIST_LOADING_OLDER: "이전 메시지 로드 중...", MESSAGELIST_SHOW_OLDER: "이전 메시지 표시", MESSAGELIST_NEW_MARKER: "새 메시지", MESSAGE_SENT_VIA_EMAIL: "이 메시지는 이메일을 통해 전송되었습니다.", YOU_MARKER: "나", UPLOAD_IN_PROGRESS: "업로드 중...", UPLOAD_SEND_FILE: "파일 전송", UPLOAD_SHARE_LOCATION: "위치 공유", UPLOAD_ERROR: "업로드가 실패했습니다. 파일이 지원되지 않거나 너무 클 수 있습니다.", SHARE_LOCATION_ERROR: "위치를 공유 할 수 없습니다: ", LOADING: "로드 중...", HUB_EMPTY: "채팅 기록이 여기에 표시됩니다", HUB_SHOW_EARLIER: "이전 채팅보기", INBOX_NO_CHATS_TITLE: "아직 채팅이 없습니다!", INBOX_NO_CHATS_BODY: "대화가 하나 이상 있으면 여기에 표시됩니다.", ENABLE_TRANSLATION: "이 대화를 한국어로 번역", DISABLE_TRANSLATION: "원본 표시", SEARCH_PLACEHOLDER_TEXT: "검색...", SEARCH_SEARCHING: "검색 중...", SEARCH_NO_RESULTS: "검색 결과 없음", SEARCH_NO_MORE_RESULTS: "추가 검색 결과 없음", CHAT_NOT_FOUND: "대화를 찾지 못했습니다", DELETE_MESSAGE: "메시지 삭제", DELETION_EXPLANATION: "이 메시지를 삭제하면 모든 사람이 볼 수 없게 됩니다.", EDIT_MESSAGE: "메시지 편집하기", SAVE: "저장", EDITED_INDICATOR: "편집", REPLY_TO_MESSAGE: "회신", ADD_REACTION: "반응 추가", AUTH_EXPIRED_OVERLAY_TITLE: "채팅 세션이 만료되었습니다", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "계속하려면 페이지를 새로고침하세요", VOICE_MESSAGE: "음성 메시지", CONTACT_INFORMATION_HIDDEN: "숨겨진 정보", LEAVE_CONVERSATION: "대화 떠나기", MARK_CONVERSATION_AS_UNREAD: "읽지 않은 상태로 표시", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Ns = { code: "nb-NO", name: "Norwegian (Bokmål)", translation: { YESTERDAY: "I går", TODAY: "I dag", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "Nå", LOCATION: "Plassering", CANCEL: "Avbryt", INBOX: "Innboks", DESKTOP_NOTIFICATIONS: "Nettleservarsler", DESKTOP_NOTIFICATIONS_ERROR: "Kan ikke aktivere Nettleservarsler fordi nettleseren din aktivt blokkerer dem. Prøv å se i innstillingene eller bruke en annen nettleser.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo varslinger`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Hvis du holder nettleservinduet åpent, vil du se dette varsel når noen snakker til deg.", SEND_BUTTON_TEXT: "Send", ENTRYBOX_TEXT_LIMIT: "Kun 10.000 tegn er tillatt.", ENTRYBOX_PLACEHOLDER: "Si noe...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Denne samtale er ikke lengre aktiv.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Du kan lese, men ikke sende meldinger.", MESSAGELIST_LOADING_OLDER: "Laster eldre meldinger...", MESSAGELIST_SHOW_OLDER: "Vis eldre meldinger", MESSAGELIST_NEW_MARKER: "Ny", MESSAGE_SENT_VIA_EMAIL: "Denne meldingen er sendt via e-post", YOU_MARKER: "deg", UPLOAD_IN_PROGRESS: "Laster opp...", UPLOAD_SEND_FILE: "Send fil", UPLOAD_SHARE_LOCATION: "Del din plassering", UPLOAD_ERROR: "Noe gikk galt i uplastingen. Det kan være filen ikke støttes eller for stor.", SHARE_LOCATION_ERROR: "Kan ikke dele plasseringen: ", LOADING: "Laster...", HUB_EMPTY: "Din chats historikk vil vises her", HUB_SHOW_EARLIER: "Vis tidligere chats", INBOX_NO_CHATS_TITLE: "Ingen chats enda!", INBOX_NO_CHATS_BODY: "Så snart du får en eller flere samtaler, vil de vises her.", ENABLE_TRANSLATION: "Oversett denne samtalen til norsk", DISABLE_TRANSLATION: "Vis original", SEARCH_PLACEHOLDER_TEXT: "Søk...", SEARCH_SEARCHING: "Søker...", SEARCH_NO_RESULTS: "Finner ingen resultater", SEARCH_NO_MORE_RESULTS: "Ingen flere resultater", CHAT_NOT_FOUND: "Chat ikke funnet", DELETE_MESSAGE: "Slett melding", DELETION_EXPLANATION: "Hvis du sletter denne meldingen, forsvinner den for alle.", EDIT_MESSAGE: "Rediger melding", SAVE: "Lagre", EDITED_INDICATOR: "redigert", REPLY_TO_MESSAGE: "Svar", ADD_REACTION: "Legg til reaksjon", AUTH_EXPIRED_OVERLAY_TITLE: "Chatøkten er utløpt", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Oppdater siden for å fortsette", VOICE_MESSAGE: "Lydmelding", CONTACT_INFORMATION_HIDDEN: "Skjult informasjon", LEAVE_CONVERSATION: "Forlat samtalen", MARK_CONVERSATION_AS_UNREAD: "Merk som ulest", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Rs = { code: "nl-NL", name: "Dutch", translation: { YESTERDAY: "Gisteren", TODAY: "Vandaag", DAYS: "d", HOURS: "u", MINUTES: "m", JUST_NOW: "zojuist", LOCATION: "Locatie", CANCEL: "Annuleren", INBOX: "Inbox", DESKTOP_NOTIFICATIONS: "Browsermeldingen", DESKTOP_NOTIFICATIONS_ERROR: "Browsermeldingen kunnen niet geactiveerd worden omdat de browser het blokkeert. Check de instellingen van je browser of probeer een andere browser.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo notificatie`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Als je je browser open houdt, zie je deze popup als iemand tegen je praat.", SEND_BUTTON_TEXT: "Verzenden", ENTRYBOX_TEXT_LIMIT: "Maximaal 10.000 tekens toegestaan.", ENTRYBOX_PLACEHOLDER: "Typ een bericht...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Dit gesprek is niet actief meer.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Je kunt geen berichten sturen.", MESSAGELIST_LOADING_OLDER: "Eerdere berichten laden...", MESSAGELIST_SHOW_OLDER: "Laad eerdere berichten", MESSAGELIST_NEW_MARKER: "Nieuw", MESSAGE_SENT_VIA_EMAIL: "Dit bericht is verstuurd via e-mail", YOU_MARKER: "jij", UPLOAD_IN_PROGRESS: "Uploaden...", UPLOAD_SEND_FILE: "Verzend bestand", UPLOAD_SHARE_LOCATION: "Deel locatie", UPLOAD_ERROR: "Er ging iets mis. Het bestand wordt niet ondersteund of is te groot.", SHARE_LOCATION_ERROR: "Locatie delen mislukt: ", LOADING: "Bezig met laden...", HUB_EMPTY: "Berichtengeschiedenis wordt hier weergegeven", HUB_SHOW_EARLIER: "Laat eerdere berichten zien", INBOX_NO_CHATS_TITLE: "Nog geen chats!", INBOX_NO_CHATS_BODY: "Zodra je een of meerdere conversaties hebt gehad, worden deze hier weergegeven.", ENABLE_TRANSLATION: "Vertaal dit gesprek naar het Nederlands", DISABLE_TRANSLATION: "Toon oorspronkelijk gesprek", SEARCH_PLACEHOLDER_TEXT: "Zoek...", SEARCH_SEARCHING: "Zoeken...", SEARCH_NO_RESULTS: "Geen resultaten gevonden", SEARCH_NO_MORE_RESULTS: "Niet meer resultaten", CHAT_NOT_FOUND: "Chat niet gevonden", DELETE_MESSAGE: "Bericht verwijderen", DELETION_EXPLANATION: "Als je dit bericht verwijdert, zal het voor iedereen verdwijnen.", EDIT_MESSAGE: "Bericht bewerken", SAVE: "Opslaan", EDITED_INDICATOR: "bewerkt", REPLY_TO_MESSAGE: "Beantwoorden", ADD_REACTION: "Reactie toevoegen", AUTH_EXPIRED_OVERLAY_TITLE: "Je chatsessie is verlopen", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Ververs de pagina om door te gaan", VOICE_MESSAGE: "Spraakbericht", CONTACT_INFORMATION_HIDDEN: "verborgen informatie", LEAVE_CONVERSATION: "Gesprek verlaten", MARK_CONVERSATION_AS_UNREAD: "Markeren als ongelezen", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Ls = { code: "pl-PL", name: "Polish", translation: { YESTERDAY: "Wczoraj", TODAY: "Dzisiaj", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "teraz", LOCATION: "Lokalizacja", CANCEL: "Anuluj", INBOX: "Skrzynka odbiorcza", DESKTOP_NOTIFICATIONS: "Powiadomienia", DESKTOP_NOTIFICATIONS_ERROR: "Nie można aktywować powiadomień, ponieważ twoja przeglądarka je blokuje. Proszę zmienić ustawienie lub spróbować innej przeglądarki.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} przykładowe powiadomienie`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Jeśli zostawisz tę kartę otwartą, zobaczysz takie powiadomienie, gdy ktoś napisze do Ciebie.", SEND_BUTTON_TEXT: "Wyślij", ENTRYBOX_TEXT_LIMIT: "Nie można wysyłać więcej niż 10000 znaków.", ENTRYBOX_PLACEHOLDER: "Napisz coś...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Ten czat nie jest aktywny.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Możesz czytać wiadomości, ale nie możesz ich wysyłać.", MESSAGELIST_LOADING_OLDER: "Wczytuję starsze wiadomości...", MESSAGELIST_SHOW_OLDER: "Zobacz starsze wiadomości", MESSAGELIST_NEW_MARKER: "Nowe", MESSAGE_SENT_VIA_EMAIL: "Ta wiadomość została wysłana przez email.", YOU_MARKER: "ty", UPLOAD_IN_PROGRESS: "Przesyłanie...", UPLOAD_SEND_FILE: "Prześlij plik", UPLOAD_SHARE_LOCATION: "Udostępnij lokalizację", UPLOAD_ERROR: "Coś poszło nie tak. Plik może być zbyt duży lub jest nieobsługiwany.", SHARE_LOCATION_ERROR: "Nie da się udostępnić lokalizacji: ", LOADING: "Ładowanie...", HUB_EMPTY: "Twoje czaty pojawią się tutaj", HUB_SHOW_EARLIER: "Zobacz starsze czaty", INBOX_NO_CHATS_TITLE: "Brak czatów!", INBOX_NO_CHATS_BODY: "Rozpoczęte konwersacje pojawią się tutaj.", ENABLE_TRANSLATION: "Przetłumacz tę konwersację na język polski", DISABLE_TRANSLATION: "Pokaż oryginał", SEARCH_PLACEHOLDER_TEXT: "Wyszukaj...", SEARCH_SEARCHING: "Wyszukiwanie...", SEARCH_NO_RESULTS: "Nie znaleziono wyników", SEARCH_NO_MORE_RESULTS: "Nie ma innych wyników", CHAT_NOT_FOUND: "Nie znaleziono konwersacji", DELETE_MESSAGE: "Usuń wiadomość", DELETION_EXPLANATION: "Jeśli usuniesz tę wiadomość, przestanie być widoczna dla wszystkich.", EDIT_MESSAGE: "Edytuj wiadomość", SAVE: "Zapisz", EDITED_INDICATOR: "edytowano", REPLY_TO_MESSAGE: "Odpowiedz", ADD_REACTION: "Dodaj reakcję", AUTH_EXPIRED_OVERLAY_TITLE: "Twoja sesja wygasła", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Odśwież stronę, aby kontynuować", VOICE_MESSAGE: "Wiadomość głosowa", CONTACT_INFORMATION_HIDDEN: "Ukryte informacje", LEAVE_CONVERSATION: "Opuść konwersację", MARK_CONVERSATION_AS_UNREAD: "Oznacz jako nieprzeczytane", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, ms = { code: "pt-BR", name: "Portuguese (Brazil)", translation: { YESTERDAY: "Ontem", TODAY: "Hoje", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "agora mesmo", LOCATION: "Localização", CANCEL: "Cancelar", INBOX: "Caixa de entrada", DESKTOP_NOTIFICATIONS: "Notificações do navegador", DESKTOP_NOTIFICATIONS_ERROR: "Não é possível ativar as notificações da navegador porque seu navegador as bloqueia. Tente procurar nas configurações ou usar um navegador diferente.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} notificação de demonstração`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Se você mantiver a guia do navegador aberta, verá essa mensagem quando alguém falar com você.", SEND_BUTTON_TEXT: "Enviar", ENTRYBOX_TEXT_LIMIT: "Apenas 10.000 caracteres são permitidos.", ENTRYBOX_PLACEHOLDER: "Diga algo...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Esta conversa não está mais ativa.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Você pode ler, mas não enviar mensagens.", MESSAGELIST_LOADING_OLDER: "Carregando mensagens antigas...", MESSAGELIST_SHOW_OLDER: "Mostrar mensagens mais antigas", MESSAGELIST_NEW_MARKER: "Novo", MESSAGE_SENT_VIA_EMAIL: "Esta mensagem foi enviada via email.", YOU_MARKER: "Você", UPLOAD_IN_PROGRESS: "Carregando...", UPLOAD_SEND_FILE: "Enviar arquivo", UPLOAD_SHARE_LOCATION: "Compartilhar localização", UPLOAD_ERROR: "Algo deu errado ao fazer o upload. O arquivo pode não ter suporte ou ser muito grande.", SHARE_LOCATION_ERROR: "Não é possível compartilhar o local: ", LOADING: "Carregando...", HUB_EMPTY: "Seu histórico de conversas será exibido aqui", HUB_SHOW_EARLIER: "Mostrar conversas anteriores", INBOX_NO_CHATS_TITLE: "Ainda não há chats!", INBOX_NO_CHATS_BODY: "Depois de ter uma ou mais conversas, elas serão exibidas aqui.", ENABLE_TRANSLATION: "Traduzir esta conversa para português", DISABLE_TRANSLATION: "Ver a conversa não traduzida", SEARCH_PLACEHOLDER_TEXT: "Busca...", SEARCH_SEARCHING: "Consultando...", SEARCH_NO_RESULTS: "Resultados nao encontrados", SEARCH_NO_MORE_RESULTS: "Não há mais resultados", CHAT_NOT_FOUND: "Conversa não encontrada", DELETE_MESSAGE: "Excluir mensagem", DELETION_EXPLANATION: "Se você excluir esta mensagem, ela desaparecerá para todos.", EDIT_MESSAGE: "Editar mensagem", SAVE: "Salvar", EDITED_INDICATOR: "editada", REPLY_TO_MESSAGE: "Responder", ADD_REACTION: "Adicionar reação", AUTH_EXPIRED_OVERLAY_TITLE: "Sua sessão de chat expirou", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Atualize a página para continuar", VOICE_MESSAGE: "Mensagem de voz", LEAVE_CONVERSATION: "Sair da conversa", MARK_CONVERSATION_AS_UNREAD: "Marcar como não lida", CONTACT_INFORMATION_HIDDEN: "Informação oculta", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Cs = { code: "ro-RO", name: "Romanian (Romania)", translation: { YESTERDAY: "Ieri", TODAY: "Astăzi", DAYS: "z", HOURS: "o", MINUTES: "m", JUST_NOW: "chiar acum", LOCATION: "Locație", CANCEL: "Anulare", INBOX: "Inbox", DESKTOP_NOTIFICATIONS: "Notificări browser", DESKTOP_NOTIFICATIONS_ERROR: "Nu se pot activa notificări browser deoarece browserul dvs. le blochează în mod activ. Încercați să căutați în setări sau utilizând un alt browser.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `Notificare de debit ${e}`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Dacă țineți fișa browserului deschis, veți vedea acest pop-up atunci când cineva vorbește cu dvs.", SEND_BUTTON_TEXT: "Trimiteți", ENTRYBOX_TEXT_LIMIT: "Sunt permise numai 10.000 de caractere.", ENTRYBOX_PLACEHOLDER: "Spune ceva...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Această conversație nu mai este activă.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Puteți citi, dar nu puteți trimite mesaje.", MESSAGELIST_LOADING_OLDER: "Încărcarea mesajelor mai vechi...", MESSAGELIST_SHOW_OLDER: "Afișați mesaje mai vechi", MESSAGELIST_NEW_MARKER: "Nou", MESSAGE_SENT_VIA_EMAIL: "Acest mesaj a fost trimis prin e-mail", YOU_MARKER: "voi", UPLOAD_IN_PROGRESS: "Încărcarea...", UPLOAD_SEND_FILE: "Trimiteți fișierul", UPLOAD_SHARE_LOCATION: "Distribuiți locația", UPLOAD_ERROR: "Sa încărcat ceva în mod greșit. Fișierul ar putea fi neacceptat sau prea mare.", SHARE_LOCATION_ERROR: "Nu se poate partaja locația: ", LOADING: "Încărcare...", HUB_EMPTY: "Istoricul chat-ului dvs. va apărea aici", HUB_SHOW_EARLIER: "Afișați discuțiile anterioare", INBOX_NO_CHATS_TITLE: "Încă nu vorbești!", INBOX_NO_CHATS_BODY: "După ce ați avut una sau mai multe conversații, acestea vor apărea aici.", ENABLE_TRANSLATION: "Traduceți această conversație în română", DISABLE_TRANSLATION: "Arată originalul", SEARCH_PLACEHOLDER_TEXT: "Căutare...", SEARCH_SEARCHING: "Se caută...", SEARCH_NO_RESULTS: "Nu s-au găsit rezultate", SEARCH_NO_MORE_RESULTS: "Nu mai există rezultate", CHAT_NOT_FOUND: "Conversația nu a fost găsită", DELETE_MESSAGE: "Șterge mesajul", DELETION_EXPLANATION: "Dacă ștergi acest mesaj, acesta va dispărea pentru toată lumea.", EDIT_MESSAGE: "Redactează mesajul", SAVE: "Salvare", EDITED_INDICATOR: "editat", REPLY_TO_MESSAGE: "Răspundeți", ADD_REACTION: "Adaugă o reacție", AUTH_EXPIRED_OVERLAY_TITLE: "Sesiunea dumneavoastră de chat a expirat", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Reîmprospătați pagina pentru a continua", VOICE_MESSAGE: "Mesaj vocal", CONTACT_INFORMATION_HIDDEN: "Informații ascunse", LEAVE_CONVERSATION: "Părăsește conversația", MARK_CONVERSATION_AS_UNREAD: "Marcheaza ca necitit", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, ps = { code: "ru-RU", name: "Russian", translation: { YESTERDAY: "Вчера", TODAY: "Сегодня", DAYS: "д", HOURS: "ч", MINUTES: "м", JUST_NOW: "только что", LOCATION: "Местоположение", CANCEL: "Отмена", INBOX: "Входящие", DESKTOP_NOTIFICATIONS: "Оповещения", DESKTOP_NOTIFICATIONS_ERROR: "Невозможно включить оповещения, потому что ваш браузер активно блокирует их. Проверьте ваши настройки или попробуйте другой браузер.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} демо-оповещение`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Если вкладка вашего браузера открыта, вы увидите всплывающее окошко оповещения когда кто-то отправит вам сообщение.", SEND_BUTTON_TEXT: "Отправить", ENTRYBOX_TEXT_LIMIT: "Разрешено использовать только 10 тысяч символов.", ENTRYBOX_PLACEHOLDER: "Напишите что-нибудь...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Этот разговор больше неактивен.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Вы можете читать, но не отправлять сообщения.", MESSAGELIST_LOADING_OLDER: "Загрузка старых сообщения...", MESSAGELIST_SHOW_OLDER: "Показать старые сообщения", MESSAGELIST_NEW_MARKER: "Новые", MESSAGE_SENT_VIA_EMAIL: "Это сообщение было отправлено по электронной почте", YOU_MARKER: "вы", UPLOAD_IN_PROGRESS: "Загрузка...", UPLOAD_SEND_FILE: "Отправить файл", UPLOAD_SHARE_LOCATION: "Поделиться местоположением", UPLOAD_ERROR: "Что-то пошло не так: такой файл не поддерживается или он слишком большой.", SHARE_LOCATION_ERROR: "Не удается поделиться местоположением: ", LOADING: "Загрузка...", HUB_EMPTY: "Здесь появится ваша история чата", HUB_SHOW_EARLIER: "Показать предыдущие чаты", INBOX_NO_CHATS_TITLE: "Пока нет чатов!", INBOX_NO_CHATS_BODY: "Как только у вас будет один или несколько разговоров, они появятся здесь.", ENABLE_TRANSLATION: "Переведите этот разговор на русский", DISABLE_TRANSLATION: "Show source", SEARCH_PLACEHOLDER_TEXT: "поиск...", SEARCH_SEARCHING: "Поиск...", SEARCH_NO_RESULTS: "Результаты не найдены", SEARCH_NO_MORE_RESULTS: "Больше результатов нет", CHAT_NOT_FOUND: "Чат не найден", DELETE_MESSAGE: "Удалить сообщение", DELETION_EXPLANATION: "Если вы удалите это сообщение, оно исчезнет для всех.", EDIT_MESSAGE: "Изменить сообщение", SAVE: "сохранить", EDITED_INDICATOR: "изменено", REPLY_TO_MESSAGE: "Ответить", ADD_REACTION: "Добавить реакцию", AUTH_EXPIRED_OVERLAY_TITLE: "Срок действия вашего сеанса чата истек", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Обновите страницу, чтобы продолжить", VOICE_MESSAGE: "Голосовое сообщение", CONTACT_INFORMATION_HIDDEN: "Информация скрыта", LEAVE_CONVERSATION: "Выйти из беседы", MARK_CONVERSATION_AS_UNREAD: "Отметить как непрочитанное", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, hs = { code: "sq-AL", name: "Albanian", translation: { YESTERDAY: "Dje", TODAY: "Sot", DAYS: "d", HOURS: "o", MINUTES: "m", JUST_NOW: "Tani", LOCATION: "Pozicion", CANCEL: "Anulo", INBOX: "Inbox", DESKTOP_NOTIFICATIONS: "Njoftimet e shfletuesit", DESKTOP_NOTIFICATIONS_ERROR: "Nuk mund të aktivizohen njoftimet në shfletues sepse shfletuesi juaj i bllokon ato në mënyrë aktive. Provoni të shikoni cilësimet ose përdorni një shfletues të ndryshëm.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} njoftime në desktop`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Lënia e skedës së shfletuesit tuaj të hapur do të pop-up kur dikush flet me ju.", SEND_BUTTON_TEXT: "Dërgo", ENTRYBOX_TEXT_LIMIT: "Lejohen vetëm 10,000 karaktere", ENTRYBOX_PLACEHOLDER: "Thuaj diçka...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Kjo bisedë nuk është më aktive.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Mund të lexoni por jo të dërgoni mesazhe.", MESSAGELIST_LOADING_OLDER: "Duke ngarkuar mesazhe më të vjetra...", MESSAGELIST_SHOW_OLDER: "Trego mesazhe më të vjetra", MESSAGELIST_NEW_MARKER: "E ri", MESSAGE_SENT_VIA_EMAIL: "Ky mesazh u dërgua si email", YOU_MARKER: "ti", UPLOAD_IN_PROGRESS: "Ngarkim...", UPLOAD_SEND_FILE: "Dërgo datotekën", UPLOAD_SHARE_LOCATION: "Ndani lokacionin", UPLOAD_ERROR: "Na vjen keq, diçka nuk shkoi si duhet. Dosja mund të mos ket mbështetje ose mund të jetë shumë e madhe.", SHARE_LOCATION_ERROR: "Nuk mund të ndahet lokacioni: ", LOADING: "Ngarkim...", HUB_EMPTY: "Këtu do të paraqitet/ shfaqet historia e bisedës tuaj", HUB_SHOW_EARLIER: "Shfaqi bisedat e mëparshme", INBOX_NO_CHATS_TITLE: "Nuk ka biseda!", INBOX_NO_CHATS_BODY: "Pasi të keni një ose më shumë biseda, ato do të paraqiten/shfaqen këtu.", ENABLE_TRANSLATION: "Përkthejeni këtë bisedë në shqiptare", DISABLE_TRANSLATION: "Shikoni origjinalin", SEARCH_PLACEHOLDER_TEXT: "Kërko...", SEARCH_SEARCHING: "Kërko...", SEARCH_NO_RESULTS: "Nuk ka rezultate", SEARCH_NO_MORE_RESULTS: "Nuk ka më rezultate", CHAT_NOT_FOUND: "Biseda nuk u gjet", DELETE_MESSAGE: "Fshi mesazhin", DELETION_EXPLANATION: "Nëse e fshini këtë mesazh, ai do të zhduket për të gjithë.", EDIT_MESSAGE: "Redakto mesazhin", SAVE: "Ruaj", EDITED_INDICATOR: "redaktuar", REPLY_TO_MESSAGE: "Përgjigj", ADD_REACTION: "Shtoni reagimin", AUTH_EXPIRED_OVERLAY_TITLE: "Sesioni juaj i bisedës ka skaduar", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Rifresko faqen për të vazhduar", VOICE_MESSAGE: "Mesazh zanor", CONTACT_INFORMATION_HIDDEN: "informacione të fshehura", LEAVE_CONVERSATION: "Largohu nga bashkëbisedimi", MARK_CONVERSATION_AS_UNREAD: "Shëno si të palexuar", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, gs = { code: "sr-SP", name: "Serbian", translation: { YESTERDAY: "Juče", TODAY: "Danas", DAYS: "d", HOURS: "s", MINUTES: "m", JUST_NOW: "Upravo sad", LOCATION: "Lokacija", CANCEL: "Otkaži", INBOX: "Pretinac", DESKTOP_NOTIFICATIONS: "Browser Notifikacija", DESKTOP_NOTIFICATIONS_ERROR: "Browser notifikacije nisu omogućene jer ih vaš pregledač aktivno blokira. Pokušajte pogledati postavke ili koristiti neki drugi pregledač.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demo notifikacija`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Ako karticu pregledača ostavite otvorenu, pojaviće se ovaj pop-up kada neko razgovara s vama.", SEND_BUTTON_TEXT: "Pošalji", ENTRYBOX_TEXT_LIMIT: "Dozvoljeno je samo 10.000 znakova.", ENTRYBOX_PLACEHOLDER: "Kaži nešto...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Ovaj razgovor više nije aktivan.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Možete da čitate, ali ne i da šaljete poruke.", MESSAGELIST_LOADING_OLDER: "Učitavam starije poruke...", MESSAGELIST_SHOW_OLDER: "Prikaži starije poruke", MESSAGELIST_NEW_MARKER: "Novo", MESSAGE_SENT_VIA_EMAIL: "Ova poruka je poslana imejlom", YOU_MARKER: "ti", UPLOAD_IN_PROGRESS: "Učitavam...", UPLOAD_SEND_FILE: "Pošalji datoteku", UPLOAD_SHARE_LOCATION: "Podeli lokaciju", UPLOAD_ERROR: "Nažalost, nešto je pošlo krivo. Datoteka možda nije podržana ili je prevelika.", SHARE_LOCATION_ERROR: "Nije moguće podeliti lokaciju: ", LOADING: "Učitavam...", HUB_EMPTY: "Ovde će biti prikazana istorija razgovora", HUB_SHOW_EARLIER: "Prikaži ranije razgovore", INBOX_NO_CHATS_TITLE: "Nema razgovora!", INBOX_NO_CHATS_BODY: "Nakon što vodite jedan ili više razgovora, oni će se pojaviti ovde.", ENABLE_TRANSLATION: "Prevedi ovaj razgovor na srpski jezik", DISABLE_TRANSLATION: "Prikaži original", SEARCH_PLACEHOLDER_TEXT: "Pretraži...", SEARCH_SEARCHING: "Pretraživanje...", SEARCH_NO_RESULTS: "Nema rezultata", SEARCH_NO_MORE_RESULTS: "Nema više rezultata", CHAT_NOT_FOUND: "Ćaskanje nije pronađeno", DELETE_MESSAGE: "Izbriši poruku", DELETION_EXPLANATION: "Ako obrišete ovu poruku, ona neće biti vidljiva ni za koga.", EDIT_MESSAGE: "Ispravi poruku", SAVE: "Sačuvaj", EDITED_INDICATOR: "ispravljeno", REPLY_TO_MESSAGE: "Odgovorite", ADD_REACTION: "Dodaj reakciju", AUTH_EXPIRED_OVERLAY_TITLE: "Vaša sesija ćaskanja je istekla", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Osvežite stranicu da biste nastavili", VOICE_MESSAGE: "Glasovna poruka", CONTACT_INFORMATION_HIDDEN: "Sakrivene informacije", LEAVE_CONVERSATION: "Napusti razgovor", MARK_CONVERSATION_AS_UNREAD: "Označi kao nepročitanu", REPLY_TO_ARIA_LABEL: (e, t) => `Odgovarate korisniku ${e}: ${t}`, REPLY_MODE_LEAVE_ARIA_LABEL: "Izađi iz moda pisanja odgovora", STATUS_INDICATOR_ONLINE: "Aktivan", STATUS_INDICATOR_OFFLINE: "Neaktivan" } }, Fs = { code: "sv-SE", name: "Swedish (Sweden)", translation: { YESTERDAY: "Igår", TODAY: "Idag", DAYS: "d", HOURS: "h", MINUTES: "m", JUST_NOW: "just nu", LOCATION: "Plats", CANCEL: "Avbryt", INBOX: "Inkorg", DESKTOP_NOTIFICATIONS: "Webbläsarnotiser", DESKTOP_NOTIFICATIONS_ERROR: "Kan inte aktivera webbläsarnotiser eftersom din webbläsare aktivt blockerar dem. Se över inställningarna eller använd en annan webbläsare.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} demonotis`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Om du har fliken i webbläsaren öppen så kommer den här notisen visas när någon pratar med dig.", SEND_BUTTON_TEXT: "Skicka", ENTRYBOX_TEXT_LIMIT: "Max 10 000 tecken är tillåtet.", ENTRYBOX_PLACEHOLDER: "Skriv ett meddelande...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Den här konversationen är inte längre aktiv.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Du kan läsa men inte skicka meddelanden.", MESSAGELIST_LOADING_OLDER: "Läser in tidigare meddelanden...", MESSAGELIST_SHOW_OLDER: "Visa tidigare meddelanden", MESSAGELIST_NEW_MARKER: "Nytt", MESSAGE_SENT_VIA_EMAIL: "Detta meddelande skickades via e-post", YOU_MARKER: "du", UPLOAD_IN_PROGRESS: "Laddar upp...", UPLOAD_SEND_FILE: "Skicka fil", UPLOAD_SHARE_LOCATION: "Dela plats", UPLOAD_ERROR: "Något gick fel vid uppladdningen. Filen kan vara av en typ som inte stöds eller är för stor.", SHARE_LOCATION_ERROR: "Kan inte dela plats: ", LOADING: "Laddar...", HUB_EMPTY: "Din chatthistorik kommer att visas här", HUB_SHOW_EARLIER: "Visa tidigare chattar", INBOX_NO_CHATS_TITLE: "Inga chattar ännu!", INBOX_NO_CHATS_BODY: "När du har haft en eller flera konversationer kommer de att visas här.", ENABLE_TRANSLATION: "Översätt den här konversationen till svenska", DISABLE_TRANSLATION: "Visa original", SEARCH_PLACEHOLDER_TEXT: "Sök...", SEARCH_SEARCHING: "Söker...", SEARCH_NO_RESULTS: "Inga resultat hittades", SEARCH_NO_MORE_RESULTS: "Inga fler resultat", CHAT_NOT_FOUND: "Chatten hittades inte", DELETE_MESSAGE: "Radera meddelandet", DELETION_EXPLANATION: "Om du raderar det här meddelandet försvinner det för alla.", EDIT_MESSAGE: "Redigera meddelandet", SAVE: "Spara", EDITED_INDICATOR: "redigerad", REPLY_TO_MESSAGE: "Svara", ADD_REACTION: "Lägg till reaktion", AUTH_EXPIRED_OVERLAY_TITLE: "Din chatsession har gått ut", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Uppdatera sidan för att fortsätta", VOICE_MESSAGE: "Röstmeddelande", CONTACT_INFORMATION_HIDDEN: "Dold information", LEAVE_CONVERSATION: "Lämna konversationen", MARK_CONVERSATION_AS_UNREAD: "Markera som oläst", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, vs = { code: "tr-TR", name: "Turkish", translation: { YESTERDAY: "Dün", TODAY: "Bugün", DAYS: "g", HOURS: "s", MINUTES: "d", JUST_NOW: "az önce", LOCATION: "Konum", CANCEL: "İptal", INBOX: "Gelen Kutusu", SEND_BUTTON_TEXT: "Gönder", ENTRYBOX_TEXT_LIMIT: "En fazla 10.000 karaktere izin veriliyor.", ENTRYBOX_PLACEHOLDER: "Bir şeyler söyle...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Bu konuşma artık aktif değil.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Mesajları okuyabilirsiniz ancak mesaj gönderemezsiniz.", MESSAGELIST_LOADING_OLDER: "Eski mesajlar yükleniyor...", MESSAGELIST_SHOW_OLDER: "Eski mesajları göster", MESSAGELIST_NEW_MARKER: "Yeni", DESKTOP_NOTIFICATIONS: "Tarayıcı bildirimleri", DESKTOP_NOTIFICATIONS_ERROR: "Tarayıcınız aktif olarak engellediğinden tarayıcı bildirimlerini etkinleştiremiyoruz. Ayarları kontrol etmeyi veya farklı bir tarayıcı kullanmayı deneyebilirsiniz.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} test bildirimi`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Eğer tarayıcınızın penceresini açık tutarsanız biri mesaj yazdığında bu bildirimi göreceksiniz.", MESSAGE_SENT_VIA_EMAIL: "Bu mesaj e-posta ile gönderilmiştir.", YOU_MARKER: "siz", UPLOAD_IN_PROGRESS: "Yükleniyor...", UPLOAD_SEND_FILE: "Dosya gönder", UPLOAD_SHARE_LOCATION: "Konum paylaş", UPLOAD_ERROR: "Yükleme sırasında bir şeyler yanlış gitti. Dosya desteklenmiyor veya izin verilenden büyük olabilir.", SHARE_LOCATION_ERROR: "Konum paylaşılamadı: ", LOADING: "Yükleniyor...", HUB_EMPTY: "Konuşma geçmişiniz burada görünecek", HUB_SHOW_EARLIER: "Önceki konuşmaları göster", INBOX_NO_CHATS_TITLE: "Henüz konuşma yok!", INBOX_NO_CHATS_BODY: "Bir veya daha fazla konuşma başlattığınız konuşmalar burada belirecek.", ENABLE_TRANSLATION: "Bu konuşmayı Türkçe'ye çevir", DISABLE_TRANSLATION: "Orijinali göster", SEARCH_PLACEHOLDER_TEXT: "Ara...", SEARCH_SEARCHING: "Arıyor...", SEARCH_NO_RESULTS: "Sonuç bulunamadı", SEARCH_NO_MORE_RESULTS: "Başka sonuç bulunamadı.", CHAT_NOT_FOUND: "Sohbet bulunamadı", DELETE_MESSAGE: "Mesajı sil", DELETION_EXPLANATION: "Bu mesajı silerseniz herkes için görünmez olacaktır.", EDIT_MESSAGE: "Mesajı düzenle", SAVE: "Kaydet", EDITED_INDICATOR: "düzenlenmiş", REPLY_TO_MESSAGE: "Yanıtla", ADD_REACTION: "Tepki ekle", AUTH_EXPIRED_OVERLAY_TITLE: "Sohbet oturumunuz sona erdi", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Devam etmek için sayfayı yenileyin", VOICE_MESSAGE: "Sesli mesaj", CONTACT_INFORMATION_HIDDEN: "Gizli bilgi", LEAVE_CONVERSATION: "Konuşmadan ayrıl", MARK_CONVERSATION_AS_UNREAD: "Okunmamış olarak işaretle", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, fs = { code: "uk-UA", name: "Ukrainian (Ukraine)", translation: { YESTERDAY: "Вчора", TODAY: "Сьогодні", DAYS: "d", HOURS: "h", MINUTES: "м", JUST_NOW: "просто зараз", LOCATION: "Місцезнаходження", CANCEL: "Скасувати", INBOX: "Вхідні", DESKTOP_NOTIFICATIONS: "Сповіщення в браузері", DESKTOP_NOTIFICATIONS_ERROR: "Неможливо ввімкнути сповіщення в браузері, оскільки ваш веб-переглядач активно їх блокує. Спробуйте переглянути налаштування або використовувати інший браузер.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `Демо-повідомлення про ${e}`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Якщо ви відкриєте вкладку веб-переглядача відкритою, ви побачите це спливаюче вікно, коли хтось спілкується з вами.", SEND_BUTTON_TEXT: "Надіслати", ENTRYBOX_TEXT_LIMIT: "Дозволено лише 10 000 символів.", ENTRYBOX_PLACEHOLDER: "Скажи щось...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Ця розмова більше не активна.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Ви можете читати, але не надсилати повідомлення.", MESSAGELIST_LOADING_OLDER: "Завантаження старих повідомлень...", MESSAGELIST_SHOW_OLDER: "Показати старіші повідомлення", MESSAGELIST_NEW_MARKER: "Нові", MESSAGE_SENT_VIA_EMAIL: "Це повідомлення надіслано електронною поштою", YOU_MARKER: "ти", UPLOAD_IN_PROGRESS: "Завантаження...", UPLOAD_SEND_FILE: "Надіслати файл", UPLOAD_SHARE_LOCATION: "Поділитися місцезнаходженням", UPLOAD_ERROR: "На жаль, під час завантаження щось не вдалось. Файл може бути непідтримуваним або занадто великим.", SHARE_LOCATION_ERROR: "Неможливо поділити місцезнаходження: ", LOADING: "Завантаження...", HUB_EMPTY: "Тут відобразиться ваша історія чатів", HUB_SHOW_EARLIER: "Показати попередні чати", INBOX_NO_CHATS_TITLE: "Чатів ще немає!", INBOX_NO_CHATS_BODY: "Після того, як ви проведете одну чи кілька бесід, вони з’являться тут.", ENABLE_TRANSLATION: "Перекласти цю розмову англійською", DISABLE_TRANSLATION: "Показати оригінал", SEARCH_PLACEHOLDER_TEXT: "Пошук...", SEARCH_SEARCHING: "Пошук...", SEARCH_NO_RESULTS: "Не знайдено результатів", SEARCH_NO_MORE_RESULTS: "Більше немає результатів", CHAT_NOT_FOUND: "Чат не знайдено", DELETE_MESSAGE: "Видалити повідомлення", DELETION_EXPLANATION: "Якщо ви видалите це повідомлення, воно зникне для всіх.", EDIT_MESSAGE: "Редагувати повідомлення", SAVE: "Зберегти", EDITED_INDICATOR: "відредаговано", REPLY_TO_MESSAGE: "Відповісти", ADD_REACTION: "Додати реакцію", AUTH_EXPIRED_OVERLAY_TITLE: "Ваша сесія в чаті закінчилась", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Оновіть сторінку, щоб продовжити", VOICE_MESSAGE: "Голосове повідомлення", CONTACT_INFORMATION_HIDDEN: "Прихована інформація", LEAVE_CONVERSATION: "Залишити розмову", MARK_CONVERSATION_AS_UNREAD: "Відзначити як непрочитане", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, ks = { code: "vi-VN", name: "Vietnamese", translation: { YESTERDAY: "Hôm qua", TODAY: "Hôm nay", DAYS: "ngày", HOURS: "giờ", MINUTES: "phút", JUST_NOW: "vừa xong", LOCATION: "Địa điểm", CANCEL: "Hủy", INBOX: "Hộp thư đến", DESKTOP_NOTIFICATIONS: "Thông báo trình duyệt", DESKTOP_NOTIFICATIONS_ERROR: "Không thể bật thông báo trên trình duyệt vì trình duyệt của bạn đang tắt chức năng này. Hãy thử tìm trong cài đặt trình duyệt hoặc sử dụng một trình duyệt khác.", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} thông báo thử nghiệm`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "Nếu bạn giữ tab trình duyệt của bạn mở, bạn sẽ thấy cửa sổ bật lên khi ai đó nói chuyện với bạn.", SEND_BUTTON_TEXT: "Gửi", ENTRYBOX_TEXT_LIMIT: "Tối đa 10.000 ký tự.", ENTRYBOX_PLACEHOLDER: "Nói gì đó...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "Cuộc hội thoại này không còn hoạt động.", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "Bạn có thể đọc, nhưng không thể gửi tin nhắn.", MESSAGELIST_LOADING_OLDER: "Đang tải tin nhắn cũ...", MESSAGELIST_SHOW_OLDER: "Hiển thị tin nhắn trước đó", MESSAGELIST_NEW_MARKER: "Mới", MESSAGE_SENT_VIA_EMAIL: "Tin nhắn này đã được gửi qua email", YOU_MARKER: "bạn", UPLOAD_IN_PROGRESS: "Đang tải lên...", UPLOAD_SEND_FILE: "Gửi tệp", UPLOAD_SHARE_LOCATION: "Chia sẻ vị trí", UPLOAD_ERROR: "Thật không may, quá trình tải lên không thành công. Tệp không được hỗ trợ hoặc quá lớn.", SHARE_LOCATION_ERROR: "Không thể chia sẻ vị trí: ", LOADING: "Đang tải...", HUB_EMPTY: "Lịch sử trò chuyện của bạn sẽ hiển thị ở đây", HUB_SHOW_EARLIER: "Hiển thị các cuộc trò chuyện trước đó", INBOX_NO_CHATS_TITLE: "Chưa có cuộc trò chuyện nào!", INBOX_NO_CHATS_BODY: "Khi bạn đã có một hoặc nhiều cuộc trò chuyện, chúng sẽ hiển thị ở đây.", ENABLE_TRANSLATION: "Dịch cuộc hội thoại sang Tiếng Việt", DISABLE_TRANSLATION: "Hiển thị nội dung gốc", SEARCH_PLACEHOLDER_TEXT: "TÌm kiếm...", SEARCH_SEARCHING: "Đang tìm kiếm...", SEARCH_NO_RESULTS: "Không tìm thấy kết quả nào", SEARCH_NO_MORE_RESULTS: "Không có kết quả nào khác", CHAT_NOT_FOUND: "Không tìm thấy cuộc trò chuyện", DELETE_MESSAGE: "Xóa tin nhắn", DELETION_EXPLANATION: "Nếu bạn xóa tin nhắn này, tất cả mọi người sẽ không còn thấy nó.", EDIT_MESSAGE: "Chỉnh sửa tin nhắn", SAVE: "lưu", EDITED_INDICATOR: "đã chỉnh sửa", REPLY_TO_MESSAGE: "đáp lại", ADD_REACTION: "Thêm biểu tượng cảm xúc", AUTH_EXPIRED_OVERLAY_TITLE: "Phiên trò chuyện của bạn đã hết hạn", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "Hãy làm mới trang để tiếp tục", VOICE_MESSAGE: "Tin nhắn thoại", CONTACT_INFORMATION_HIDDEN: "Thông tin ẩn", LEAVE_CONVERSATION: "Thoát khỏi cuộc trò chuyện", MARK_CONVERSATION_AS_UNREAD: "Đánh dấu là chưa đọc", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Ms = { code: "zh-CN", name: "Chinese (Simplified)", translation: { YESTERDAY: "昨天", TODAY: "今天", DAYS: "天", HOURS: "小时", MINUTES: "分钟", JUST_NOW: "刚才", LOCATION: "地点", CANCEL: "取消", INBOX: "收件箱", DESKTOP_NOTIFICATIONS: "浏览器通知", DESKTOP_NOTIFICATIONS_ERROR: "因浏览器设置为阻止,所以无法激活浏览器提醒。请去设置里查看或者尝试其他的浏览器。", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} 演示提醒`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "只要保持浏览器开着,如果有人和你对话,将会自动弹出对话窗口。", SEND_BUTTON_TEXT: "发送", ENTRYBOX_TEXT_LIMIT: "不超过10,000个字符。", ENTRYBOX_PLACEHOLDER: "写点什么吧……", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "该对话已结束。", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "你只能阅读信息,不能发送信息。", MESSAGELIST_LOADING_OLDER: "载入之前的信息……", MESSAGELIST_SHOW_OLDER: "显示之前的信息", MESSAGELIST_NEW_MARKER: "新消息", MESSAGE_SENT_VIA_EMAIL: "该信息已通过邮件发送。", YOU_MARKER: "你", UPLOAD_IN_PROGRESS: "上传中……", UPLOAD_SEND_FILE: "发送文件", UPLOAD_SHARE_LOCATION: "分享地址", UPLOAD_ERROR: "上传出错。文件格式不支持或者太大。", SHARE_LOCATION_ERROR: "无法分享地址: ", LOADING: "正在载入……", HUB_EMPTY: "你的聊天记录将在此显示。", HUB_SHOW_EARLIER: "显示之前的聊天记录。", INBOX_NO_CHATS_TITLE: "暂无任何聊天记录!", INBOX_NO_CHATS_BODY: "如果你有一个或多个对话窗口进行中,将显示在这里。", ENABLE_TRANSLATION: "翻译至简体中文", DISABLE_TRANSLATION: "查看原文", SEARCH_PLACEHOLDER_TEXT: "搜索...", SEARCH_SEARCHING: "正在搜索...", SEARCH_NO_RESULTS: "未找到结果", SEARCH_NO_MORE_RESULTS: "无更多结果", CHAT_NOT_FOUND: "未找到“聊天”", DELETE_MESSAGE: "删除消息", DELETION_EXPLANATION: "如果您删除此消息,那么所有人都将无法再看到它。", EDIT_MESSAGE: "编辑消息", SAVE: "保存", EDITED_INDICATOR: "本消息有改动", REPLY_TO_MESSAGE: "回复", ADD_REACTION: "添加反应", AUTH_EXPIRED_OVERLAY_TITLE: "您的聊天会话已过期", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "刷新页面以继续", VOICE_MESSAGE: "语音消息", CONTACT_INFORMATION_HIDDEN: "隐藏信息", LEAVE_CONVERSATION: "离开对话", MARK_CONVERSATION_AS_UNREAD: "标记为未读", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, Bs = { code: "zh-TW", name: "Chinese (Traditional)", translation: { YESTERDAY: "昨天", TODAY: "昨天", DAYS: "天", HOURS: "小時", MINUTES: "分", JUST_NOW: "現在", LOCATION: "地點", CANCEL: "取消", INBOX: "收件箱", DESKTOP_NOTIFICATIONS: "瀏覽器通知", DESKTOP_NOTIFICATIONS_ERROR: "無法啟用瀏覽器通知,因為您的瀏覽器主動阻止它們。 嘗試查看設置或使用其他瀏覽器。", DESKTOP_NOTIFICATIONS_DEMO_TITLE: (e) => `${e} 演示通知`, DESKTOP_NOTIFICATIONS_DEMO_BODY: "如果您持續打開瀏覽器標籤頁,當有人與您通話時,您會看到此彈出窗口。", SEND_BUTTON_TEXT: "發送", ENTRYBOX_TEXT_LIMIT: "只允許10.000個字符。", ENTRYBOX_PLACEHOLDER: "說些什麼...", ENTRYBOX_PLACEHOLDER_CHAT_CLOSED: "此對話不再有效。", ENTRYBOX_PLACEHOLDER_CHAT_READONLY: "您可以閱讀,但不能發送消息。", MESSAGELIST_LOADING_OLDER: "加載舊訊息...", MESSAGELIST_SHOW_OLDER: "顯示較舊的訊息", MESSAGELIST_NEW_MARKER: "新的", MESSAGE_SENT_VIA_EMAIL: "此訊息是通過電郵發送的", YOU_MARKER: "您", UPLOAD_IN_PROGRESS: "上傳中...", UPLOAD_SEND_FILE: "發送文件", UPLOAD_SHARE_LOCATION: "共享位置", UPLOAD_ERROR: "不幸的是,上傳出了問題。 該文件可能不受支持或太大。", SHARE_LOCATION_ERROR: "無法分享位置:", LOADING: "載入中...", HUB_EMPTY: "您的聊天記錄將顯示在此處", HUB_SHOW_EARLIER: "顯示早先的聊天記錄", INBOX_NO_CHATS_TITLE: "還沒聊天!", INBOX_NO_CHATS_BODY: "一旦您進行了一次或多次對話,他們就會顯示在此處。", ENABLE_TRANSLATION: "翻譯此對話至繁體中文", DISABLE_TRANSLATION: "顯示原文", SEARCH_PLACEHOLDER_TEXT: "搜尋...", SEARCH_SEARCHING: "正在搜尋...", SEARCH_NO_RESULTS: "找不到任何結果", SEARCH_NO_MORE_RESULTS: "沒有其他結果", CHAT_NOT_FOUND: "查無對話", DELETE_MESSAGE: "刪除訊息", DELETION_EXPLANATION: "您如果刪除這條訊息,所有人都將看不到它。", EDIT_MESSAGE: "編輯訊息", SAVE: "儲存", EDITED_INDICATOR: "已編輯", REPLY_TO_MESSAGE: "回覆", ADD_REACTION: "加入表情回應", AUTH_EXPIRED_OVERLAY_TITLE: "您的會話過程已過期", AUTH_EXPIRED_OVERLAY_DESCRIPTION: "請刷新頁面以繼續", VOICE_MESSAGE: "語音訊息", CONTACT_INFORMATION_HIDDEN: "隱藏訊息", LEAVE_CONVERSATION: "離開對話", MARK_CONVERSATION_AS_UNREAD: "標記為未讀", REPLY_TO_ARIA_LABEL: A.translation.REPLY_TO_ARIA_LABEL, REPLY_MODE_LEAVE_ARIA_LABEL: A.translation.REPLY_MODE_LEAVE_ARIA_LABEL, STATUS_INDICATOR_ONLINE: A.translation.STATUS_INDICATOR_ONLINE, STATUS_INDICATOR_OFFLINE: A.translation.STATUS_INDICATOR_OFFLINE } }, bt = { ar: Ja, bg: Za, bs: Qa, ca: es, cs: ts, da: ns, de: as, el: ss, en: A, es: is, et: rs, fa: os, fi: Es, fr: us, he: ls, hi: cs, hr: Ds, hu: _s, id: As, is: Os, it: Ts, ja: ds, ka: Ss, ko: Is, nb: Ns, nl: Rs, pl: Ls, pt: ms, ro: Cs, ru: ps, sq: hs, sr: gs, sv: Fs, tr: vs, uk: fs, vi: ks, zh: Ms, zhTw: Bs };
151
+ function vn(e) {
152
+ const t = e.replace(/_/g, "-").toLowerCase(), n = bt[t];
148
153
  if (n) return { ...n.translation, locale: t };
149
- const a = t.slice(0, 2), s = Lt[a];
150
- return s ? { ...s.translation, locale: a } : (q.warn(`User locale '${e}' not supported; falling back to English.`), { ...A.translation, locale: "en-US" });
154
+ const a = t.slice(0, 2), s = bt[a];
155
+ return s ? { ...s.translation, locale: a } : (ee.warn(`User locale '${e}' not supported; falling back to English.`), { ...A.translation, locale: "en-US" });
151
156
  }
152
- class An extends Error {
157
+ class fn extends Error {
153
158
  }
154
- function Ct(e, t) {
155
- if (!e) throw new An(t != null ? t : "Assertion failed");
159
+ function yt(e, t) {
160
+ if (!e) throw new fn(t != null ? t : "Assertion failed");
156
161
  }
157
- const k = Object.assign(Ct, { is: function(e, t, n) {
158
- return Ct(t, n);
162
+ const k = Object.assign(yt, { is: function(e, t, n) {
163
+ return yt(t, n);
159
164
  }, unreachable: function() {
160
165
  throw new Error("Unreachable code");
161
166
  }, never: function(e) {
162
167
  throw new Error("Unreachable");
163
168
  }, defined: function(e) {
164
- if (e == null) throw new An("Value is not defined");
165
- } }), On = () => {
169
+ if (e == null) throw new fn("Value is not defined");
170
+ } }), kn = () => {
166
171
  const e = document.createElement("canvas");
167
172
  e.width = e.height = 1;
168
173
  const t = e.getContext("2d");
169
174
  return t.textBaseline = "top", t.font = '100px "Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Twemoji Mozilla","Noto Color Emoji","EmojiOne Color","Android Emoji",sans-serif', t.scale(0.01, 0.01), t;
170
- }, mt = (e, t) => {
171
- const n = On();
175
+ }, wt = (e, t) => {
176
+ const n = kn();
172
177
  return n.fillStyle = t, n.fillText(e, 0, 0), n.getImageData(0, 0, 1, 1).data;
173
178
  };
174
- function ds(e) {
175
- const t = mt(e, "#000"), n = mt(e, "#fff"), a = ((s) => !s.includes("‍") || On().measureText(s).width < 160)(e);
179
+ function Ps(e) {
180
+ const t = wt(e, "#000"), n = wt(e, "#fff"), a = ((s) => !s.includes("‍") || kn().measureText(s).width < 160)(e);
176
181
  return t && n && a && ((s, i) => {
177
182
  const r = [...s].join(",");
178
183
  return r === [...i].join(",") && !r.startsWith("0,0,0,");
179
184
  })(t, n);
180
185
  }
181
- function Tn(e) {
186
+ function Mn(e) {
182
187
  try {
183
- return ds(e);
188
+ return Ps(e);
184
189
  } catch (t) {
185
190
  return !0;
186
191
  }
187
192
  }
188
- var Wt;
189
- const dn = (Wt = globalThis.window) != null && Wt.document ? function() {
193
+ var cn;
194
+ const Bn = (cn = globalThis.window) != null && cn.document ? function() {
190
195
  if (typeof window == "undefined" || window.E2E) return 16;
191
196
  const e = { "🫩": 16, "🚶‍➡️": 15.1, "🫨": 15, "🫠": 14, "😵‍💫": 13.1, "🥲": 13, "🧑‍🦰": 12.1, "🥻": 12, "🥰": 11, "🤩": 5, "👱‍♀️": 4, "🤣": 3, "👁️‍🗨️": 2, "😀": 1, "😐️": 0.7, "😃": 0.6 };
192
- for (const [t, n] of Object.entries(e)) if (Tn(t)) return n;
197
+ for (const [t, n] of Object.entries(e)) if (Mn(t)) return n;
193
198
  }() : 0;
194
- class Sn {
199
+ class Pn {
195
200
  constructor(t, n) {
196
- this.currentUser$ = B(null), this.app$ = B(null), this.appId$ = B(null), this.extUserId$ = B(null), this.authTokenState$ = B("idle"), this.themeCustom$ = B(St.opaque({ value: void 0 })), this.device$ = B({ supportsEmojiPicker: !!dn, isMobile: typeof window != "undefined" && /Mobi/i.test(window.navigator.userAgent) }), this.errors$ = B({ unknownConversation: !1, unknownUser: !1, wrongAppId: !1, serverError: !1 }), this.t$ = B(() => {
201
+ this.currentUser$ = U(null), this.app$ = U(null), this.appId$ = U(null), this.extUserId$ = U(null), this.authTokenState$ = U("idle"), this.themeCustom$ = U(Bt.opaque({ value: void 0 })), this.device$ = U({ supportsEmojiPicker: !!Bn, isMobile: typeof window != "undefined" && /Mobi/i.test(window.navigator.userAgent) }), this.errors$ = U({ unknownConversation: !1, unknownUser: !1, wrongAppId: !1, serverError: !1 }), this.t$ = U(() => {
197
202
  var r, o;
198
203
  const a = this.extUserId$.get(), s = this.app$.appMetadata.defaultLocale.get(), i = this.currentUser$.locale.get();
199
- return _n((o = (r = a && i) != null ? r : s) != null ? o : "en-US");
200
- }), ue(() => {
204
+ return vn((o = (r = a && i) != null ? r : s) != null ? o : "en-US");
205
+ }), Te(() => {
201
206
  this.appId$.set(t), this.extUserId$.set(n);
202
207
  });
203
208
  }
204
209
  updateThemeCustom(t) {
205
- this.themeCustom$.set(St.opaque({ value: t }));
210
+ this.themeCustom$.set(Bt.opaque({ value: t }));
206
211
  }
207
212
  listenForErrors(t, n) {
208
213
  this.errors$.assign({ unknownConversation: !1, unknownUser: !1, wrongAppId: !1, serverError: !1 });
209
214
  const a = t.onError((r) => {
210
- q.error(r.message), this.errors$.serverError.set(!0);
215
+ ee.error(r.message), this.errors$.serverError.set(!0);
211
216
  }), s = t.currentUser.subscribe((r) => {
212
217
  this.errors$.unknownUser.set(r === null);
213
218
  }), i = n && t.conversation(n).subscribe((r) => {
@@ -244,65 +249,65 @@ class Sn {
244
249
  };
245
250
  }
246
251
  }
247
- const Ss = { canReplyToMessage: !1, canEditMessage: !1, canDeleteMessage: !1, canAddReaction: !1 };
248
- class In extends Sn {
252
+ const Hs = { canReplyToMessage: !1, canEditMessage: !1, canDeleteMessage: !1, canAddReaction: !1 };
253
+ class Hn extends Pn {
249
254
  constructor(t, n) {
250
- super(t, n), this.type = "ChatboxStore", this.messageSubscription = null, this.readyForNewMessagesPromise = Promise.resolve(), this.participantSubscription = null, this.onlineSubscriptions = {}, this.state$ = B({ extCurrentConversationId: null, editor: { isEmpty: !0, isTyping: !1, atTextLimit: !1, characterCount: 0, showEmojiPicker: !1, suggestEmojiQuery: void 0, suggestMentionQuery: void 0 }, referencedMessageId: null, editingMessageId: null, currentConversation: null, visibility: { isInView: !1, tabFocused: !0 }, messages: {}, participants: {}, typing: {}, isUserConnected: {}, ephemeralMessages: {}, ephemeralMessageIdMapping: {}, localFileBlobUrls: {}, userPermissions: () => {
255
+ super(t, n), this.type = "ChatboxStore", this.messageSubscription = null, this.readyForNewMessagesPromise = Promise.resolve(), this.participantSubscription = null, this.onlineSubscriptions = {}, this.state$ = U({ extCurrentConversationId: null, editor: { isEmpty: !0, isTyping: !1, atTextLimit: !1, characterCount: 0, showEmojiPicker: !1, suggestEmojiQuery: void 0, suggestMentionQuery: void 0 }, referencedMessageId: null, editingMessageId: null, currentConversation: null, visibility: { isInView: !1, tabFocused: !0 }, messages: {}, participants: {}, typing: {}, isUserConnected: {}, ephemeralMessages: {}, ephemeralMessageIdMapping: {}, localFileBlobUrls: {}, userPermissions: () => {
251
256
  const a = this.app$.role.general.get(), s = this.app$.role.permissions.get();
252
257
  return k.defined(a), k.defined(s), { showTypingIndicator: a.showTypingIndicators, canShareFile: a.enableFileTransfers, canShareLocation: a.enableLocation, canMention: a.enableMentions, showOnlineStatus: a.enablePresence !== !1, canSendVoiceMessage: a.enableVoiceRecording, canLeaveConversation: s.conversations.leave === "all", canMarkConversationAsUnread: s.conversations.markAsUnread === "all" };
253
258
  }, messagePermissions: () => {
254
259
  const a = this.app$.role.permissions.get();
255
260
  k.defined(a);
256
- const s = this.state$.userPermissions.get(), i = { ...Ss, ...s }, r = { canReplyToMessage: ee(a.messages.reply, !0), canEditMessage: ee(a.messages.edit, !0), canDeleteMessage: ee(a.messages.delete, !0), canAddReaction: ee(a.messages.emojiReactions, !0), ...s }, o = { ...r, canEditMessage: !1 }, E = { canReplyToMessage: ee(a.messages.reply, !1), canEditMessage: ee(a.messages.edit, !1), canDeleteMessage: ee(a.messages.delete, !1), canAddReaction: ee(a.messages.emojiReactions, !1), ...s };
261
+ const s = this.state$.userPermissions.get(), i = { ...Hs, ...s }, r = { canReplyToMessage: ie(a.messages.reply, !0), canEditMessage: ie(a.messages.edit, !0), canDeleteMessage: ie(a.messages.delete, !0), canAddReaction: ie(a.messages.emojiReactions, !0), ...s }, o = { ...r, canEditMessage: !1 }, E = { canReplyToMessage: ie(a.messages.reply, !1), canEditMessage: ie(a.messages.edit, !1), canDeleteMessage: ie(a.messages.delete, !1), canAddReaction: ie(a.messages.emojiReactions, !1), ...s };
257
262
  return { system: i, own: r, ownWithoutEditing: o, other: E, otherWithoutEditing: { ...E, canEditMessage: !1 } };
258
- } }), this.locale$ = B(() => {
263
+ } }), this.locale$ = U(() => {
259
264
  var r, o;
260
265
  const a = this.extUserId$.get(), s = this.app$.appMetadata.defaultLocale.get(), i = this.currentUser$.locale.get();
261
266
  return (o = (r = a && i) != null ? r : s) != null ? o : "en-US";
262
- }), this.t$ = B(() => _n(this.locale$.get())), this.referencedMessage$ = B(() => {
267
+ }), this.t$ = U(() => vn(this.locale$.get())), this.referencedMessage$ = U(() => {
263
268
  const a = this.state$.extCurrentConversationId.get(), s = this.state$.referencedMessageId.get();
264
269
  return a && s ? this.state$.messages.child(a).lookup.child(s).get() : null;
265
- }), this.chatItems$ = B(() => {
266
- var d, c;
270
+ }), this.chatItems$ = U(() => {
271
+ var d, D;
267
272
  const a = this.state$.extCurrentConversationId.get();
268
273
  if (!a) return [];
269
- const s = this.state$.currentConversation.readUntil.get(), i = (d = this.state$.messages.child(a).state.get()) != null ? d : [], r = Object.values((c = this.state$.ephemeralMessages.child(a).get()) != null ? c : {}), o = (r.length === 0 ? i : r.concat(i).sort((_, T) => T.createdAt - _.createdAt)).map((_) => {
274
+ const s = this.state$.currentConversation.readUntil.get(), i = (d = this.state$.messages.child(a).state.get()) != null ? d : [], r = Object.values((D = this.state$.ephemeralMessages.child(a).get()) != null ? D : {}), o = (r.length === 0 ? i : r.concat(i).sort((_, T) => T.createdAt - _.createdAt)).map((_) => {
270
275
  const T = _.content[0], I = T == null ? void 0 : T.type;
271
276
  if (!T || I !== "file") return _;
272
277
  const R = T.size + "," + T.filename, N = this.state$.localFileBlobUrls.child(a).child(R).url.get();
273
278
  return N ? { ..._, content: [{ ...T, url: N }] } : _;
274
279
  });
275
- let E = null, u = 0, D = !1;
276
- const l = [];
280
+ let E = null, u = 0, l = !1;
281
+ const c = [];
277
282
  for (const _ of o) {
278
- const T = new Date(_.createdAt), I = new Date(T).setHours(0, 0, 0, 0), R = u && I !== u, N = T.getTime() > s, L = !(!D || N || E != null && E.id.startsWith("ephemeral"));
279
- (L || R) && l.push(new at({ id: "border-before-" + _.id, isDayMarker: !!R, isReadMarker: !!L, timestamp: R ? u : void 0 })), l.push(_), D = N, u = I, E = _;
283
+ const T = new Date(_.createdAt), I = new Date(T).setHours(0, 0, 0, 0), R = u && I !== u, N = T.getTime() > s, L = !(!l || N || E != null && E.id.startsWith("ephemeral"));
284
+ (L || R) && c.push(new Ot({ id: "border-before-" + _.id, isDayMarker: !!R, isReadMarker: !!L, timestamp: R ? u : void 0 })), c.push(_), l = N, u = I, E = _;
280
285
  }
281
286
  return function(_, T) {
282
287
  const I = [];
283
288
  let R = [];
284
289
  const N = Symbol("NO_KEY");
285
290
  let L = N;
286
- for (const C of _) {
287
- const h = T(C);
288
- L === N || L === h ? R.push(C) : (I.push(R), R = [C]), L = h;
291
+ for (const m of _) {
292
+ const p = T(m);
293
+ L === N || L === p ? R.push(m) : (I.push(R), R = [m]), L = p;
289
294
  }
290
295
  return R.length !== 0 && I.push(R), I;
291
- }(l, (_) => {
296
+ }(c, (_) => {
292
297
  var T;
293
- return _ instanceof at ? _.id : (T = _.sender) == null ? void 0 : T.id;
298
+ return _ instanceof Ot ? _.id : (T = _.sender) == null ? void 0 : T.id;
294
299
  }).map((_) => (_.id = _.map((T) => T.id).join(","), _));
295
- }), this.mentionableUsers$ = B(() => {
300
+ }), this.mentionableUsers$ = U(() => {
296
301
  const a = this.state$.extCurrentConversationId.get(), s = this.extUserId$.get();
297
302
  if (!a || !s) return [];
298
303
  const i = this.state$.participants.child(a).get();
299
304
  if (!i || i.length === 0) return [];
300
305
  const r = i.map((o) => o.user);
301
306
  return r.sort((o, E) => o.name.localeCompare(E.name)), function(o, E) {
302
- const u = E.findIndex((D) => D.id === o);
307
+ const u = E.findIndex((l) => l.id === o);
303
308
  if (u > -1) {
304
- const D = E[u];
305
- E.splice(u, 1), E.push(D);
309
+ const l = E[u];
310
+ E.splice(u, 1), E.push(l);
306
311
  }
307
312
  return E;
308
313
  }(s, r);
@@ -318,142 +323,142 @@ class In extends Sn {
318
323
  return t.sender ? n.id === t.sender.id ? a.type === "text" ? this.state$.messagePermissions.own : this.state$.messagePermissions.ownWithoutEditing : a.type === "text" ? this.state$.messagePermissions.other : this.state$.messagePermissions.otherWithoutEditing : this.state$.messagePermissions.system;
319
324
  }
320
325
  storeMessages(t, n, a) {
321
- ue(() => {
326
+ Te(() => {
322
327
  var E;
323
- const s = n.reduce((u, D) => (u[D.id] = D, u), {}), i = this.state$.extCurrentConversationId.peek(), r = this.extUserId$.peek();
328
+ const s = n.reduce((u, l) => (u[l.id] = l, u), {}), i = this.state$.extCurrentConversationId.peek(), r = this.extUserId$.peek();
324
329
  k(r && i), this.state$.messages.child(t).set({ state: n, lookup: s, loadedAll: a });
325
330
  const o = this.state$.ephemeralMessages.child(t);
326
331
  for (const u of n) {
327
- const D = this.state$.ephemeralMessageIdMapping.child(t).child(u.id).peek();
328
- D && o.child(D).delete();
329
- const l = u.content[0];
330
- if (((E = u.sender) == null ? void 0 : E.id) !== r || l.type !== "file") continue;
331
- const d = l.size + "," + l.filename, c = this.state$.localFileBlobUrls.child(i).child(d);
332
- if (c.fetching.peek() !== !1) continue;
333
- const _ = () => c.delete();
334
- if (l.subtype === "image") {
335
- c.fetching.set(!0);
332
+ const l = this.state$.ephemeralMessageIdMapping.child(t).child(u.id).peek();
333
+ l && o.child(l).delete();
334
+ const c = u.content[0];
335
+ if (((E = u.sender) == null ? void 0 : E.id) !== r || c.type !== "file") continue;
336
+ const d = c.size + "," + c.filename, D = this.state$.localFileBlobUrls.child(i).child(d);
337
+ if (D.fetching.peek() !== !1) continue;
338
+ const _ = () => D.delete();
339
+ if (c.subtype === "image") {
340
+ D.fetching.set(!0);
336
341
  const T = document.createElement("img");
337
- T.addEventListener("load", _, { once: !0 }), T.src = l.url;
338
- } else if (l.subtype === "video") {
339
- c.fetching.set(!0);
342
+ T.addEventListener("load", _, { once: !0 }), T.src = c.url;
343
+ } else if (c.subtype === "video") {
344
+ D.fetching.set(!0);
340
345
  const T = document.createElement("video");
341
- T.addEventListener("loaddata", _, { once: !0 }), T.src = l.url;
342
- } else if (l.subtype === "audio") {
343
- c.fetching.set(!0);
346
+ T.addEventListener("loaddata", _, { once: !0 }), T.src = c.url;
347
+ } else if (c.subtype === "audio") {
348
+ D.fetching.set(!0);
344
349
  const T = document.createElement("audio");
345
- T.addEventListener("loaddata", _, { once: !0 }), T.src = l.url;
350
+ T.addEventListener("loaddata", _, { once: !0 }), T.src = c.url;
346
351
  }
347
352
  }
348
353
  });
349
354
  }
350
355
  }
351
- function ee(e, t) {
356
+ function ie(e, t) {
352
357
  return e === "all" || e === "own" && t || e === "other" && !t;
353
358
  }
354
- class at {
359
+ class Ot {
355
360
  constructor({ id: t, isDayMarker: n, isReadMarker: a, timestamp: s }) {
356
361
  this.id = t, this.isDayMarker = n, this.isReadMarker = a, this.timestamp = n ? s : void 0;
357
362
  }
358
363
  }
359
- function be(e) {
364
+ function Ge(e) {
360
365
  const t = f();
361
- return O(t instanceof In ? Is : Ns, { ...e });
366
+ return O(t instanceof Hn ? Us : bs, { ...e });
362
367
  }
363
- function Is(e) {
364
- const t = G(), n = Ae();
368
+ function Us(e) {
369
+ const t = W(), n = Ne();
365
370
  return O(t.Icon, { common: n, ...e });
366
371
  }
367
- function Ns(e) {
368
- const t = G(), n = cn();
372
+ function bs(e) {
373
+ const t = W(), n = Fn();
369
374
  return O(t.Icon, { common: n, ...e });
370
375
  }
371
- function st({ src: e, onError: t, filename: n, className: a = "" }) {
372
- const s = b(null), i = b(), r = b(), [o, E] = H(!1), [u, D] = H(0), [l, d] = H(1), c = b(), [_, T] = H(!1);
373
- F(() => {
376
+ function Tt({ src: e, onError: t, filename: n, className: a = "" }) {
377
+ const s = P(null), i = P(), r = P(), [o, E] = b(!1), [u, l] = b(0), [c, d] = b(1), D = P(), [_, T] = b(!1);
378
+ h(() => {
374
379
  i.current = new Audio();
375
380
  const N = { normalize: !0, height: 50, container: s.current };
376
381
  function L() {
377
- const p = i.current;
378
- p && (p.error.message === "PIPELINE_ERROR_READ: FFmpegDemuxer: demuxer seek failed" ? (p.load(), E(!1)) : (T(!0), E(!1), t == null || t()));
382
+ const C = i.current;
383
+ C && (C.error.message === "PIPELINE_ERROR_READ: FFmpegDemuxer: demuxer seek failed" ? (C.load(), E(!1)) : (T(!0), E(!1), t == null || t()));
379
384
  }
380
- const C = n.slice(n.lastIndexOf(".") + 1);
381
- if (function(p) {
382
- return /(?:^|\/)talkjs_audio_message_[0-9]+_([0-9]+)[.](?:mp3|webm)$/.test(p);
383
- }(n) && C === "webm" && !i.current.canPlayType("audio/webm;codecs=opus")) N.backend = "WebAudio", r.current = new Audio("data:audio/mp3;base64,//MkxAAHiAICWABElBeKPL/RANb2w+yiT1g/gTok//lP/W/l3h8QO/OCdCqCW2Cw//MkxAQHkAIWUAhEmAQXWUOFW2dxPu//9mr60ElY5sseQ+xxesmHKtZr7bsqqX2L//MkxAgFwAYiQAhEAC2hq22d3///9FTV6tA36JdgBJoOGgc+7qvqej5Zu7/7uI9l//MkxBQHAAYi8AhEAO193vt9KGOq+6qcT7hhfN5FTInmwk8RkqKImTM55pRQHQSq//MkxBsGkgoIAABHhTACIJLf99nVI///yuW1uBqWfEu7CgNPWGpUadBmZ////4sL//MkxCMHMAH9iABEmAsKioqKigsLCwtVTEFNRTMuOTkuNVVVVVVVVVVVVVVVVVVV//MkxCkECAUYCAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"), r.current.controls = !1;
385
+ const m = n.slice(n.lastIndexOf(".") + 1);
386
+ if (function(C) {
387
+ return /(?:^|\/)talkjs_audio_message_[0-9]+_([0-9]+)[.](?:mp3|webm)$/.test(C);
388
+ }(n) && m === "webm" && !i.current.canPlayType("audio/webm;codecs=opus")) N.backend = "WebAudio", r.current = new Audio("data:audio/mp3;base64,//MkxAAHiAICWABElBeKPL/RANb2w+yiT1g/gTok//lP/W/l3h8QO/OCdCqCW2Cw//MkxAQHkAIWUAhEmAQXWUOFW2dxPu//9mr60ElY5sseQ+xxesmHKtZr7bsqqX2L//MkxAgFwAYiQAhEAC2hq22d3///9FTV6tA36JdgBJoOGgc+7qvqej5Zu7/7uI9l//MkxBQHAAYi8AhEAO193vt9KGOq+6qcT7hhfN5FTInmwk8RkqKImTM55pRQHQSq//MkxBsGkgoIAABHhTACIJLf99nVI///yuW1uBqWfEu7CgNPWGpUadBmZ////4sL//MkxCMHMAH9iABEmAsKioqKigsLCwtVTEFNRTMuOTkuNVVVVVVVVVVVVVVVVVVV//MkxCkECAUYCAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"), r.current.controls = !1;
384
389
  else {
385
- const p = i.current;
386
- p.addEventListener("error", L), p.src = e, p.preload = "auto", p.preservesPitch = !0, N.media = p;
390
+ const C = i.current;
391
+ C.addEventListener("error", L), C.src = e, C.preload = "auto", C.preservesPitch = !0, N.media = C;
387
392
  }
388
- c.current = function(p) {
389
- var Y, g, w, Oe, te, Te, X, K;
390
- if (!p.container) return;
391
- const m = getComputedStyle(p.container), M = (Y = Ce.parse(m.color)) != null ? Y : new Ce(255, 255, 255, 1), j = M.withAlpha(M.alpha / 2);
392
- return ra.create({ ...p, barGap: (g = p.barGap) != null ? g : 2, barRadius: (w = p.barRadius) != null ? w : 0, barWidth: (Oe = p.barWidth) != null ? Oe : 2, barHeight: p.barHeight, hideScrollbar: !0, cursorWidth: (te = p.cursorWidth) != null ? te : 0, cursorColor: p.cursorColor, height: (Te = p.height) != null ? Te : 24, progressColor: (X = p.progressColor) != null ? X : j.toRgbaString(), waveColor: (K = p.waveColor) != null ? K : j.toRgbaString() });
393
+ D.current = function(C) {
394
+ var V, X, J, G, g, x, Re, re;
395
+ if (!C.container) return;
396
+ const B = getComputedStyle(C.container), j = (V = fe.parse(B.color)) != null ? V : new fe(255, 255, 255, 1), v = j.withAlpha(j.alpha / 2);
397
+ return ma.create({ ...C, barGap: (X = C.barGap) != null ? X : 2, barRadius: (J = C.barRadius) != null ? J : 0, barWidth: (G = C.barWidth) != null ? G : 2, barHeight: C.barHeight, hideScrollbar: !0, cursorWidth: (g = C.cursorWidth) != null ? g : 0, cursorColor: C.cursorColor, height: (x = C.height) != null ? x : 24, progressColor: (Re = C.progressColor) != null ? Re : v.toRgbaString(), waveColor: (re = C.waveColor) != null ? re : v.toRgbaString() });
393
398
  }(N);
394
- const h = c.current;
395
- return h.on("finish", () => {
399
+ const p = D.current;
400
+ return p.on("finish", () => {
396
401
  i.current.loop = !0, E(!1);
397
- }), h.on("ready", (p) => D(Math.trunc(p))), h.on("timeupdate", (p) => D(Math.trunc(p))), N.backend === "WebAudio" && h.load(e).catch(() => {
402
+ }), p.on("ready", (C) => l(Math.trunc(C))), p.on("timeupdate", (C) => l(Math.trunc(C))), N.backend === "WebAudio" && p.load(e).catch(() => {
398
403
  T(!0), E(!1), t == null || t();
399
404
  }), () => {
400
- var p;
401
- (p = i.current) == null || p.removeEventListener("error", L), i.current = void 0, h.destroy(), c.current = void 0;
405
+ var C;
406
+ (C = i.current) == null || C.removeEventListener("error", L), i.current = void 0, p.destroy(), D.current = void 0;
402
407
  };
403
408
  }, [e, n, t]);
404
- const I = U(() => {
409
+ const I = H(() => {
405
410
  var N;
406
- if (c.current.options.backend === "WebAudio") c.current.isPlaying() || r.current.play(), c.current.playPause(), E((N = c.current.isPlaying()) != null ? N : !1);
411
+ if (D.current.options.backend === "WebAudio") D.current.isPlaying() || r.current.play(), D.current.playPause(), E((N = D.current.isPlaying()) != null ? N : !1);
407
412
  else {
408
413
  const L = i.current;
409
414
  L.paused ? L.play() : L.pause(), L.loop = !1, !L.paused && L.ended && (L.load(), L.play()), E(!L.paused);
410
415
  }
411
- }, []), R = U((N) => {
412
- c.current.setPlaybackRate(N), d(N);
416
+ }, []), R = H((N) => {
417
+ D.current.setPlaybackRate(N), d(N);
413
418
  }, []);
414
- return _ ? O("div", {}) : V("div", { className: `t-audio-player ${a}`, children: [O("button", { onClick: I, children: O(be, { className: "t-play-pause-icon", type: o ? "pause" : "play", "aria-label": o ? "pause audio" : "play audio" }) }), O("div", { className: "t-waveform", ref: s }), O("div", { className: "t-duration", children: jn(u) }), V(Ne, { type: "menu", popoverComponent: Ls, popoverProps: { playbackSpeed: l, selectPlaybackSpeed: R }, className: "t-playback-speed", "aria-label": "set playback speed", children: [l, "x", O(be, { type: "updown", className: "t-up-down-icon", "aria-hidden": !0 })] })] });
419
+ return _ ? O("div", {}) : K("div", { className: `t-audio-player ${a}`, children: [O("button", { onClick: I, children: O(Ge, { className: "t-play-pause-icon", type: o ? "pause" : "play", "aria-label": o ? "pause audio" : "play audio" }) }), O("div", { className: "t-waveform", ref: s }), O("div", { className: "t-duration", children: sa(u) }), K(he, { type: "menu", popoverComponent: ws, popoverProps: { playbackSpeed: c, selectPlaybackSpeed: R }, className: "t-playback-speed", "aria-label": "set playback speed", children: [c, "x", O(Ge, { type: "updown", className: "t-up-down-icon", "aria-hidden": !0 })] })] });
415
420
  }
416
- const Rs = [0.25, 0.5, 0.75, 1, 1.25, 1.5, 2];
417
- function Ls({ playbackSpeed: e, selectPlaybackSpeed: t }) {
418
- return V("div", { className: "t-playback-speed-menu", children: [O("div", { className: "t-playback-heading", children: "Playback Speed" }), Rs.map((n) => V(ae, { className: "t-menu-item", onSelect: () => t(n), children: [O("span", { className: "t-playback-checkmark", children: e === n ? "✓ " : "" }), n, "x"] }, n))] });
421
+ const ys = [0.25, 0.5, 0.75, 1, 1.25, 1.5, 2];
422
+ function ws({ playbackSpeed: e, selectPlaybackSpeed: t }) {
423
+ return K("div", { className: "t-playback-speed-menu", children: [O("div", { className: "t-playback-heading", children: "Playback Speed" }), ys.map((n) => K(Ee, { className: "t-menu-item", onSelect: () => t(n), children: [O("span", { className: "t-playback-checkmark", children: e === n ? "✓ " : "" }), n, "x"] }, n))] });
419
424
  }
420
- const Cs = /^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/, ms = /^rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d.]+)\s*\)$/;
421
- class Ce {
425
+ const Ys = /^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/, $s = /^rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d.]+)\s*\)$/;
426
+ class fe {
422
427
  constructor(t, n, a, s) {
423
428
  this.red = t, this.green = n, this.blue = a, this.alpha = s;
424
429
  }
425
430
  static parse(t) {
426
431
  var a;
427
- const n = (a = t.match(Cs)) != null ? a : t.match(ms);
432
+ const n = (a = t.match(Ys)) != null ? a : t.match($s);
428
433
  if (n) {
429
434
  const [s, i, r, o, E = "1"] = n;
430
- return new Ce(Number(i), Number(r), Number(o), Number(E));
435
+ return new fe(Number(i), Number(r), Number(o), Number(E));
431
436
  }
432
437
  return null;
433
438
  }
434
439
  withAlpha(t) {
435
- return new Ce(this.red, this.green, this.blue, t);
440
+ return new fe(this.red, this.green, this.blue, t);
436
441
  }
437
442
  toRgbaString() {
438
443
  const { red: t, green: n, blue: a, alpha: s } = this;
439
444
  return s !== 1 ? `rgba(${t}, ${n}, ${a}, ${s})` : `rgb(${t}, ${n}, ${a})`;
440
445
  }
441
446
  }
442
- const Ke = new on("placeholder"), pt = new En({ key: Ke, props: { decorations(e) {
443
- if (Nn(e.doc)) return;
444
- const t = e.doc.firstChild, n = Jt.node(0, t.nodeSize, { class: "empty-node", "data-placeholder": Ke.getState(e) });
445
- return Zt.create(e.doc, [n]);
447
+ const rt = new mn("placeholder"), Yt = new Cn({ key: rt, props: { decorations(e) {
448
+ if (Un(e.doc)) return;
449
+ const t = e.doc.firstChild, n = Dn.node(0, t.nodeSize, { class: "empty-node", "data-placeholder": rt.getState(e) });
450
+ return _n.create(e.doc, [n]);
446
451
  } }, state: { init: () => "", apply: (e, t) => {
447
452
  var n;
448
- return (n = e.getMeta(Ke)) != null ? n : t;
453
+ return (n = e.getMeta(rt)) != null ? n : t;
449
454
  } } });
450
- function Nn(e) {
455
+ function Un(e) {
451
456
  return e.childCount !== 1 || e.firstChild.childCount !== 0;
452
457
  }
453
- function ut(e, t) {
458
+ function Rt(e, t) {
454
459
  return e.reduce((n, a, s) => n.concat(t(a, s)), []);
455
460
  }
456
- const Re = (e, t, n = void 0) => ut(e, (a) => {
461
+ const Fe = (e, t, n = void 0) => Rt(e, (a) => {
457
462
  if (typeof a == "string") return t(a, n);
458
463
  switch (a.type) {
459
464
  case "bold":
@@ -464,14 +469,14 @@ const Re = (e, t, n = void 0) => ut(e, (a) => {
464
469
  case "bulletList":
465
470
  case "bulletpoint":
466
471
  case "bulletPoint":
467
- return [{ type: a.type, children: Re(a.children, t, a.type) }];
472
+ return [{ type: a.type, children: Fe(a.children, t, a.type) }];
468
473
  case "link":
469
- return [{ type: a.type, url: a.url, children: Re(a.children, t, a.type) }];
474
+ return [{ type: a.type, url: a.url, children: Fe(a.children, t, a.type) }];
470
475
  case "actionlink":
471
476
  case "actionLink":
472
477
  case "actionbutton":
473
478
  case "actionButton":
474
- return [{ type: a.type, action: a.action, params: a.params, children: Re(a.children, t, a.type) }];
479
+ return [{ type: a.type, action: a.action, params: a.params, children: Fe(a.children, t, a.type) }];
475
480
  case "mention":
476
481
  case "autolink":
477
482
  case "autoLink":
@@ -486,12 +491,12 @@ const Re = (e, t, n = void 0) => ut(e, (a) => {
486
491
  return [a];
487
492
  }
488
493
  });
489
- function Z(e, t) {
494
+ function ne(e, t) {
490
495
  return (n) => {
491
496
  const a = n;
492
497
  let s = 0;
493
498
  const i = [];
494
- for (const r of je(n, e)) {
499
+ for (const r of Qe(n, e)) {
495
500
  r.index - s > 0 && i.push(a.substring(s, r.index));
496
501
  const o = t(r);
497
502
  Array.isArray(o) ? i.push(...o) : i.push(o), s = r.index + r[0].length;
@@ -499,32 +504,32 @@ function Z(e, t) {
499
504
  return s < n.length && i.push(n.substring(s)), i;
500
505
  };
501
506
  }
502
- function Rn(e) {
507
+ function bn(e) {
503
508
  return e.replace(/<!!mention:.*?\|([^>]*)>/gim, "@$1").replace(/<!!customemoji:(.*?)>/gim, "$1");
504
509
  }
505
- const ht = "’'()[]{}<>:,‒–—―…!.«»-‐?‘’“”;/⁄␠·&@*\\•^¤¢$€£¥₩₪†‡°¡¿¬#№%‰‱¶′§~¨_|¦⁂☞∴‽※".replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
506
- var it = ((e) => (e[e.italic = 1] = "italic", e[e.strikethrough = 2] = "strikethrough", e[e.bold = 4] = "bold", e))(it || {});
507
- const ps = [0, 1, 2, 3, 4, 5, 6].map((e) => {
510
+ const $t = "’'()[]{}<>:,‒–—―…!.«»-‐?‘’“”;/⁄␠·&@*\\•^¤¢$€£¥₩₪†‡°¡¿¬#№%‰‱¶′§~¨_|¦⁂☞∴‽※".replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
511
+ var dt = ((e) => (e[e.italic = 1] = "italic", e[e.strikethrough = 2] = "strikethrough", e[e.bold = 4] = "bold", e))(dt || {});
512
+ const js = [0, 1, 2, 3, 4, 5, 6].map((e) => {
508
513
  const t = [];
509
514
  return 1 & e || t.push(/_([^\s_].*?[^\s_])_|_([^\s_])_/), 2 & e || t.push(/~([^\s~].*?[^\s~])~|~([^\s~])~/), 4 & e || t.push(/\*([^\s*].*?[^\s*])\*|\*([^\s*])\*/), new RegExp(t.map((n) => n.source).join("|"), "g");
510
- }), hs = { _: 1, "*": 4, "~": 2 };
511
- function gs(e) {
512
- return Ln(e, 0);
515
+ }), xs = { _: 1, "*": 4, "~": 2 };
516
+ function Vs(e) {
517
+ return yn(e, 0);
513
518
  }
514
- function Ln(e, t = 0) {
515
- const n = ps[t], a = n ? function(s) {
516
- const i = Fs.getOrCompute(s, () => new RegExp(`(?:^|[\\s${ht}])(?:${s.source})(?=[\\s${ht}]|$)`, "g")), r = Z(i, (o) => {
519
+ function yn(e, t = 0) {
520
+ const n = js[t], a = n ? function(s) {
521
+ const i = Xs.getOrCompute(s, () => new RegExp(`(?:^|[\\s${$t}])(?:${s.source})(?=[\\s${$t}]|$)`, "g")), r = ne(i, (o) => {
517
522
  const E = o[0][1], u = o[1] || o[2] || o[3] || o[4] || o[5] || o[6];
518
- return [" ", { type: it[hs[E]], children: [u] }];
523
+ return [" ", { type: dt[xs[E]], children: [u] }];
519
524
  });
520
525
  return (o) => {
521
526
  const [E, ...u] = r(" " + o);
522
527
  return E.length > 1 && u.unshift(E.substring(1)), u;
523
528
  };
524
529
  }(n) : () => [e];
525
- return Re(a(e), (s, i) => i === "bold" || i === "italic" || i === "strikethrough" ? Ln(s, t | it[i]) : [s]);
530
+ return Fe(a(e), (s, i) => i === "bold" || i === "italic" || i === "strikethrough" ? yn(s, t | dt[i]) : [s]);
526
531
  }
527
- const Fs = function() {
532
+ const Xs = function() {
528
533
  const e = function() {
529
534
  try {
530
535
  return /* @__PURE__ */ new WeakMap();
@@ -540,82 +545,82 @@ const Fs = function() {
540
545
  return e.set(t, a), a;
541
546
  } };
542
547
  }();
543
- function Cn(e, t = e) {
548
+ function wn(e, t = e) {
544
549
  return { type: "autolink", url: e, text: t };
545
550
  }
546
- const vs = Z(/<!!mention:([^>\s]*?)\|(.*?)>/gm, ([e, t, n]) => /* @__PURE__ */ function(a, s) {
551
+ const Gs = ne(/<!!mention:([^>\s]*?)\|(.*?)>/gm, ([e, t, n]) => /* @__PURE__ */ function(a, s) {
547
552
  return { type: "mention", id: a, text: s };
548
- }(decodeURIComponent(t), n)), fs = Z(/<!!customemoji:(.*?)>/gm, ([e, t]) => /* @__PURE__ */ function(n) {
553
+ }(decodeURIComponent(t), n)), zs = ne(/<!!customemoji:(.*?)>/gm, ([e, t]) => /* @__PURE__ */ function(n) {
549
554
  return { type: "customemoji", text: n };
550
- }(t)), mn = Z(/<((?:https?|mailto):.*?)\|(.*?)>/gi, ([e, t, n]) => /* @__PURE__ */ function(a, s = []) {
555
+ }(t)), Yn = ne(/<((?:https?|mailto):.*?)\|(.*?)>/gi, ([e, t, n]) => /* @__PURE__ */ function(a, s = []) {
551
556
  return { type: "link", url: a, children: s };
552
- }(t, [n])), ks = Z(/<actionlink:([^|]+)[|]([^>]*)>/gi, ([e, t, n]) => {
553
- const { action: a, params: s } = pn(t);
557
+ }(t, [n])), Ks = ne(/<actionlink:([^|]+)[|]([^>]*)>/gi, ([e, t, n]) => {
558
+ const { action: a, params: s } = $n(t);
554
559
  return /* @__PURE__ */ function(i, r, o = []) {
555
560
  return { type: "actionlink", action: i, params: r, children: o };
556
561
  }(a, s, [n]);
557
- }), Ms = Z(/<actionbutton:([^|]+)[|]([^>]*)>/gi, ([e, t, n]) => {
558
- const { action: a, params: s } = pn(t);
562
+ }), Ws = ne(/<actionbutton:([^|]+)[|]([^>]*)>/gi, ([e, t, n]) => {
563
+ const { action: a, params: s } = $n(t);
559
564
  return /* @__PURE__ */ function(i, r, o = []) {
560
565
  return { type: "actionbutton", action: i, params: r, children: o };
561
566
  }(a, s, [n]);
562
567
  });
563
- function pn(e) {
568
+ function $n(e) {
564
569
  const t = e.indexOf("?");
565
570
  return t === -1 ? { action: e, params: {} } : { action: e.slice(0, t), params: Object.fromEntries(new URLSearchParams(e.slice(t))) };
566
571
  }
567
- const Bs = Z(/(?:^|\n)(?:\s*[-*+]\s+[^\n]+(?:\n|$))+/g, ([e]) => /* @__PURE__ */ function(t = []) {
572
+ const qs = ne(/(?:^|\n)(?:\s*[-*+]\s+[^\n]+(?:\n|$))+/g, ([e]) => /* @__PURE__ */ function(t = []) {
568
573
  return { type: "bulletlist", children: t };
569
574
  }([e.startsWith(`
570
- `) ? e.slice(1) : e])), Ps = Z(/^\s*[-*+]\s+([^\n]+)(?:\n|$)/gm, ([e, t]) => ({ type: "bulletpoint", children: [t] })), hn = (e) => {
575
+ `) ? e.slice(1) : e])), Js = ne(/^\s*[-*+]\s+([^\n]+)(?:\n|$)/gm, ([e, t]) => ({ type: "bulletpoint", children: [t] })), jn = (e) => {
571
576
  const t = /(?:^|[^-:/\w])([(+]?[0-9](?:[-_+ ().]?[0-9]){5,11}[0-9])(?:[^-:/\w]|$)/g;
572
577
  let n = 0;
573
578
  const a = [];
574
- for (const s of je(e, t)) {
579
+ for (const s of Qe(e, t)) {
575
580
  const i = s[0], r = s[1], o = i.startsWith(r) ? s.index : s.index + 1;
576
581
  o - n > 0 && a.push(e.substring(n, o));
577
- const E = Cn("tel:" + r.replace(/[^0-9+]/g, ""), r);
582
+ const E = wn("tel:" + r.replace(/[^0-9+]/g, ""), r);
578
583
  a.push(E), n = o + r.length;
579
584
  }
580
585
  return n < e.length && a.push(e.substring(n)), a;
581
- }, gn = (e) => mn(e).flatMap((t) => typeof t == "string" ? We(t) : ["<", ...We(t.url), ...We("|" + t.children[0] + ">")]), We = (e) => {
582
- const t = da.parse(e, { urls: !0, email: !0, phone: !1, hashtag: !1, mention: !1 }), n = [];
586
+ }, xn = (e) => Yn(e).flatMap((t) => typeof t == "string" ? ot(t) : ["<", ...ot(t.url), ...ot("|" + t.children[0] + ">")]), ot = (e) => {
587
+ const t = Pa.parse(e, { urls: !0, email: !0, phone: !1, hashtag: !1, mention: !1 }), n = [];
583
588
  let a = 0;
584
589
  for (const s of t) {
585
590
  const i = s.getOffset(), r = s.getMatchedText(), o = r.length;
586
591
  let E = r;
587
- s instanceof Sa ? E = "mailto:" + s.getEmail() : s instanceof Ia && (E = s.getUrl()), i > a && n.push(e.substring(a, i)), n.push(Cn(E, r)), a = i + o;
592
+ s instanceof Ha ? E = "mailto:" + s.getEmail() : s instanceof Ua && (E = s.getUrl()), i > a && n.push(e.substring(a, i)), n.push(wn(E, r)), a = i + o;
588
593
  }
589
594
  return a < e.length && n.push(e.substring(a)), n;
590
- }, Hs = ["Codeblock", "Codespan", "FormattedLink", "Wikitext", "Autolink", "Actions", "Mention", "Mention", "BulletPoint", "CustomEmoji"];
591
- function Us(e = { except: [] }) {
595
+ }, Zs = ["Codeblock", "Codespan", "FormattedLink", "Wikitext", "Autolink", "Actions", "Mention", "Mention", "BulletPoint", "CustomEmoji"];
596
+ function Qs(e = { except: [] }) {
592
597
  var a;
593
- const t = { multilineSteps: [], singlelineSteps: [] }, n = (a = e.except) != null ? a : Hs.filter((s) => !e.only.includes(s));
594
- return n.includes("BulletPoint") || t.multilineSteps.push(Bs, Ps), n.includes("Mention") || t.singlelineSteps.push(vs), n.includes("CustomEmoji") || t.singlelineSteps.push(fs), n.includes("Codespan") || t.multilineSteps.push(Z(/```([^]+?)```/g, ([s, i]) => ({ type: "codespan", text: Rn(i) }))), n.includes("FormattedLink") || t.singlelineSteps.push(mn), n.includes("Actions") || (t.singlelineSteps.push(ks), t.singlelineSteps.push(Ms)), n.includes("Wikitext") || t.singlelineSteps.push(gs), n.includes("Autolink") || t.singlelineSteps.push(gn, hn), t;
598
+ const t = { multilineSteps: [], singlelineSteps: [] }, n = (a = e.except) != null ? a : Zs.filter((s) => !e.only.includes(s));
599
+ return n.includes("BulletPoint") || t.multilineSteps.push(qs, Js), n.includes("Mention") || t.singlelineSteps.push(Gs), n.includes("CustomEmoji") || t.singlelineSteps.push(zs), n.includes("Codespan") || t.multilineSteps.push(ne(/```([^]+?)```/g, ([s, i]) => ({ type: "codespan", text: bn(i) }))), n.includes("FormattedLink") || t.singlelineSteps.push(Yn), n.includes("Actions") || (t.singlelineSteps.push(Ks), t.singlelineSteps.push(Ws)), n.includes("Wikitext") || t.singlelineSteps.push(Vs), n.includes("Autolink") || t.singlelineSteps.push(xn, jn), t;
595
600
  }
596
- const bs = function(e) {
601
+ const ei = function(e) {
597
602
  const t = RegExp(`[^${e}]+${e}?|${e}`, "g");
598
603
  return (n) => Array.from(n.match(t) || []);
599
604
  }(`
600
605
  `);
601
- function Fn(e, t = { except: [] }) {
602
- let n = vn(e, Us(t));
603
- return n = fn(n, !1), n;
606
+ function Vn(e, t = { except: [] }) {
607
+ let n = Xn(e, Qs(t));
608
+ return n = Gn(n, !1), n;
604
609
  }
605
- function vn(e, t) {
610
+ function Xn(e, t) {
606
611
  let n = [e];
607
- return n = qe(n, t.multilineSteps), n = qe(n, [bs]), n = qe(n, t.singlelineSteps), n = Dt(n), n;
612
+ return n = Et(n, t.multilineSteps), n = Et(n, [ei]), n = Et(n, t.singlelineSteps), n = Lt(n), n;
608
613
  }
609
- function qe(e, t) {
610
- return t.reduce((n, a) => Re(n, a), e);
614
+ function Et(e, t) {
615
+ return t.reduce((n, a) => Fe(n, a), e);
611
616
  }
612
- function Dt(e) {
617
+ function Lt(e) {
613
618
  const t = [];
614
619
  let n = -1;
615
- for (const a of e) typeof a == "string" ? typeof t[n] == "string" ? t[n] += a : t[++n] = a : t[++n] = "children" in a ? { ...a, children: Dt(a.children) } : a;
620
+ for (const a of e) typeof a == "string" ? typeof t[n] == "string" ? t[n] += a : t[++n] = a : t[++n] = "children" in a ? { ...a, children: Lt(a.children) } : a;
616
621
  return t;
617
622
  }
618
- function fn(e, t) {
623
+ function Gn(e, t) {
619
624
  const n = [];
620
625
  let a = [];
621
626
  for (let s = 0; s < e.length; s++) {
@@ -623,13 +628,13 @@ function fn(e, t) {
623
628
  if (typeof i == "string") a.push(i);
624
629
  else if ("children" in i) {
625
630
  a.length > 0 && (n.push(a.join("")), a = []);
626
- const r = fn(i.children, t || i.type === "link" || i.type === "actionbutton" || i.type === "actionlink");
631
+ const r = Gn(i.children, t || i.type === "link" || i.type === "actionbutton" || i.type === "actionlink");
627
632
  n.push({ ...i, children: r });
628
633
  } else i.type === "autolink" && t ? a.push(i.text) : (a.length > 0 && (n.push(a.join("")), a = []), n.push(i));
629
634
  }
630
635
  return a.length > 0 && (n.push(a.join("")), a = []), n;
631
636
  }
632
- function ys() {
637
+ function ti() {
633
638
  let e, t = 0;
634
639
  return (n) => {
635
640
  const a = (i = Date.now()) => {
@@ -637,13 +642,13 @@ function ys() {
637
642
  const r = function(o) {
638
643
  o = o.removeMark(0, o.doc.content.size, y.marks.bold), o = o.removeMark(0, o.doc.content.size, y.marks.italic), o = o.removeMark(0, o.doc.content.size, y.marks.strikethrough), o.doc.firstChild;
639
644
  const E = function(u) {
640
- const D = [];
641
- let l, d = "";
642
- return u.descendants((c, _) => (c.isText ? (d += c.text, l != null || (l = _)) : d && l !== void 0 && (D.push({ text: d, pos: l }), d = "", l = void 0), c.type !== y.nodes.mention)), d && l !== void 0 && D.push({ text: d, pos: l }), D;
645
+ const l = [];
646
+ let c, d = "";
647
+ return u.descendants((D, _) => (D.isText ? (d += D.text, c != null || (c = _)) : d && c !== void 0 && (l.push({ text: d, pos: c }), d = "", c = void 0), D.type !== y.nodes.mention)), d && c !== void 0 && l.push({ text: d, pos: c }), l;
643
648
  }(o.doc);
644
- for (const { text: u, pos: D } of E) {
645
- const l = Fn(u, { only: ["Wikitext"] });
646
- [o] = kn(o, D, l);
649
+ for (const { text: u, pos: l } of E) {
650
+ const c = Vn(u, { only: ["Wikitext"] });
651
+ [o] = zn(o, l, c);
647
652
  }
648
653
  return o;
649
654
  }(n.state.tr);
@@ -652,157 +657,157 @@ function ys() {
652
657
  s - t < 300 ? e || (e = window.setTimeout(a, 300)) : a(s);
653
658
  };
654
659
  }
655
- function kn(e, t, n, a = 0, s = []) {
660
+ function zn(e, t, n, a = 0, s = []) {
656
661
  for (const i of n) if (typeof i == "string") {
657
662
  for (const r of s) e.addMark(t + a, t + a + i.length, r.create());
658
663
  a += i.length;
659
664
  } else if (i.type === "bold" || i.type === "italic" || i.type === "strikethrough") {
660
665
  a += 1;
661
666
  const r = y.marks[i.type], o = [...s, r];
662
- [e, a] = kn(e, t, i.children, a, o), a += 1;
667
+ [e, a] = zn(e, t, i.children, a, o), a += 1;
663
668
  } else k.unreachable();
664
669
  return [e, a];
665
670
  }
666
- function gt(e) {
671
+ function jt(e) {
667
672
  return (t, n) => {
668
673
  if (!n) return !0;
669
674
  let a = t.tr;
670
- const s = Tt.between(t.selection.$from, t.selection.$to);
671
- return a = a.replaceRangeWith(s.from, s.from, y.text(e, a.storedMarks)), a = a.replaceRangeWith(s.to + 1, s.to + 1, y.text(e, a.storedMarks)), a = a.setSelection(Tt.near(a.doc.resolve(s.to + 1))), n(a), !0;
675
+ const s = kt.between(t.selection.$from, t.selection.$to);
676
+ return a = a.replaceRangeWith(s.from, s.from, y.text(e, a.storedMarks)), a = a.replaceRangeWith(s.to + 1, s.to + 1, y.text(e, a.storedMarks)), a = a.setSelection(kt.near(a.doc.resolve(s.to + 1))), n(a), !0;
672
677
  };
673
678
  }
674
- function ws(e, t, n) {
679
+ function ni(e, t, n) {
675
680
  const a = t.clipboardData;
676
681
  if (!a) return !1;
677
682
  const s = function(i) {
678
- const r = i.items || [], o = { "image/gif": "gif", "image/png": "png", "image/jpeg": "jpg", "image/svg+xml": "svg" }, E = Array.from(r).filter((l) => l.kind === "file" && o[l.type]);
683
+ const r = i.items || [], o = { "image/gif": "gif", "image/png": "png", "image/jpeg": "jpg", "image/svg+xml": "svg" }, E = Array.from(r).filter((c) => c.kind === "file" && o[c.type]);
679
684
  if (E.length === 0 || i.types.includes("text/rtf")) return;
680
685
  const u = E[0];
681
- let D = u.getAsFile();
682
- if (!D.name) {
683
- const l = "image." + o[u.type];
684
- D = new File([D], l, { type: u.type, lastModified: Date.now() });
686
+ let l = u.getAsFile();
687
+ if (!l.name) {
688
+ const c = "image." + o[u.type];
689
+ l = new File([l], c, { type: u.type, lastModified: Date.now() });
685
690
  }
686
- return D;
691
+ return l;
687
692
  }(a);
688
693
  return s ? n(s) : function(i, r) {
689
694
  const o = i.state.tr.insertText(r).scrollIntoView().setMeta("paste", !0).setMeta("uiEvent", "paste");
690
695
  i.dispatch(o);
691
696
  }(e, a.getData("text/plain")), !0;
692
697
  }
693
- function Ys(e, { allowSpaces: t = !1 }) {
698
+ function ai(e, { allowSpaces: t = !1 }) {
694
699
  return (n) => {
695
700
  const a = new RegExp(`\\s${e}$`), s = t ? new RegExp(`${e}.*?(?=\\s${e}|$)`, "g") : new RegExp(`(?:^)?${e}[^\\s${e}]*`, "g"), i = n.before(), r = n.end(), o = n.doc.textBetween(i, r, "\0", "\0");
696
701
  let E;
697
702
  for (; E = s.exec(o); ) {
698
703
  const u = E.input.slice(Math.max(0, E.index - 1), E.index);
699
704
  if (!/^[\s\0]?$/.test(u)) continue;
700
- const D = E.index + n.start();
701
- let l = D + E[0].length;
702
- if (t && a.test(o.slice(l - 1, l + 1)) && (E[0] += " ", l++), D < n.pos && l >= n.pos) return { range: { from: D, to: l }, text: E[0] };
705
+ const l = E.index + n.start();
706
+ let c = l + E[0].length;
707
+ if (t && a.test(o.slice(c - 1, c + 1)) && (E[0] += " ", c++), l < n.pos && c >= n.pos) return { range: { from: l, to: c }, text: E[0] };
703
708
  }
704
709
  };
705
710
  }
706
- function Ft({ matcher: e = Ys("#"), suggestionClass: t = "ProseMirror-suggestion", onEnter: n = () => !1, onChange: a = () => !1, onExit: s = () => !1, onKeyDown: i = () => !1, debug: r = !1 }) {
707
- return new En({ key: new on("suggestions"), view() {
711
+ function xt({ matcher: e = ai("#"), suggestionClass: t = "ProseMirror-suggestion", onEnter: n = () => !1, onChange: a = () => !1, onExit: s = () => !1, onKeyDown: i = () => !1, debug: r = !1 }) {
712
+ return new Cn({ key: new mn("suggestions"), view() {
708
713
  return { update: (o, E) => {
709
- const u = this.key.getState(E), D = this.key.getState(o.state), l = u.active && D.active && u.range.from !== D.range.from, d = !u.active && D.active, c = u.active && !D.active, _ = !d && !c && u.text !== D.text;
710
- (c || l) && s({ view: o, range: u.range, text: u.text }), _ && !l && a({ view: o, range: D.range, text: D.text }), (d || l) && n({ view: o, range: D.range, text: D.text });
714
+ const u = this.key.getState(E), l = this.key.getState(o.state), c = u.active && l.active && u.range.from !== l.range.from, d = !u.active && l.active, D = u.active && !l.active, _ = !d && !D && u.text !== l.text;
715
+ (D || c) && s({ view: o, range: u.range, text: u.text }), _ && !c && a({ view: o, range: l.range, text: l.text }), (d || c) && n({ view: o, range: l.range, text: l.text });
711
716
  } };
712
717
  }, state: { init: () => ({ active: !1, range: {}, text: null }), apply(o, E) {
713
- const { selection: u } = o, D = { ...E };
718
+ const { selection: u } = o, l = { ...E };
714
719
  if (u.from === u.to) {
715
- (u.from < E.range.from || u.from > E.range.to) && (D.active = !1);
716
- const l = u.$from, d = e(l);
717
- d ? (D.active = !0, D.range = d.range, D.text = d.text) : D.active = !1;
718
- } else D.active = !1;
719
- return D.active || (D.range = {}, D.text = null), D;
720
+ (u.from < E.range.from || u.from > E.range.to) && (l.active = !1);
721
+ const c = u.$from, d = e(c);
722
+ d ? (l.active = !0, l.range = d.range, l.text = d.text) : l.active = !1;
723
+ } else l.active = !1;
724
+ return l.active || (l.range = {}, l.text = null), l;
720
725
  } }, props: { handleKeyDown(o, E) {
721
726
  const { active: u } = this.getState(o.state);
722
727
  return !!u && i({ view: o, event: E });
723
728
  }, decorations(o) {
724
729
  const { active: E, range: u } = this.getState(o);
725
- return E ? Zt.create(o.doc, [Jt.inline(u.from, u.to, { nodeName: "span", class: t, style: r ? "background: rgba(0, 0, 255, 0.05); color: blue; border: 2px solid blue;" : null })]) : null;
730
+ return E ? _n.create(o.doc, [Dn.inline(u.from, u.to, { nodeName: "span", class: t, style: r ? "background: rgba(0, 0, 255, 0.05); color: blue; border: 2px solid blue;" : null })]) : null;
726
731
  } } });
727
732
  }
728
- function $s({ placeholder: e, disabled: t, className: n = "", characterLimit: a, spellcheck: s }) {
729
- const i = ge(), r = b(), o = b(null);
730
- return F(() => (r.current = function(E, u, D, l, d) {
731
- const c = _a.create({ schema: y, plugins: [...d.filter(js), Aa(), dt({ ...ve, "Mod-z": Oa, "Mod-y": Ta, "Mod-b": gt("*"), "Mod-i": gt("_"), "Mod-Enter": ve.Enter, "Shift-Enter": ve.Enter, Enter: D }), dt({ Enter: ve.Enter }), pt] }), _ = ys(), T = new oa(E, { handlePaste: (I, R, N) => ws(I, R, l), clipboardTextSerializer(I) {
733
+ function si({ placeholder: e, disabled: t, className: n = "", characterLimit: a, spellcheck: s }) {
734
+ const i = He(), r = P(), o = P(null);
735
+ return h(() => (r.current = function(E, u, l, c, d) {
736
+ const D = fa.create({ schema: y, plugins: [...d.filter(ii), ka(), Mt({ ...ye, "Mod-z": Ma, "Mod-y": Ba, "Mod-b": jt("*"), "Mod-i": jt("_"), "Mod-Enter": ye.Enter, "Shift-Enter": ye.Enter, Enter: l }), Mt({ Enter: ye.Enter }), Yt] }), _ = ti(), T = new Ca(E, { handlePaste: (I, R, N) => ni(I, R, c), clipboardTextSerializer(I) {
732
737
  const R = [];
733
738
  return I.content.forEach((N) => {
734
- N && R.push(Rn(N.textContent));
739
+ N && R.push(bn(N.textContent));
735
740
  }), R.join();
736
- }, state: c, dispatchTransaction(I) {
741
+ }, state: D, dispatchTransaction(I) {
737
742
  I = (I = I.removeStoredMark(y.marks.literal)).removeStoredMark(y.marks.emoji);
738
743
  const R = T.state.apply(I);
739
- T.state.doc.eq(R.doc) || u(new ye(R.doc)), T.updateState(R), I.steps.some((N) => N instanceof Na) && _(T);
744
+ T.state.doc.eq(R.doc) || u(new ze(R.doc)), T.updateState(R), I.steps.some((N) => N instanceof ba) && _(T);
740
745
  } });
741
746
  return T;
742
747
  }(o.current, (E) => i.onChange(E), () => !!i.onEnter && (i.onEnter(), !0), (E) => i.onPasteImage(E), [i.emojiSuggesterPlugin(), i.mentionsPlugin()]), i.setEditorView(r.current), () => {
743
748
  var E;
744
749
  i.setEditorView(void 0), (E = r.current) == null || E.destroy();
745
- }), [i]), F(() => {
750
+ }), [i]), h(() => {
746
751
  var E;
747
752
  (E = r.current) == null || E.setProps({ editable: () => !t });
748
- }, [t]), F(() => It(() => {
749
- var E, u, D;
750
- return (D = r.current) == null ? void 0 : D.setProps({ attributes: { spellcheck: String((u = (E = i.spellcheck$.get()) != null ? E : s) != null ? u : !1), class: "t-text-input", "aria-label": "Message Field", role: "textbox" } });
751
- }), [i, s]), F(() => It(() => {
753
+ }, [t]), h(() => Pt(() => {
754
+ var E, u, l;
755
+ return (l = r.current) == null ? void 0 : l.setProps({ attributes: { spellcheck: String((u = (E = i.spellcheck$.get()) != null ? E : s) != null ? u : !1), class: "t-text-input", "aria-label": "Message Field", role: "textbox" } });
756
+ }), [i, s]), h(() => Pt(() => {
752
757
  var u;
753
758
  const E = r.current;
754
- E == null || E.dispatch(E.state.tr.setMeta(pt, (u = i.placeholder$.get()) != null ? u : e));
755
- }), [i, e]), F(() => {
759
+ E == null || E.dispatch(E.state.tr.setMeta(Yt, (u = i.placeholder$.get()) != null ? u : e));
760
+ }), [i, e]), h(() => {
756
761
  a && Number.isInteger(a) && i.setMaxLength(a);
757
762
  }, [a, i]), O("div", { className: `t-editor ${n}`, ref: o });
758
763
  }
759
- function vt(e) {
764
+ function Vt(e) {
760
765
  if (e.startsWith(":")) throw new Error("Not implemented");
761
766
  {
762
767
  const t = y.marks.emoji.create({ emoji: e });
763
768
  return y.text(e, [t]);
764
769
  }
765
770
  }
766
- function ft(e, t) {
771
+ function Xt(e, t) {
767
772
  const n = encodeURIComponent(e);
768
773
  return y.nodes.mention.create({ id: e, name: t }, y.text(`<!!mention:${n}|${t}>`));
769
774
  }
770
- const Ye = class Ye {
775
+ const We = class We {
771
776
  constructor(t) {
772
- this.doc = t, this.size = this.doc.content.size, this.hasContent = Nn(this.doc);
777
+ this.doc = t, this.size = this.doc.content.size, this.hasContent = Un(this.doc);
773
778
  }
774
779
  asText() {
775
780
  return this.doc.textContent.replace(/\xa0/g, " ");
776
781
  }
777
782
  };
778
- Ye.EMPTY = new Ye(y.topNodeType.create());
779
- let ye = Ye;
780
- function js(e) {
783
+ We.EMPTY = new We(y.topNodeType.create());
784
+ let ze = We;
785
+ function ii(e) {
781
786
  return e != null;
782
787
  }
783
- const Mn = /^\/.*[^\\]\/[im]*$/;
784
- function kt(e) {
785
- return Mn.test(e) ? !we(e).test("") : !1;
788
+ const Kn = /^\/.*[^\\]\/[im]*$/;
789
+ function Gt(e) {
790
+ return Kn.test(e) ? !Ke(e).test("") : !1;
786
791
  }
787
- function we(e) {
792
+ function Ke(e) {
788
793
  const t = e.match(/^\/(.*[^\\])\/(.*)$/);
789
794
  if (!t) throw new Error(`Expected ${e} to be a (non-empty) regex`);
790
795
  let n = t[2] || "";
791
796
  return n = n.replace(/[^im]/g, "") + "g", new RegExp(t[1], n);
792
797
  }
793
- function Bn(e) {
798
+ function Wn(e) {
794
799
  const t = e.replace(/\./g, "\\.").replace(/\*/g, ".*");
795
800
  return new RegExp("^" + t + "$", "i");
796
801
  }
797
- function xs(e, t) {
798
- const n = ln(t), a = Bn(e);
802
+ function ri(e, t) {
803
+ const n = gn(t), a = Wn(e);
799
804
  return n !== void 0 && a.test(n);
800
805
  }
801
- const Vs = /^[]/g;
802
- function Xs(e) {
806
+ const oi = /^[]/g;
807
+ function Ei(e) {
803
808
  return e.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
804
809
  }
805
- function rt(e, t) {
810
+ function St(e, t) {
806
811
  !e() && !t && (t = e.toString().replace(/^function\s*\(\)\s*\{\s*return\s*(.*);\s*\}\s*$/, "`$1`") + " was not true");
807
812
  }
808
813
  ((e) => {
@@ -836,45 +841,51 @@ function rt(e, t) {
836
841
  }, e.falsy = function(a) {
837
842
  }, e.never = function(a) {
838
843
  };
839
- })(rt || (rt = {}));
840
- const Ee = rt, Gs = new RegExp(":arslan:|" + /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE89\uDE8F-\uDEC2\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g.source, "g"), zs = /\uFE0F/g, Ks = "‍";
841
- function Ws(e) {
844
+ })(St || (St = {}));
845
+ const Ae = St, ui = new RegExp(":arslan:|" + /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE89\uDE8F-\uDEC2\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g.source, "g"), li = /\uFE0F/g, ci = "‍";
846
+ function Di(e) {
842
847
  if (e === ":arslan:") return "https://cdn.talkjs.com/__assets/5461191341cea882b3f227c085d5772c.gif";
843
848
  const t = function(a) {
844
849
  const s = [];
845
850
  let i = 0, r = 0, o = 0;
846
851
  for (; o < a.length; ) i = a.charCodeAt(o++), r ? (s.push((65536 + (r - 55296 << 10) + (i - 56320)).toString(16)), r = 0) : 55296 <= i && i <= 56319 ? r = i : s.push(i.toString(16));
847
852
  return s.join("-");
848
- }((n = e).indexOf(Ks) < 0 ? n.replace(zs, "") : n);
853
+ }((n = e).indexOf(ci) < 0 ? n.replace(li, "") : n);
849
854
  var n;
850
855
  return `https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/svg/${t}.svg`;
851
856
  }
852
- class Pn {
857
+ class qn {
853
858
  constructor({ mode: t, allowedHostnames: n, allowedPhoneNrs: a, allowedMatches: s, forbiddenMatches: i, suppressLinks: r, suppressEmailAddresses: o, suppressPhoneNumbers: E, replacement: u }) {
854
- Ee.oneOf(t, ["all", "otherOnly", "off"]), this.mode = t, this.suppressLinks = r !== !1, this.suppressEmailAddresses = o !== !1, this.suppressPhoneNumbers = E !== !1, this.allowedHostnames = n || [], this.allowedPhoneNrs = (a || []).filter((D) => D).map((D) => D.replace(/[^0-9]/g, "")), this.allowedMatches = (s || []).filter(kt).map((D) => we(D)), this.forbiddenMatches = (i || []).filter(kt).map((D) => we(D)), Ee(() => this.allowedMatches.every((D) => D.flags.includes("g")), "All regexes in `suppressContactInfo.allowedMatches` must be global. Check `allowedMatches`!"), Ee(() => this.forbiddenMatches.every((D) => D.flags.includes("g")), "All regexes in `suppressContactInfo.forbiddenMatches` must be global. Check `forbiddenMatches`!"), u = u == null ? void 0 : u.trim(), this.replacement = u && u.length > 0 ? u : void 0;
859
+ Ae.oneOf(t, ["all", "otherOnly", "off"]), this.mode = t, this.suppressLinks = r !== !1, this.suppressEmailAddresses = o !== !1, this.suppressPhoneNumbers = E !== !1, this.allowedHostnames = n || [], this.allowedPhoneNrs = (a || []).filter((l) => l).map((l) => l.replace(/[^0-9]/g, "")), this.allowedMatches = (s || []).filter(Gt).map((l) => Ke(l)), this.forbiddenMatches = (i || []).filter(Gt).map((l) => Ke(l)), Ae(() => this.allowedMatches.every((l) => l.flags.includes("g")), "All regexes in `suppressContactInfo.allowedMatches` must be global. Check `allowedMatches`!"), Ae(() => this.forbiddenMatches.every((l) => l.flags.includes("g")), "All regexes in `suppressContactInfo.forbiddenMatches` must be global. Check `forbiddenMatches`!"), u = u == null ? void 0 : u.trim(), this.replacement = u && u.length > 0 ? u : void 0;
855
860
  }
856
861
  shouldSuppress({ isContentBySender: t }) {
857
862
  return this.mode === "all" || this.mode === "otherOnly" && !t;
858
863
  }
859
864
  }
860
- function lt(e) {
861
- var n, a, s, i, r, o, E, u, D, l, d, c, _;
865
+ function mt(e) {
866
+ var n, a, s, i, r, o, E, u, l, c, d, D, _;
862
867
  let t = "";
863
- return e.t && (t = `(${e.t("CONTACT_INFORMATION_HIDDEN")})`), { formattedLinks: (n = e.formattedLinks) != null ? n : "plaintext", markup: (a = e.markup) != null ? a : !1, useFallbackMentions: (s = e.useFallbackMentions) != null ? s : !1, sameTabLinkRules: (i = e.sameTabLinkRules) != null ? i : [], enableEmojiImageFallback: (r = e.enableEmojiImageFallback) != null ? r : !1, highlight: (o = e.highlight) != null ? o : [], contactInfo: (E = e.contactInfo) != null ? E : !1, suppression: (u = e.suppression) != null ? u : new Pn({ mode: "off" }), contactInfoHiddenText: (d = (l = e.contactInfoHiddenText) != null ? l : (D = e.suppression) == null ? void 0 : D.replacement) != null ? d : t, customEmojiUrls: (c = e.customEmojiUrls) != null ? c : {}, enableActions: (_ = e.enableActions) != null ? _ : !0 };
868
+ return e.t && (t = `(${e.t("CONTACT_INFORMATION_HIDDEN")})`), { formattedLinks: (n = e.formattedLinks) != null ? n : "plaintext", markup: (a = e.markup) != null ? a : !1, useFallbackMentions: (s = e.useFallbackMentions) != null ? s : !1, sameTabLinkRules: (i = e.sameTabLinkRules) != null ? i : [], enableEmojiImageFallback: (r = e.enableEmojiImageFallback) != null ? r : !1, highlight: (o = e.highlight) != null ? o : [], contactInfo: (E = e.contactInfo) != null ? E : !1, suppression: (u = e.suppression) != null ? u : new qn({ mode: "off" }), contactInfoHiddenText: (d = (c = e.contactInfoHiddenText) != null ? c : (l = e.suppression) == null ? void 0 : l.replacement) != null ? d : t, customEmojiUrls: (D = e.customEmojiUrls) != null ? D : {}, enableActions: (_ = e.enableActions) != null ? _ : !0 };
864
869
  }
865
- function qs({ id: e, text: t }) {
870
+ function _i({ id: e, text: t }) {
866
871
  var i;
867
- const n = f(), a = v(() => {
872
+ const n = f(), a = F(() => {
868
873
  var E;
869
874
  if (n.type === "ConversationListStore") return;
870
875
  const r = n.state$.extCurrentConversationId.get(), o = r && n.state$.participants.child(r).get();
871
876
  return (E = o == null ? void 0 : o.find((u) => u.user.id === e)) == null ? void 0 : E.user;
872
- }), s = v(n.extUserId$);
877
+ }), s = F(n.extUserId$);
873
878
  return O("span", { className: "t-mention", "t-is-current-user": s === e ? "" : void 0, children: `@${(i = a == null ? void 0 : a.name) != null ? i : t}` });
874
879
  }
875
- function le(e, t) {
880
+ function Ai({ message: e, type: t, action: n, params: a, children: s }) {
881
+ const i = Ue(), r = H((E) => {
882
+ E.preventDefault(), i.triggerMessageAction(e, n, a);
883
+ }, [i, e, n, a]), o = { "t-action": n, onClick: r };
884
+ return t === "actionButton" ? O("button", { ...o, type: "button", children: s }) : O("a", { ...o, href: "#", children: s });
885
+ }
886
+ function Se(e, t) {
876
887
  const n = e.flatMap((a) => {
877
- if (typeof a == "string") return Je(a, t.highlight);
888
+ if (typeof a == "string") return ut(a, t.highlight);
878
889
  switch (a.type) {
879
890
  case "bold":
880
891
  case "italic":
@@ -882,105 +893,109 @@ function le(e, t) {
882
893
  case "blockquote":
883
894
  case "bulletpoint":
884
895
  case "bulletPoint":
885
- return Js(a, t);
896
+ return Oi(a, t);
886
897
  case "bulletlist":
887
898
  case "bulletList":
888
- return [ie("ul", null, ...le(a.children, t))];
899
+ return [le("ul", null, ...Se(a.children, t))];
889
900
  case "autolink":
890
901
  case "autoLink":
891
902
  case "link":
892
- return Qs(a, t);
903
+ return di(a, t);
893
904
  case "codeblock":
894
905
  case "codeBlock":
895
- return [O("code", { "data-language": a.language, children: Je(a.text, t.highlight) })];
906
+ return [O("code", { "data-language": a.language, children: ut(a.text, t.highlight) })];
896
907
  case "codespan":
897
908
  case "codeSpan":
898
- return O("code", { children: Je((s = a.text, s.replace(/^\s*\n/m, "").replace(/\n\s*$/m, "")), t.highlight) });
909
+ return O("code", { children: ut((s = a.text, s.replace(/^\s*\n/m, "").replace(/\n\s*$/m, "")), t.highlight) });
899
910
  case "mention":
900
- return Ee.falsy(t.useFallbackMentions), O(qs, { id: a.id, text: a.text }, a.id);
911
+ return Ae.falsy(t.useFallbackMentions), O(_i, { id: a.id, text: a.text }, a.id);
901
912
  case "suppressed":
902
913
  return [O("i", { children: t.contactInfoHiddenText })];
903
914
  case "emoji":
904
- return t.enableEmojiImageFallback ? [O(Zs, { unicode: a.text })] : [a.text];
915
+ return t.enableEmojiImageFallback ? [O(Ti, { unicode: a.text })] : [a.text];
905
916
  case "actionlink":
906
917
  case "actionLink":
907
918
  case "actionbutton":
908
919
  case "actionButton":
909
- return ei(a, t);
920
+ return Si(a, t);
910
921
  case "customemoji":
911
922
  case "customEmoji":
912
923
  return a.text;
913
924
  default:
914
- Ee.never(a);
925
+ Ae.never(a);
915
926
  }
916
927
  var s;
917
928
  });
918
929
  return n.every((a) => typeof a == "string") ? [n.join("")] : n;
919
930
  }
920
- function Je(e, t) {
921
- return t.length === 0 ? [e] : nt(e, je(e, function(n) {
931
+ function ut(e, t) {
932
+ return t.length === 0 ? [e] : At(e, Qe(e, function(n) {
922
933
  const a = n.map((i) => i.trim()).filter((i) => i);
923
- if (a.length === 0) return Vs;
924
- const s = a.map(Xs).join("|");
934
+ if (a.length === 0) return oi;
935
+ const s = a.map(Ei).join("|");
925
936
  return new RegExp(s, "gi");
926
937
  }(t)).map((n) => ({ offset: n.index, matchedText: n[0] })), ({ matchedText: n }) => [O("span", { className: "highlighted-text", children: n })]);
927
938
  }
928
- const Js = (e, t) => {
939
+ const Oi = (e, t) => {
929
940
  const n = { bold: "strong", italic: "em", strikethrough: "del", blockquote: "blockquote", bulletpoint: "li", bulletPoint: "li" }[e.type];
930
- return [ie(n, null, ...le(e.children, t))];
941
+ return [le(n, null, ...Se(e.children, t))];
931
942
  };
932
- function Zs({ unicode: e }) {
933
- const [t, n] = H(() => e !== ":arslan:");
934
- if (F(() => {
935
- t && !Tn(e) && n(!1);
943
+ function Ti({ unicode: e }) {
944
+ const [t, n] = b(() => e !== ":arslan:");
945
+ if (h(() => {
946
+ t && !Mn(e) && n(!1);
936
947
  }, []), t) return O("span", { className: "t-emoji", children: e });
937
- const a = Ws(e);
948
+ const a = Di(e);
938
949
  return O("img", { className: "t-emoji", src: a, alt: e });
939
950
  }
940
- const Qs = (e, t) => {
951
+ const di = (e, t) => {
941
952
  const n = "children" in e ? e.children : [e.text];
942
953
  switch (t.formattedLinks) {
943
954
  case "link": {
944
955
  const a = function(s, i) {
945
- for (const r of s) if (Mn.test(r)) {
946
- if (we(r).test(i)) return "_top";
947
- } else if (xs(r, i)) return "_top";
956
+ for (const r of s) if (Kn.test(r)) {
957
+ if (Ke(r).test(i)) return "_top";
958
+ } else if (ri(r, i)) return "_top";
948
959
  return "_blank";
949
960
  }(t.sameTabLinkRules, e.url);
950
- return [ie("a", { target: a, href: e.url, rel: "noreferrer" }, ...le(n, t))];
961
+ return [le("a", { target: a, href: e.url, rel: "noreferrer" }, ...Se(n, t))];
951
962
  }
952
963
  case "plaintext":
953
- return "children" in e && e.children.every((a) => typeof a == "string") ? [e.children.join("")] : [ie(aa, null, ...le(n, t))];
964
+ return "children" in e && e.children.every((a) => typeof a == "string") ? [e.children.join("")] : [le(Na, null, ...Se(n, t))];
954
965
  default:
955
- Ee.never(t.formattedLinks);
966
+ Ae.never(t.formattedLinks);
956
967
  }
957
- }, ei = (e, t) => t.enableActions ? [ie("button", { "data-type": e.type, "data-action": e.action, "data-params": JSON.stringify(e.params), disabled: !0 }, ...le(e.children, t))] : [null];
958
- function ti(e, t) {
959
- return Be(e, lt(t));
968
+ }, Si = (e, t) => {
969
+ if (!t.enableActions) return e.children;
970
+ const n = e.type === "actionlink" ? "actionLink" : e.type === "actionbutton" ? "actionButton" : e.type;
971
+ return [le(Ai, { type: n, action: e.action, params: e.params, message: t.message }, ...Se(e.children, t))];
972
+ };
973
+ function Ii(e, t) {
974
+ return je(e, mt(t));
960
975
  }
961
- function Be(e, t) {
976
+ function je(e, t) {
962
977
  return e.flatMap((n) => {
963
978
  if (typeof n == "string") {
964
979
  let a = [n];
965
- return a = Ze(a, (s) => function(i, r) {
966
- const { suppression: { forbiddenMatches: o, allowedMatches: E } } = r, u = ut(o, (D) => je(i, D)).filter(([D]) => !E.some((l) => D.match(l) !== null)).map((D) => ({ offset: D.index, matchedText: D[0] }));
967
- return nt(i, u, () => [{ type: "suppressed", text: "CONTACT_INFORMATION_HIDDEN" }]);
968
- }(s, t)), a = Ze(a, (s) => function(i) {
969
- return nt(i, function(r) {
980
+ return a = lt(a, (s) => function(i, r) {
981
+ const { suppression: { forbiddenMatches: o, allowedMatches: E } } = r, u = Rt(o, (l) => Qe(i, l)).filter(([l]) => !E.some((c) => l.match(c) !== null)).map((l) => ({ offset: l.index, matchedText: l[0] }));
982
+ return At(i, u, () => [{ type: "suppressed", text: "CONTACT_INFORMATION_HIDDEN" }]);
983
+ }(s, t)), a = lt(a, (s) => function(i) {
984
+ return At(i, function(r) {
970
985
  const o = [];
971
986
  let E;
972
- for (; E = Gs.exec(r); ) {
973
- const u = E[0], D = E.index;
974
- o.push({ offset: D, matchedText: u });
987
+ for (; E = ui.exec(r); ) {
988
+ const u = E[0], l = E.index;
989
+ o.push({ offset: l, matchedText: u });
975
990
  }
976
991
  return o;
977
992
  }(i), (r) => [{ type: "emoji", text: r.matchedText }]);
978
- }(s)), a = Ze(a, (s) => function(i, r) {
993
+ }(s)), a = lt(a, (s) => function(i, r) {
979
994
  if (r.contactInfo !== "suppress") return [i];
980
995
  const o = [];
981
- if ((r.suppression.suppressEmailAddresses || r.suppression.suppressLinks) && o.push(gn), r.suppression.suppressPhoneNumbers && o.push(hn), o.length === 0) return [i];
982
- const E = vn(i, { multilineSteps: [], singlelineSteps: o }), u = E.map((D) => typeof D == "string" ? D : Mt(D.url, r.suppression) ? D.text : { type: "suppressed", text: "CONTACT_INFORMATION_HIDDEN" });
983
- return Dt(u);
996
+ if ((r.suppression.suppressEmailAddresses || r.suppression.suppressLinks) && o.push(xn), r.suppression.suppressPhoneNumbers && o.push(jn), o.length === 0) return [i];
997
+ const E = Xn(i, { multilineSteps: [], singlelineSteps: o }), u = E.map((l) => typeof l == "string" ? l : zt(l.url, r.suppression) ? l.text : { type: "suppressed", text: "CONTACT_INFORMATION_HIDDEN" });
998
+ return Lt(u);
984
999
  }(s, t)), a;
985
1000
  }
986
1001
  switch (n.type) {
@@ -992,7 +1007,7 @@ function Be(e, t) {
992
1007
  case "bulletList":
993
1008
  case "bulletpoint":
994
1009
  case "bulletPoint":
995
- return { type: n.type, children: Be(n.children, t) };
1010
+ return { type: n.type, children: je(n.children, t) };
996
1011
  case "codespan":
997
1012
  case "codeSpan":
998
1013
  case "codeblock":
@@ -1007,62 +1022,62 @@ function Be(e, t) {
1007
1022
  case "autolink":
1008
1023
  case "autoLink":
1009
1024
  return function(a, s) {
1010
- return s.contactInfo === "link" ? a : s.contactInfo === "suppress" ? Mt(a.url, s.suppression) ? a : { type: "suppressed", text: "CONTACT_INFORMATION_HIDDEN" } : a.text;
1025
+ return s.contactInfo === "link" ? a : s.contactInfo === "suppress" ? zt(a.url, s.suppression) ? a : { type: "suppressed", text: "CONTACT_INFORMATION_HIDDEN" } : a.text;
1011
1026
  }(n, t);
1012
1027
  case "link":
1013
- return { type: "link", url: n.url, children: Be(n.children, t) };
1028
+ return { type: "link", url: n.url, children: je(n.children, t) };
1014
1029
  case "actionlink":
1015
1030
  case "actionLink":
1016
1031
  case "actionbutton":
1017
1032
  case "actionButton":
1018
- return { type: n.type, action: n.action, params: n.params, children: Be(n.children, t) };
1033
+ return { type: n.type, action: n.action, params: n.params, children: je(n.children, t) };
1019
1034
  }
1020
1035
  });
1021
1036
  }
1022
- function Ze(e, t) {
1023
- return ut(e, (n) => typeof n == "string" ? t(n) : [n]);
1037
+ function lt(e, t) {
1038
+ return Rt(e, (n) => typeof n == "string" ? t(n) : [n]);
1024
1039
  }
1025
- function Mt(e, t) {
1040
+ function zt(e, t) {
1026
1041
  if (t.allowedMatches.some((n) => e.match(n) !== null)) return !0;
1027
1042
  if (t.forbiddenMatches.some((n) => e.match(n) !== null)) return !1;
1028
1043
  if (e.startsWith("mailto:")) {
1029
1044
  const n = e.substring(7).replace(/^.*@/, "");
1030
- return !t.suppressEmailAddresses || Bt(t.allowedHostnames, n);
1045
+ return !t.suppressEmailAddresses || Kt(t.allowedHostnames, n);
1031
1046
  }
1032
1047
  if (e.startsWith("tel:")) {
1033
1048
  const n = e.substring(4).replace(/[^0-9]/g, "");
1034
1049
  return !t.suppressPhoneNumbers || t.allowedPhoneNrs.some((a) => n.endsWith(a));
1035
1050
  }
1036
1051
  {
1037
- const n = ln(e);
1038
- return !t.suppressLinks || !n || Bt(t.allowedHostnames, n);
1052
+ const n = gn(e);
1053
+ return !t.suppressLinks || !n || Kt(t.allowedHostnames, n);
1039
1054
  }
1040
1055
  }
1041
- function Bt(e, t) {
1056
+ function Kt(e, t) {
1042
1057
  for (const n of e)
1043
- if (Bn(n).test(t)) return !0;
1058
+ if (Wn(n).test(t)) return !0;
1044
1059
  return !1;
1045
1060
  }
1046
- function Hn({ block: e, nonInteractive: t, message: n, className: a = "" }) {
1061
+ function Jn({ block: e, nonInteractive: t, message: n, className: a = "" }) {
1047
1062
  const s = !t, { nodes: i, roleOptions: r } = function(E, u) {
1048
1063
  var N;
1049
- const D = f(), l = v(D.app$.role);
1050
- k.defined(l);
1051
- const d = u.type === "UserMessage", c = ((N = u.sender) == null ? void 0 : N.id) === D.extUserId$.peek(), _ = l.suppressContactInfo, T = d && _.shouldSuppress({ isContentBySender: c }), I = ti(E.children, { contactInfo: T ? "suppress" : "link", suppression: _ }), R = { sameTabLinkRules: l.sameTabLinkRules, contactInfoHiddenText: l.suppressContactInfo.replacement || `(${D.t$.peek().CONTACT_INFORMATION_HIDDEN})` };
1064
+ const l = f(), c = F(l.app$.role);
1065
+ k.defined(c);
1066
+ const d = u.type === "UserMessage", D = ((N = u.sender) == null ? void 0 : N.id) === l.extUserId$.peek(), _ = c.suppressContactInfo, T = d && _.shouldSuppress({ isContentBySender: D }), I = Ii(E.children, { contactInfo: T ? "suppress" : "link", suppression: _ }), R = { sameTabLinkRules: c.sameTabLinkRules, contactInfoHiddenText: c.suppressContactInfo.replacement || `(${l.t$.peek().CONTACT_INFORMATION_HIDDEN})` };
1052
1067
  return { nodes: I, roleOptions: R };
1053
- }(e, n), o = function(E, u = {}) {
1054
- return le(E, lt(u));
1055
- }(i, { enableEmojiImageFallback: !0, formattedLinks: s ? "link" : "plaintext", enableActions: s, ...r });
1056
- return se.createElement("span", { className: `t-text ${a}` }, ...o);
1068
+ }(e, n), o = function(E, u = {}, l) {
1069
+ return Se(E, { ...mt(u), message: l });
1070
+ }(i, { enableEmojiImageFallback: !0, formattedLinks: s ? "link" : "plaintext", enableActions: s, ...r }, n);
1071
+ return ue.createElement("span", { className: `t-text ${a}` }, ...o);
1057
1072
  }
1058
- function ni(e) {
1059
- const t = G(), n = f(), { className: a = "", ...s } = e, i = v(() => n.state$.messages.child(n.state$.extCurrentConversationId.get()).lookup.child(e.message.id).content.child(0).url.get());
1073
+ function Ni(e) {
1074
+ const t = W(), n = f(), { className: a = "", ...s } = e, i = F(() => n.state$.messages.child(n.state$.extCurrentConversationId.get()).lookup.child(e.message.id).content.child(0).url.get());
1060
1075
  return O("div", { className: `t-message-content ${a}`, children: e.message.content.map((r) => {
1061
1076
  var o;
1062
- return O(ai, { block: r, theme: t, downloadUrl: i, ...s }, e.message.createdAt + ((o = e.message.editedAt) != null ? o : 0));
1077
+ return O(Ri, { block: r, theme: t, downloadUrl: i, ...s }, e.message.createdAt + ((o = e.message.editedAt) != null ? o : 0));
1063
1078
  }) });
1064
1079
  }
1065
- function ai({ common: e, block: t, message: n, theme: a, downloadUrl: s }) {
1080
+ function Ri({ common: e, block: t, message: n, theme: a, downloadUrl: s }) {
1066
1081
  const i = function(r, o) {
1067
1082
  switch (o.type) {
1068
1083
  case "text":
@@ -1088,21 +1103,21 @@ function ai({ common: e, block: t, message: n, theme: a, downloadUrl: s }) {
1088
1103
  }(a, t);
1089
1104
  return O(i, { block: t, common: e, message: n, downloadUrl: s });
1090
1105
  }
1091
- function Ve(e, t, n = !0) {
1092
- const a = U((i) => {
1106
+ function tt(e, t, n = !0) {
1107
+ const a = H((i) => {
1093
1108
  i.keyCode === 27 && e();
1094
- }, [e]), s = U((i) => {
1109
+ }, [e]), s = H((i) => {
1095
1110
  i.target instanceof HTMLElement && i.target.closest(t) === null && e();
1096
1111
  }, [t, e]);
1097
- F(() => {
1112
+ h(() => {
1098
1113
  if (n) return window.addEventListener("keydown", a, !0), document.addEventListener("mousedown", s, !0), () => {
1099
1114
  window.removeEventListener("keydown", a, !0), document.removeEventListener("mousedown", s, !0);
1100
1115
  };
1101
1116
  }, [a, s, n]);
1102
1117
  }
1103
- function Un(e) {
1104
- const [t, n] = H();
1105
- return F(() => {
1118
+ function Zn(e) {
1119
+ const [t, n] = b();
1120
+ return h(() => {
1106
1121
  let a = !0;
1107
1122
  return e().then((s) => {
1108
1123
  a && n({ value: s });
@@ -1111,38 +1126,38 @@ function Un(e) {
1111
1126
  };
1112
1127
  }, [e]), t;
1113
1128
  }
1114
- function ct() {
1115
- const e = f(), t = v(e.t$);
1116
- return O(be, { type: "spinner", "aria-label": t.LOADING, className: "t-loading-icon" });
1129
+ function Ct() {
1130
+ const e = f(), t = F(e.t$);
1131
+ return O(Ge, { type: "spinner", "aria-label": t.LOADING, className: "t-loading-icon" });
1117
1132
  }
1118
- const si = "https://cdn.jsdelivr.net/npm/emoji-picker-element@1.26.3/+esm", _t = /* @__PURE__ */ function(e) {
1133
+ const Li = "https://cdn.jsdelivr.net/npm/emoji-picker-element@1.26.3/+esm", pt = /* @__PURE__ */ function(e) {
1119
1134
  let t;
1120
1135
  return () => (t === void 0 && (t = { value: e() }), t.value);
1121
1136
  }(async function() {
1122
1137
  if (typeof window == "undefined" || window.document === void 0) return new Promise(() => {
1123
1138
  });
1124
1139
  try {
1125
- const e = await import(/*webpackIgnore: true*/ /* @vite-ignore */si);
1140
+ const e = await import(/*webpackIgnore: true*/ /* @vite-ignore */Li);
1126
1141
  return await new e.Database().ready(), e;
1127
1142
  } catch (e) {
1128
- return Ue.error("Failed to load emoji picker:", e), new Promise(() => {
1143
+ return Xe.error("Failed to load emoji picker:", e), new Promise(() => {
1129
1144
  });
1130
1145
  }
1131
1146
  });
1132
- function bn(e) {
1133
- const { onClose: t, onEmojiSelected: n } = Ea(), a = b(null), s = Un(_t);
1134
- return F(() => {
1147
+ function Qn(e) {
1148
+ const { onClose: t, onEmojiSelected: n } = pa(), a = P(null), s = Zn(pt);
1149
+ return h(() => {
1135
1150
  if (!s) return;
1136
1151
  k.defined(a.current);
1137
1152
  const i = a.current, r = i.shadowRoot;
1138
- (function(u, D) {
1139
- const l = document.createElement("style");
1140
- l.textContent = D, u.appendChild(l);
1153
+ (function(u, l) {
1154
+ const c = document.createElement("style");
1155
+ c.textContent = l, u.appendChild(c);
1141
1156
  })(r, ".search-row{margin-right:var(--emoji-padding)}.emoji-menu{grid-template-columns:repeat(auto-fill,var(--total-emoji-size));padding:var(--emoji-padding)}.emoji,button.emoji{border-radius:8px}.favorites{border-top-width:1px}input.search:focus{border-color:var(--input-focused-border-color);outline:0}.picker{container-type:size}@container (height < 300px){.favorites{display:none}}#skintone-button{margin:0 -3px 0 4px}.custom-emoji{padding:0}#emo-🏻,#emo-🏼,#emo-🏽,#emo-🏾,#emo-🏿{display:none}[data-has-mouse] .emoji:hover{background-color:var(--button-hover-background)}");
1142
1157
  const o = (u) => {
1143
- var l;
1144
- const D = (l = u.detail.unicode) != null ? l : u.detail.name;
1145
- n(D);
1158
+ var c;
1159
+ const l = (c = u.detail.unicode) != null ? c : u.detail.name;
1160
+ n(l);
1146
1161
  };
1147
1162
  function E(u) {
1148
1163
  u.pointerType === "mouse" && (r.querySelector("section").dataset.hasMouse = "true");
@@ -1150,24 +1165,24 @@ function bn(e) {
1150
1165
  return i.addEventListener("emoji-click", o), i.addEventListener("pointermove", E, { once: !0 }), () => {
1151
1166
  i.removeEventListener("emoji-click", o), i.removeEventListener("pointermove", E);
1152
1167
  };
1153
- }, [s, n]), F(() => {
1168
+ }, [s, n]), h(() => {
1154
1169
  var i;
1155
1170
  s && a.current && ((i = a.current.shadowRoot.getElementById("search")) == null || i.focus());
1156
- }, [s]), Ve(() => t(), ".t-emoji-picker"), O("div", s ? { className: "t-emoji-picker", children: O("emoji-picker", { ref: a, class: e.colorScheme }) } : { className: "t-emoji-picker", "t-loading": "", children: O(ct, {}) });
1171
+ }, [s]), tt(() => t(), ".t-emoji-picker"), O("div", s ? { className: "t-emoji-picker", children: O("emoji-picker", { ref: a, class: e.colorScheme }) } : { className: "t-emoji-picker", "t-loading": "", children: O(Ct, {}) });
1157
1172
  }
1158
- function ii({ messageId: e, colorScheme: t }) {
1159
- const { closePopover: n } = ua(), a = _e();
1160
- return O("div", { className: "t-reaction-picker", children: O(Qt.Provider, { value: { onClose: n, onEmojiSelected: (s) => {
1173
+ function mi({ messageId: e, colorScheme: t }) {
1174
+ const { closePopover: n } = ha(), a = Ue();
1175
+ return O("div", { className: "t-reaction-picker", children: O(On.Provider, { value: { onClose: n, onEmojiSelected: (s) => {
1161
1176
  a.addReaction(e, s), n();
1162
- } }, children: O(bn, { colorScheme: t }) }) });
1177
+ } }, children: O(Qn, { colorScheme: t }) }) });
1163
1178
  }
1164
- const ri = { ltr: ["ArrowLeft", "ArrowRight"], rtl: ["ArrowRight", "ArrowLeft"], ttb: ["ArrowUp", "ArrowDown"] };
1165
- function yn(e, { focused: t, setFocused: n, itemCount: a, dir: s, onConfirm: i, onSpace: r }) {
1179
+ const Ci = { ltr: ["ArrowLeft", "ArrowRight"], rtl: ["ArrowRight", "ArrowLeft"], ttb: ["ArrowUp", "ArrowDown"] };
1180
+ function ea(e, { focused: t, setFocused: n, itemCount: a, dir: s, onConfirm: i, onSpace: r }) {
1166
1181
  if (a === 0) return !1;
1167
- const o = (D) => {
1168
- var l, d, c;
1169
- l = 0, d = D, c = a - 1, D = Math.max(l, Math.min(d, c)), n(D);
1170
- }, [E, u] = ri[s];
1182
+ const o = (l) => {
1183
+ var c, d, D;
1184
+ c = 0, d = l, D = a - 1, l = Math.max(c, Math.min(d, D)), n(l);
1185
+ }, [E, u] = Ci[s];
1171
1186
  switch (e) {
1172
1187
  case E:
1173
1188
  return o(t - 1), !0;
@@ -1181,111 +1196,111 @@ function yn(e, { focused: t, setFocused: n, itemCount: a, dir: s, onConfirm: i,
1181
1196
  }
1182
1197
  return !1;
1183
1198
  }
1184
- function wn({ focused: e, setFocused: t, buttonId: n }) {
1185
- ce(() => {
1199
+ function ta({ focused: e, setFocused: t, buttonId: n }) {
1200
+ Ie(() => {
1186
1201
  var i;
1187
1202
  const s = n(e);
1188
1203
  s && ((i = document.getElementById(s)) == null || i.scrollIntoView({ block: "nearest" }));
1189
1204
  }, [e, n]);
1190
- const a = U((s) => {
1205
+ const a = H((s) => {
1191
1206
  const i = s.currentTarget.dataset.index;
1192
1207
  t(+i);
1193
1208
  }, [t]);
1194
- return { containerProps: P(() => ({ role: "menu", "aria-activedescendant": n(e) }), [e, n]), itemProps: U((s) => ({ onMouseMove: a, id: n(s), "data-index": s }), [a, n]) };
1209
+ return { containerProps: M(() => ({ role: "menu", "aria-activedescendant": n(e) }), [e, n]), itemProps: H((s) => ({ onMouseMove: a, id: n(s), "data-index": s }), [a, n]) };
1195
1210
  }
1196
- function oi(e) {
1197
- const [t, n] = H([]), [a, s] = H([]), [i, r] = H(0), [o, E] = H(0), u = Un(_t), D = P(() => u && new u.value.Database({}), [u]), l = ge(), d = v(l.state$.suggestEmojiQuery);
1198
- F(() => {
1199
- D && (d ? async function() {
1200
- const N = await D.getPreferredSkinTone();
1211
+ function pi(e) {
1212
+ const [t, n] = b([]), [a, s] = b([]), [i, r] = b(0), [o, E] = b(0), u = Zn(pt), l = M(() => u && new u.value.Database({}), [u]), c = He(), d = F(c.state$.suggestEmojiQuery);
1213
+ h(() => {
1214
+ l && (d ? async function() {
1215
+ const N = await l.getPreferredSkinTone();
1201
1216
  E(N);
1202
- let L = await D.getEmojiBySearchQuery(d);
1203
- if (L = L.filter((C) => C.url || function(h) {
1204
- return h.version <= dn && !ui.includes(h.unicode);
1205
- }(C)), function(C, h) {
1206
- h.sort((p, m) => {
1207
- var Y, g;
1208
- const M = (Y = p.shortcodes) == null ? void 0 : Y.find((w) => w.startsWith(C)), j = (g = m.shortcodes) == null ? void 0 : g.find((w) => w.startsWith(C));
1209
- return M && !j ? -1 : !M && j ? 1 : M && j ? M.length - j.length : 0;
1217
+ let L = await l.getEmojiBySearchQuery(d);
1218
+ if (L = L.filter((m) => m.url || function(p) {
1219
+ return p.version <= Bn && !gi.includes(p.unicode);
1220
+ }(m)), function(m, p) {
1221
+ p.sort((C, B) => {
1222
+ var V, X;
1223
+ const j = (V = C.shortcodes) == null ? void 0 : V.find((J) => J.startsWith(m)), v = (X = B.shortcodes) == null ? void 0 : X.find((J) => J.startsWith(m));
1224
+ return j && !v ? -1 : !j && v ? 1 : j && v ? j.length - v.length : 0;
1210
1225
  });
1211
1226
  }(d.substring(1), L), r(0), n(L), L.length > 0 && s(L), d.endsWith(":")) {
1212
- const C = d.slice(1, -1), h = L.find((p) => {
1213
- var m;
1214
- return (m = p.shortcodes) == null ? void 0 : m.includes(C);
1227
+ const m = d.slice(1, -1), p = L.find((C) => {
1228
+ var B;
1229
+ return (B = C.shortcodes) == null ? void 0 : B.includes(m);
1215
1230
  });
1216
- h && l.selectEmoji(Ie(h, N));
1231
+ p && c.selectEmoji(pe(p, N));
1217
1232
  }
1218
1233
  }() : n([]));
1219
- }, [d, l, D]);
1220
- const c = U((N) => {
1234
+ }, [d, c, l]);
1235
+ const D = H((N) => {
1221
1236
  const L = t[N];
1222
- return L && "emoji-button-" + Ie(L, o);
1223
- }, [t, o]), { containerProps: _, itemProps: T } = wn({ focused: i, setFocused: r, buttonId: c }), I = t.length > 0;
1224
- Ve(() => l.closeSuggester(), ".t-emoji-suggest-bar", I), F(() => {
1225
- if (I) return l.listenKeydown("emoji", (N) => yn(N, { dir: "ltr", focused: i, setFocused: r, itemCount: t.length, onConfirm() {
1237
+ return L && "emoji-button-" + pe(L, o);
1238
+ }, [t, o]), { containerProps: _, itemProps: T } = ta({ focused: i, setFocused: r, buttonId: D }), I = t.length > 0;
1239
+ tt(() => c.closeSuggester(), ".t-emoji-suggest-bar", I), h(() => {
1240
+ if (I) return c.listenKeydown("emoji", (N) => ea(N, { dir: "ltr", focused: i, setFocused: r, itemCount: t.length, onConfirm() {
1226
1241
  const L = t[i];
1227
- k.defined(L), l.selectEmoji(Ie(L, o));
1242
+ k.defined(L), c.selectEmoji(pe(L, o));
1228
1243
  } })), () => {
1229
- l.listenKeydown("emoji", void 0);
1244
+ c.listenKeydown("emoji", void 0);
1230
1245
  };
1231
- l.listenKeydown("emoji", void 0);
1232
- }, [l, t, i, I, o]);
1233
- const R = b(null);
1234
- return O(La, { in: I, timeout: 100, classNames: "slide", mountOnEnter: !0, unmountOnExit: !0, nodeRef: R, children: O("div", { className: "t-emoji-suggest-bar", ref: R, ..._, children: a.map((N, L) => O(Ei, { emoji: N, skinTone: o, focused: L === i, onSelect: (C) => l.selectEmoji(C), ...T(L) }, Ie(N, o))) }) });
1246
+ c.listenKeydown("emoji", void 0);
1247
+ }, [c, t, i, I, o]);
1248
+ const R = P(null);
1249
+ return O(wa, { in: I, timeout: 100, classNames: "slide", mountOnEnter: !0, unmountOnExit: !0, nodeRef: R, children: O("div", { className: "t-emoji-suggest-bar", ref: R, ..._, children: a.map((N, L) => O(hi, { emoji: N, skinTone: o, focused: L === i, onSelect: (m) => c.selectEmoji(m), ...T(L) }, pe(N, o))) }) });
1235
1250
  }
1236
- function Ie(e, t) {
1237
- return ot(e) ? Yn(e, t) : e.name;
1251
+ function pe(e, t) {
1252
+ return It(e) ? na(e, t) : e.name;
1238
1253
  }
1239
- function ot(e) {
1254
+ function It(e) {
1240
1255
  return !!e.unicode;
1241
1256
  }
1242
- function Ei(e) {
1257
+ function hi(e) {
1243
1258
  var u;
1244
- const { emoji: t, focused: n, skinTone: a, onSelect: s, ...i } = e, r = ((u = t.shortcodes) != null ? u : []).join(", "), o = ot(t) ? [t.unicode, r].join(", ") : r, E = ot(t) ? Yn(t, a) : null;
1245
- return O("button", { "t-focused": n ? "" : void 0, title: r, "aria-label": o, onClick: () => s(Ie(t, a)), ...i, children: E });
1259
+ const { emoji: t, focused: n, skinTone: a, onSelect: s, ...i } = e, r = ((u = t.shortcodes) != null ? u : []).join(", "), o = It(t) ? [t.unicode, r].join(", ") : r, E = It(t) ? na(t, a) : null;
1260
+ return O("button", { "t-focused": n ? "" : void 0, title: r, "aria-label": o, onClick: () => s(pe(t, a)), ...i, children: E });
1246
1261
  }
1247
- function Yn(e, t) {
1262
+ function na(e, t) {
1248
1263
  var a, s;
1249
1264
  const n = (a = e.skins) == null ? void 0 : a.find((i) => i.tone === t);
1250
1265
  return (s = n == null ? void 0 : n.unicode) != null ? s : e.unicode;
1251
1266
  }
1252
- const ui = ["🏻", "🏼", "🏽", "🏾", "🏿"];
1253
- function Di(e) {
1254
- const { anchorSelector: t, children: n, ...a } = e, s = P(() => document.querySelector(t), [t]), { refs: i, floatingStyles: r } = Ca({ placement: "top-start" });
1255
- return ce(() => {
1267
+ const gi = ["🏻", "🏼", "🏽", "🏾", "🏿"];
1268
+ function Fi(e) {
1269
+ const { anchorSelector: t, children: n, ...a } = e, s = M(() => document.querySelector(t), [t]), { refs: i, floatingStyles: r } = Ya({ placement: "top-start" });
1270
+ return Ie(() => {
1256
1271
  s && i.setReference(s);
1257
1272
  }, [i, s]), O("div", { ref: i.setFloating, style: { ...r, zIndex: 1e3 }, ...a, children: n });
1258
1273
  }
1259
- function li(e) {
1260
- const t = f(), n = v(() => t.mentionableUsers$.get()), [a, s] = H(0), i = ge(), r = v(i.state$.suggestMentionQuery), o = P(() => Object.fromEntries(n.map((c) => {
1261
- return [c.id, (_ = c.name, [..._.matchAll(/^|\s+/g)].map((T) => T.index + T[0].length).map((T) => _.substring(T)))];
1274
+ function vi(e) {
1275
+ const t = f(), n = F(() => t.mentionableUsers$.get()), [a, s] = b(0), i = He(), r = F(i.state$.suggestMentionQuery), o = M(() => Object.fromEntries(n.map((D) => {
1276
+ return [D.id, (_ = D.name, [..._.matchAll(/^|\s+/g)].map((T) => T.index + T[0].length).map((T) => _.substring(T)))];
1262
1277
  var _;
1263
- })), [n]), E = P(() => {
1278
+ })), [n]), E = M(() => {
1264
1279
  if (!r) return [];
1265
- const c = Pt(r);
1266
- return c === "" ? n : n.filter((_) => o[_.id].some((T) => function(I, R) {
1267
- return Nt(I.substring(0, R.length), R);
1268
- }(T, c)));
1269
- }, [r, n, o]), u = b(void 0);
1270
- F(() => {
1280
+ const D = Wt(r);
1281
+ return D === "" ? n : n.filter((_) => o[_.id].some((T) => function(I, R) {
1282
+ return Ht(I.substring(0, R.length), R);
1283
+ }(T, D)));
1284
+ }, [r, n, o]), u = P(void 0);
1285
+ h(() => {
1271
1286
  if (u.current) {
1272
- const c = E.findIndex((_) => _.id === u.current);
1273
- s(c === -1 ? 0 : c);
1287
+ const D = E.findIndex((_) => _.id === u.current);
1288
+ s(D === -1 ? 0 : D);
1274
1289
  }
1275
- }, [E]), F(() => {
1276
- var c;
1277
- u.current = (c = E[a]) == null ? void 0 : c.id;
1290
+ }, [E]), h(() => {
1291
+ var D;
1292
+ u.current = (D = E[a]) == null ? void 0 : D.id;
1278
1293
  }, [a, E]);
1279
- const D = U((c) => {
1294
+ const l = H((D) => {
1280
1295
  var T;
1281
- const _ = (T = E[c]) == null ? void 0 : T.id;
1296
+ const _ = (T = E[D]) == null ? void 0 : T.id;
1282
1297
  return _ && "mention-button-" + _;
1283
- }, [E]), { containerProps: l, itemProps: d } = wn({ focused: a, setFocused: s, buttonId: D });
1284
- return F(() => {
1285
- if (E.length !== 0) return i.listenKeydown("mention", (c) => yn(c, { dir: "ttb", focused: a, setFocused: s, itemCount: E.length, onSpace() {
1298
+ }, [E]), { containerProps: c, itemProps: d } = ta({ focused: a, setFocused: s, buttonId: l });
1299
+ return h(() => {
1300
+ if (E.length !== 0) return i.listenKeydown("mention", (D) => ea(D, { dir: "ttb", focused: a, setFocused: s, itemCount: E.length, onSpace() {
1286
1301
  if (r) {
1287
1302
  const _ = E[a];
1288
- if (Nt(_.name, Pt(r))) return i.selectMention(_), !0;
1303
+ if (Ht(_.name, Wt(r))) return i.selectMention(_), !0;
1289
1304
  }
1290
1305
  return !1;
1291
1306
  }, onConfirm() {
@@ -1294,74 +1309,74 @@ function li(e) {
1294
1309
  } })), () => {
1295
1310
  i.listenKeydown("mention", void 0);
1296
1311
  };
1297
- }, [i, a, E, r]), Ve(() => i.closeSuggester(), ".t-mention-suggest-list", E.length > 0), E.length === 0 ? null : O(Di, { className: "t-mention-suggest-list", ...l, anchorSelector: ".ProseMirror-suggestion", children: E.map((c, _) => O(ci, { user: c, isFocused: _ === a, onSelect: () => i.selectMention(c), ...d(_) }, c.id)) });
1312
+ }, [i, a, E, r]), tt(() => i.closeSuggester(), ".t-mention-suggest-list", E.length > 0), E.length === 0 ? null : O(Fi, { className: "t-mention-suggest-list", ...c, anchorSelector: ".ProseMirror-suggestion", children: E.map((D, _) => O(fi, { user: D, isFocused: _ === a, onSelect: () => i.selectMention(D), ...d(_) }, D.id)) });
1298
1313
  }
1299
- const ci = se.memo(function(e) {
1314
+ const fi = ue.memo(function(e) {
1300
1315
  const { user: t, isFocused: n, onSelect: a, ...s } = e;
1301
1316
  return O("button", { className: n ? "focused" : "", onClick: () => a(t.id), ...s, children: t.name });
1302
1317
  });
1303
- function Pt(e) {
1318
+ function Wt(e) {
1304
1319
  return k(e[0] === "@"), e.substring(1);
1305
1320
  }
1306
- function Ne(e) {
1307
- const { popoverComponent: t, popoverProps: n, children: a, type: s = "popover", ...i } = e, [r, o] = H(void 0), [E, u] = H(!1);
1308
- let D, l, d;
1309
- return s === "menu" ? (D = Me.Root, l = Me.Trigger, d = Me.Content) : (D = ze.Root, l = ze.Trigger, d = ze.Content), O(Da.Provider, { value: { closePopover: () => u(!1) }, children: V(D, { modal: !1, open: E, onOpenChange: u, children: [O(l, { asChild: !0, children: O("button", { ...i, ref: (c) => ((_) => {
1321
+ function he(e) {
1322
+ const { popoverComponent: t, popoverProps: n, children: a, type: s = "popover", ...i } = e, [r, o] = b(void 0), [E, u] = b(!1);
1323
+ let l, c, d;
1324
+ return s === "menu" ? (l = $e.Root, c = $e.Trigger, d = $e.Content) : (l = it.Root, c = it.Trigger, d = it.Content), O(ga.Provider, { value: { closePopover: () => u(!1) }, children: K(l, { modal: !1, open: E, onOpenChange: u, children: [O(c, { asChild: !0, children: O("button", { ...i, ref: (D) => ((_) => {
1310
1325
  var I;
1311
1326
  const T = (I = _ == null ? void 0 : _.closest("[t-menu-boundary]")) != null ? I : void 0;
1312
1327
  o(T);
1313
- })(c), children: a }) }), O(d, { hideWhenDetached: !0, collisionBoundary: r, style: { zIndex: 1e3 }, onWheel: (c) => c.stopPropagation(), onTouchMove: (c) => c.stopPropagation(), children: O(t, { ...n }) })] }) });
1328
+ })(D), children: a }) }), O(d, { hideWhenDetached: !0, collisionBoundary: r, style: { zIndex: 1e3 }, onWheel: (D) => D.stopPropagation(), onTouchMove: (D) => D.stopPropagation(), children: O(t, { ...n }) })] }) });
1314
1329
  }
1315
- function ae(e) {
1316
- return O(Me.Item, { ...e });
1330
+ function Ee(e) {
1331
+ return O($e.Item, { ...e });
1317
1332
  }
1318
- function _i(e) {
1319
- return Dn(e);
1333
+ function ki(e) {
1334
+ return hn(e);
1320
1335
  }
1321
- function re(e) {
1336
+ function De(e) {
1322
1337
  var t;
1323
1338
  return (t = e.photoUrl) != null ? t : function(n, a) {
1324
1339
  const s = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
1325
- <rect x="0" y="0" width="100" height="100" fill="${Dn(n)}"/>
1340
+ <rect x="0" y="0" width="100" height="100" fill="${hn(n)}"/>
1326
1341
  <text x="50%" y="54%" dominant-baseline="middle" font-size="34" font-family="San Francisco, Segoe UI, Helvetica Neue, Arial, Helvetica, sans-serif" fill="#fff" text-anchor="middle">${a}</text>
1327
1342
  </svg>`.replace(/\s+/g, " ");
1328
- return "data:image/svg+xml;base64," + ia.encode(s);
1329
- }(e.id, Ma(e.name));
1343
+ return "data:image/svg+xml;base64," + La.encode(s);
1344
+ }(e.id, Wa(e.name));
1330
1345
  }
1331
- function ke(e) {
1346
+ function Ye(e) {
1332
1347
  return e < 1024 ? e + " B" : e < 1048576 ? Math.floor(e / 1024) + " KB" : e < 1073741824 ? Math.floor(e / 1048576) + " MB" : e < 1099511627776 ? Math.floor(e / 1073741824) + " GB" : Math.floor(e / 1099511627776) + " TB";
1333
1348
  }
1334
- function $n({ latitude: e, longitude: t }) {
1349
+ function aa({ latitude: e, longitude: t }) {
1335
1350
  const n = e + "," + t;
1336
- return { imageUrl: `https://maps.googleapis.com/maps/api/staticmap?center=${n}&zoom=15&size=300x200&scale=2&maptype=roadmap&markers=${n}&key=${fa}`, linkUrl: `https://maps.google.com/maps?q=${n}&z=15` };
1351
+ return { imageUrl: `https://maps.googleapis.com/maps/api/staticmap?center=${n}&zoom=15&size=300x200&scale=2&maptype=roadmap&markers=${n}&key=${za}`, linkUrl: `https://maps.google.com/maps?q=${n}&z=15` };
1337
1352
  }
1338
- function Ai(e, t) {
1339
- const [n, a] = H({ long: "", short: "" });
1340
- return ce(() => {
1353
+ function Mi(e, t) {
1354
+ const [n, a] = b({ long: "", short: "" });
1355
+ return Ie(() => {
1341
1356
  let s, i = !0;
1342
1357
  const r = () => {
1343
- const E = Date.now(), u = function(D, l, d) {
1344
- const c = D - l;
1358
+ const E = Date.now(), u = function(l, c, d) {
1359
+ const D = l - c;
1345
1360
  let _, T, I;
1346
- const R = new Date(l), N = { month: "short", day: "numeric" };
1347
- if (c < Ht) return { changeTimeout: 5e3, short: d.JUST_NOW, long: d.JUST_NOW };
1348
- if (c < Ut) _ = Ht, T = "MINUTES", I = d.MINUTES;
1349
- else if (c < bt) _ = Ut, T = "HOURS", I = d.HOURS;
1361
+ const R = new Date(c), N = { month: "short", day: "numeric" };
1362
+ if (D < qt) return { changeTimeout: 5e3, short: d.JUST_NOW, long: d.JUST_NOW };
1363
+ if (D < Jt) _ = qt, T = "MINUTES", I = d.MINUTES;
1364
+ else if (D < Zt) _ = Jt, T = "HOURS", I = d.HOURS;
1350
1365
  else {
1351
- if (!(c < di)) {
1352
- if (R.getFullYear() === new Date(D).getFullYear()) {
1353
- const C = R.toLocaleDateString(d.locale, N);
1354
- return { changeTimeout: void 0, short: C, long: C };
1366
+ if (!(D < Hi)) {
1367
+ if (R.getFullYear() === new Date(l).getFullYear()) {
1368
+ const m = R.toLocaleDateString(d.locale, N);
1369
+ return { changeTimeout: void 0, short: m, long: m };
1355
1370
  }
1356
1371
  {
1357
- const C = R.toLocaleDateString(d.locale, { ...N, year: "numeric" });
1358
- return { changeTimeout: void 0, short: C, long: C };
1372
+ const m = R.toLocaleDateString(d.locale, { ...N, year: "numeric" });
1373
+ return { changeTimeout: void 0, short: m, long: m };
1359
1374
  }
1360
1375
  }
1361
- _ = bt, T = "DAYS", I = d.DAYS;
1376
+ _ = Zt, T = "DAYS", I = d.DAYS;
1362
1377
  }
1363
- const L = Math.floor(c / _);
1364
- return { changeTimeout: _, short: L + I, long: Si(L, T.toLowerCase(), d.locale) };
1378
+ const L = Math.floor(D / _);
1379
+ return { changeTimeout: _, short: L + I, long: Ui(L, T.toLowerCase(), d.locale) };
1365
1380
  }(E, e > E ? E - 2e3 : e, t);
1366
1381
  return a(u), u;
1367
1382
  }, o = () => {
@@ -1373,7 +1388,7 @@ function Ai(e, t) {
1373
1388
  };
1374
1389
  }, [t, e]), n;
1375
1390
  }
1376
- function jn(e) {
1391
+ function sa(e) {
1377
1392
  e = Math.floor(e);
1378
1393
  const t = Math.floor(e / 3600);
1379
1394
  e %= 3600;
@@ -1383,39 +1398,39 @@ function jn(e) {
1383
1398
  let s = `${a(n)}:${a(e)}`;
1384
1399
  return t > 0 && (s = `${a(t)}:${s}`), s;
1385
1400
  }
1386
- const Oi = 864e5;
1387
- function Ti(e, t) {
1388
- const n = Date.now(), a = (s = e, i = n, Math.floor((i - s) / Oi));
1401
+ const Bi = 864e5;
1402
+ function Pi(e, t) {
1403
+ const n = Date.now(), a = (s = e, i = n, Math.floor((i - s) / Bi));
1389
1404
  var s, i;
1390
1405
  if (a < 0 || a === 0) return t.TODAY;
1391
1406
  if (a === 1) return t.YESTERDAY;
1392
1407
  const r = { weekday: "long" }, o = new Date(e);
1393
1408
  if (a < 7) return o.toLocaleDateString(t.locale, r);
1394
1409
  const E = new Date(n);
1395
- return function(D, l) {
1396
- return Math.floor((l - D) / 31536e6);
1410
+ return function(l, c) {
1411
+ return Math.floor((c - l) / 31536e6);
1397
1412
  }(E.setFullYear(E.getFullYear() - 1), e) === 0 ? o.toLocaleDateString(t.locale, { ...r, month: "long", day: "numeric" }) : o.toLocaleDateString(t.locale, { ...r, year: "numeric", month: "long", day: "numeric" });
1398
1413
  }
1399
- const Ht = 6e4, Ut = 36e5, bt = 864e5, di = 6048e5;
1400
- function Si(e, t, n) {
1414
+ const qt = 6e4, Jt = 36e5, Zt = 864e5, Hi = 6048e5;
1415
+ function Ui(e, t, n) {
1401
1416
  return new Intl.RelativeTimeFormat(n).format(-e, t);
1402
1417
  }
1403
1418
  function S(e, ...t) {
1404
- const n = na.bind(se.createElement)(e, ...t);
1405
- return Array.isArray(n) ? se.createElement(se.Fragment, {}, ...n) : n;
1419
+ const n = Ia.bind(ue.createElement)(e, ...t);
1420
+ return Array.isArray(n) ? ue.createElement(ue.Fragment, {}, ...n) : n;
1406
1421
  }
1407
- function Ii(e) {
1422
+ function bi(e) {
1408
1423
  const { common: t } = e;
1409
1424
  return t.conversation.subject ? S`
1410
1425
  <div className="t-title">${t.conversation.subject}</div>
1411
1426
  <div className="t-subtitle">
1412
- <${yt} ...${e} />
1427
+ <${Qt} ...${e} />
1413
1428
  </div>
1414
1429
  ` : S`<div className="t-title">
1415
- <${yt} ...${e} />
1430
+ <${Qt} ...${e} />
1416
1431
  </div>`;
1417
1432
  }
1418
- function yt({ common: e, isUserConnected: t, permissions: n }) {
1433
+ function Qt({ common: e, isUserConnected: t, permissions: n }) {
1419
1434
  const { participants: a } = e, s = a.filter(({ user: r }) => r.id !== e.currentUser.id), i = s.length === 0 ? a : s;
1420
1435
  return n.showOnlineStatus ? S`
1421
1436
  <span className="t-participants">
@@ -1431,7 +1446,7 @@ function yt({ common: e, isUserConnected: t, permissions: n }) {
1431
1446
  </span>
1432
1447
  ` : S`<span className="t-participants">${i.map(({ user: r }) => r.name).join(", ")}</span>`;
1433
1448
  }
1434
- function Ni({ messageStatus: e, common: t }) {
1449
+ function yi({ messageStatus: e, common: t }) {
1435
1450
  const { Icon: n } = t.theme;
1436
1451
  return e === "sending" ? S`
1437
1452
  <span className="t-status-icon">
@@ -1443,7 +1458,7 @@ function Ni({ messageStatus: e, common: t }) {
1443
1458
  </span>
1444
1459
  ` : e === "sent" ? S`<span className="t-status-icon">✓</span>` : e === "everyoneRead" ? S`<span className="t-status-icon">✓✓</span>` : null;
1445
1460
  }
1446
- const Ri = { attach: function({ className: e }) {
1461
+ const wi = { attach: function({ className: e }) {
1447
1462
  return S`
1448
1463
  <svg
1449
1464
  className=${e}
@@ -1463,7 +1478,7 @@ const Ri = { attach: function({ className: e }) {
1463
1478
  ></path>
1464
1479
  </svg>
1465
1480
  `;
1466
- }, chevronLeft: wt, left: wt, chevronRight: Yt, right: Yt, chevronUp: $t, up: $t, chevronDown: jt, down: jt, close: function({ className: e }) {
1481
+ }, chevronLeft: en, left: en, chevronRight: tn, right: tn, chevronUp: nn, up: nn, chevronDown: an, down: an, close: function({ className: e }) {
1467
1482
  return S`
1468
1483
  <svg
1469
1484
  className=${e}
@@ -2078,7 +2093,7 @@ const Ri = { attach: function({ className: e }) {
2078
2093
  </svg>
2079
2094
  `;
2080
2095
  } };
2081
- function wt({ className: e }) {
2096
+ function en({ className: e }) {
2082
2097
  return S`
2083
2098
  <svg
2084
2099
  className=${e}
@@ -2095,7 +2110,7 @@ function wt({ className: e }) {
2095
2110
  </svg>
2096
2111
  `;
2097
2112
  }
2098
- function Yt({ className: e }) {
2113
+ function tn({ className: e }) {
2099
2114
  return S`
2100
2115
  <svg
2101
2116
  className=${e}
@@ -2112,7 +2127,7 @@ function Yt({ className: e }) {
2112
2127
  </svg>
2113
2128
  `;
2114
2129
  }
2115
- function $t({ className: e }) {
2130
+ function nn({ className: e }) {
2116
2131
  return S`
2117
2132
  <svg
2118
2133
  className=${e}
@@ -2130,7 +2145,7 @@ function $t({ className: e }) {
2130
2145
  </svg>
2131
2146
  `;
2132
2147
  }
2133
- function jt({ className: e }) {
2148
+ function an({ className: e }) {
2134
2149
  return S`
2135
2150
  <svg
2136
2151
  className=${e}
@@ -2148,10 +2163,10 @@ function jt({ className: e }) {
2148
2163
  </svg>
2149
2164
  `;
2150
2165
  }
2151
- function Li({ message: e, common: t }) {
2166
+ function Yi({ message: e, common: t }) {
2152
2167
  var r;
2153
2168
  const n = e.content[0], { theme: a, t: s } = t, { Icon: i } = a;
2154
- if (n.type === "text") return S`<${Hn}
2169
+ if (n.type === "text") return S`<${Jn}
2155
2170
  block=${n}
2156
2171
  message=${e}
2157
2172
  nonInteractive
@@ -2172,7 +2187,7 @@ function Li({ message: e, common: t }) {
2172
2187
  `;
2173
2188
  if (n.subtype === "voice") return S`
2174
2189
  <${i} type="microphone" common=${t} />
2175
- ${s.VOICE_MESSAGE} (${jn((r = n.duration) != null ? r : 0)})
2190
+ ${s.VOICE_MESSAGE} (${sa((r = n.duration) != null ? r : 0)})
2176
2191
  `;
2177
2192
  if (n.subtype === void 0) return S`
2178
2193
  <${i} type="attachment" common=${t} />
@@ -2181,7 +2196,7 @@ function Li({ message: e, common: t }) {
2181
2196
  }
2182
2197
  return null;
2183
2198
  }
2184
- function Ci({ conversation: e }) {
2199
+ function $i({ conversation: e }) {
2185
2200
  const { isUnread: t, unreadMessageCount: n } = e;
2186
2201
  return t ? n === 0 ? S`<div className="t-unread-generic-dot" />` : n > 999 ? S`
2187
2202
  <div className="t-unread-dot">
@@ -2193,11 +2208,11 @@ function Ci({ conversation: e }) {
2193
2208
  </div>
2194
2209
  ` : null;
2195
2210
  }
2196
- const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: function({ block: e, downloadUrl: t, common: n }) {
2211
+ const ht = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: function({ block: e, downloadUrl: t, common: n }) {
2197
2212
  const { Icon: a } = n.theme;
2198
2213
  return S`
2199
2214
  <div className="t-theme-audio-block">
2200
- <${st} src=${e.url} filename=${e.filename} />
2215
+ <${Tt} src=${e.url} filename=${e.filename} />
2201
2216
 
2202
2217
  <a className="t-body-text" href=${t}>
2203
2218
  <${a}
@@ -2206,7 +2221,7 @@ const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: fu
2206
2221
  common=${n}
2207
2222
  />
2208
2223
  <span className="t-filename">${e.filename}</span>
2209
- <span className="t-filesize"> (${ke(e.size)})</span>
2224
+ <span className="t-filesize"> (${Ye(e.size)})</span>
2210
2225
  </a>
2211
2226
  </div>
2212
2227
  `;
@@ -2232,7 +2247,7 @@ const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: fu
2232
2247
  </div>
2233
2248
 
2234
2249
  <div className="t-info">
2235
- <${Ii} ...${e} />
2250
+ <${bi} ...${e} />
2236
2251
  </div>
2237
2252
  </div>
2238
2253
  </div>
@@ -2241,7 +2256,7 @@ const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: fu
2241
2256
  }, CompactMessageContent: function(e) {
2242
2257
  return S`
2243
2258
  <span className="t-theme-compact-message-content">
2244
- <${Li} ...${e} />
2259
+ <${Yi} ...${e} />
2245
2260
  </span>
2246
2261
  `;
2247
2262
  }, ConversationImage: function({ common: e, conversation: t, participants: n }) {
@@ -2250,17 +2265,17 @@ const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: fu
2250
2265
  photoUrl=${t.photoUrl}
2251
2266
  common=${e}
2252
2267
  />` : n.length === 0 ? null : n.length === 1 ? S`<${i}
2253
- photoUrl=${re(a)}
2268
+ photoUrl=${De(a)}
2254
2269
  common=${e}
2255
2270
  />` : n.length === 2 ? S`<${i}
2256
- photoUrl=${re(n[0].user.id === a.id ? n[1].user : n[0].user)}
2271
+ photoUrl=${De(n[0].user.id === a.id ? n[1].user : n[0].user)}
2257
2272
  common=${e}
2258
2273
  />` : S`
2259
2274
  <${r} participants=${n} common=${e} />
2260
2275
  `;
2261
2276
  }, ConversationListItem: function(e) {
2262
- var N, L, C;
2263
- const { common: t, conversation: n, participants: a, isSelected: s } = e, { currentUser: i, theme: r, conversationList: o } = t, { TimeAgo: E, ConversationImage: u, CompactMessageContent: D } = r, { lastMessage: l } = n, d = a.length >= 3, c = (N = l == null ? void 0 : l.sender) == null ? void 0 : N.name, _ = (L = l == null ? void 0 : l.editedAt) != null ? L : l == null ? void 0 : l.createdAt, T = a.filter((h) => h.user.id !== i.id), I = T.length ? T : a, R = (C = n.subject) != null ? C : I.map((h) => h.user.name).join(", ");
2277
+ var N, L, m;
2278
+ const { common: t, conversation: n, participants: a, isSelected: s } = e, { currentUser: i, theme: r, conversationList: o } = t, { TimeAgo: E, ConversationImage: u, CompactMessageContent: l } = r, { lastMessage: c } = n, d = a.length >= 3, D = (N = c == null ? void 0 : c.sender) == null ? void 0 : N.name, _ = (L = c == null ? void 0 : c.editedAt) != null ? L : c == null ? void 0 : c.createdAt, T = a.filter((p) => p.user.id !== i.id), I = T.length ? T : a, R = (m = n.subject) != null ? m : I.map((p) => p.user.name).join(", ");
2264
2279
  return S`
2265
2280
  <div
2266
2281
  className="t-theme-conversation-list-item"
@@ -2286,18 +2301,18 @@ const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: fu
2286
2301
  </div>
2287
2302
 
2288
2303
  <div className="t-body">
2289
- ${l && S`
2304
+ ${c && S`
2290
2305
  <div className="t-message">
2291
- ${d && c && S`<span className="t-message-sender">${c}:</span>`}
2306
+ ${d && D && S`<span className="t-message-sender">${D}:</span>`}
2292
2307
 
2293
- <${D}
2294
- message=${l}
2308
+ <${l}
2309
+ message=${c}
2295
2310
  common=${t}
2296
2311
  />
2297
2312
  </div>
2298
2313
  `}
2299
2314
 
2300
- <${Ci} ...${e} />
2315
+ <${$i} ...${e} />
2301
2316
  </div>
2302
2317
  </div>
2303
2318
  </div>
@@ -2313,7 +2328,7 @@ const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: fu
2313
2328
  common=${n}
2314
2329
  />
2315
2330
  <span className="t-filename">${e.filename}</span>
2316
- <span className="t-filesize"> (${ke(e.size)})</span>
2331
+ <span className="t-filesize"> (${Ye(e.size)})</span>
2317
2332
  </a>
2318
2333
  </div>
2319
2334
  `;
@@ -2322,11 +2337,11 @@ const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: fu
2322
2337
  <div className="t-theme-group-chat-image">
2323
2338
  <div
2324
2339
  className="t-mini-avatar"
2325
- style=${{ backgroundImage: `url("${re(e[0].user)}")` }}
2340
+ style=${{ backgroundImage: `url("${De(e[0].user)}")` }}
2326
2341
  ></div>
2327
2342
  <div
2328
2343
  className="t-mini-avatar"
2329
- style=${{ backgroundImage: `url("${re(e[1].user)}")` }}
2344
+ style=${{ backgroundImage: `url("${De(e[1].user)}")` }}
2330
2345
  ></div>
2331
2346
  ${e.length > 2 && S`<svg
2332
2347
  className="t-counter"
@@ -2368,7 +2383,7 @@ const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: fu
2368
2383
  </div>
2369
2384
  `;
2370
2385
  }, Icon: function({ className: e = "", type: t }) {
2371
- return S`<${Ri[t]} className=${`t-theme-icon ${e}`} />`;
2386
+ return S`<${wi[t]} className=${`t-theme-icon ${e}`} />`;
2372
2387
  }, ImageBlock: function({ block: e, downloadUrl: t, common: n }) {
2373
2388
  const { Icon: a } = n.theme, s = { "--img-w": e.width || 1, "--img-h": e.height || 1 };
2374
2389
  return S`
@@ -2387,12 +2402,12 @@ const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: fu
2387
2402
  <a href=${t} className="t-body-text">
2388
2403
  <${a} className="download-icon" type="download" common=${n} />
2389
2404
  <span>${e.filename}</span>
2390
- <span className="t-filesize"> (${ke(e.size)})</span>
2405
+ <span className="t-filesize"> (${Ye(e.size)})</span>
2391
2406
  </a>
2392
2407
  </div>
2393
2408
  `;
2394
2409
  }, LocationBlock: function({ block: e }) {
2395
- const { imageUrl: t, linkUrl: n } = $n(e);
2410
+ const { imageUrl: t, linkUrl: n } = aa(e);
2396
2411
  return S`
2397
2412
  <div className="t-theme-location-block">
2398
2413
  <a
@@ -2410,17 +2425,17 @@ const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: fu
2410
2425
  </div>
2411
2426
  `;
2412
2427
  }, Message: function(e) {
2413
- const { message: t, messageStatus: n, permissions: a, common: s } = e, { currentUser: i, theme: r, participants: o, chatbox: E, t: u } = s, { Avatar: D, Icon: l, ReferencedMessage: d, TimeAgo: c, MessageActionMenu: _ } = r, T = o.length >= 3, I = t.sender, R = (I == null ? void 0 : I.id) !== i.id && T, N = t.referencedMessage, L = n !== "sending" && (a.canReplyToMessage || a.canDeleteMessage);
2414
- let C;
2415
- return C = I ? I.id === i.id ? "currentUser" : "other" : "system", S`
2428
+ const { message: t, messageStatus: n, permissions: a, common: s } = e, { currentUser: i, theme: r, participants: o, chatbox: E, t: u } = s, { Avatar: l, Icon: c, ReferencedMessage: d, TimeAgo: D, MessageActionMenu: _ } = r, T = o.length >= 3, I = t.sender, R = (I == null ? void 0 : I.id) !== i.id && T, N = t.referencedMessage, L = n !== "sending" && (a.canReplyToMessage || a.canDeleteMessage);
2429
+ let m;
2430
+ return m = I ? I.id === i.id ? "currentUser" : "other" : "system", S`
2416
2431
  <div
2417
2432
  className="t-theme-message"
2418
- t-sender=${C}
2433
+ t-sender=${m}
2419
2434
  t-message-id=${t.id}
2420
2435
  >
2421
2436
  <div className="t-message-row">
2422
- ${I && S`<${D}
2423
- photoUrl=${re(I)}
2437
+ ${I && S`<${l}
2438
+ photoUrl=${De(I)}
2424
2439
  common=${s}
2425
2440
  />`}
2426
2441
 
@@ -2428,7 +2443,7 @@ const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: fu
2428
2443
  <!-- in group chats, show the message sender name in a random color -->
2429
2444
  ${I && R && S`<div
2430
2445
  className="t-message-sender-name"
2431
- style=${{ color: _i(I.id) }}
2446
+ style=${{ color: ki(I.id) }}
2432
2447
  >
2433
2448
  ${I.name}
2434
2449
  </div>`}
@@ -2437,57 +2452,57 @@ const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: fu
2437
2452
  common=${s}
2438
2453
  />`}
2439
2454
 
2440
- <${ni}
2455
+ <${Ni}
2441
2456
  common=${s}
2442
2457
  message=${t}
2443
2458
  messageStatus=${n}
2444
2459
  />
2445
2460
 
2446
2461
  <div className="t-message-status">
2447
- <${c} timestamp=${t.createdAt} common=${s} />
2448
- ${C == "currentUser" && S`<${Ni} ...${e} />`}
2462
+ <${D} timestamp=${t.createdAt} common=${s} />
2463
+ ${m == "currentUser" && S`<${yi} ...${e} />`}
2449
2464
  </div>
2450
2465
  </div>
2451
2466
 
2452
2467
  ${L && S`
2453
- <${Ne}
2468
+ <${he}
2454
2469
  type="menu"
2455
2470
  popoverComponent=${_}
2456
2471
  popoverProps=${{ message: t, permissions: a, common: s }}
2457
2472
  className="t-message-action-menu-button"
2458
2473
  aria-label="Message actions"
2459
2474
  >
2460
- <${l} className="t-action-menu-icon" type="horizontalDots" />
2461
- </${Ne}>
2475
+ <${c} className="t-action-menu-icon" type="horizontalDots" />
2476
+ </${he}>
2462
2477
  `}
2463
2478
  ${a.canAddReaction && S`
2464
- <${Ne}
2479
+ <${he}
2465
2480
  className="t-add-reaction-button"
2466
- popoverComponent=${ii}
2481
+ popoverComponent=${mi}
2467
2482
  popoverProps=${{ messageId: t.id, colorScheme: "light" }}
2468
2483
  aria-label="Add reaction"
2469
2484
  >
2470
- <${l} type="addEmoji" />
2471
- </${Ne}>
2485
+ <${c} type="addEmoji" />
2486
+ </${he}>
2472
2487
  `}
2473
2488
  </div>
2474
2489
 
2475
2490
  ${t.reactions.length > 0 && S`
2476
2491
  <div className="t-emoji-reactions">
2477
- ${t.reactions.map((h) => {
2478
- const p = h.currentUserReacted ? "remove your reaction" : "add reaction", m = h.count === 1 ? "person" : "people";
2492
+ ${t.reactions.map((p) => {
2493
+ const C = p.currentUserReacted ? "remove your reaction" : "add reaction", B = p.count === 1 ? "person" : "people";
2479
2494
  return S`
2480
2495
  <button
2481
2496
  className="t-reaction-button"
2482
- t-active=${h.currentUserReacted ? "true" : void 0}
2483
- onClick=${() => E.toggleReaction(t.id, h)}
2497
+ t-active=${p.currentUserReacted ? "true" : void 0}
2498
+ onClick=${() => E.toggleReaction(t.id, p.emoji)}
2484
2499
  disabled=${!a.canAddReaction}
2485
- aria-label="${h.count} ${m} reacted with ${h.emoji}. Press to ${p}"
2486
- aria-pressed=${h.currentUserReacted}
2487
- key=${h.emoji}
2500
+ aria-label="${p.count} ${B} reacted with ${p.emoji}. Press to ${C}"
2501
+ aria-pressed=${p.currentUserReacted}
2502
+ key=${p.emoji}
2488
2503
  >
2489
- <span className="t-emoji">${h.emoji}</span>
2490
- <span className="t-num-reactions">${h.count}</span>
2504
+ <span className="t-emoji">${p.emoji}</span>
2505
+ <span className="t-num-reactions">${p.count}</span>
2491
2506
  </button>
2492
2507
  `;
2493
2508
  })}
@@ -2499,19 +2514,19 @@ const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: fu
2499
2514
  const { message: t, permissions: n, common: a } = e, { chatbox: s, t: i } = a;
2500
2515
  return S` <div className="t-theme-message-action-menu">
2501
2516
  ${n.canReplyToMessage && S`
2502
- <${ae} className="t-menu-item" onSelect=${() => s.setReferencedMessage(t.id)}>
2517
+ <${Ee} className="t-menu-item" onSelect=${() => s.setReferencedMessage(t.id)}>
2503
2518
  ${i.REPLY_TO_MESSAGE}
2504
- </${ae}>
2519
+ </${Ee}>
2505
2520
  `}
2506
2521
  ${n.canEditMessage && S`
2507
- <${ae} className="t-menu-item" onSelect=${() => s.setEditing(t.id)}>
2522
+ <${Ee} className="t-menu-item" onSelect=${() => s.setEditing(t.id)}>
2508
2523
  ${i.EDIT_MESSAGE}
2509
- </${ae}>
2524
+ </${Ee}>
2510
2525
  `}
2511
2526
  ${n.canDeleteMessage && S`
2512
- <${ae} className="t-menu-item t-danger" onSelect=${() => s.deleteMessage(t.id)}>
2527
+ <${Ee} className="t-menu-item t-danger" onSelect=${() => s.deleteMessage(t.id)}>
2513
2528
  ${i.DELETE_MESSAGE}
2514
- </${ae}>
2529
+ </${Ee}>
2515
2530
  `}
2516
2531
  </div>`;
2517
2532
  }, MessageDivider: function(e) {
@@ -2522,7 +2537,7 @@ const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: fu
2522
2537
  <div className="t-line-segment" />
2523
2538
  </div>
2524
2539
  ${a && S`
2525
- <span className="t-day-marker">${Ti(t, i)}</span>
2540
+ <span className="t-day-marker">${Pi(t, i)}</span>
2526
2541
  `}
2527
2542
  <div className="t-line" t-side="right">
2528
2543
  <div className="t-line-segment" />
@@ -2533,18 +2548,18 @@ const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: fu
2533
2548
  </div>
2534
2549
  `;
2535
2550
  }, MessageField: function(e) {
2536
- const { common: t, referencedMessage: n, editor: a, permissions: s, editMessageId: i } = e, { chatbox: r, device: o, conversation: E, t: u, theme: D } = t, { ReplyBar: l, Icon: d } = D, c = i ? "edit" : "send", _ = c === "edit" && !a.atTextLimit && a.characterCount > 0, T = c === "send" && a.isEmpty && s.canShareLocation, I = c === "send" && a.isEmpty && s.canShareFile, R = c === "send" && o.supportsEmojiPicker && !o.isMobile;
2551
+ const { common: t, referencedMessage: n, editor: a, permissions: s, editMessageId: i } = e, { chatbox: r, device: o, conversation: E, t: u, theme: l } = t, { ReplyBar: c, Icon: d } = l, D = i ? "edit" : "send", _ = D === "edit" && !a.atTextLimit && a.characterCount > 0, T = D === "send" && a.isEmpty && s.canShareLocation, I = D === "send" && a.isEmpty && s.canShareFile, R = D === "send" && o.supportsEmojiPicker && !o.isMobile;
2537
2552
  return S`
2538
- <div className="t-theme-message-field" t-mode=${c}>
2553
+ <div className="t-theme-message-field" t-mode=${D}>
2539
2554
  ${a.showEmojiPicker && S`
2540
2555
  <div className="t-emoji-picker-wrapper">
2541
- <${bn} colorScheme="light" />
2556
+ <${Qn} colorScheme="light" />
2542
2557
  </div>
2543
2558
  `}
2544
- <${oi} />
2545
- <${li} />
2559
+ <${pi} />
2560
+ <${vi} />
2546
2561
 
2547
- ${n && S`<${l}
2562
+ ${n && S`<${c}
2548
2563
  common=${t}
2549
2564
  referencedMessage=${n}
2550
2565
  />`}
@@ -2561,7 +2576,7 @@ const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: fu
2561
2576
  `}
2562
2577
  ${E.access === "ReadWrite" && S`
2563
2578
  <div className="t-textbox-column">
2564
- <${$s} placeholder=${u.ENTRYBOX_PLACEHOLDER} />
2579
+ <${si} placeholder=${u.ENTRYBOX_PLACEHOLDER} />
2565
2580
 
2566
2581
  <div className="t-button-overlay">
2567
2582
  ${T && S`<button
@@ -2597,7 +2612,7 @@ const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: fu
2597
2612
  </div>
2598
2613
  </div>
2599
2614
  `}
2600
- ${c === "send" && S`
2615
+ ${D === "send" && S`
2601
2616
  <div className="t-send-column">
2602
2617
  <button
2603
2618
  className="t-send-button"
@@ -2610,7 +2625,7 @@ const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: fu
2610
2625
  </button>
2611
2626
  </div>
2612
2627
  `}
2613
- ${c === "edit" && S`
2628
+ ${D === "edit" && S`
2614
2629
  <div className="t-edit-row">
2615
2630
  <button
2616
2631
  t-action="cancel"
@@ -2636,7 +2651,7 @@ const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: fu
2636
2651
  if (!i && s.length === 0) return null;
2637
2652
  const r = i ? S`<div className="t-theme-avatar">5+</div>` : s.slice(0, 2).map((o) => S`<${a}
2638
2653
  key=${o.id}
2639
- photoUrl=${re(o)}
2654
+ photoUrl=${De(o)}
2640
2655
  common=${e}
2641
2656
  />`);
2642
2657
  return S`
@@ -2702,11 +2717,11 @@ const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: fu
2702
2717
  }, TextBlock: function({ block: e, message: t }) {
2703
2718
  return S`
2704
2719
  <div className="t-theme-text-block">
2705
- <${Hn} block=${e} message=${t} />
2720
+ <${Jn} block=${e} message=${t} />
2706
2721
  </div>
2707
2722
  `;
2708
2723
  }, TimeAgo: function({ timestamp: e, common: t }) {
2709
- const { t: n } = t, a = new Date(e).toLocaleString(n.locale, { weekday: "short", year: "numeric", month: "long", day: "numeric", hour: "numeric", minute: "numeric", second: "numeric" }), s = Ai(e, n);
2724
+ const { t: n } = t, a = new Date(e).toLocaleString(n.locale, { weekday: "short", year: "numeric", month: "long", day: "numeric", hour: "numeric", minute: "numeric", second: "numeric" }), s = Mi(e, n);
2710
2725
  return S`
2711
2726
  <span className="t-theme-time-ago">
2712
2727
  <span
@@ -2739,30 +2754,30 @@ const At = Object.freeze(Object.defineProperty({ __proto__: null, AudioBlock: fu
2739
2754
  <a href=${t} className="t-body-text">
2740
2755
  <${a} className="download-icon" type="download" common=${n} />
2741
2756
  <span>${e.filename}</span>
2742
- <span className="t-filesize"> (${ke(e.size)})</span>
2757
+ <span className="t-filesize"> (${Ye(e.size)})</span>
2743
2758
  </a>
2744
2759
  </div>
2745
2760
  `;
2746
2761
  }, VoiceBlock: function({ block: e }) {
2747
- return S`<${st}
2762
+ return S`<${Tt}
2748
2763
  className="t-theme-voice-block"
2749
2764
  src=${e.url}
2750
2765
  filename=${e.filename}
2751
2766
  />`;
2752
2767
  } }, Symbol.toStringTag, { value: "Module" }));
2753
- function z(e, t = !1) {
2768
+ function q(e, t = !1) {
2754
2769
  return function(n, a = !1) {
2755
2770
  return n.map((s) => {
2756
2771
  if (typeof s == "string") return s;
2757
2772
  switch (s.type) {
2758
2773
  case "bold":
2759
- return "*" + z(s.children) + "*";
2774
+ return "*" + q(s.children) + "*";
2760
2775
  case "italic":
2761
- return "_" + z(s.children) + "_";
2776
+ return "_" + q(s.children) + "_";
2762
2777
  case "strikethrough":
2763
- return "~" + z(s.children) + "~";
2778
+ return "~" + q(s.children) + "~";
2764
2779
  case "blockquote":
2765
- return z(s.children).split(`
2780
+ return q(s.children).split(`
2766
2781
  `).map((i) => "> " + i).join(`
2767
2782
  `) + `
2768
2783
  `;
@@ -2784,33 +2799,33 @@ function z(e, t = !1) {
2784
2799
  case "customEmoji":
2785
2800
  return a ? `<!!customemoji:${s.text}>` : s.text;
2786
2801
  case "link":
2787
- return `<${s.url}|${z(s.children)}>`;
2802
+ return `<${s.url}|${q(s.children)}>`;
2788
2803
  case "actionlink":
2789
2804
  case "actionLink":
2790
2805
  case "actionbutton":
2791
2806
  case "actionButton":
2792
2807
  return function(i) {
2793
2808
  const r = new URLSearchParams(i.params).toString(), o = r ? i.action + "?" + r : i.action;
2794
- return `<${i.type}:${o}|${z(i.children)}>`;
2809
+ return `<${i.type}:${o}|${q(i.children)}>`;
2795
2810
  }(s);
2796
2811
  case "bulletlist":
2797
2812
  case "bulletList":
2798
2813
  return `
2799
- ` + z(s.children);
2814
+ ` + q(s.children);
2800
2815
  case "bulletpoint":
2801
2816
  case "bulletPoint":
2802
- return "- " + z(s.children) + `
2817
+ return "- " + q(s.children) + `
2803
2818
  `;
2804
2819
  }
2805
2820
  }).join("");
2806
2821
  }(e, t).trim();
2807
2822
  }
2808
- class xt {
2823
+ class sn {
2809
2824
  constructor(t, n, a, s, i) {
2810
2825
  this.send = n, this.attachFile = a, this.shareLocation = s, this.toggleEmojiPicker = i, this.isEmpty = t.isEmpty, this.isTyping = t.isTyping, this.atTextLimit = t.atTextLimit, this.characterCount = t.characterCount, this.showEmojiPicker = t.showEmojiPicker;
2811
2826
  }
2812
2827
  }
2813
- const Vt = (e, t) => (n) => {
2828
+ const rn = (e, t) => (n) => {
2814
2829
  var E;
2815
2830
  const a = (E = n.nodeBefore) == null ? void 0 : E.text;
2816
2831
  if (!a) return;
@@ -2819,10 +2834,10 @@ const Vt = (e, t) => (n) => {
2819
2834
  const i = s[2], r = n.pos - i.length, o = n.pos;
2820
2835
  if (!n.doc.rangeHasMark(r, o, t.marks.literal))
2821
2836
  return { range: { from: r, to: o }, text: i };
2822
- }, mi = /(^|\s)(:[^:\s]+:?)$/, pi = /(^|\s)(@[^@]*)$/;
2823
- class xn {
2837
+ }, ji = /(^|\s)(:[^:\s]+:?)$/, xi = /(^|\s)(@[^@]*)$/;
2838
+ class ia {
2824
2839
  constructor(t, n, a) {
2825
- this.state$ = t, this.device$ = n, this.userPermissions$ = a, this.currentDoc = ye.EMPTY, this.maxLength = 1e4, this.markAsTyping = /* @__PURE__ */ function(s, i) {
2840
+ this.state$ = t, this.device$ = n, this.userPermissions$ = a, this.currentDoc = ze.EMPTY, this.maxLength = 1e4, this.markAsTyping = /* @__PURE__ */ function(s, i) {
2826
2841
  let r = !1;
2827
2842
  return (...o) => {
2828
2843
  if (!r) return r = !0, setTimeout(() => {
@@ -2835,20 +2850,20 @@ class xn {
2835
2850
  }, 5e3), this._suggesterKeydownHandlers = { emoji: void 0, mention: void 0 }, this.toggleEmojiPicker = (s) => {
2836
2851
  const i = this.state$.showEmojiPicker;
2837
2852
  s != null || (s = !i.peek()), i.set(s), s === !1 && this.focus();
2838
- }, this.spellcheck$ = B(), this.placeholder$ = B();
2853
+ }, this.spellcheck$ = U(), this.placeholder$ = U();
2839
2854
  }
2840
2855
  setEditorView(t) {
2841
2856
  this.editorView = t;
2842
2857
  }
2843
2858
  emojiSuggesterPlugin() {
2844
- if (this.device$.peek().supportsEmojiPicker) return Ft({ debug: !1, matcher: Vt(mi, y), onEnter: (t) => this.suggestEmoji(t.text, t.range), onChange: (t) => this.suggestEmoji(t.text, t.range), onExit: () => this.onExitSuggester(), onKeyDown: ({ event: t }) => {
2859
+ if (this.device$.peek().supportsEmojiPicker) return xt({ debug: !1, matcher: rn(ji, y), onEnter: (t) => this.suggestEmoji(t.text, t.range), onChange: (t) => this.suggestEmoji(t.text, t.range), onExit: () => this.onExitSuggester(), onKeyDown: ({ event: t }) => {
2845
2860
  var n, a, s;
2846
2861
  return (s = (a = (n = this._suggesterKeydownHandlers).emoji) == null ? void 0 : a.call(n, t.key)) != null ? s : !1;
2847
2862
  } });
2848
2863
  }
2849
2864
  mentionsPlugin() {
2850
2865
  const t = this.userPermissions$.peek();
2851
- if (k.defined(t), t.canMention) return Ft({ debug: !1, matcher: Vt(pi, y), onEnter: (n) => this.suggestMention(n.text, n.range), onChange: (n) => this.suggestMention(n.text, n.range), onExit: () => this.onExitSuggester(), onKeyDown: ({ event: n }) => {
2866
+ if (k.defined(t), t.canMention) return xt({ debug: !1, matcher: rn(xi, y), onEnter: (n) => this.suggestMention(n.text, n.range), onChange: (n) => this.suggestMention(n.text, n.range), onExit: () => this.onExitSuggester(), onKeyDown: ({ event: n }) => {
2852
2867
  var a, s, i;
2853
2868
  return (i = (s = (a = this._suggesterKeydownHandlers).mention) == null ? void 0 : s.call(a, n.key)) != null ? i : !1;
2854
2869
  } });
@@ -2889,10 +2904,10 @@ class xn {
2889
2904
  setText(t) {
2890
2905
  this.editorView && function(n, a) {
2891
2906
  const s = n.state.doc.content.size, i = a.split(/(<!!(?:mention|customemoji):.*?>)/g).filter((o) => o || o.length).map((o) => {
2892
- const [E, u, D] = o.match(/<!!mention:(.*)\|(.*)>/) || [null];
2893
- if (E && u && D) return ft(u, D);
2894
- const [l, d] = o.match(/<!!customemoji:(.*?)>/) || [null];
2895
- return l && d ? vt(d) : y.text(o);
2907
+ const [E, u, l] = o.match(/<!!mention:(.*)\|(.*)>/) || [null];
2908
+ if (E && u && l) return Xt(u, l);
2909
+ const [c, d] = o.match(/<!!customemoji:(.*?)>/) || [null];
2910
+ return c && d ? Vt(d) : y.text(o);
2896
2911
  }), r = n.state.tr.replaceWith(0, s, i);
2897
2912
  n.dispatch(r);
2898
2913
  }(this.editorView, t);
@@ -2914,7 +2929,7 @@ class xn {
2914
2929
  }
2915
2930
  selectEmoji(t) {
2916
2931
  k.defined(this.editorView), function(n, a, s) {
2917
- const i = vt(a);
2932
+ const i = Vt(a);
2918
2933
  let r;
2919
2934
  if (s) {
2920
2935
  const { from: o, to: E } = s;
@@ -2925,7 +2940,7 @@ class xn {
2925
2940
  }
2926
2941
  selectMention(t) {
2927
2942
  k.defined(this.editorView), function(n, a, s) {
2928
- const i = ft(a.id, a.name);
2943
+ const i = Xt(a.id, a.name);
2929
2944
  let r = n.state.tr;
2930
2945
  if (s) {
2931
2946
  const { from: o, to: E } = s;
@@ -2935,174 +2950,174 @@ class xn {
2935
2950
  }(this.editorView, t, this._suggestionRange), this.focus();
2936
2951
  }
2937
2952
  }
2938
- function Vn(e) {
2939
- const t = G(), n = f(), a = Ae(), s = v(n.referencedMessage$), i = v(n.state$.userPermissions), r = ge(), { sendMessage: o } = la(), E = J(() => {
2940
- const D = r.state$.get();
2941
- return e.editMessageId === void 0 ? new xt(D, o, e.attachFile, e.shareLocation, r.toggleEmojiPicker) : new xt(D, e.onEditMessage, () => {
2953
+ function ra(e) {
2954
+ const t = W(), n = f(), a = Ne(), s = F(n.referencedMessage$), i = F(n.state$.userPermissions), r = He(), { sendMessage: o } = Fa(), E = te(() => {
2955
+ const l = r.state$.get();
2956
+ return e.editMessageId === void 0 ? new sn(l, o, e.attachFile, e.shareLocation, r.toggleEmojiPicker) : new sn(l, e.onEditMessage, () => {
2942
2957
  }, () => {
2943
2958
  }, () => {
2944
2959
  });
2945
- }, [r.state$, r.toggleEmojiPicker, e.attachFile, e.editMessageId, e.onEditMessage, e.shareLocation, o]), u = v(E);
2946
- return O(Qt.Provider, { value: { onClose: () => r.toggleEmojiPicker(!1), onEmojiSelected: (D) => r.selectEmoji(D) }, children: O(t.MessageField, { common: a, referencedMessage: s, permissions: i, editor: u, editMessageId: e.editMessageId }) });
2960
+ }, [r.state$, r.toggleEmojiPicker, e.attachFile, e.editMessageId, e.onEditMessage, e.shareLocation, o]), u = F(E);
2961
+ return O(On.Provider, { value: { onClose: () => r.toggleEmojiPicker(!1), onEmojiSelected: (l) => r.selectEmoji(l) }, children: O(t.MessageField, { common: a, referencedMessage: s, permissions: i, editor: u, editMessageId: e.editMessageId }) });
2947
2962
  }
2948
- function hi({ message: e }) {
2949
- const t = f(), n = _e(), a = v(t.state$.editingMessageId), s = P(() => z(e.content[0].children), [e]), i = J({ isEmpty: s.length === 0, isTyping: !1, atTextLimit: !1, characterCount: s.length, showEmojiPicker: !1, suggestEmojiQuery: void 0, suggestMentionQuery: void 0 }), r = P(() => new xn(i, t.device$, t.state$.userPermissions), [i, t]), o = U(async () => {
2963
+ function Vi({ message: e }) {
2964
+ const t = f(), n = Ue(), a = F(t.state$.editingMessageId), s = M(() => q(e.content[0].children), [e]), i = te({ isEmpty: s.length === 0, isTyping: !1, atTextLimit: !1, characterCount: s.length, showEmojiPicker: !1, suggestEmojiQuery: void 0, suggestMentionQuery: void 0 }), r = M(() => new ia(i, t.device$, t.state$.userPermissions), [i, t]), o = H(async () => {
2950
2965
  const E = r.state$;
2951
2966
  if (E.isEmpty.peek() || E.atTextLimit.peek()) return;
2952
2967
  const u = r.getText();
2953
2968
  u && await n.editMessage(e.id, { text: u }), t.state$.editingMessageId.set(null);
2954
2969
  }, [t, n, r, e.id]);
2955
- return F(() => {
2970
+ return h(() => {
2956
2971
  r.onEnter = o;
2957
- }, [r, o]), F(() => {
2958
- r.focus(), r.setText(z(e.content[0].children, !0));
2959
- }, [r, e]), O(en.Provider, { value: r, children: O(Vn, { editMessageId: a, onEditMessage: o }) });
2972
+ }, [r, o]), h(() => {
2973
+ r.focus(), r.setText(q(e.content[0].children, !0));
2974
+ }, [r, e]), O(Tn.Provider, { value: r, children: O(ra, { editMessageId: a, onEditMessage: o }) });
2960
2975
  }
2961
- function gi() {
2962
- const e = G(), t = Ae();
2976
+ function Xi() {
2977
+ const e = W(), t = Ne();
2963
2978
  return O(e.MessageListFooter, { common: t });
2964
2979
  }
2965
- function Fi(e) {
2966
- const t = G(), n = Ae();
2980
+ function Gi(e) {
2981
+ const t = W(), n = Ne();
2967
2982
  return O(t.MessageDivider, { common: n, ...e });
2968
2983
  }
2969
- function vi({ message: e }) {
2970
- const t = G(), n = f(), a = Ae(), [s, i] = H("sent");
2971
- return De((r) => {
2984
+ function zi({ message: e }) {
2985
+ const t = W(), n = f(), a = Ne(), [s, i] = b("sent");
2986
+ return de((r) => {
2972
2987
  if (e.id.startsWith("ephemeral-")) return i("sending");
2973
2988
  const o = n.state$.currentConversation.everyoneReadUntil.get();
2974
2989
  return o !== void 0 ? e.createdAt <= o ? i("everyoneRead") : i("sent") : void 0;
2975
2990
  }), O(t.Message, { common: a, message: e, messageStatus: s, permissions: n.messagePermissions$(e).get() });
2976
2991
  }
2977
- function fi({ extConversationId: e }) {
2978
- const t = he(), n = f(), a = _e(), s = b(!0), i = b(null);
2979
- ce(() => {
2992
+ function Ki({ extConversationId: e }) {
2993
+ const t = Pe(), n = f(), a = Ue(), s = P(!0), i = P(null);
2994
+ Ie(() => {
2980
2995
  s.current = i.current.scrollTop > -30;
2981
- }), F(() => {
2996
+ }), h(() => {
2982
2997
  s.current && (i.current.scrollTop = 0);
2983
- }), F(() => {
2984
- const D = new IntersectionObserver((l) => n.state$.visibility.isInView.set(l[0].isIntersecting), { threshold: 0.9 });
2985
- return D.observe(i.current), () => D.disconnect();
2986
- }, [n]), F(() => {
2987
- const D = () => n.state$.visibility.tabFocused.set(!document.hidden);
2988
- return document.addEventListener("visibilitychange", D), () => document.removeEventListener("visibilitychange", D);
2998
+ }), h(() => {
2999
+ const l = new IntersectionObserver((c) => n.state$.visibility.isInView.set(c[0].isIntersecting), { threshold: 0.9 });
3000
+ return l.observe(i.current), () => l.disconnect();
3001
+ }, [n]), h(() => {
3002
+ const l = () => n.state$.visibility.tabFocused.set(!document.hidden);
3003
+ return document.addEventListener("visibilitychange", l), () => document.removeEventListener("visibilitychange", l);
2989
3004
  }, [n]);
2990
- const [r, o] = H(!1);
2991
- F(() => {
3005
+ const [r, o] = b(!1);
3006
+ h(() => {
2992
3007
  o(!1);
2993
- const D = n.state$.currentConversation.peek();
2994
- (D == null ? void 0 : D.isUnread) === !0 && t.conversation(e).markAsRead().catch((l) => {
2995
- Ue.warn("Could not mark conversation as read", l);
3008
+ const l = n.state$.currentConversation.peek();
3009
+ (l == null ? void 0 : l.isUnread) === !0 && t.conversation(e).markAsRead().catch((c) => {
3010
+ Xe.warn("Could not mark conversation as read", c);
2996
3011
  });
2997
- }, [e, t, n]), De((D) => {
3012
+ }, [e, t, n]), de((l) => {
2998
3013
  if (!i.current) return;
2999
- const l = n.state$.currentConversation.get(), d = !(!l || !l.isUnread), c = l == null ? void 0 : l.unreadMessageCount;
3000
- if (d && c === 0) return void o(!0);
3014
+ const c = n.state$.currentConversation.get(), d = !(!c || !c.isUnread), D = c == null ? void 0 : c.unreadMessageCount;
3015
+ if (d && D === 0) return void o(!0);
3001
3016
  if (d && r) return;
3002
3017
  if (!d) return void o(!1);
3003
3018
  const _ = n.state$.visibility.tabFocused.get(), T = n.state$.visibility.isInView.get(), I = function(R) {
3004
3019
  if (R.checkVisibility) return R.checkVisibility({ contentVisibilityAuto: !0, opacityProperty: !0, visibilityProperty: !0, checkOpacity: !0, checkVisibilityCSS: !0 });
3005
3020
  {
3006
- const N = window.getComputedStyle(R), L = N.visibility, C = N.opacity;
3007
- return !(R.getClientRects().length === 0 || L === "hidden" || C === "0");
3021
+ const N = window.getComputedStyle(R), L = N.visibility, m = N.opacity;
3022
+ return !(R.getClientRects().length === 0 || L === "hidden" || m === "0");
3008
3023
  }
3009
3024
  }(i.current);
3010
- return _ && T && I ? t.conversation(l.id).markAsRead() : void 0;
3025
+ return _ && T && I ? t.conversation(c.id).markAsRead() : void 0;
3011
3026
  });
3012
- const E = U((D) => {
3013
- const l = D.currentTarget;
3014
- l.scrollHeight - l.clientHeight + l.scrollTop < 90 && n.messageSubscription && n.messageSubscription.loadMore(10);
3015
- }, [n.messageSubscription]), u = v(n.state$.typing.child(e));
3016
- return V("div", { className: "t-message-list", ref: i, "t-menu-boundary": "", onScroll: E, children: [u && O(gi, {}), O(tt, { each: n.chatItems$, children: (D) => O("div", { className: "t-message-group", children: O(tt, { each: D, item: ki, itemProps: { controller: a, extConversationId: e } }) }) })] });
3017
- }
3018
- function ki({ item$: e }) {
3019
- const t = f(), n = v(e), a = v(t.state$.editingMessageId);
3020
- return n instanceof at ? O(Fi, { timestamp: n.timestamp, isReadMarker: n.isReadMarker, isDayMarker: n.isDayMarker }) : a === n.id ? O(hi, { message: n }) : O(vi, { message: n });
3021
- }
3022
- const Mi = /* @__PURE__ */ new Set(["ByV39eoc", "B1FxElnd", "aW4c49tW", "qGfuGtx", "SbERe5ee", "ilaVEa15", "FOlWOSaH", "dao5gGmT", "DLUgAhzL", "fqXFumr6", "FtiWHMYT", "66iWOyWt", "1375amYi", "mWbJgzpt", "jO7GqAvL", "SkFIKxo5", "2z4ILc3y", "aDr8oPL1", "Hku1c4Pt"]);
3023
- function Xe({ appId: e, chatboxState: t }) {
3024
- const n = e.charAt(0) === "t" || Mi.has(e);
3025
- return F(() => {
3027
+ const E = H((l) => {
3028
+ const c = l.currentTarget;
3029
+ c.scrollHeight - c.clientHeight + c.scrollTop < 90 && n.messageSubscription && n.messageSubscription.loadMore(10);
3030
+ }, [n.messageSubscription]), u = F(n.state$.typing.child(e));
3031
+ return K("div", { className: "t-message-list", ref: i, "t-menu-boundary": "", onScroll: E, children: [u && O(Xi, {}), O(_t, { each: n.chatItems$, children: (l) => O("div", { className: "t-message-group", children: O(_t, { each: l, item: Wi, itemProps: { controller: a, extConversationId: e } }) }) })] });
3032
+ }
3033
+ function Wi({ item$: e }) {
3034
+ const t = f(), n = F(e), a = F(t.state$.editingMessageId);
3035
+ return n instanceof Ot ? O(Gi, { timestamp: n.timestamp, isReadMarker: n.isReadMarker, isDayMarker: n.isDayMarker }) : a === n.id ? O(Vi, { message: n }) : O(zi, { message: n });
3036
+ }
3037
+ const qi = /* @__PURE__ */ new Set(["ByV39eoc", "B1FxElnd", "aW4c49tW", "qGfuGtx", "SbERe5ee", "ilaVEa15", "FOlWOSaH", "dao5gGmT", "DLUgAhzL", "fqXFumr6", "FtiWHMYT", "66iWOyWt", "1375amYi", "mWbJgzpt", "jO7GqAvL", "SkFIKxo5", "2z4ILc3y", "aDr8oPL1", "Hku1c4Pt"]);
3038
+ function nt({ appId: e, chatboxState: t }) {
3039
+ const n = e.charAt(0) === "t" || qi.has(e);
3040
+ return h(() => {
3026
3041
  switch (t.type) {
3027
3042
  case "auth-failed":
3028
- q.error("Could not authenticate user. Check if you are authenticating correctly.");
3043
+ ee.error("Could not authenticate user. Check if you are authenticating correctly.");
3029
3044
  break;
3030
3045
  case "unknown-user":
3031
- q.error(`User \`${t.userId}\` not found. Please verify that you synchronized this user's data with TalkJS, either using the JS SDK or through the REST API.`);
3046
+ ee.error(`User \`${t.userId}\` not found. Please verify that you synchronized this user's data with TalkJS, either using the JS SDK or through the REST API.`);
3032
3047
  break;
3033
3048
  case "unexpected-error":
3034
- q.error(t.error);
3049
+ ee.error(t.error);
3035
3050
  break;
3036
3051
  case "wrong-app-id":
3037
- q.error(`Could not find given appId: "${t.appId}". You can find your appId on https://talkjs.com/dashboard.`);
3052
+ ee.error(`Could not find given appId: "${t.appId}". You can find your appId on https://talkjs.com/dashboard.`);
3038
3053
  break;
3039
3054
  case "server-error":
3040
3055
  break;
3041
3056
  default:
3042
3057
  k.never(t);
3043
3058
  }
3044
- }, [t]), V("div", { className: "t-panel t-error-panel", children: [O("span", { className: "t-heading", children: "Something went wrong." }), O("p", { children: "Please reload the page and try again." }), n ? V("p", { style: { fontStyle: "italic" }, children: ["Developer note: check your browser's developer tools console for messages that may help solve the problem.", O("br", {}), O("small", { children: "This message only shows up in test mode." })] }) : O("p", { children: "If things keep not working, do not hesitate to get in touch with us." })] });
3059
+ }, [t]), K("div", { className: "t-panel t-error-panel", children: [O("span", { className: "t-heading", children: "Something went wrong." }), O("p", { children: "Please reload the page and try again." }), n ? K("p", { style: { fontStyle: "italic" }, children: ["Developer note: check your browser's developer tools console for messages that may help solve the problem.", O("br", {}), O("small", { children: "This message only shows up in test mode." })] }) : O("p", { children: "If things keep not working, do not hesitate to get in touch with us." })] });
3045
3060
  }
3046
- function Bi() {
3047
- const e = f(), t = v(e.t$);
3061
+ function Ji() {
3062
+ const e = f(), t = F(e.t$);
3048
3063
  return O("div", { className: "t-panel t-error-panel", children: O("span", { className: "t-heading", style: { fontStyle: "italic" }, children: t.CHAT_NOT_FOUND }) });
3049
3064
  }
3050
- function Xn() {
3051
- return O("div", { className: "t-panel t-loading-panel", children: O(ct, {}) });
3065
+ function oa() {
3066
+ return O("div", { className: "t-panel t-loading-panel", children: O(Ct, {}) });
3052
3067
  }
3053
- function Gn() {
3054
- const e = f(), t = v(e.t$);
3055
- return V("div", { className: "t-panel t-error-panel", children: [O("span", { className: "t-heading", style: { fontStyle: "italic" }, children: t.AUTH_EXPIRED_OVERLAY_TITLE }), O("p", { children: t.AUTH_EXPIRED_OVERLAY_DESCRIPTION })] });
3068
+ function Ea() {
3069
+ const e = f(), t = F(e.t$);
3070
+ return K("div", { className: "t-panel t-error-panel", children: [O("span", { className: "t-heading", style: { fontStyle: "italic" }, children: t.AUTH_EXPIRED_OVERLAY_TITLE }), O("p", { children: t.AUTH_EXPIRED_OVERLAY_DESCRIPTION })] });
3056
3071
  }
3057
- const Pi = () => !0;
3058
- async function Ot(e, t, { initialDelay: n, maxDelay: a, log: s, shouldRetry: i = Pi }) {
3072
+ const Zi = () => !0;
3073
+ async function gt(e, t, { initialDelay: n, maxDelay: a, log: s, shouldRetry: i = Zi }) {
3059
3074
  return t().catch(async (r) => {
3060
3075
  if (s && s(`[TalkJS] Retries left: ${e}. Error: ${JSON.stringify(r)}.`), e === 0 || !await i(r)) throw r;
3061
- const o = 1e3 * n * 1.2, E = a ? Math.min(1e3 * a, o) : o, u = E * (1 - (D = 0.05) + 2 * Math.random() * D);
3062
- var D, l;
3063
- return (l = u, l <= 0 ? Promise.resolve() : new Promise((d) => setTimeout(d, l))).then(() => Ot(e - 1, t, { initialDelay: u / 1e3, maxDelay: a, log: s, shouldRetry: i }));
3076
+ const o = 1e3 * n * 1.2, E = a ? Math.min(1e3 * a, o) : o, u = E * (1 - (l = 0.05) + 2 * Math.random() * l);
3077
+ var l, c;
3078
+ return (c = u, c <= 0 ? Promise.resolve() : new Promise((d) => setTimeout(d, c))).then(() => gt(e - 1, t, { initialDelay: u / 1e3, maxDelay: a, log: s, shouldRetry: i }));
3064
3079
  });
3065
3080
  }
3066
- function me() {
3081
+ function ke() {
3067
3082
  const e = {}, t = new Promise(function(n, a) {
3068
3083
  e.resolve = n, e.reject = a;
3069
3084
  });
3070
3085
  return e.promise = t, e;
3071
3086
  }
3072
- function Hi(e, t, n) {
3073
- const { beforeBrowserPermissionPrompt: a, onMissingBrowserPermissionCallback: s } = sa(tn);
3074
- return U(async () => {
3075
- function i(D) {
3076
- D === "denied" && s({ type: e });
3087
+ function Qi(e, t, n) {
3088
+ const { beforeBrowserPermissionPrompt: a, onMissingBrowserPermissionCallback: s } = Ra(dn);
3089
+ return H(async () => {
3090
+ function i(l) {
3091
+ l === "denied" && s({ type: e });
3077
3092
  }
3078
- if (!a || !await async function(D) {
3093
+ if (!a || !await async function(l) {
3079
3094
  if (!("permissions" in navigator)) return !1;
3080
- const l = D;
3095
+ const c = l;
3081
3096
  try {
3082
- return (await navigator.permissions.query({ name: l })).state === "prompt";
3097
+ return (await navigator.permissions.query({ name: c })).state === "prompt";
3083
3098
  } catch (d) {
3084
3099
  return !1;
3085
3100
  }
3086
- }(e)) return t((D) => {
3087
- i(D);
3101
+ }(e)) return t((l) => {
3102
+ i(l);
3088
3103
  });
3089
- const r = me(), o = me(), E = { type: e, showPrompt: async () => (o.resolve({ cancelled: !1 }), await r.promise), cancel: () => {
3104
+ const r = ke(), o = ke(), E = { type: e, showPrompt: async () => (o.resolve({ cancelled: !1 }), await r.promise), cancel: () => {
3090
3105
  o.resolve({ cancelled: !0 });
3091
3106
  } };
3092
3107
  try {
3093
3108
  a(E);
3094
- } catch (D) {
3095
- q.error("Your beforeBrowserPermissionPrompt callback threw an error: ", D), o.resolve({ cancelled: !0 });
3109
+ } catch (l) {
3110
+ ee.error("Your beforeBrowserPermissionPrompt callback threw an error: ", l), o.resolve({ cancelled: !0 });
3096
3111
  }
3097
3112
  const { cancelled: u } = await o.promise;
3098
- return u ? void 0 : t((D) => {
3099
- r.resolve(D), i(D);
3113
+ return u ? void 0 : t((l) => {
3114
+ r.resolve(l), i(l);
3100
3115
  });
3101
3116
  }, [a, s, e, t, ...n]);
3102
3117
  }
3103
- function Ui({ onClose: e }) {
3104
- const t = f(), n = _e(), a = he(), [s, i] = H(null);
3105
- return { attachFile: U(async (o) => {
3118
+ function er({ onClose: e }) {
3119
+ const t = f(), n = Ue(), a = Pe(), [s, i] = b(null);
3120
+ return { attachFile: H(async (o) => {
3106
3121
  try {
3107
3122
  if (o || (o = (await new Promise((_) => {
3108
3123
  const T = document.createElement("input");
@@ -3114,11 +3129,11 @@ function Ui({ onClose: e }) {
3114
3129
  }))[0]), !o) return;
3115
3130
  const { uploadPromise: E, upload: u } = await async function(_, T) {
3116
3131
  const I = _.name;
3117
- if (function(C) {
3118
- return /\.(mp4|ts|mov|webm|ogv)$/i.test(C);
3132
+ if (function(m) {
3133
+ return /\.(mp4|ts|mov|webm|ogv)$/i.test(m);
3119
3134
  }(_.name)) {
3120
- const C = await Qe("video", _, (m) => ({ width: m.videoWidth, height: m.videoHeight, duration: m.duration, filename: I })), h = T.uploadVideo(_, C), p = function(m) {
3121
- switch (m.name.split(".").pop()) {
3135
+ const m = await ct("video", _, (B) => ({ width: B.videoWidth, height: B.videoHeight, duration: B.duration, filename: I })), p = T.uploadVideo(_, m), C = function(B) {
3136
+ switch (B.name.split(".").pop()) {
3122
3137
  case "ts":
3123
3138
  return "video/MP2T";
3124
3139
  case "mov":
@@ -3131,65 +3146,65 @@ function Ui({ onClose: e }) {
3131
3146
  return "video/mp4";
3132
3147
  }
3133
3148
  }(_);
3134
- return { uploadPromise: h, upload: { type: "video", file: _, metadata: C, temporaryBlobUrl: URL.createObjectURL(new Blob([_], { type: p })) } };
3149
+ return { uploadPromise: p, upload: { type: "video", file: _, metadata: m, temporaryBlobUrl: URL.createObjectURL(new Blob([_], { type: C })) } };
3135
3150
  }
3136
- if (function(C) {
3137
- return /\.(mp3|m4a|ogg|oga|opus|flac|wav)$/i.test(C);
3151
+ if (function(m) {
3152
+ return /\.(mp3|m4a|ogg|oga|opus|flac|wav)$/i.test(m);
3138
3153
  }(_.name)) {
3139
- const C = await Qe("audio", _, (h) => ({ duration: h.duration, filename: I }));
3140
- return { uploadPromise: T.uploadAudio(_, C), upload: { type: "audio", file: _, metadata: C, temporaryBlobUrl: URL.createObjectURL(new Blob([_])) } };
3154
+ const m = await ct("audio", _, (p) => ({ duration: p.duration, filename: I }));
3155
+ return { uploadPromise: T.uploadAudio(_, m), upload: { type: "audio", file: _, metadata: m, temporaryBlobUrl: URL.createObjectURL(new Blob([_])) } };
3141
3156
  }
3142
- if (function(C) {
3143
- return /(gif|png|jpg|jpeg|svg|bmp|webp)$/i.test(C);
3157
+ if (function(m) {
3158
+ return /(gif|png|jpg|jpeg|svg|bmp|webp)$/i.test(m);
3144
3159
  }(_.name)) {
3145
- const C = await Qe("img", _, (h) => ({ width: h.naturalWidth, height: h.naturalHeight, filename: I }));
3146
- return { uploadPromise: T.uploadImage(_, C), upload: { type: "image", file: _, metadata: C, temporaryBlobUrl: URL.createObjectURL(new Blob([_])) } };
3160
+ const m = await ct("img", _, (p) => ({ width: p.naturalWidth, height: p.naturalHeight, filename: I }));
3161
+ return { uploadPromise: T.uploadImage(_, m), upload: { type: "image", file: _, metadata: m, temporaryBlobUrl: URL.createObjectURL(new Blob([_])) } };
3147
3162
  }
3148
3163
  const R = { filename: I }, N = T.uploadFile(_, R), L = URL.createObjectURL(new Blob([_]));
3149
3164
  return { uploadPromise: N, upload: { type: "file", file: _, metadata: R, temporaryBlobUrl: L } };
3150
- }(o, a), D = u.file.size + "," + u.file.name;
3151
- t.state$.localFileBlobUrls.child(t.state$.extCurrentConversationId.peek()).child(D).set({ url: u.temporaryBlobUrl, fetching: !1 }), t.latestFileUpload = u;
3152
- const l = me(), d = { upload: u, closePreview: l.resolve, uploaded: !1 };
3153
- let c;
3165
+ }(o, a), l = u.file.size + "," + u.file.name;
3166
+ t.state$.localFileBlobUrls.child(t.state$.extCurrentConversationId.peek()).child(l).set({ url: u.temporaryBlobUrl, fetching: !1 }), t.latestFileUpload = u;
3167
+ const c = ke(), d = { upload: u, closePreview: c.resolve, uploaded: !1 };
3168
+ let D;
3154
3169
  i(d);
3155
3170
  try {
3156
- c = await Xt(E, l.promise), i({ ...d, uploaded: !0 });
3171
+ D = await on(E, c.promise), i({ ...d, uploaded: !0 });
3157
3172
  } catch (_) {
3158
- if (_ === Et) return;
3173
+ if (_ === Nt) return;
3159
3174
  i((T) => ({ ...T, error: _.toString() }));
3160
3175
  }
3161
- if (await l.promise === "cancel") return;
3162
- k.defined(c), n.sendFileMessage({ fileToken: c });
3176
+ if (await c.promise === "cancel") return;
3177
+ k.defined(D), n.sendFileMessage({ fileToken: D });
3163
3178
  } finally {
3164
3179
  e(), i(null);
3165
3180
  }
3166
- }, [n, a, i, t, e]), shareLocation: Hi("geolocation", async (o) => {
3181
+ }, [n, a, i, t, e]), shareLocation: Qi("geolocation", async (o) => {
3167
3182
  try {
3168
- const E = me(), u = { upload: { type: "location", location: void 0 }, uploaded: !1, closePreview: E.resolve };
3183
+ const E = ke(), u = { upload: { type: "location", location: void 0 }, uploaded: !1, closePreview: E.resolve };
3169
3184
  i(u);
3170
- const { permissionResult: D, location: l } = await Xt(new Promise((d) => {
3171
- navigator.geolocation.getCurrentPosition((c) => {
3172
- const _ = { latitude: c.coords.latitude, longitude: c.coords.longitude };
3185
+ const { permissionResult: l, location: c } = await on(new Promise((d) => {
3186
+ navigator.geolocation.getCurrentPosition((D) => {
3187
+ const _ = { latitude: D.coords.latitude, longitude: D.coords.longitude };
3173
3188
  d({ permissionResult: "granted", location: _ });
3174
- }, (c) => {
3175
- c.code === 1 ? d({ permissionResult: "denied" }) : d({ permissionResult: "granted" });
3189
+ }, (D) => {
3190
+ D.code === 1 ? d({ permissionResult: "denied" }) : d({ permissionResult: "granted" });
3176
3191
  });
3177
3192
  }), E.promise);
3178
- if (o(D), !l || (i({ ...u, upload: { type: "location", location: l }, uploaded: !0 }), await E.promise === "cancel")) return;
3179
- n.sendLocationMessage({ location: l });
3193
+ if (o(l), !c || (i({ ...u, upload: { type: "location", location: c }, uploaded: !0 }), await E.promise === "cancel")) return;
3194
+ n.sendLocationMessage({ location: c });
3180
3195
  } catch (E) {
3181
- if (E === Et) return;
3196
+ if (E === Nt) return;
3182
3197
  throw E;
3183
3198
  } finally {
3184
3199
  e(), i(null);
3185
3200
  }
3186
3201
  }, [n, i, e]), uploadState: s };
3187
3202
  }
3188
- const Et = Symbol("cancelled");
3189
- function Xt(e, t) {
3190
- return Promise.race([e, t.then(() => Promise.reject(Et))]);
3203
+ const Nt = Symbol("cancelled");
3204
+ function on(e, t) {
3205
+ return Promise.race([e, t.then(() => Promise.reject(Nt))]);
3191
3206
  }
3192
- async function Qe(e, t, n) {
3207
+ async function ct(e, t, n) {
3193
3208
  const a = document.createElement(e);
3194
3209
  try {
3195
3210
  return a.src = URL.createObjectURL(t), await new Promise((s, i) => {
@@ -3206,69 +3221,69 @@ async function Qe(e, t, n) {
3206
3221
  URL.revokeObjectURL(a.src);
3207
3222
  }
3208
3223
  }
3209
- function zn({ children: e, className: t, ...n }) {
3224
+ function ua({ children: e, className: t, ...n }) {
3210
3225
  return O("div", { className: "t-attach-overlay " + t, ...n, children: e });
3211
3226
  }
3212
- function bi({ uploadState: e }) {
3227
+ function tr({ uploadState: e }) {
3213
3228
  const t = e.error, n = e.uploaded;
3214
- Ve(() => e.closePreview("cancel"), ".t-upload-preview");
3215
- const a = b(null);
3216
- F(() => {
3229
+ tt(() => e.closePreview("cancel"), ".t-upload-preview");
3230
+ const a = P(null);
3231
+ h(() => {
3217
3232
  n && a.current.focus();
3218
3233
  }, [n]);
3219
- const s = f(), i = v(s.t$);
3220
- return O(zn, { className: "t-upload-preview", children: V("div", { className: "t-preview", children: [O(yi, { upload: e.upload, uploaded: n }), t !== void 0 && O("div", { className: "t-error-row", children: t }), V("div", { className: "t-send-row", children: [O("button", { className: "t-cancel", onClick: () => e.closePreview("cancel"), children: i.CANCEL }), t === void 0 && n && O("button", { className: "t-confirm-send test__confirm-upload-button", onClick: () => e.closePreview("send"), ref: a, children: i.SEND_BUTTON_TEXT })] })] }) });
3234
+ const s = f(), i = F(s.t$);
3235
+ return O(ua, { className: "t-upload-preview", children: K("div", { className: "t-preview", children: [O(nr, { upload: e.upload, uploaded: n }), t !== void 0 && O("div", { className: "t-error-row", children: t }), K("div", { className: "t-send-row", children: [O("button", { className: "t-cancel", onClick: () => e.closePreview("cancel"), children: i.CANCEL }), t === void 0 && n && O("button", { className: "t-confirm-send test__confirm-upload-button", onClick: () => e.closePreview("send"), ref: a, children: i.SEND_BUTTON_TEXT })] })] }) });
3221
3236
  }
3222
- function yi({ upload: e, uploaded: t }) {
3223
- const n = f(), a = v(n.t$);
3224
- return e.type !== "location" ? V(Le, { children: [O(Yi, { upload: e }), O($i, { upload: e, uploaded: t, t: a })] }) : t ? O(wi, { location: e.location }) : O("div", { className: "t-loading", children: O(ct, {}) });
3237
+ function nr({ upload: e, uploaded: t }) {
3238
+ const n = f(), a = F(n.t$);
3239
+ return e.type !== "location" ? K(ve, { children: [O(sr, { upload: e }), O(ir, { upload: e, uploaded: t, t: a })] }) : t ? O(ar, { location: e.location }) : O("div", { className: "t-loading", children: O(Ct, {}) });
3225
3240
  }
3226
- function wi({ location: e }) {
3227
- const { imageUrl: t, linkUrl: n } = $n(e), a = JSON.stringify(t);
3241
+ function ar({ location: e }) {
3242
+ const { imageUrl: t, linkUrl: n } = aa(e), a = JSON.stringify(t);
3228
3243
  return O("a", { href: n, target: "_blank", rel: "noreferrer", className: "t-location-upload-preview", style: { background: `url(${a}) center center / cover no-repeat` } });
3229
3244
  }
3230
- const Yi = se.memo(function({ upload: e }) {
3245
+ const sr = ue.memo(function({ upload: e }) {
3231
3246
  let t = null;
3232
3247
  const n = e.file;
3233
3248
  if (e.type === "video") {
3234
3249
  const a = /[.]ts/i.test(n.name) ? "mpegts" : "native";
3235
- t = O("div", { className: "video-container", children: O(ji, { src: e.temporaryBlobUrl, videoType: a, playsInline: !0, controls: !0, preload: "auto" }) });
3250
+ t = O("div", { className: "video-container", children: O(rr, { src: e.temporaryBlobUrl, videoType: a, playsInline: !0, controls: !0, preload: "auto" }) });
3236
3251
  } else if (e.type === "image") {
3237
3252
  const a = URL.createObjectURL(n);
3238
3253
  t = O("div", { className: "t-img-container", children: O("img", { src: a }) });
3239
3254
  } else if (e.type === "audio") {
3240
3255
  const a = URL.createObjectURL(n);
3241
- t = O(st, { src: a, filename: n.name });
3256
+ t = O(Tt, { src: a, filename: n.name });
3242
3257
  }
3243
3258
  return t;
3244
- }), $i = se.memo(function({ uploaded: e, upload: t, t: n }) {
3259
+ }), ir = ue.memo(function({ uploaded: e, upload: t, t: n }) {
3245
3260
  let a;
3246
3261
  a = e ? t.metadata.filename : n.UPLOAD_IN_PROGRESS;
3247
3262
  let s = "", i = "";
3248
3263
  return t.type === "file" && (s = "is-file", e && (i = "file-block")), O("div", { className: `t-filename-row ${s}`, children: O("div", { className: i, children: a }) });
3249
3264
  });
3250
- function ji(e) {
3265
+ function rr(e) {
3251
3266
  const { videoType: t, ...n } = e;
3252
3267
  return O("video", { ...n });
3253
3268
  }
3254
- function xi() {
3255
- const e = G(), t = f(), n = Ae(), a = v(t.state$.isUserConnected), s = v(t.state$.userPermissions);
3269
+ function or() {
3270
+ const e = W(), t = f(), n = Ne(), a = F(t.state$.isUserConnected), s = F(t.state$.userPermissions);
3256
3271
  return O(e.ChatHeader, { common: n, isUserConnected: a, permissions: s });
3257
3272
  }
3258
- function Vi({ appId: e, chatHeaderVisible: t, messageFieldVisible: n }) {
3259
- const a = ge(), s = function() {
3260
- const c = f(), _ = J(() => {
3261
- const R = c.extUserId$.get(), N = c.errors$.get(), L = c.authTokenState$.get(), C = R && c.currentUser$.get(), h = c.state$.currentConversation.get(), p = c.state$.extCurrentConversationId.get(), m = p && c.state$.participants.child(p).get(), M = c.app$.get();
3262
- return c.device$.get(), N.serverError ? "server-error" : N.wrongAppId ? "wrong-app-id" : L === "loading" || L === "idle" ? "loading-token" : L === "invalid" ? "invalid-token" : L === "expired" ? "expired-token" : L === "valid" ? N.unknownUser ? "unknown-user" : N.unknownConversation ? "loading-conv-failed" : C && h && m && M ? "loaded" : "loading-data" : void k.unreachable();
3263
- }), T = J({ type: "loading" });
3264
- De((R) => {
3265
- const N = _.get(), L = c.state$.extCurrentConversationId.peek(), C = c.extUserId$.peek(), h = c.appId$.peek();
3266
- function p(m) {
3273
+ function Er({ appId: e, chatHeaderVisible: t, messageFieldVisible: n }) {
3274
+ const a = He(), s = function() {
3275
+ const D = f(), _ = te(() => {
3276
+ const R = D.extUserId$.get(), N = D.errors$.get(), L = D.authTokenState$.get(), m = R && D.currentUser$.get(), p = D.state$.currentConversation.get(), C = D.state$.extCurrentConversationId.get(), B = C && D.state$.participants.child(C).get(), j = D.app$.get();
3277
+ return D.device$.get(), N.serverError ? "server-error" : N.wrongAppId ? "wrong-app-id" : L === "loading" || L === "idle" ? "loading-token" : L === "invalid" ? "invalid-token" : L === "expired" ? "expired-token" : L === "valid" ? N.unknownUser ? "unknown-user" : N.unknownConversation ? "loading-conv-failed" : m && p && B && j ? "loaded" : "loading-data" : void k.unreachable();
3278
+ }), T = te({ type: "loading" });
3279
+ de((R) => {
3280
+ const N = _.get(), L = D.state$.extCurrentConversationId.peek(), m = D.extUserId$.peek(), p = D.appId$.peek();
3281
+ function C(B) {
3267
3282
  T.set({ type: "loading" });
3268
- const M = setTimeout(() => {
3269
- T.set(m);
3283
+ const j = setTimeout(() => {
3284
+ T.set(B);
3270
3285
  }, 5e3);
3271
- return () => clearTimeout(M);
3286
+ return () => clearTimeout(j);
3272
3287
  }
3273
3288
  switch (N) {
3274
3289
  case "invalid-token":
@@ -3278,7 +3293,7 @@ function Vi({ appId: e, chatHeaderVisible: t, messageFieldVisible: n }) {
3278
3293
  T.set({ type: "expired-token" });
3279
3294
  break;
3280
3295
  case "wrong-app-id":
3281
- T.set({ type: "wrong-app-id", appId: h });
3296
+ T.set({ type: "wrong-app-id", appId: p });
3282
3297
  break;
3283
3298
  case "server-error":
3284
3299
  T.set({ type: "server-error" });
@@ -3288,20 +3303,20 @@ function Vi({ appId: e, chatHeaderVisible: t, messageFieldVisible: n }) {
3288
3303
  T.set({ type: "loading" });
3289
3304
  break;
3290
3305
  case "loaded":
3291
- T.set({ type: "loaded", conversationId: L, userId: C });
3306
+ T.set({ type: "loaded", conversationId: L, userId: m });
3292
3307
  break;
3293
3308
  case "loading-conv-failed":
3294
- R.onCleanup = p({ type: "inaccessible-conversation", userId: C, conversationId: L });
3309
+ R.onCleanup = C({ type: "inaccessible-conversation", userId: m, conversationId: L });
3295
3310
  break;
3296
3311
  case "unknown-user":
3297
- R.onCleanup = p({ type: "unknown-user", userId: C });
3312
+ R.onCleanup = C({ type: "unknown-user", userId: m });
3298
3313
  break;
3299
3314
  default:
3300
3315
  k.never(N);
3301
3316
  }
3302
3317
  });
3303
- const I = J({ type: "loading" });
3304
- return De((R) => {
3318
+ const I = te({ type: "loading" });
3319
+ return de((R) => {
3305
3320
  if (T.type.get() === "loading") {
3306
3321
  I.set({ type: "invisible-loading" });
3307
3322
  const N = setTimeout(() => {
@@ -3311,39 +3326,39 @@ function Vi({ appId: e, chatHeaderVisible: t, messageFieldVisible: n }) {
3311
3326
  clearTimeout(N);
3312
3327
  };
3313
3328
  } else I.set(T.get());
3314
- }), v(I);
3315
- }(), { attachFile: i, shareLocation: r, uploadState: o } = Ui({ onClose: () => a.focus() });
3316
- F(() => {
3329
+ }), F(I);
3330
+ }(), { attachFile: i, shareLocation: r, uploadState: o } = er({ onClose: () => a.focus() });
3331
+ h(() => {
3317
3332
  a.uploadFile = i;
3318
3333
  }, [a, i]);
3319
- const [E, u] = H(!1), D = U((c) => {
3320
- i(c.dataTransfer.files[0]), c.preventDefault(), u(!1);
3321
- }, [i]), l = U((c) => {
3322
- c.preventDefault(), u(!0);
3323
- }, []), d = U((c) => {
3324
- c.preventDefault(), u(!1);
3334
+ const [E, u] = b(!1), l = H((D) => {
3335
+ i(D.dataTransfer.files[0]), D.preventDefault(), u(!1);
3336
+ }, [i]), c = H((D) => {
3337
+ D.preventDefault(), u(!0);
3338
+ }, []), d = H((D) => {
3339
+ D.preventDefault(), u(!1);
3325
3340
  }, []);
3326
- return s.type === "invisible-loading" ? O(Le, {}) : s.type === "loading" ? O(Xn, {}) : s.type === "inaccessible-conversation" ? O(Bi, {}) : s.type === "unknown-user" || s.type === "auth-failed" || s.type === "wrong-app-id" || s.type === "server-error" || s.type === "unexpected-error" ? O(Xe, { appId: e, chatboxState: s }) : s.type == "expired-token" ? O(Gn, {}) : s.type === "loaded" ? V("div", { className: "t-chatbox-content", onDragOver: l, onDragLeave: d, onDrop: D, children: [t && O(xi, {}), O(fi, { extConversationId: s.conversationId }), n && O(Vn, { attachFile: i, shareLocation: r }), o && O(bi, { uploadState: o }), E && O(zn, { className: "t-drop-overlay", children: O(be, { type: "attach" }) })] }) : O(Le, {});
3341
+ return s.type === "invisible-loading" ? O(ve, {}) : s.type === "loading" ? O(oa, {}) : s.type === "inaccessible-conversation" ? O(Ji, {}) : s.type === "unknown-user" || s.type === "auth-failed" || s.type === "wrong-app-id" || s.type === "server-error" || s.type === "unexpected-error" ? O(nt, { appId: e, chatboxState: s }) : s.type == "expired-token" ? O(Ea, {}) : s.type === "loaded" ? K("div", { className: "t-chatbox-content", onDragOver: c, onDragLeave: d, onDrop: l, children: [t && O(or, {}), O(Ki, { extConversationId: s.conversationId }), n && O(ra, { attachFile: i, shareLocation: r }), o && O(tr, { uploadState: o }), E && O(ua, { className: "t-drop-overlay", children: O(Ge, { type: "attach" }) })] }) : O(ve, {});
3327
3342
  }
3328
- function Xi(e, t) {
3343
+ function ur(e, t) {
3329
3344
  return e.map((a) => function(s, i) {
3330
3345
  if (s.type === "text") return function(r, o) {
3331
- const E = lt(o);
3332
- return Pe(r, E);
3346
+ const E = mt(o);
3347
+ return xe(r, E);
3333
3348
  }(s.children, i);
3334
- if (s.type === "file" && s.subtype === "video") return `🎥 ${fe(s.url)}`;
3335
- if (s.type === "file" && s.subtype === "image") return `📷 ${fe(s.url)}`;
3336
- if (s.type === "file" && s.subtype === "audio") return `🎧 ${fe(s.url)}`;
3349
+ if (s.type === "file" && s.subtype === "video") return `🎥 ${we(s.url)}`;
3350
+ if (s.type === "file" && s.subtype === "image") return `📷 ${we(s.url)}`;
3351
+ if (s.type === "file" && s.subtype === "audio") return `🎧 ${we(s.url)}`;
3337
3352
  if (s.type === "file" && s.subtype === "voice") {
3338
3353
  const r = s.duration;
3339
3354
  return r === void 0 ? "🎙️" : `🎙️ (${Math.floor(r / 60)}:${Math.floor(r % 60).toString().padStart(2, "0")})`;
3340
3355
  }
3341
- return s.type === "file" ? (s.subtype, `📎 ${fe(s.url)}`) : s.type === "location" ? "📍" : "";
3356
+ return s.type === "file" ? (s.subtype, `📎 ${we(s.url)}`) : s.type === "location" ? "📍" : "";
3342
3357
  }(a, t)).join(`
3343
3358
 
3344
3359
  `);
3345
3360
  }
3346
- function Pe(e, t) {
3361
+ function xe(e, t) {
3347
3362
  return e.flatMap((n) => {
3348
3363
  if (typeof n == "string") return n;
3349
3364
  switch (n.type) {
@@ -3356,14 +3371,14 @@ function Pe(e, t) {
3356
3371
  case "actionLink":
3357
3372
  case "actionbutton":
3358
3373
  case "actionButton":
3359
- return Pe(n.children, t);
3374
+ return xe(n.children, t);
3360
3375
  case "bulletlist":
3361
3376
  case "bulletList":
3362
3377
  return `
3363
- ` + Pe(n.children, t);
3378
+ ` + xe(n.children, t);
3364
3379
  case "bulletpoint":
3365
3380
  case "bulletPoint":
3366
- return "- " + Pe(n.children, t) + `
3381
+ return "- " + xe(n.children, t) + `
3367
3382
  `;
3368
3383
  case "autolink":
3369
3384
  case "autoLink":
@@ -3382,13 +3397,13 @@ function Pe(e, t) {
3382
3397
  }
3383
3398
  }).join("");
3384
3399
  }
3385
- function Kn() {
3400
+ function la() {
3386
3401
  const e = typeof window != "undefined" ? window.crypto : void 0, t = e ? () => e.getRandomValues(new Uint8Array(1))[0] : () => Math.floor(255 * Math.random());
3387
3402
  return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, (n) => (n ^ t() & 15 >> n / 4).toString(16));
3388
3403
  }
3389
- class Gi {
3390
- constructor(t, n, a, s, i) {
3391
- this.store = t, this.talkSession = n, this.editorInternals = a, this.onSendMessage = s, this.onDeleteMessage = i;
3404
+ class lr {
3405
+ constructor(t, n, a, s, i, r) {
3406
+ this.store = t, this.talkSession = n, this.editorInternals = a, this.onSendMessage = s, this.onDeleteMessage = i, this.onMessageAction = r;
3392
3407
  }
3393
3408
  async deleteMessage(t) {
3394
3409
  const n = this.store.state$.extCurrentConversationId.peek(), a = this.store.state$.messages.child(n).lookup.child(t).peek(), s = this.talkSession.conversation(n).message(t), [i] = await Promise.all([a != null ? a : s.get(), s.delete()]);
@@ -3410,13 +3425,13 @@ class Gi {
3410
3425
  async sendMessage(t) {
3411
3426
  const n = this.store.state$.extCurrentConversationId.peek(), a = await async function(r, o) {
3412
3427
  var T, I, R, N, L;
3413
- const E = r.state$.extCurrentConversationId.peek(), u = r.state$.messages.child(E), D = typeof o.referencedMessage == "string" ? u.lookup.child(o.referencedMessage).peek() : await ((I = (T = o.referencedMessage) == null ? void 0 : T.get()) != null ? I : null), l = D && { ...D, type: "UserMessage", sender: D.sender, referencedMessageId: (N = (R = D.referencedMessage) == null ? void 0 : R.id) != null ? N : null };
3414
- l && delete l.referencedMessage;
3415
- const d = r.latestFileUpload, c = "content" in o ? [Gt(d, o.content[0])] : [zi(o.text)], _ = "text" in o ? o.text : Xi(o.content.map((C) => Gt(d, C)), {});
3416
- return { id: "ephemeral-" + Kn(), type: "UserMessage", sender: r.currentUser$.peek(), createdAt: Date.now(), editedAt: null, custom: (L = o.custom) != null ? L : {}, origin: "web", referencedMessage: l, reactions: [], content: c, plaintext: _ };
3428
+ const E = r.state$.extCurrentConversationId.peek(), u = r.state$.messages.child(E), l = typeof o.referencedMessage == "string" ? u.lookup.child(o.referencedMessage).peek() : await ((I = (T = o.referencedMessage) == null ? void 0 : T.get()) != null ? I : null), c = l && { ...l, type: "UserMessage", sender: l.sender, referencedMessageId: (N = (R = l.referencedMessage) == null ? void 0 : R.id) != null ? N : null };
3429
+ c && delete c.referencedMessage;
3430
+ const d = r.latestFileUpload, D = "content" in o ? [En(d, o.content[0])] : [cr(o.text)], _ = "text" in o ? o.text : ur(o.content.map((m) => En(d, m)), {});
3431
+ return { id: "ephemeral-" + la(), type: "UserMessage", sender: r.currentUser$.peek(), createdAt: Date.now(), editedAt: null, custom: (L = o.custom) != null ? L : {}, origin: "web", referencedMessage: c, reactions: [], content: D, plaintext: _ };
3417
3432
  }(this.store, t);
3418
3433
  this.store.state$.ephemeralMessages.child(n).child(a.id).set(a);
3419
- const s = me();
3434
+ const s = ke();
3420
3435
  this.store.readyForNewMessagesPromise = s.promise;
3421
3436
  const i = await this.talkSession.conversation(n).send(t);
3422
3437
  this.store.state$.ephemeralMessageIdMapping.child(n).child(i.id).set(a.id), s.resolve(), this.onSendMessage({ message: await i.get(), currentUser: this.store.currentUser$.peek(), conversation: this.store.state$.currentConversation.peek() });
@@ -3429,33 +3444,31 @@ class Gi {
3429
3444
  const n = { type: "location", latitude: t.location.latitude, longitude: t.location.longitude };
3430
3445
  return this.sendMessage({ content: [n], custom: t.custom });
3431
3446
  }
3432
- getMessageFieldText() {
3433
- return this.editorInternals.getText();
3434
- }
3435
- setMessageFieldText(t) {
3436
- this.editorInternals.setText(t);
3437
- }
3438
3447
  markAsTyping() {
3439
3448
  const t = this.store.state$.extCurrentConversationId.peek();
3440
3449
  this.talkSession.conversation(t).markAsTyping();
3441
3450
  }
3442
3451
  async toggleReaction(t, n) {
3443
- this.store.state$.extCurrentConversationId.peek();
3444
- const a = this.getReactionRef(t, n.emoji);
3445
- n.currentUserReacted ? await a.remove() : await a.add();
3452
+ typeof n != "string" && (n = n.emoji);
3453
+ const a = this.store.state$.extCurrentConversationId.peek(), s = this.store.state$.messages.child(a).lookup.child(t).peek().reactions.find((r) => r.emoji === n), i = this._getReactionRef(t, n);
3454
+ s != null && s.currentUserReacted ? await i.remove() : await i.add();
3446
3455
  }
3447
3456
  async addReaction(t, n) {
3448
- this.store.state$.extCurrentConversationId.peek(), await this.getReactionRef(t, n).add();
3457
+ await this._getReactionRef(t, n).add();
3458
+ }
3459
+ triggerMessageAction(t, n, a) {
3460
+ const s = this.store.state$.currentConversation.peek();
3461
+ typeof t == "string" && (t = this.store.state$.messages.child(s.id).lookup.child(t).peek()), this.onMessageAction({ action: n, params: a, message: t, conversation: s });
3449
3462
  }
3450
- getReactionRef(t, n) {
3463
+ _getReactionRef(t, n) {
3451
3464
  const a = this.store.state$.extCurrentConversationId.peek();
3452
3465
  return this.talkSession.conversation(a).message(t).reaction(n);
3453
3466
  }
3454
3467
  }
3455
- const zi = (e) => ({ type: "text", children: function(n) {
3456
- return Fn(n, { except: ["FormattedLink", "Actions"] });
3468
+ const cr = (e) => ({ type: "text", children: function(n) {
3469
+ return Vn(n, { except: ["FormattedLink", "Actions"] });
3457
3470
  }(e) });
3458
- function Gt(e, t) {
3471
+ function En(e, t) {
3459
3472
  switch (t.type) {
3460
3473
  case "text":
3461
3474
  case "location":
@@ -3466,10 +3479,10 @@ function Gt(e, t) {
3466
3479
  }(e, t);
3467
3480
  }
3468
3481
  }
3469
- function zt(e) {
3482
+ function un(e) {
3470
3483
  return Object.keys(e);
3471
3484
  }
3472
- class et extends Error {
3485
+ class Dt extends Error {
3473
3486
  constructor(t, n) {
3474
3487
  const a = function(s) {
3475
3488
  if (typeof s == "string") return s;
@@ -3484,30 +3497,30 @@ class et extends Error {
3484
3497
  super(a), this.userMessage = n != null ? n : a, Object.setPrototypeOf && Object.setPrototypeOf(this, new.target.prototype);
3485
3498
  }
3486
3499
  }
3487
- const pe = console;
3488
- class Ki {
3500
+ const Me = console;
3501
+ class Dr {
3489
3502
  constructor(t, n, a, s) {
3490
3503
  this.apiUrls = t, this.appId = n, this.sessionId = a, this.authProvider = s, this._lastPutPromise = Promise.resolve();
3491
3504
  }
3492
3505
  async get(t, n = {}) {
3493
- const a = this.endpointUrl(t, n), s = await Se(() => this.fetchWithReauth(a), { retries: 11 });
3506
+ const a = this.endpointUrl(t, n), s = await Ce(() => this.fetchWithReauth(a), { retries: 11 });
3494
3507
  return await this.handleResponse(s, a);
3495
3508
  }
3496
3509
  async queuedPut(t, n) {
3497
3510
  await this._lastPutPromise;
3498
- const a = Se(() => this._doPut(t, n));
3511
+ const a = Ce(() => this._doPut(t, n));
3499
3512
  return this._lastPutPromise = a, a;
3500
3513
  }
3501
3514
  put(t, n, a) {
3502
3515
  const s = () => this._doPut(t, n);
3503
- return a ? Kt(s, a) : Se(s, { retries: 5 });
3516
+ return a ? ln(s, a) : Ce(s, { retries: 5 });
3504
3517
  }
3505
3518
  post(t, n, a) {
3506
3519
  const s = () => this._doPost(t, n);
3507
- return a ? Kt(s, a) : Se(s, { retries: 5 });
3520
+ return a ? ln(s, a) : Ce(s, { retries: 5 });
3508
3521
  }
3509
3522
  delete(t, n = {}) {
3510
- return Se(() => this._doDelete(t, n), { retries: 11 });
3523
+ return Ce(() => this._doDelete(t, n), { retries: 11 });
3511
3524
  }
3512
3525
  endpointUrl(t, n = {}) {
3513
3526
  const a = new URL(this.apiUrls.internalHttpApiUrl);
@@ -3529,14 +3542,14 @@ class Ki {
3529
3542
  }
3530
3543
  async handleResponse(t, n) {
3531
3544
  if (t.status >= 300) {
3532
- if (t.status === 404) throw Ue.error(`[${this.appId}][BackendRestClient] Couldn't find resource.`), new et("Could not find app.", `Could not find given appId: "${this.appId}". You can find your appId on https://talkjs.com/dashboard.`);
3545
+ if (t.status === 404) throw Xe.error(`[${this.appId}][BackendRestClient] Couldn't find resource.`), new Dt("Could not find app.", `Could not find given appId: "${this.appId}". You can find your appId on https://talkjs.com/dashboard.`);
3533
3546
  if (t.status === 401) {
3534
3547
  const a = await this.authProvider.getToken();
3535
- throw Ue.error(`[${this.appId}][BackendRestClient] Couldn't authenticate ${n} with token ${a}.`), new et("User not authenticated.", "Could not authenticate user. Check if your signature is calculated correctly.");
3548
+ throw Xe.error(`[${this.appId}][BackendRestClient] Couldn't authenticate ${n} with token ${a}.`), new Dt("User not authenticated.", "Could not authenticate user. Check if your signature is calculated correctly.");
3536
3549
  }
3537
3550
  if (t.status >= 300 && t.status < 500) {
3538
3551
  const { error: a } = await t.json();
3539
- throw new et(a);
3552
+ throw new Dt(a);
3540
3553
  }
3541
3554
  {
3542
3555
  const a = await t.text();
@@ -3551,36 +3564,37 @@ class Ki {
3551
3564
  return fetch(t, { ...n, headers: o });
3552
3565
  }
3553
3566
  const s = await this.authProvider.getToken(), i = await a(s);
3554
- return i.status !== 401 ? i : (pe.error(`401 error from ${n == null ? void 0 : n.method} ${t}, ${s}`), this.authProvider.refreshToken(), a(await this.authProvider.getToken()));
3567
+ return i.status !== 401 ? i : (Me.error(`401 error from ${n == null ? void 0 : n.method} ${t}, ${s}`), this.authProvider.refreshToken(), a(await this.authProvider.getToken()));
3555
3568
  }
3556
3569
  }
3557
- function Wn(e) {
3570
+ function ca(e) {
3558
3571
  return !e.userMessage;
3559
3572
  }
3560
- function Se(e, { retries: t = 30 } = {}) {
3561
- return Ot(t, e, { shouldRetry: Wn, log: pe.warn.bind(pe), maxDelay: 30, initialDelay: 0.2 });
3573
+ function Ce(e, { retries: t = 30 } = {}) {
3574
+ return gt(t, e, { shouldRetry: ca, log: Me.warn.bind(Me), maxDelay: 30, initialDelay: 0.2 });
3562
3575
  }
3563
- async function Kt(e, t) {
3576
+ async function ln(e, t) {
3564
3577
  try {
3565
3578
  return await e();
3566
3579
  } catch (a) {
3567
- if (!Wn(a)) throw a;
3580
+ if (!ca(a)) throw a;
3568
3581
  }
3569
3582
  let n = !1;
3570
3583
  return t.then(() => {
3571
3584
  n = !0;
3572
- }), Ot(1e3, e, { initialDelay: 0.2, maxDelay: 30, shouldRetry: () => !n, log: pe.warn.bind(pe) });
3585
+ }), gt(1e3, e, { initialDelay: 0.2, maxDelay: 30, shouldRetry: () => !n, log: Me.warn.bind(Me) });
3573
3586
  }
3574
- class Wi {
3587
+ class _r {
3575
3588
  constructor(t, n, a, s) {
3576
- this.backendRestClient = new Ki(t, n, a, s);
3589
+ this.backendRestClient = new Dr(t, n, a, s);
3577
3590
  }
3578
3591
  async getApp(t) {
3579
3592
  return function(n) {
3580
- const a = JSON.parse(n.configuration.suppressContactInfo), s = new Pn(a), i = { ...n.configuration, suppressContactInfo: s }, r = function(o, E) {
3581
- const u = { general: { enableFileTransfers: E.includes("file_sharing"), enableLocation: E.includes("location_sharing"), enableMentions: !1, showTypingIndicators: !0, enablePresence: !1, enableVoiceRecording: !1 }, theme: { version: "v2", name: "default" }, permissions: { messages: { delete: "own", edit: "own", reply: "all", emojiReactions: "all" }, messagesCustom: {}, conversations: { leave: "none", markAsUnread: "none" }, conversationsCustom: {} }, generalNotificationSettings: { timeout: "15" }, emailSettings: { enabled: !0, subject: "{{sender.name}} wants to chat with you on {{app.name}}", replySeparator: "--- Write ABOVE THIS LINE to post a reply via email ---", unsubscribeText: "Unsubscribe from all chat emails", senderName: "{{sender.name}} (via {{app.name}})", header: `Hi {{recipient.name}},
3593
+ var E;
3594
+ const a = (E = n.configuration) == null ? void 0 : E.suppressContactInfo, s = typeof a == "string" ? JSON.parse(a) : void 0, i = s && new qn(s), r = { ...n.configuration, suppressContactInfo: i }, o = function(u, l) {
3595
+ const c = { general: { enableFileTransfers: l.includes("file_sharing"), enableLocation: l.includes("location_sharing"), enableMentions: !1, showTypingIndicators: !0, enablePresence: !1, enableVoiceRecording: !1 }, theme: { version: "v2", name: "default" }, permissions: { messages: { delete: "own", edit: "own", reply: "all", emojiReactions: "all" }, messagesCustom: {}, conversations: { leave: "none", markAsUnread: "none" }, conversationsCustom: {} }, generalNotificationSettings: { timeout: "15" }, emailSettings: { enabled: !0, subject: "{{sender.name}} wants to chat with you on {{app.name}}", replySeparator: "--- Write ABOVE THIS LINE to post a reply via email ---", unsubscribeText: "Unsubscribe from all chat emails", senderName: "{{sender.name}} (via {{app.name}})", header: `Hi {{recipient.name}},
3582
3596
  {{sender.name}} wants to chat with you on {{app.name}}:`, includeMessages: !0, inboxUrl: "{{app.custom.websiteUrl}}", inboxLinkText: "Join the chat", footer: `On behalf of {{sender.name}},
3583
- The {{app.name}} team`, enableReplyToEmail: E.includes("reply_via_email"), emailThemeType: E.includes("email_templates") ? "custom" : "standard", emailTheme: "default_email", emailAttachmentMode: "enabledExcludingImages", htmlTemplate: `<div>
3597
+ The {{app.name}} team`, enableReplyToEmail: l.includes("reply_via_email"), emailThemeType: l.includes("email_templates") ? "custom" : "standard", emailTheme: "default_email", emailAttachmentMode: "enabledExcludingImages", htmlTemplate: `<div>
3584
3598
  Hi {{recipient.name}}, <br/>
3585
3599
  <br/>
3586
3600
  {{sender.name}} wants to chat with you on {{app.name}}:<br/>
@@ -3602,10 +3616,10 @@ class Wi {
3602
3616
  {{app.custom.websiteUrl}} Join the chat
3603
3617
 
3604
3618
  On behalf of {{sender.name}},
3605
- The {{app.name}} team` }, smsSettings: { enabled: E.includes("sms_notifications"), smsTemplate: '({{app.name}}) {{sender.name}}: "{{messages}}". Reply here: {{app.custom.websiteUrl}}', maximumSegments: "1", enableAutoOptOutText: !1, optOutText: "To stop receiving these messages, reply STOP." }, suppressContactInfo: { mode: "off", suppressLinks: !0, suppressEmailAddresses: !0, suppressPhoneNumbers: !0 }, sameTabLinkRules: [] };
3606
- return pa(u, o);
3607
- }(i, n.features);
3608
- return { appMetadata: { ...n.appMetadata, id: n.appMetadata.id }, features: n.features, role: r };
3619
+ The {{app.name}} team` }, smsSettings: { enabled: l.includes("sms_notifications"), smsTemplate: '({{app.name}}) {{sender.name}}: "{{messages}}". Reply here: {{app.custom.websiteUrl}}', maximumSegments: "1", enableAutoOptOutText: !1, optOutText: "To stop receiving these messages, reply STOP." }, suppressContactInfo: { mode: "off", suppressLinks: !0, suppressEmailAddresses: !0, suppressPhoneNumbers: !0 }, sameTabLinkRules: [] };
3620
+ return Va(c, u);
3621
+ }(r, n.features);
3622
+ return { appMetadata: { ...n.appMetadata, id: n.appMetadata.id }, features: n.features, role: o };
3609
3623
  }(await this.backendRestClient.get("/app", { role_name: t }));
3610
3624
  }
3611
3625
  async checkIfAppExists() {
@@ -3615,7 +3629,7 @@ The {{app.name}} team` }, smsSettings: { enabled: E.includes("sms_notifications"
3615
3629
  });
3616
3630
  }
3617
3631
  }
3618
- class oe {
3632
+ class _e {
3619
3633
  constructor(t, n, a) {
3620
3634
  this.realtimeWsApiUrl = t, this.internalHttpApiUrl = n, this.restApiHttpUrl = a;
3621
3635
  }
@@ -3628,7 +3642,7 @@ class oe {
3628
3642
  }
3629
3643
  static fromHost(t) {
3630
3644
  var a;
3631
- const n = new oe("wss://realtime.talkjs.com/v1", "https://app.talkjs.com/api/v0", "https://api.talkjs.com/v1");
3645
+ const n = new _e("wss://realtime.talkjs.com/v1", "https://app.talkjs.com/api/v0", "https://api.talkjs.com/v1");
3632
3646
  if (!t) return n;
3633
3647
  if (t === "@currentHost") {
3634
3648
  if (typeof location == "undefined") throw new Error("You can only use @currentHost in a browser.");
@@ -3638,41 +3652,41 @@ class oe {
3638
3652
  const s = t.match(/^(?:\w+-)?([^.]+)\.talkjs\.com$/);
3639
3653
  if (s) {
3640
3654
  const i = s[1];
3641
- return ["app", "cdn", "api", "realtime"].includes(i) ? n : new oe(`wss://realtime-${i}.talkjs.com/v1`, `https://app-${i}.talkjs.com/api/v0`, `https://api-${i}.talkjs.com/v1`);
3655
+ return ["app", "cdn", "api", "realtime"].includes(i) ? n : new _e(`wss://realtime-${i}.talkjs.com/v1`, `https://app-${i}.talkjs.com/api/v0`, `https://api-${i}.talkjs.com/v1`);
3642
3656
  }
3643
3657
  return n;
3644
3658
  }
3645
- return t.includes("localhost") || t.includes("localtest.me") || /^\d+\.\d+\.\d+\.\d+(:\d+)?$/.test(t) ? new oe(`ws://${t}/public_api/v1`, `http://${t}/api/v0`, `http://${t}/public_api/v1`) : new oe(`wss://${t}/public_api/v1`, `https://${t}/api/v0`, `https://${t}/public_api/v1`);
3659
+ return t.includes("localhost") || t.includes("localtest.me") || /^\d+\.\d+\.\d+\.\d+(:\d+)?$/.test(t) ? new _e(`ws://${t}/public_api/v1`, `http://${t}/api/v0`, `http://${t}/public_api/v1`) : new _e(`wss://${t}/public_api/v1`, `https://${t}/api/v0`, `https://${t}/public_api/v1`);
3646
3660
  }
3647
3661
  }
3648
- function qn(e, t) {
3649
- const n = t.appId, a = t.userId, s = "conversationId" in t ? t.conversationId : void 0, i = P(() => oe.fromHost(t.host), [t.host]), r = b(void 0), o = P(() => {
3650
- const l = r.current, d = typeof l != typeof t.tokenFetcher ? t.tokenFetcher : l;
3662
+ function Da(e, t) {
3663
+ const n = t.appId, a = t.userId, s = "conversationId" in t ? t.conversationId : void 0, i = M(() => _e.fromHost(t.host), [t.host]), r = P(void 0), o = M(() => {
3664
+ const c = r.current, d = typeof c != typeof t.tokenFetcher ? t.tokenFetcher : c;
3651
3665
  return r.current = d, d;
3652
3666
  }, [t.tokenFetcher]);
3653
- ce(() => {
3667
+ Ie(() => {
3654
3668
  e.updateThemeCustom(t.themeCustom);
3655
3669
  }, [e, t.themeCustom]);
3656
- const E = P(() => Kn(), [t.appId, t.userId, t.token, o]), u = ma({ apiUrls: i, appId: n, userId: a, token: t.token, tokenFetcher: o });
3657
- F(() => e.listenForErrors(u, s), [u, e, s]);
3658
- const D = P(() => new Wi(i, n, E, u._authProvider), [n, E, u, i]);
3659
- return F(() => e.listenForAuthChanges(u, o), [u, e, o]), F(() => e.listenForUserAndAppChanges(u, D), [e, D, u]), { session: u, restApi: D };
3660
- }
3661
- function He(e, t, n) {
3662
- const a = b(e), s = b(n);
3663
- return ce(() => {
3670
+ const E = M(() => la(), [t.appId, t.userId, t.token, o]), u = xa({ apiUrls: i, appId: n, userId: a, token: t.token, tokenFetcher: o });
3671
+ h(() => e.listenForErrors(u, s), [u, e, s]);
3672
+ const l = M(() => new _r(i, n, E, u._authProvider), [n, E, u, i]);
3673
+ return h(() => e.listenForAuthChanges(u, o), [u, e, o]), h(() => e.listenForUserAndAppChanges(u, l), [e, l, u]), { session: u, restApi: l };
3674
+ }
3675
+ function ge(e, t, n) {
3676
+ const a = P(e), s = P(n);
3677
+ return Ie(() => {
3664
3678
  a.current = e, s.current = n;
3665
- }), U((i) => {
3679
+ }), H((i) => {
3666
3680
  a.current && a.current(i), (t == null ? void 0 : t.tagName) !== "T-CHATBOX" && (t == null ? void 0 : t.tagName) !== "T-CONVERSATION-LIST" || function(r, o, E) {
3667
3681
  for (const u of E) {
3668
- const D = new Event(u);
3669
- Object.assign(D, o), r.dispatchEvent(D);
3682
+ const l = new Event(u);
3683
+ Object.assign(l, o), r.dispatchEvent(l);
3670
3684
  }
3671
3685
  }(t, i, s.current);
3672
3686
  }, [t]);
3673
3687
  }
3674
- function Jn(e) {
3675
- F(() => {
3688
+ function _a(e) {
3689
+ h(() => {
3676
3690
  const t = window, n = e.current;
3677
3691
  if (t.cordova && n) {
3678
3692
  const a = (s) => {
@@ -3685,108 +3699,160 @@ function Jn(e) {
3685
3699
  }
3686
3700
  }, [e]);
3687
3701
  }
3688
- function Zn() {
3689
- const [e, t] = H(!0);
3690
- return F(() => {
3702
+ function Aa() {
3703
+ const [e, t] = b(!0);
3704
+ return h(() => {
3691
3705
  t(!1);
3692
3706
  }, []), e;
3693
3707
  }
3694
- ga(), _t(), ha({ observableFunctions: { child: (e, t) => (k(typeof t == "string" || typeof t == "number", "Key should be a string or a number"), Ra.getProxy(e, t.toString())) } }), q.registerHandler(({ level: e, data: t }) => {
3695
- console[e]("[TalkJS]", ...t);
3696
- });
3697
- const qi = $e(function(e, t) {
3698
- var h, p;
3699
- const { onSendMessage: n, onDeleteMessage: a, beforeBrowserPermissionPrompt: s, onMissingBrowserPermission: i, messageFieldPlaceholder: r, messageFieldSpellcheck: o, __hostElement: E } = e;
3700
- F(() => {
3701
- var m;
3702
- (m = e.__internalOnLoaded) == null || m.call(e);
3708
+ const Ar = Je(function(e, t) {
3709
+ var B, j;
3710
+ const { onSendMessage: n, onDeleteMessage: a, onMessageAction: s, beforeBrowserPermissionPrompt: i, onMissingBrowserPermission: r, messageFieldPlaceholder: o, messageFieldSpellcheck: E, __hostElement: u } = e;
3711
+ h(() => {
3712
+ var v;
3713
+ (v = e.__internalOnLoaded) == null || v.call(e);
3703
3714
  }, []);
3704
- const u = Zn(), D = b(E != null ? E : null);
3705
- Jn(D);
3706
- const l = He(a, E, ["deleteMessage", "delete-message", "deletemessage", "DeleteMessage"]), d = He(n, E, ["sendMessage", "send-message", "sendmessage", "SendMessage"]), c = { beforeBrowserPermissionPrompt: s, onMissingBrowserPermissionCallback: He(i, E, ["browserPermissionDenied", "browser-permission-denied", "browserpermissiondenied", "BrowserPermissionDenied"]) }, { store: _, controller: T, editorInternals: I, session: R } = function(m, M, j) {
3707
- const Y = m.conversationId, g = P(() => new In(m.appId, m.userId), []), { session: w, restApi: Oe } = qn(g, m), te = P(() => new xn(g.state$.editor, g.device$, g.state$.userPermissions), [g]), Te = P(() => new Gi(g, w, te, M, j), [w, g, te, M, j]);
3708
- return te.controller = Te, F(() => {
3709
- let X, K = !0;
3710
- const Fe = w.currentUser.subscribe(async (Q) => {
3711
- if (K && (g.errors$.unknownUser.set(!Q), Q && (g.currentUser$.set(Q), Q.role !== X))) {
3712
- X = Q.role;
3713
- const Ge = await Oe.getApp(Q.role);
3714
- if (!K) return;
3715
- g.app$.set(Ge);
3715
+ const l = Aa(), c = P(u != null ? u : null);
3716
+ _a(c);
3717
+ const d = ge(a, u, ["deleteMessage", "delete-message", "deletemessage", "DeleteMessage"]), D = ge(n, u, ["sendMessage", "send-message", "sendmessage", "SendMessage"]), _ = ge(s, u, ["messageAction", "message-action", "messageaction", "MessageAction"]), T = { beforeBrowserPermissionPrompt: i, onMissingBrowserPermissionCallback: ge(r, u, ["browserPermissionDenied", "browser-permission-denied", "browserpermissiondenied", "BrowserPermissionDenied"]) }, { store: I, controller: R, editorInternals: N, session: L } = function(v, V, X, J) {
3718
+ const G = v.conversationId, g = M(() => new Hn(v.appId, v.userId), []), { session: x, restApi: Re } = Da(g, v), re = M(() => new ia(g.state$.editor, g.device$, g.state$.userPermissions), [g]), Ft = M(() => new lr(g, x, re, V, X, J), [x, g, re, V, X, J]);
3719
+ return re.controller = Ft, h(() => {
3720
+ let ae, ce = !0;
3721
+ const be = x.currentUser.subscribe(async (se) => {
3722
+ if (ce && (g.errors$.unknownUser.set(!se), se && (g.currentUser$.set(se), se.role !== ae))) {
3723
+ ae = se.role;
3724
+ const at = await Re.getApp(se.role);
3725
+ if (!ce) return;
3726
+ g.app$.set(at);
3716
3727
  }
3717
3728
  });
3718
3729
  return () => {
3719
- K = !1, Fe.unsubscribe();
3730
+ ce = !1, be.unsubscribe();
3720
3731
  };
3721
- }, [Oe, w, g]), F(() => {
3722
- let X = !0;
3723
- ue(() => {
3724
- g.state$.extCurrentConversationId.set(Y), g.state$.currentConversation.set(null), g.state$.referencedMessageId.set(null);
3732
+ }, [Re, x, g]), h(() => {
3733
+ let ae = !0;
3734
+ Te(() => {
3735
+ g.state$.extCurrentConversationId.set(G), g.state$.currentConversation.set(null), g.state$.referencedMessageId.set(null);
3725
3736
  });
3726
- const K = w.conversation(Y).subscribeMessages(async ($, de) => {
3727
- X && $ && (await g.readyForNewMessagesPromise, g.storeMessages(Y, $, de));
3737
+ const ce = x.conversation(G).subscribeMessages(async (w, Le) => {
3738
+ ae && w && (await g.readyForNewMessagesPromise, g.storeMessages(G, w, Le));
3728
3739
  });
3729
- g.messageSubscription = K;
3730
- const Fe = w.conversation(Y).subscribeParticipants(($) => {
3731
- X && $ && g.state$.participants.child(Y).set($);
3740
+ g.messageSubscription = ce;
3741
+ const be = x.conversation(G).subscribeParticipants((w) => {
3742
+ ae && w && g.state$.participants.child(G).set(w);
3732
3743
  });
3733
- g.participantSubscription = Fe;
3734
- const Q = w.conversation(Y).subscribe(async ($) => {
3735
- X && $ && g.state$.currentConversation.set($);
3736
- }), Ge = w.conversation(Y).subscribeTyping(($) => {
3737
- X && $ && g.storeTyping(Y, $);
3738
- }), ta = g.state$.participants.child(Y).onChange(({ value: $ }) => {
3739
- if (!$) return;
3740
- const de = /* @__PURE__ */ new Set();
3741
- for (const W of $) de.add(W.user.id);
3742
- ue(() => {
3743
- var W;
3744
- for (const ne of zt(g.onlineSubscriptions)) de.has(ne) || ((W = g.onlineSubscriptions[ne]) == null || W.unsubscribe(), delete g.onlineSubscriptions[ne], g.state$.isUserConnected.child(ne).set(!1));
3744
+ g.participantSubscription = be;
3745
+ const se = x.conversation(G).subscribe(async (w) => {
3746
+ ae && w && g.state$.currentConversation.set(w);
3747
+ }), at = x.conversation(G).subscribeTyping((w) => {
3748
+ ae && w && g.storeTyping(G, w);
3749
+ }), Sa = g.state$.participants.child(G).onChange(({ value: w }) => {
3750
+ if (!w) return;
3751
+ const Le = /* @__PURE__ */ new Set();
3752
+ for (const Z of w) Le.add(Z.user.id);
3753
+ Te(() => {
3754
+ var Z;
3755
+ for (const oe of un(g.onlineSubscriptions)) Le.has(oe) || ((Z = g.onlineSubscriptions[oe]) == null || Z.unsubscribe(), delete g.onlineSubscriptions[oe], g.state$.isUserConnected.child(oe).set(!1));
3745
3756
  });
3746
- for (const W of de) g.onlineSubscriptions[W] || (g.onlineSubscriptions[W] = w.user(W).subscribeOnline((ne) => {
3747
- ne && g.state$.isUserConnected.child(W).set(ne.isConnected);
3757
+ for (const Z of Le) g.onlineSubscriptions[Z] || (g.onlineSubscriptions[Z] = x.user(Z).subscribeOnline((oe) => {
3758
+ oe && g.state$.isUserConnected.child(Z).set(oe.isConnected);
3748
3759
  }));
3749
3760
  }, { initial: !0 });
3750
3761
  return () => {
3751
- X = !1, Fe.unsubscribe(), Q.unsubscribe(), K.unsubscribe(), Ge.unsubscribe(), g.messageSubscription = null, g.participantSubscription = null, ta();
3752
- for (const $ of zt(g.onlineSubscriptions)) g.onlineSubscriptions[$].unsubscribe();
3762
+ ae = !1, be.unsubscribe(), se.unsubscribe(), ce.unsubscribe(), at.unsubscribe(), g.messageSubscription = null, g.participantSubscription = null, Sa();
3763
+ for (const w of un(g.onlineSubscriptions)) g.onlineSubscriptions[w].unsubscribe();
3753
3764
  g.onlineSubscriptions = {}, g.state$.isUserConnected.set({});
3754
3765
  };
3755
- }, [g, Y, w]), { store: g, controller: Te, editorInternals: te, session: w };
3756
- }(e, d, l), N = U(async () => {
3757
- const m = I.state$;
3758
- if (m.isEmpty.peek() || m.atTextLimit.peek()) return;
3759
- const M = I.getText(), j = _.state$.referencedMessageId.peek();
3760
- j && T.setReferencedMessage(null), I.clearText(), _.state$.editor.showEmojiPicker.set(!1), await T.sendMessage({ text: M, referencedMessage: j != null ? j : void 0 });
3761
- }, [T, I, _]);
3762
- F(() => {
3763
- var M;
3764
- const m = (M = e.enterSendsMessage) != null ? M : !0;
3765
- I.onEnter = m ? N : void 0;
3766
- }, [I, e.enterSendsMessage, N]), F(() => {
3767
- I.spellcheck$.set(o);
3768
- }, [I, o]), F(() => {
3769
- I.placeholder$.set(r);
3770
- }, [I, r]), qt(t, () => ({ deleteMessage: (m) => T.deleteMessage(m), setEditing: (m) => T.setEditing(m), editMessage: (m, M) => T.editMessage(m, M), sendMessage: (m) => T.sendMessage(m), sendFileMessage: (m) => T.sendFileMessage(m), sendLocationMessage: (m) => T.sendLocationMessage(m), setReferencedMessage: (m) => T.setReferencedMessage(m), getMessageFieldText: () => I.getText(), setMessageFieldText: (m) => I.setText(m) }));
3771
- const L = U(({ error: m }) => O(Xe, { appId: e.appId, chatboxState: { type: "unexpected-error", error: m } }), [e.appId]), C = u ? null : O(un, { fallbackRender: L, children: O(en.Provider, { value: I, children: O(nn.Provider, { value: _, children: O(an.Provider, { value: e.theme, children: O(tn.Provider, { value: c, children: O(sn.Provider, { value: T, children: O(rn.Provider, { value: R, children: O(ca.Provider, { value: { sendMessage: N }, children: O(Vi, { appId: e.appId, chatHeaderVisible: (h = e.chatHeaderVisible) != null ? h : !0, messageFieldVisible: (p = e.messageFieldVisible) != null ? p : !0 }) }) }) }) }) }) }) }) });
3772
- if (E) return C;
3766
+ }, [g, G, x]), { store: g, controller: Ft, editorInternals: re, session: x };
3767
+ }(e, D, d, _), m = H(async () => {
3768
+ const v = N.state$;
3769
+ if (v.isEmpty.peek() || v.atTextLimit.peek()) return;
3770
+ const V = N.getText(), X = I.state$.referencedMessageId.peek();
3771
+ X && R.setReferencedMessage(null), N.clearText(), I.state$.editor.showEmojiPicker.set(!1), await R.sendMessage({ text: V, referencedMessage: X != null ? X : void 0 });
3772
+ }, [R, N, I]);
3773
+ h(() => {
3774
+ var V;
3775
+ const v = (V = e.enterSendsMessage) != null ? V : !0;
3776
+ N.onEnter = v ? m : void 0;
3777
+ }, [N, e.enterSendsMessage, m]), h(() => {
3778
+ N.spellcheck$.set(E);
3779
+ }, [N, E]), h(() => {
3780
+ N.placeholder$.set(o);
3781
+ }, [N, o]), Ze(t, () => ({ controller: R, editorInternals: N }));
3782
+ const p = H(({ error: v }) => O(nt, { appId: e.appId, chatboxState: { type: "unexpected-error", error: v } }), [e.appId]), C = l ? null : O(pn, { fallbackRender: p, children: O(Tn.Provider, { value: N, children: O(Sn.Provider, { value: I, children: O(In.Provider, { value: e.theme, children: O(dn.Provider, { value: T, children: O(Nn.Provider, { value: R, children: O(Rn.Provider, { value: L, children: O(va.Provider, { value: { sendMessage: m }, children: O(Er, { appId: e.appId, chatHeaderVisible: (B = e.chatHeaderVisible) != null ? B : !0, messageFieldVisible: (j = e.messageFieldVisible) != null ? j : !0 }) }) }) }) }) }) }) }) });
3783
+ if (u) return C;
3773
3784
  {
3774
- const m = "t-chatbox" + (e.className ? ` ${e.className}` : "");
3775
- return O("div", { className: m, style: e.style, ref: D, children: C });
3785
+ const v = "t-chatbox" + (e.className ? ` ${e.className}` : "");
3786
+ return O("div", { className: v, style: e.style, ref: c, children: C });
3776
3787
  }
3777
3788
  });
3778
- function Ji({ conversation: e }) {
3779
- const t = f(), n = he(), a = G(), s = cn(), i = v(t.extCurrentConversationId$), [r, o] = H([]);
3780
- return F(() => {
3789
+ ja(), pt(), $a({ observableFunctions: { child: (e, t) => (k(typeof t == "string" || typeof t == "number", "Key should be a string or a number"), ya.getProxy(e, t.toString())) } }), ee.registerHandler(({ level: e, data: t }) => {
3790
+ console[e]("[TalkJS]", ...t);
3791
+ });
3792
+ const Or = Je(function(e, t) {
3793
+ const n = P(null), a = M(() => new Tr(n), []);
3794
+ Ze(t, () => a, [a]);
3795
+ const { theme: s, ...i } = e, r = M(() => ({ ...ht, ...s != null ? s : {} }), [s]), o = `${e.userId}|${e.appId}`;
3796
+ return O(Ln.Provider, { value: a, children: le(Ar, { ...i, key: o, theme: r, ref: n }) });
3797
+ });
3798
+ var Oe, $, Q, Ve;
3799
+ class Tr {
3800
+ constructor(t) {
3801
+ me(this, $);
3802
+ me(this, Oe);
3803
+ st(this, Oe, t);
3804
+ }
3805
+ deleteMessage(t) {
3806
+ return Y(this, $, Q).deleteMessage(t);
3807
+ }
3808
+ setEditing(t) {
3809
+ Y(this, $, Q).setEditing(t);
3810
+ }
3811
+ editMessage(t, n) {
3812
+ return Y(this, $, Q).editMessage(t, n);
3813
+ }
3814
+ sendMessage(t) {
3815
+ return Y(this, $, Q).sendMessage(t);
3816
+ }
3817
+ sendFileMessage(t) {
3818
+ return Y(this, $, Q).sendFileMessage(t);
3819
+ }
3820
+ sendLocationMessage(t) {
3821
+ return Y(this, $, Q).sendLocationMessage(t);
3822
+ }
3823
+ setReferencedMessage(t) {
3824
+ Y(this, $, Q).setReferencedMessage(t);
3825
+ }
3826
+ toggleReaction(t, n) {
3827
+ return Y(this, $, Q).toggleReaction(t, n);
3828
+ }
3829
+ getMessageFieldText() {
3830
+ return Y(this, $, Ve).getText();
3831
+ }
3832
+ setMessageFieldText(t) {
3833
+ Y(this, $, Ve).setText(t);
3834
+ }
3835
+ focusMessageField() {
3836
+ Y(this, $, Ve).focus();
3837
+ }
3838
+ }
3839
+ Oe = new WeakMap(), $ = new WeakSet(), Q = function() {
3840
+ return Y(this, Oe).current.controller;
3841
+ }, Ve = function() {
3842
+ return Y(this, Oe).current.editorInternals;
3843
+ };
3844
+ function dr({ conversation: e }) {
3845
+ const t = f(), n = Pe(), a = W(), s = Fn(), i = F(t.extCurrentConversationId$), [r, o] = b([]);
3846
+ return h(() => {
3781
3847
  const E = n.conversation(e.id).subscribeParticipants(async (u) => {
3782
3848
  u && o(u);
3783
3849
  });
3784
3850
  return () => E.unsubscribe();
3785
3851
  }, [n, e.id]), r ? O(a.ConversationListItem, { common: s, conversation: e, participants: r, isSelected: i === e.id }) : null;
3786
3852
  }
3787
- function Zi() {
3788
- const e = f(), t = b(null);
3789
- F(() => {
3853
+ function Sr() {
3854
+ const e = f(), t = P(null);
3855
+ h(() => {
3790
3856
  let a = !0;
3791
3857
  const s = t.current;
3792
3858
  return async function() {
@@ -3797,20 +3863,20 @@ function Zi() {
3797
3863
  a = !1;
3798
3864
  };
3799
3865
  }, [e]);
3800
- const n = U((a) => {
3866
+ const n = H((a) => {
3801
3867
  const s = a.currentTarget;
3802
3868
  s.scrollHeight - s.clientHeight - s.scrollTop < 15 && e.conversationListSubscription && e.conversationListSubscription.loadMore(20);
3803
3869
  }, [e]);
3804
- return O("div", { className: "t-conversation-list-scrollable", ref: t, "t-menu-boundary": "", onScroll: n, children: O(tt, { each: e.conversationsArray$, children: (a) => O(Ji, { conversation: a.get() }) }) });
3870
+ return O("div", { className: "t-conversation-list-scrollable", ref: t, "t-menu-boundary": "", onScroll: n, children: O(_t, { each: e.conversationsArray$, children: (a) => O(dr, { conversation: a.get() }) }) });
3805
3871
  }
3806
- function Qi({ appId: e }) {
3872
+ function Ir({ appId: e }) {
3807
3873
  f();
3808
3874
  const t = function() {
3809
- const n = f(), a = J(() => {
3875
+ const n = f(), a = te(() => {
3810
3876
  const r = n.currentUser$.get(), o = n.app$.get(), E = n.errors$.get(), u = n.authTokenState$.get();
3811
3877
  return E.serverError ? "server-error" : E.wrongAppId ? "wrong-app-id" : u === "loading" || u === "idle" ? "loading-token" : u === "invalid" ? "invalid-token" : u === "expired" ? "expired-token" : u === "valid" ? E.unknownUser ? "unknown-user" : r && o ? "loaded" : "loading-data" : void k.unreachable();
3812
- }), s = J({ type: "loading" });
3813
- De((r) => {
3878
+ }), s = te({ type: "loading" });
3879
+ de((r) => {
3814
3880
  const o = a.get(), E = n.extUserId$.peek(), u = n.appId$.peek();
3815
3881
  switch (o) {
3816
3882
  case "invalid-token":
@@ -3833,20 +3899,20 @@ function Qi({ appId: e }) {
3833
3899
  s.set({ type: "loaded", currentUser: n.currentUser$.peek() });
3834
3900
  break;
3835
3901
  case "unknown-user":
3836
- r.onCleanup = function(D) {
3902
+ r.onCleanup = function(l) {
3837
3903
  s.set({ type: "loading" });
3838
- const l = setTimeout(() => {
3839
- s.set(D);
3904
+ const c = setTimeout(() => {
3905
+ s.set(l);
3840
3906
  }, 5e3);
3841
- return () => clearTimeout(l);
3907
+ return () => clearTimeout(c);
3842
3908
  }({ type: "unknown-user", userId: E });
3843
3909
  break;
3844
3910
  default:
3845
3911
  k.never(o);
3846
3912
  }
3847
3913
  });
3848
- const i = J({ type: "loading" });
3849
- return De((r) => {
3914
+ const i = te({ type: "loading" });
3915
+ return de((r) => {
3850
3916
  if (s.type.get() === "loading") {
3851
3917
  i.set({ type: "invisible-loading" });
3852
3918
  const o = setTimeout(() => {
@@ -3856,17 +3922,17 @@ function Qi({ appId: e }) {
3856
3922
  clearTimeout(o);
3857
3923
  };
3858
3924
  } else i.set(s.get());
3859
- }), v(i);
3925
+ }), F(i);
3860
3926
  }();
3861
- return t.type === "invisible-loading" ? O(Le, {}) : t.type === "loading" ? O(Xn, {}) : t.type === "unknown-user" || t.type === "auth-failed" || t.type === "wrong-app-id" || t.type === "server-error" || t.type === "unexpected-error" ? O(Xe, { appId: e, chatboxState: t }) : t.type == "expired-token" ? O(Gn, {}) : t.type === "loaded" ? O(Zi, {}) : O(Le, {});
3927
+ return t.type === "invisible-loading" ? O(ve, {}) : t.type === "loading" ? O(oa, {}) : t.type === "unknown-user" || t.type === "auth-failed" || t.type === "wrong-app-id" || t.type === "server-error" || t.type === "unexpected-error" ? O(nt, { appId: e, chatboxState: t }) : t.type == "expired-token" ? O(Ea, {}) : t.type === "loaded" ? O(Sr, {}) : O(ve, {});
3862
3928
  }
3863
- class er extends Sn {
3929
+ class Nr extends Pn {
3864
3930
  constructor() {
3865
- super(...arguments), this.type = "ConversationListStore", this.conversationListSubscription = null, this.extCurrentConversationId$ = B(null), this.conversationsArray$ = B([]), this.conversationsMap$ = B({});
3931
+ super(...arguments), this.type = "ConversationListStore", this.conversationListSubscription = null, this.extCurrentConversationId$ = U(null), this.conversationsArray$ = U([]), this.conversationsMap$ = U({});
3866
3932
  }
3867
3933
  listenForConversations(t) {
3868
3934
  const n = t.subscribeConversations((a) => {
3869
- ue(() => {
3935
+ Te(() => {
3870
3936
  this.conversationsArray$.set(a);
3871
3937
  const s = {};
3872
3938
  for (const i of a) s[i.id] = i;
@@ -3878,7 +3944,7 @@ class er extends Sn {
3878
3944
  };
3879
3945
  }
3880
3946
  }
3881
- class tr {
3947
+ class Rr {
3882
3948
  constructor(t, n) {
3883
3949
  this.store = t, this.onSelectConversation = n;
3884
3950
  }
@@ -3889,92 +3955,113 @@ class tr {
3889
3955
  this.onSelectConversation(n);
3890
3956
  }
3891
3957
  }
3892
- const nr = $e(function(e, t) {
3958
+ const Lr = Je(function(e, t) {
3893
3959
  const { __hostElement: n, onSelectConversation: a } = e;
3894
- F(() => {
3960
+ h(() => {
3895
3961
  var d;
3896
3962
  (d = e.__internalOnLoaded) == null || d.call(e);
3897
3963
  }, []);
3898
- const s = Zn(), i = b(n != null ? n : null);
3899
- Jn(i);
3900
- const r = He(a, n, ["selectConversation", "select-conversation", "selectconversation", "SelectConversation"]), o = P(() => new er(e.appId, e.userId), []);
3901
- F(() => {
3902
- ue(() => {
3964
+ const s = Aa(), i = P(n != null ? n : null);
3965
+ _a(i);
3966
+ const r = ge(a, n, ["selectConversation", "select-conversation", "selectconversation", "SelectConversation"]), o = M(() => new Nr(e.appId, e.userId), []);
3967
+ h(() => {
3968
+ Te(() => {
3903
3969
  o.extUserId$.set(e.userId), o.appId$.set(e.appId);
3904
3970
  });
3905
3971
  }, [o, e.appId, e.userId]);
3906
- const { session: E } = qn(o, e), u = P(() => new tr(o, r), [o, r]);
3907
- F(() => o.listenForConversations(E), [o, E]), F(() => {
3972
+ const { session: E } = Da(o, e), u = M(() => new Rr(o, r), [o, r]);
3973
+ h(() => o.listenForConversations(E), [o, E]), h(() => {
3908
3974
  e.selectedConversationId !== void 0 && o.extCurrentConversationId$.set(e.selectedConversationId);
3909
- }, [o, e.selectedConversationId]), F(() => {
3975
+ }, [o, e.selectedConversationId]), h(() => {
3910
3976
  const d = e.__hostElement;
3911
3977
  if (d)
3912
- return o.extCurrentConversationId$.onChange(({ value: c }) => {
3913
- d.selectedConversationId = c;
3978
+ return o.extCurrentConversationId$.onChange(({ value: D }) => {
3979
+ d.selectedConversationId = D;
3914
3980
  });
3915
- }, [o, e.__hostElement]), qt(t, () => ({ selectConversation: (d) => u.selectConversation(d) }));
3916
- const D = U(({ error: d }) => O(Xe, { appId: e.appId, chatboxState: { type: "unexpected-error", error: d } }), [e.appId]), l = s ? null : O(un, { fallbackRender: D, children: O(nn.Provider, { value: o, children: O(an.Provider, { value: e.theme, children: O(sn.Provider, { value: u, children: O(rn.Provider, { value: E, children: O(Qi, { appId: e.appId }) }) }) }) }) });
3917
- if (n) return l;
3981
+ }, [o, e.__hostElement]), Ze(t, () => ({ controller: u }));
3982
+ const l = H(({ error: d }) => O(nt, { appId: e.appId, chatboxState: { type: "unexpected-error", error: d } }), [e.appId]), c = s ? null : O(pn, { fallbackRender: l, children: O(Sn.Provider, { value: o, children: O(In.Provider, { value: e.theme, children: O(Nn.Provider, { value: u, children: O(Rn.Provider, { value: E, children: O(Ir, { appId: e.appId }) }) }) }) }) });
3983
+ if (n) return c;
3918
3984
  {
3919
3985
  const d = "t-conversation-list" + (e.className ? ` ${e.className}` : "");
3920
- return O("div", { className: d, style: e.style, ref: i, children: l });
3986
+ return O("div", { className: d, style: e.style, ref: i, children: c });
3921
3987
  }
3922
- }), ar = new Promise((e) => {
3988
+ });
3989
+ var Be, qe, Oa;
3990
+ class mr {
3991
+ constructor(t) {
3992
+ me(this, qe);
3993
+ me(this, Be);
3994
+ st(this, Be, t);
3995
+ }
3996
+ selectConversation(t) {
3997
+ Y(this, qe, Oa).selectConversation(t);
3998
+ }
3999
+ }
4000
+ Be = new WeakMap(), qe = new WeakSet(), Oa = function() {
4001
+ return Y(this, Be).current.controller;
4002
+ };
4003
+ const Cr = Je(function(e, t) {
4004
+ const n = P(null), a = M(() => new mr(n), []);
4005
+ Ze(t, () => a, [a]);
4006
+ const { theme: s, ...i } = e, r = M(() => ({ ...ht, ...s != null ? s : {} }), [s]), o = `${e.userId}|${e.appId}`;
4007
+ return O(Ln.Provider, { value: a, children: le(Lr, { ...i, key: o, theme: r, ref: n }) });
4008
+ }), pr = new Promise((e) => {
3923
4009
  typeof document != "undefined" && document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", e, { once: !0 }) : e(void 0);
3924
4010
  });
3925
- function Qn(e, t, n, a) {
4011
+ function Ta(e, t, n, a) {
3926
4012
  const s = /* @__PURE__ */ new Map(), i = [], r = [];
3927
- for (const [d, c] of (E = n, Object.entries(E))) {
4013
+ for (const [d, D] of (E = n, Object.entries(E))) {
3928
4014
  const _ = [d, d.toLowerCase(), (o = d, o.replace(/[A-Z]+(?![a-z])|[A-Z]/g, (T, I) => (I ? "-" : "") + T.toLowerCase()))];
3929
4015
  for (const T of _) s.set(T, d);
3930
- ["string", "boolean", "number"].includes(c.type) && i.push(..._), c.required !== !1 && r.push(d);
4016
+ ["string", "boolean", "number"].includes(D.type) && i.push(..._), D.required !== !1 && r.push(d);
3931
4017
  }
3932
4018
  var o, E;
3933
- const l = class l extends HTMLElement {
4019
+ const c = class c extends HTMLElement {
3934
4020
  constructor() {
3935
4021
  super(), this._renderRequested = !1, this._props = {}, this._renderRoot = null, this._ref = { current: null };
3936
- for (const [c, _] of s) {
3937
- if (Object.hasOwnProperty.call(this, c)) {
3938
- const T = this[c];
3939
- this.updateProp(_, T), delete this[c];
4022
+ for (const [D, _] of s) {
4023
+ if (Object.hasOwnProperty.call(this, D)) {
4024
+ const T = this[D];
4025
+ this.updateProp(_, T), delete this[D];
3940
4026
  }
3941
- this.hasAttribute(c) && this.syncAttributeToProp(c);
4027
+ this.hasAttribute(D) && this.syncAttributeToProp(D);
3942
4028
  }
3943
4029
  }
3944
- updateProp(c, _) {
3945
- const { type: T } = n[c];
4030
+ updateProp(D, _) {
4031
+ const { type: T } = n[D];
3946
4032
  if (T === "boolean" && typeof _ == "string" ? _ = _ !== "false" : T === "number" && typeof _ == "string" && (_ = Number(_)), _ == null) {
3947
- const I = c in this._props;
3948
- return delete this._props[c], I;
4033
+ const I = D in this._props;
4034
+ return delete this._props[D], I;
3949
4035
  }
3950
4036
  {
3951
- const I = this._props[c] !== _;
3952
- return this._props[c] = _, I;
4037
+ const I = this._props[D] !== _;
4038
+ return this._props[D] = _, I;
3953
4039
  }
3954
4040
  }
3955
- syncAttributeToProp(c) {
3956
- const _ = s.get(c);
3957
- k(_, `Attribute "${c}" should have matching prop`);
3958
- const T = this.getAttribute(c);
4041
+ syncAttributeToProp(D) {
4042
+ const _ = s.get(D);
4043
+ k(_, `Attribute "${D}" should have matching prop`);
4044
+ const T = this.getAttribute(D);
3959
4045
  return this.updateProp(_, T);
3960
4046
  }
3961
4047
  async requestRender() {
3962
4048
  this._renderRequested || (this._renderRequested = !0, this._renderRequested = await !1, this.render());
3963
4049
  }
3964
4050
  render() {
3965
- this._renderRoot || (this._renderRoot = Fa(this));
3966
- const c = r.filter((R) => !(R in this._props));
3967
- if (c.length > 0) return a(c), void this._renderRoot.render(null);
4051
+ this._renderRoot || (this._renderRoot = Xa(this));
4052
+ const D = r.filter((R) => !(R in this._props));
4053
+ if (D.length > 0) return a(D), void this._renderRoot.render(null);
3968
4054
  const _ = Object.assign({}, this._props), T = (R) => {
3969
- for (const [N, L] of Object.entries(R.current)) typeof L == "function" && (this[N] = (...C) => R.current[N](...C));
4055
+ const N = [...Object.getOwnPropertyNames(R.current), ...Object.getOwnPropertyNames(Object.getPrototypeOf(R.current))];
4056
+ for (const L of N) L !== "constructor" && typeof R.current[L] == "function" && (this[L] = (...m) => R.current[L](...m));
3970
4057
  }, I = e;
3971
4058
  this._renderRoot.render(O(I, { ..._, ref: this._ref, __hostElement: this, __internalOnLoaded: () => {
3972
4059
  T(this._ref);
3973
4060
  } }));
3974
4061
  }
3975
4062
  async connectedCallback() {
3976
- await ar;
3977
- for (const c of i) this.hasAttribute(c) && this.syncAttributeToProp(c);
4063
+ await pr;
4064
+ for (const D of i) this.hasAttribute(D) && this.syncAttributeToProp(D);
3978
4065
  this.requestRender();
3979
4066
  }
3980
4067
  disconnectedCallback() {
@@ -3982,51 +4069,30 @@ function Qn(e, t, n, a) {
3982
4069
  this._renderRoot && (this._renderRoot.unmount(), this._renderRoot = null);
3983
4070
  });
3984
4071
  }
3985
- attributeChangedCallback(c, _, T) {
3986
- _ !== T && this.syncAttributeToProp(c) && this.requestRender();
4072
+ attributeChangedCallback(D, _, T) {
4073
+ _ !== T && this.syncAttributeToProp(D) && this.requestRender();
3987
4074
  }
3988
4075
  };
3989
- l.observedAttributes = i;
3990
- let u = l;
3991
- const D = {};
3992
- for (const [d, c] of s) D[d] = { set(_) {
3993
- this.updateProp(c, _) && this.requestRender();
4076
+ c.observedAttributes = i;
4077
+ let u = c;
4078
+ const l = {};
4079
+ for (const [d, D] of s) l[d] = { set(_) {
4080
+ this.updateProp(D, _) && this.requestRender();
3994
4081
  }, get() {
3995
4082
  var _;
3996
- return (_ = this._props[c]) != null ? _ : null;
4083
+ return (_ = this._props[D]) != null ? _ : null;
3997
4084
  } };
3998
- return Object.defineProperties(u.prototype, D), Object.defineProperty(u, "name", { value: t }), u;
4085
+ return Object.defineProperties(u.prototype, l), Object.defineProperty(u, "name", { value: t }), u;
3999
4086
  }
4000
- function ea(e, t) {
4087
+ function da(e, t) {
4001
4088
  const n = JSON.stringify(t).replace(",", ", ");
4002
- q.error(`Could not initialize ${e} because the following required props are missing: ${n}.`);
4089
+ ee.error(`Could not initialize ${e} because the following required props are missing: ${n}.`);
4003
4090
  }
4004
- const sr = function(e) {
4005
- const t = function(n) {
4006
- return $e(function(a, s) {
4007
- var o;
4008
- const i = P(() => {
4009
- var E;
4010
- return { ...n, ...(E = a.theme) != null ? E : {} };
4011
- }, [a.theme]), r = `${(o = a.key) != null ? o : ""}|${a.userId}|${a.appId}`;
4012
- return ie(qi, { ...a, key: r, theme: i, ref: s });
4013
- });
4014
- }(e);
4015
- return Qn(t, "ChatboxHTMLElement", { __internalOnLoaded: { type: "function", required: !1 }, appId: { type: "string" }, userId: { type: "string" }, conversationId: { type: "string" }, theme: { type: "object", required: !1 }, token: { type: "string", required: !1 }, tokenFetcher: { type: "function", required: !1 }, host: { type: "string", required: !1 }, enterSendsMessage: { type: "boolean", required: !1 }, chatHeaderVisible: { type: "boolean", required: !1 }, messageFieldVisible: { type: "boolean", required: !1 }, messageFieldSpellcheck: { type: "boolean", required: !1 }, messageFieldPlaceholder: { type: "string", required: !1 }, onSendMessage: { type: "function", required: !1 }, onDeleteMessage: { type: "function", required: !1 }, beforeBrowserPermissionPrompt: { type: "function", required: !1 }, onMissingBrowserPermission: { type: "function", required: !1 }, themeCustom: { type: "object", required: !1 } }, (n) => ea("<t-chatbox>", n));
4016
- }(At), ir = function(e) {
4017
- const t = function(n) {
4018
- return $e(function(a, s) {
4019
- var o;
4020
- const i = `${(o = a.key) != null ? o : ""}|${a.userId}|${a.appId}`, r = P(() => a.theme ? { ...n, ...a.theme } : n, [a.theme]);
4021
- return ie(nr, { ...a, key: i, theme: r, ref: s });
4022
- });
4023
- }(e);
4024
- return Qn(t, "ConversationListHTMLElement", { __internalOnLoaded: { type: "function", required: !1 }, appId: { type: "string" }, userId: { type: "string" }, selectedConversationId: { type: "string", required: !1 }, theme: { type: "object", required: !1 }, token: { type: "string", required: !1 }, tokenFetcher: { type: "function", required: !1 }, host: { type: "string", required: !1 }, themeCustom: { type: "object", required: !1 } }, (n) => ea("<t-conversation-list>", n));
4025
- }(At), Fr = At;
4026
- customElements.get("t-chatbox") || customElements.define("t-chatbox", sr), customElements.get("t-conversation-list") || customElements.define("t-conversation-list", ir);
4091
+ const hr = Ta(Or, "ChatboxElement", { __internalOnLoaded: { type: "function", required: !1 }, appId: { type: "string" }, userId: { type: "string" }, conversationId: { type: "string" }, theme: { type: "object", required: !1 }, token: { type: "string", required: !1 }, tokenFetcher: { type: "function", required: !1 }, host: { type: "string", required: !1 }, enterSendsMessage: { type: "boolean", required: !1 }, chatHeaderVisible: { type: "boolean", required: !1 }, messageFieldVisible: { type: "boolean", required: !1 }, messageFieldSpellcheck: { type: "boolean", required: !1 }, messageFieldPlaceholder: { type: "string", required: !1 }, onSendMessage: { type: "function", required: !1 }, onDeleteMessage: { type: "function", required: !1 }, onMessageAction: { type: "function", required: !1 }, beforeBrowserPermissionPrompt: { type: "function", required: !1 }, onMissingBrowserPermission: { type: "function", required: !1 }, themeCustom: { type: "object", required: !1 } }, (e) => da("<t-chatbox>", e)), gr = Ta(Cr, "ConversationListElement", { __internalOnLoaded: { type: "function", required: !1 }, appId: { type: "string" }, userId: { type: "string" }, selectedConversationId: { type: "string", required: !1 }, theme: { type: "object", required: !1 }, token: { type: "string", required: !1 }, tokenFetcher: { type: "function", required: !1 }, host: { type: "string", required: !1 }, themeCustom: { type: "object", required: !1 } }, (e) => da("<t-conversation-list>", e)), Jr = ht;
4092
+ customElements.get("t-chatbox") || customElements.define("t-chatbox", hr), customElements.get("t-conversation-list") || customElements.define("t-conversation-list", gr);
4027
4093
  export {
4028
- sr as ChatboxHTMLElement,
4029
- ir as ConversationListHTMLElement,
4030
- Fr as defaultTheme
4094
+ hr as ChatboxElement,
4095
+ gr as ConversationListElement,
4096
+ Jr as defaultTheme
4031
4097
  };
4032
4098
  //# sourceMappingURL=default.js.map