stream-chat-react 14.4.1 → 14.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/dist/cjs/{ReactPlayerWrapper.16cd6fed.js → ReactPlayerWrapper.963d6170.js} +2 -2
  2. package/dist/cjs/{ReactPlayerWrapper.16cd6fed.js.map → ReactPlayerWrapper.963d6170.js.map} +1 -1
  3. package/dist/cjs/emojis.js +1 -1
  4. package/dist/cjs/index.js +489 -119
  5. package/dist/cjs/index.js.map +1 -1
  6. package/dist/cjs/{useNotificationApi.9ffe5761.js → useNotificationApi.e9312774.js} +38 -5
  7. package/dist/cjs/useNotificationApi.e9312774.js.map +1 -0
  8. package/dist/css/index.css +186 -0
  9. package/dist/css/index.css.map +1 -1
  10. package/dist/es/emojis.mjs +1 -1
  11. package/dist/es/index.mjs +476 -121
  12. package/dist/es/index.mjs.map +1 -1
  13. package/dist/es/{useNotificationApi.88c33caa.mjs → useNotificationApi.4be515a0.mjs} +24 -9
  14. package/dist/es/useNotificationApi.4be515a0.mjs.map +1 -0
  15. package/dist/types/components/Avatar/Avatar.d.ts +4 -2
  16. package/dist/types/components/Avatar/Avatar.d.ts.map +1 -1
  17. package/dist/types/components/Channel/hooks/useMentionsHandlers.d.ts +8 -3
  18. package/dist/types/components/Channel/hooks/useMentionsHandlers.d.ts.map +1 -1
  19. package/dist/types/components/Icons/icons.d.ts +12 -0
  20. package/dist/types/components/Icons/icons.d.ts.map +1 -1
  21. package/dist/types/components/ListItemLayout/ListItemLayout.d.ts +34 -0
  22. package/dist/types/components/ListItemLayout/ListItemLayout.d.ts.map +1 -0
  23. package/dist/types/components/ListItemLayout/index.d.ts +2 -0
  24. package/dist/types/components/ListItemLayout/index.d.ts.map +1 -0
  25. package/dist/types/components/MediaRecorder/classes/MediaRecorderController.d.ts.map +1 -1
  26. package/dist/types/components/Message/MessageText.d.ts.map +1 -1
  27. package/dist/types/components/Message/hooks/useMentionsHandler.d.ts +6 -1
  28. package/dist/types/components/Message/hooks/useMentionsHandler.d.ts.map +1 -1
  29. package/dist/types/components/Message/renderText/componentRenderers/Mention.d.ts +22 -4
  30. package/dist/types/components/Message/renderText/componentRenderers/Mention.d.ts.map +1 -1
  31. package/dist/types/components/Message/renderText/rehypePlugins/mentionsMarkdownPlugin.d.ts +44 -3
  32. package/dist/types/components/Message/renderText/rehypePlugins/mentionsMarkdownPlugin.d.ts.map +1 -1
  33. package/dist/types/components/Message/renderText/renderText.d.ts +25 -3
  34. package/dist/types/components/Message/renderText/renderText.d.ts.map +1 -1
  35. package/dist/types/components/Message/types.d.ts +2 -3
  36. package/dist/types/components/Message/types.d.ts.map +1 -1
  37. package/dist/types/components/MessageComposer/QuotedMessagePreview.d.ts.map +1 -1
  38. package/dist/types/components/MessageComposer/hooks/useMessageComposerController.d.ts.map +1 -1
  39. package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/BroadcastMentionItem.d.ts +5 -0
  40. package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/BroadcastMentionItem.d.ts.map +1 -0
  41. package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/MentionItem.d.ts +17 -0
  42. package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/MentionItem.d.ts.map +1 -0
  43. package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/MentionSuggestionTitle.d.ts +6 -0
  44. package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/MentionSuggestionTitle.d.ts.map +1 -0
  45. package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/RoleItem.d.ts +5 -0
  46. package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/RoleItem.d.ts.map +1 -0
  47. package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/SpecialMentionItem.d.ts +10 -0
  48. package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/SpecialMentionItem.d.ts.map +1 -0
  49. package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/UserGroupItem.d.ts +5 -0
  50. package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/UserGroupItem.d.ts.map +1 -0
  51. package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/UserItem.d.ts +17 -0
  52. package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/UserItem.d.ts.map +1 -0
  53. package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/index.d.ts +8 -0
  54. package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/index.d.ts.map +1 -0
  55. package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/types.d.ts +6 -0
  56. package/dist/types/components/TextareaComposer/SuggestionList/MentionItem/types.d.ts.map +1 -0
  57. package/dist/types/components/TextareaComposer/SuggestionList/SuggestionList.d.ts.map +1 -1
  58. package/dist/types/components/TextareaComposer/SuggestionList/SuggestionListItem.d.ts +2 -2
  59. package/dist/types/components/TextareaComposer/SuggestionList/SuggestionListItem.d.ts.map +1 -1
  60. package/dist/types/components/TextareaComposer/SuggestionList/TokenizedSuggestionParts.d.ts +9 -0
  61. package/dist/types/components/TextareaComposer/SuggestionList/TokenizedSuggestionParts.d.ts.map +1 -0
  62. package/dist/types/components/TextareaComposer/SuggestionList/index.d.ts +2 -1
  63. package/dist/types/components/TextareaComposer/SuggestionList/index.d.ts.map +1 -1
  64. package/dist/types/components/TextareaComposer/TextareaComposer.d.ts.map +1 -1
  65. package/dist/types/components/index.d.ts +1 -0
  66. package/dist/types/components/index.d.ts.map +1 -1
  67. package/dist/types/context/MessageContext.d.ts +3 -3
  68. package/dist/types/context/MessageContext.d.ts.map +1 -1
  69. package/dist/types/i18n/Streami18n.d.ts +6 -1
  70. package/dist/types/i18n/Streami18n.d.ts.map +1 -1
  71. package/package.json +3 -3
  72. package/dist/cjs/useNotificationApi.9ffe5761.js.map +0 -1
  73. package/dist/es/useNotificationApi.88c33caa.mjs.map +0 -1
  74. package/dist/types/components/TextareaComposer/SuggestionList/UserItem.d.ts +0 -25
  75. package/dist/types/components/TextareaComposer/SuggestionList/UserItem.d.ts.map +0 -1
package/dist/cjs/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_useNotificationApi = require("./useNotificationApi.9ffe5761.js");
2
+ const require_useNotificationApi = require("./useNotificationApi.e9312774.js");
3
3
  const require_audioProcessing = require("./audioProcessing.22303d69.js");
4
4
  let react = require("react");
5
5
  react = require_useNotificationApi.__toESM(react);
@@ -801,7 +801,7 @@ var getInitials = (name) => {
801
801
  /**
802
802
  * A round avatar image with fallback to username's first letter
803
803
  */
804
- var Avatar = ({ className, imageUrl, isOnline, size, userName, ...rest }) => {
804
+ var Avatar = ({ className, FallbackIcon = require_useNotificationApi.IconUser, imageUrl, isOnline, size, userName, ...rest }) => {
805
805
  const [error, setError] = (0, react.useState)(false);
806
806
  (0, react.useEffect)(() => () => setError(false), [imageUrl]);
807
807
  const nameString = userName?.toString() || "";
@@ -836,7 +836,7 @@ var Avatar = ({ className, imageUrl, isOnline, size, userName, ...rest }) => {
836
836
  className: "str-chat__avatar-initials",
837
837
  "data-testid": "avatar-fallback",
838
838
  children: sizeAwareInitials
839
- }), !sizeAwareInitials.length && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_useNotificationApi.IconUser, {})] })]
839
+ }), !sizeAwareInitials.length && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FallbackIcon, {})] })]
840
840
  });
841
841
  };
842
842
  //#endregion
@@ -1724,6 +1724,7 @@ var de_default = {
1724
1724
  "aria/Load More Channels": "Mehr Kanäle laden",
1725
1725
  "aria/Mark Message Unread": "Als ungelesen markieren",
1726
1726
  "aria/Mark messages as read": "Nachrichten als gelesen markieren",
1727
+ "aria/Mention Suggestions": "Erwähnungsvorschläge",
1727
1728
  "aria/Menu": "Menü",
1728
1729
  "aria/Message Actions": "Nachrichtenaktionen",
1729
1730
  "aria/Message from {{ user }},": "Nachricht von {{ user }},",
@@ -1770,14 +1771,13 @@ var de_default = {
1770
1771
  "aria/Unblock User": "Benutzer entsperren",
1771
1772
  "aria/Unmute User": "Stummschaltung aufheben",
1772
1773
  "aria/Unpin Message": "Anheftung aufheben",
1773
- "aria/User Suggestions": "Benutzervorschläge",
1774
1774
  "Ask a question": "Eine Frage stellen",
1775
1775
  Attach: "Anhängen",
1776
1776
  "Attach files": "Dateien anhängen",
1777
1777
  Attachment: "Anhang",
1778
1778
  "Attachment upload blocked due to {{reason}}": "Anhang-Upload blockiert wegen {{reason}}",
1779
1779
  "Attachment upload failed due to {{reason}}": "Anhang-Upload fehlgeschlagen wegen {{reason}}",
1780
- Back: "Back",
1780
+ Back: "Zurück",
1781
1781
  "ban-command-args": "[@Benutzername] [Text]",
1782
1782
  "ban-command-description": "Einen Benutzer verbannen",
1783
1783
  "Block User": "Benutzer blockieren",
@@ -1881,7 +1881,7 @@ var de_default = {
1881
1881
  Image: "Bild",
1882
1882
  imageCount_one: "Bild",
1883
1883
  imageCount_other: "{{ count }} bilder",
1884
- "Instant commands": "Instant commands",
1884
+ "Instant commands": "Sofortbefehle",
1885
1885
  "language/af": "Afrikaans",
1886
1886
  "language/am": "Amharisch",
1887
1887
  "language/ar": "Arabisch",
@@ -1945,7 +1945,7 @@ var de_default = {
1945
1945
  "Limit votes per person": "Stimmen pro Person begrenzen",
1946
1946
  Link: "Link",
1947
1947
  linkCount_one: "Link",
1948
- linkCount_other: "{{ count }} links",
1948
+ linkCount_other: "{{ count }} Links",
1949
1949
  live: "live",
1950
1950
  "Live for {{duration}}": "Live für {{duration}}",
1951
1951
  "Live location": "Live-Standort",
@@ -1958,6 +1958,10 @@ var de_default = {
1958
1958
  "Mark as unread": "Als ungelesen markieren",
1959
1959
  "Maximum number of votes (from 2 to 10)": "Maximale Anzahl der Stimmen (von 2 bis 10)",
1960
1960
  "Maximum votes per person": "Maximale Stimmen pro Person",
1961
+ "mention/Channel": "Kanal",
1962
+ "mention/Channel Description": "Alle in diesem Kanal benachrichtigen",
1963
+ "mention/Here": "Hier",
1964
+ "mention/Here Description": "Alle Online-Mitglieder in diesem Kanal benachrichtigen",
1961
1965
  Menu: "Menü",
1962
1966
  "Message deleted": "Nachricht gelöscht",
1963
1967
  "Message failed to send": "Nachricht konnte nicht gesendet werden",
@@ -1983,6 +1987,7 @@ var de_default = {
1983
1987
  "No results found": "Keine Ergebnisse gefunden",
1984
1988
  "Nobody will be able to vote in this poll anymore.": "Niemand kann mehr in dieser Umfrage abstimmen.",
1985
1989
  "Nothing yet...": "Noch nichts...",
1990
+ "Notify all {{ role }} members": "Alle Mitglieder mit Rolle {{ role }} benachrichtigen",
1986
1991
  Offline: "Offline",
1987
1992
  Ok: "OK",
1988
1993
  Online: "Online",
@@ -2039,7 +2044,7 @@ var de_default = {
2039
2044
  "Save for later": "Für später speichern",
2040
2045
  "Saved for later": "Für später gespeichert",
2041
2046
  Search: "Suche",
2042
- "Search GIFs": "Search GIFs",
2047
+ "Search GIFs": "GIFs suchen",
2043
2048
  "search-results-header-filter-source-button-label--channels": "Kanäle",
2044
2049
  "search-results-header-filter-source-button-label--messages": "Nachrichten",
2045
2050
  "search-results-header-filter-source-button-label--users": "Benutzer",
@@ -2097,11 +2102,11 @@ var de_default = {
2097
2102
  "timestamp/MessageTimestamp": "{{ timestamp | timestampFormatter(calendar: false; format: HH:mm) }}",
2098
2103
  "timestamp/PollVote": "{{ timestamp | timestampFormatter(relativeCompact: true) }}",
2099
2104
  "timestamp/PollVoteTooltip": "{{ timestamp | timestampFormatter(calendar: true) }}",
2100
- "timestamp/relativeDaysAgo": "{{ count }}d ago",
2105
+ "timestamp/relativeDaysAgo": "vor {{ count }} Tg.",
2101
2106
  "timestamp/relativeToday": "Heute",
2102
- "timestamp/relativeWeeksAgo": "{{ count }}w ago",
2107
+ "timestamp/relativeWeeksAgo": "vor {{ count }} Wo.",
2103
2108
  "timestamp/relativeYesterday": "Gestern",
2104
- "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[Today] [at] HH:mm\", \"nextDay\": \"[Tomorrow] [at] HH:mm\", \"lastDay\": \"[Yesterday] [at] HH:mm\", \"nextWeek\": \"dddd [at] HH:mm\", \"lastWeek\": \"[Last] dddd [at] HH:mm\", \"sameElse\": \"ddd, D MMM [at] HH:mm\" }) }}",
2109
+ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[Heute] [um] HH:mm\", \"nextDay\": \"[Morgen] [um] HH:mm\", \"lastDay\": \"[Gestern] [um] HH:mm\", \"nextWeek\": \"dddd [um] HH:mm\", \"lastWeek\": \"[letzten] dddd [um] HH:mm\", \"sameElse\": \"ddd, D MMM [um] HH:mm\" }) }}",
2105
2110
  "timestamp/SystemMessage": "{{ timestamp | timestampFormatter(format: dddd L) }}",
2106
2111
  "To start recording, allow the camera access in your browser": "Um mit der Aufnahme zu beginnen, erlauben Sie den Zugriff auf die Kamera in Ihrem Browser",
2107
2112
  "To start recording, allow the microphone access in your browser": "Um mit der Aufnahme zu beginnen, erlauben Sie den Zugriff auf das Mikrofon in Ihrem Browser",
@@ -2135,7 +2140,7 @@ var de_default = {
2135
2140
  "User uploaded content": "Vom Benutzer hochgeladener Inhalt",
2136
2141
  Video: "Video",
2137
2142
  videoCount_one: "Video",
2138
- videoCount_other: "{{ count }} videos",
2143
+ videoCount_other: "{{ count }} Videos",
2139
2144
  View: "Ansehen",
2140
2145
  "View {{count}} comments_one": "{{count}} Kommentar anzeigen",
2141
2146
  "View {{count}} comments_other": "{{count}} Kommentare anzeigen",
@@ -2252,6 +2257,7 @@ var en_default = {
2252
2257
  "aria/Load More Channels": "Load More Channels",
2253
2258
  "aria/Mark Message Unread": "Mark Message Unread",
2254
2259
  "aria/Mark messages as read": "Mark messages as read",
2260
+ "aria/Mention Suggestions": "Mention Suggestions",
2255
2261
  "aria/Menu": "Menu",
2256
2262
  "aria/Message Actions": "Message Actions",
2257
2263
  "aria/Message from {{ user }},": "Message from {{ user }},",
@@ -2298,7 +2304,6 @@ var en_default = {
2298
2304
  "aria/Unblock User": "Unblock User",
2299
2305
  "aria/Unmute User": "Unmute User",
2300
2306
  "aria/Unpin Message": "Unpin Message",
2301
- "aria/User Suggestions": "User Suggestions",
2302
2307
  "Ask a question": "Ask a Question",
2303
2308
  Attach: "Attach",
2304
2309
  "Attach files": "Attach files",
@@ -2486,6 +2491,10 @@ var en_default = {
2486
2491
  "Mark as unread": "Mark as unread",
2487
2492
  "Maximum number of votes (from 2 to 10)": "Maximum number of votes (from 2 to 10)",
2488
2493
  "Maximum votes per person": "Maximum votes per person",
2494
+ "mention/Channel": "Channel",
2495
+ "mention/Channel Description": "Notify everyone in this channel",
2496
+ "mention/Here": "Here",
2497
+ "mention/Here Description": "Notify every online member in this channel",
2489
2498
  Menu: "Menu",
2490
2499
  "Message deleted": "Message deleted",
2491
2500
  "Message failed to send": "Message failed to send",
@@ -2511,6 +2520,7 @@ var en_default = {
2511
2520
  "No results found": "No results found",
2512
2521
  "Nobody will be able to vote in this poll anymore.": "Nobody will be able to vote in this poll anymore.",
2513
2522
  "Nothing yet...": "Nothing yet...",
2523
+ "Notify all {{ role }} members": "Notify all {{ role }} members",
2514
2524
  Offline: "Offline",
2515
2525
  Ok: "Ok",
2516
2526
  Online: "Online",
@@ -2788,6 +2798,7 @@ var es_default = {
2788
2798
  "aria/Load More Channels": "Cargar más canales",
2789
2799
  "aria/Mark Message Unread": "Marcar como no leído",
2790
2800
  "aria/Mark messages as read": "Marcar mensajes como leídos",
2801
+ "aria/Mention Suggestions": "Sugerencias de menciones",
2791
2802
  "aria/Menu": "Menú",
2792
2803
  "aria/Message Actions": "Acciones del mensaje",
2793
2804
  "aria/Message from {{ user }},": "Mensaje de {{ user }},",
@@ -2834,7 +2845,6 @@ var es_default = {
2834
2845
  "aria/Unblock User": "Desbloquear usuario",
2835
2846
  "aria/Unmute User": "Activar sonido",
2836
2847
  "aria/Unpin Message": "Desfijar mensaje",
2837
- "aria/User Suggestions": "Sugerencias de usuarios",
2838
2848
  "Ask a question": "Hacer una pregunta",
2839
2849
  Attach: "Adjuntar",
2840
2850
  "Attach files": "Adjuntar archivos",
@@ -3025,6 +3035,10 @@ var es_default = {
3025
3035
  "Mark as unread": "Marcar como no leído",
3026
3036
  "Maximum number of votes (from 2 to 10)": "Número máximo de votos (de 2 a 10)",
3027
3037
  "Maximum votes per person": "Máximo de votos por persona",
3038
+ "mention/Channel": "Canal",
3039
+ "mention/Channel Description": "Notificar a todos en este canal",
3040
+ "mention/Here": "Aqui",
3041
+ "mention/Here Description": "Notificar a todos los miembros en línea de este canal",
3028
3042
  Menu: "Menú",
3029
3043
  "Message deleted": "Mensaje eliminado",
3030
3044
  "Message failed to send": "No se pudo enviar el mensaje",
@@ -3050,6 +3064,7 @@ var es_default = {
3050
3064
  "No results found": "No se han encontrado resultados",
3051
3065
  "Nobody will be able to vote in this poll anymore.": "Nadie podrá votar en esta encuesta.",
3052
3066
  "Nothing yet...": "Nada aún...",
3067
+ "Notify all {{ role }} members": "Notificar a todos los miembros con rol {{ role }}",
3053
3068
  Offline: "Desconectado",
3054
3069
  Ok: "Aceptar",
3055
3070
  Online: "En línea",
@@ -3168,11 +3183,11 @@ var es_default = {
3168
3183
  "timestamp/MessageTimestamp": "{{ timestamp | timestampFormatter(calendar: false; format: HH:mm) }}",
3169
3184
  "timestamp/PollVote": "{{ timestamp | timestampFormatter(relativeCompact: true) }}",
3170
3185
  "timestamp/PollVoteTooltip": "{{ timestamp | timestampFormatter(calendar: true) }}",
3171
- "timestamp/relativeDaysAgo": "{{ count }}d ago",
3186
+ "timestamp/relativeDaysAgo": "hace {{ count }} d",
3172
3187
  "timestamp/relativeToday": "Hoy",
3173
- "timestamp/relativeWeeksAgo": "{{ count }}w ago",
3188
+ "timestamp/relativeWeeksAgo": "hace {{ count }} sem",
3174
3189
  "timestamp/relativeYesterday": "Ayer",
3175
- "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[Today] [at] HH:mm\", \"nextDay\": \"[Tomorrow] [at] HH:mm\", \"lastDay\": \"[Yesterday] [at] HH:mm\", \"nextWeek\": \"dddd [at] HH:mm\", \"lastWeek\": \"[Last] dddd [at] HH:mm\", \"sameElse\": \"ddd, D MMM [at] HH:mm\" }) }}",
3190
+ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[Hoy] [a las] HH:mm\", \"nextDay\": \"[Mañana] [a las] HH:mm\", \"lastDay\": \"[Ayer] [a las] HH:mm\", \"nextWeek\": \"dddd [a las] HH:mm\", \"lastWeek\": \"[Último] dddd [a las] HH:mm\", \"sameElse\": \"ddd, D MMM [a las] HH:mm\" }) }}",
3176
3191
  "timestamp/SystemMessage": "{{ timestamp | timestampFormatter(format: dddd L) }}",
3177
3192
  "To start recording, allow the camera access in your browser": "Para comenzar a grabar, permita el acceso a la cámara en su navegador",
3178
3193
  "To start recording, allow the microphone access in your browser": "Para comenzar a grabar, permita el acceso al micrófono en su navegador",
@@ -3335,6 +3350,7 @@ var fr_default = {
3335
3350
  "aria/Load More Channels": "Charger plus de canaux",
3336
3351
  "aria/Mark Message Unread": "Marquer comme non lu",
3337
3352
  "aria/Mark messages as read": "Marquer les messages comme lus",
3353
+ "aria/Mention Suggestions": "Suggestions de mentions",
3338
3354
  "aria/Menu": "Menu",
3339
3355
  "aria/Message Actions": "Actions du message",
3340
3356
  "aria/Message from {{ user }},": "Message de {{ user }},",
@@ -3381,7 +3397,6 @@ var fr_default = {
3381
3397
  "aria/Unblock User": "Débloquer l'utilisateur",
3382
3398
  "aria/Unmute User": "Désactiver muet",
3383
3399
  "aria/Unpin Message": "Détacher le message",
3384
- "aria/User Suggestions": "Suggestions d'utilisateurs",
3385
3400
  "Ask a question": "Poser une question",
3386
3401
  Attach: "Joindre",
3387
3402
  "Attach files": "Joindre des fichiers",
@@ -3572,6 +3587,10 @@ var fr_default = {
3572
3587
  "Mark as unread": "Marquer comme non lu",
3573
3588
  "Maximum number of votes (from 2 to 10)": "Nombre maximum de votes (de 2 à 10)",
3574
3589
  "Maximum votes per person": "Nombre maximal de votes par personne",
3590
+ "mention/Channel": "Canal",
3591
+ "mention/Channel Description": "Notifier tout le monde dans ce canal",
3592
+ "mention/Here": "Ici",
3593
+ "mention/Here Description": "Notifier tous les membres en ligne dans ce canal",
3575
3594
  Menu: "Menu",
3576
3595
  "Message deleted": "Message supprimé",
3577
3596
  "Message failed to send": "Échec de l'envoi du message",
@@ -3597,6 +3616,7 @@ var fr_default = {
3597
3616
  "No results found": "Aucun résultat trouvé",
3598
3617
  "Nobody will be able to vote in this poll anymore.": "Personne ne pourra plus voter dans ce sondage.",
3599
3618
  "Nothing yet...": "Rien pour l'instant...",
3619
+ "Notify all {{ role }} members": "Notifier tous les membres ayant le rôle {{ role }}",
3600
3620
  Offline: "Hors ligne",
3601
3621
  Ok: "D'accord",
3602
3622
  Online: "En ligne",
@@ -3715,11 +3735,11 @@ var fr_default = {
3715
3735
  "timestamp/MessageTimestamp": "{{ timestamp | timestampFormatter(calendar: false; format: HH:mm) }}",
3716
3736
  "timestamp/PollVote": "{{ timestamp | timestampFormatter(relativeCompact: true) }}",
3717
3737
  "timestamp/PollVoteTooltip": "{{ timestamp | timestampFormatter(calendar: true) }}",
3718
- "timestamp/relativeDaysAgo": "{{ count }}d ago",
3738
+ "timestamp/relativeDaysAgo": "il y a {{ count }} j",
3719
3739
  "timestamp/relativeToday": "Aujourd'hui",
3720
- "timestamp/relativeWeeksAgo": "{{ count }}w ago",
3740
+ "timestamp/relativeWeeksAgo": "il y a {{ count }} sem",
3721
3741
  "timestamp/relativeYesterday": "Hier",
3722
- "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[Today] [at] HH:mm\", \"nextDay\": \"[Tomorrow] [at] HH:mm\", \"lastDay\": \"[Yesterday] [at] HH:mm\", \"nextWeek\": \"dddd [at] HH:mm\", \"lastWeek\": \"[Last] dddd [at] HH:mm\", \"sameElse\": \"ddd, D MMM [at] HH:mm\" }) }}",
3742
+ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[Aujourd'hui] [à] HH:mm\", \"nextDay\": \"[Demain] [à] HH:mm\", \"lastDay\": \"[Hier] [à] HH:mm\", \"nextWeek\": \"dddd [à] HH:mm\", \"lastWeek\": \"dddd [dernier à] HH:mm\", \"sameElse\": \"ddd, D MMM [à] HH:mm\" }) }}",
3723
3743
  "timestamp/SystemMessage": "{{ timestamp | timestampFormatter(format: dddd L) }}",
3724
3744
  "To start recording, allow the camera access in your browser": "Pour commencer l'enregistrement, autorisez l'accès à la caméra dans votre navigateur",
3725
3745
  "To start recording, allow the microphone access in your browser": "Pour commencer l'enregistrement, autorisez l'accès au microphone dans votre navigateur",
@@ -3874,6 +3894,7 @@ var hi_default = {
3874
3894
  "aria/Load More Channels": "और चैनल लोड करें",
3875
3895
  "aria/Mark Message Unread": "अपठित चिह्नित करें",
3876
3896
  "aria/Mark messages as read": "संदेशों को पढ़ा हुआ चिह्नित करें",
3897
+ "aria/Mention Suggestions": "उल्लेख सुझाव",
3877
3898
  "aria/Menu": "मेन्यू",
3878
3899
  "aria/Message Actions": "संदेश कार्रवाइयाँ",
3879
3900
  "aria/Message from {{ user }},": "{{ user }} का संदेश,",
@@ -3920,7 +3941,6 @@ var hi_default = {
3920
3941
  "aria/Unblock User": "उपयोगकर्ता अनब्लॉक करें",
3921
3942
  "aria/Unmute User": "उपयोगकर्ता अनम्यूट करें",
3922
3943
  "aria/Unpin Message": "संदेश अनपिन करें",
3923
- "aria/User Suggestions": "उपयोगकर्ता सुझाव",
3924
3944
  "Ask a question": "एक प्रश्न पूछें",
3925
3945
  Attach: "संलग्न करें",
3926
3946
  "Attach files": "फाइल्स अटैच करे",
@@ -4109,6 +4129,10 @@ var hi_default = {
4109
4129
  "Mark as unread": "अपठित चिह्नित करें",
4110
4130
  "Maximum number of votes (from 2 to 10)": "अधिकतम वोटों की संख्या (2 से 10)",
4111
4131
  "Maximum votes per person": "प्रति व्यक्ति अधिकतम वोट",
4132
+ "mention/Channel": "चैनल",
4133
+ "mention/Channel Description": "इस चैनल में सभी को सूचित करें",
4134
+ "mention/Here": "यहां",
4135
+ "mention/Here Description": "इस चैनल के सभी ऑनलाइन सदस्यों को सूचित करें",
4112
4136
  Menu: "मेन्यू",
4113
4137
  "Message deleted": "मैसेज हटा दिया गया",
4114
4138
  "Message failed to send": "संदेश भेजने में विफल",
@@ -4134,6 +4158,7 @@ var hi_default = {
4134
4158
  "No results found": "कोई परिणाम नहीं मिला",
4135
4159
  "Nobody will be able to vote in this poll anymore.": "अब कोई भी इस मतदान में मतदान नहीं कर सकेगा।",
4136
4160
  "Nothing yet...": "कोई मैसेज नहीं है",
4161
+ "Notify all {{ role }} members": "{{ role }} भूमिका वाले सभी सदस्यों को सूचित करें",
4137
4162
  Offline: "ऑफलाइन",
4138
4163
  Ok: "ठीक है",
4139
4164
  Online: "ऑनलाइन",
@@ -4248,11 +4273,11 @@ var hi_default = {
4248
4273
  "timestamp/MessageTimestamp": "{{ timestamp | timestampFormatter(calendar: false; format: HH:mm) }}",
4249
4274
  "timestamp/PollVote": "{{ timestamp | timestampFormatter(relativeCompact: true) }}",
4250
4275
  "timestamp/PollVoteTooltip": "{{ timestamp | timestampFormatter(calendar: true) }}",
4251
- "timestamp/relativeDaysAgo": "{{ count }}d ago",
4276
+ "timestamp/relativeDaysAgo": "{{ count }} दिन पहले",
4252
4277
  "timestamp/relativeToday": "आज",
4253
- "timestamp/relativeWeeksAgo": "{{ count }}w ago",
4278
+ "timestamp/relativeWeeksAgo": "{{ count }} सप्ताह पहले",
4254
4279
  "timestamp/relativeYesterday": "बीता कल",
4255
- "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[Today] [at] HH:mm\", \"nextDay\": \"[Tomorrow] [at] HH:mm\", \"lastDay\": \"[Yesterday] [at] HH:mm\", \"nextWeek\": \"dddd [at] HH:mm\", \"lastWeek\": \"[Last] dddd [at] HH:mm\", \"sameElse\": \"ddd, D MMM [at] HH:mm\" }) }}",
4280
+ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[आज] HH:mm\", \"nextDay\": \"[कल] HH:mm\", \"lastDay\": \"[बीता कल] HH:mm\", \"nextWeek\": \"dddd HH:mm\", \"lastWeek\": \"[पिछले] dddd, HH:mm\", \"sameElse\": \"ddd, D MMM HH:mm\" }) }}",
4256
4281
  "timestamp/SystemMessage": "{{ timestamp | timestampFormatter(format: dddd L) }}",
4257
4282
  "To start recording, allow the camera access in your browser": "रिकॉर्डिंग शुरू करने के लिए, अपने ब्राउज़र में कैमरा तक पहुँच दें",
4258
4283
  "To start recording, allow the microphone access in your browser": "रिकॉर्डिंग शुरू करने के लिए, अपने ब्राउज़र में माइक्रोफ़ोन तक पहुँच दें",
@@ -4411,6 +4436,7 @@ var it_default = {
4411
4436
  "aria/Load More Channels": "Carica altri canali",
4412
4437
  "aria/Mark Message Unread": "Contrassegna come non letto",
4413
4438
  "aria/Mark messages as read": "Segna i messaggi come letti",
4439
+ "aria/Mention Suggestions": "Suggerimenti di menzione",
4414
4440
  "aria/Menu": "Menu",
4415
4441
  "aria/Message Actions": "Azioni del messaggio",
4416
4442
  "aria/Message from {{ user }},": "Messaggio di {{ user }},",
@@ -4457,7 +4483,6 @@ var it_default = {
4457
4483
  "aria/Unblock User": "Sblocca utente",
4458
4484
  "aria/Unmute User": "Riattiva il notifiche",
4459
4485
  "aria/Unpin Message": "Rimuovi messaggio appuntato",
4460
- "aria/User Suggestions": "Suggerimenti utenti",
4461
4486
  "Ask a question": "Fai una domanda",
4462
4487
  Attach: "Allega",
4463
4488
  "Attach files": "Allega file",
@@ -4648,6 +4673,10 @@ var it_default = {
4648
4673
  "Mark as unread": "Contrassegna come non letto",
4649
4674
  "Maximum number of votes (from 2 to 10)": "Numero massimo di voti (da 2 a 10)",
4650
4675
  "Maximum votes per person": "Voti massimi per persona",
4676
+ "mention/Channel": "Canale",
4677
+ "mention/Channel Description": "Notifica tutti in questo canale",
4678
+ "mention/Here": "Qui",
4679
+ "mention/Here Description": "Notifica tutti i membri online in questo canale",
4651
4680
  Menu: "Menù",
4652
4681
  "Message deleted": "Messaggio cancellato",
4653
4682
  "Message failed to send": "Invio del messaggio non riuscito",
@@ -4673,6 +4702,7 @@ var it_default = {
4673
4702
  "No results found": "Nessun risultato trovato",
4674
4703
  "Nobody will be able to vote in this poll anymore.": "Nessuno potrà più votare in questo sondaggio.",
4675
4704
  "Nothing yet...": "Ancora niente...",
4705
+ "Notify all {{ role }} members": "Notifica tutti i membri con ruolo {{ role }}",
4676
4706
  Offline: "Offline",
4677
4707
  Ok: "OK",
4678
4708
  Online: "Online",
@@ -4791,11 +4821,11 @@ var it_default = {
4791
4821
  "timestamp/MessageTimestamp": "{{ timestamp | timestampFormatter(calendar: false; format: HH:mm) }}",
4792
4822
  "timestamp/PollVote": "{{ timestamp | timestampFormatter(relativeCompact: true) }}",
4793
4823
  "timestamp/PollVoteTooltip": "{{ timestamp | timestampFormatter(calendar: true) }}",
4794
- "timestamp/relativeDaysAgo": "{{ count }}d ago",
4824
+ "timestamp/relativeDaysAgo": "{{ count }} g fa",
4795
4825
  "timestamp/relativeToday": "Oggi",
4796
- "timestamp/relativeWeeksAgo": "{{ count }}w ago",
4826
+ "timestamp/relativeWeeksAgo": "{{ count }} sett fa",
4797
4827
  "timestamp/relativeYesterday": "Ieri",
4798
- "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[Today] [at] HH:mm\", \"nextDay\": \"[Tomorrow] [at] HH:mm\", \"lastDay\": \"[Yesterday] [at] HH:mm\", \"nextWeek\": \"dddd [at] HH:mm\", \"lastWeek\": \"[Last] dddd [at] HH:mm\", \"sameElse\": \"ddd, D MMM [at] HH:mm\" }) }}",
4828
+ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[Oggi] [alle] HH:mm\", \"nextDay\": \"[Domani] [alle] HH:mm\", \"lastDay\": \"[Ieri] [alle] HH:mm\", \"nextWeek\": \"dddd [alle] HH:mm\", \"lastWeek\": \"[lo scorso] dddd [alle] HH:mm\", \"sameElse\": \"ddd, D MMM [alle] HH:mm\" }) }}",
4799
4829
  "timestamp/SystemMessage": "{{ timestamp | timestampFormatter(format: dddd L) }}",
4800
4830
  "To start recording, allow the camera access in your browser": "Per iniziare a registrare, consenti l'accesso alla fotocamera nel tuo browser",
4801
4831
  "To start recording, allow the microphone access in your browser": "Per iniziare a registrare, consenti l'accesso al microfono nel tuo browser",
@@ -4949,6 +4979,7 @@ var ja_default = {
4949
4979
  "aria/Load More Channels": "さらにチャンネルを読み込む",
4950
4980
  "aria/Mark Message Unread": "未読としてマーク",
4951
4981
  "aria/Mark messages as read": "メッセージを既読にする",
4982
+ "aria/Mention Suggestions": "メンション候補",
4952
4983
  "aria/Menu": "メニュー",
4953
4984
  "aria/Message Actions": "メッセージ操作",
4954
4985
  "aria/Message from {{ user }},": "{{ user }}さんからのメッセージ,",
@@ -4995,7 +5026,6 @@ var ja_default = {
4995
5026
  "aria/Unblock User": "ユーザーのブロックを解除",
4996
5027
  "aria/Unmute User": "無音を解除する",
4997
5028
  "aria/Unpin Message": "ピンを解除",
4998
- "aria/User Suggestions": "ユーザー候補",
4999
5029
  "Ask a question": "質問する",
5000
5030
  Attach: "添付",
5001
5031
  "Attach files": "ファイルを添付する",
@@ -5180,6 +5210,10 @@ var ja_default = {
5180
5210
  "Mark as unread": "未読としてマーク",
5181
5211
  "Maximum number of votes (from 2 to 10)": "最大投票数(2から10まで)",
5182
5212
  "Maximum votes per person": "1人あたりの最大投票数",
5213
+ "mention/Channel": "チャンネル",
5214
+ "mention/Channel Description": "このチャンネルの全員に通知",
5215
+ "mention/Here": "ここ",
5216
+ "mention/Here Description": "このチャンネルのオンライン中の全メンバーに通知",
5183
5217
  Menu: "メニュー",
5184
5218
  "Message deleted": "メッセージが削除されました",
5185
5219
  "Message failed to send": "メッセージの送信に失敗しました",
@@ -5205,6 +5239,7 @@ var ja_default = {
5205
5239
  "No results found": "結果が見つかりません",
5206
5240
  "Nobody will be able to vote in this poll anymore.": "この投票では、誰も投票できなくなります。",
5207
5241
  "Nothing yet...": "まだ何もありません...",
5242
+ "Notify all {{ role }} members": "{{ role }} メンバー全員に通知",
5208
5243
  Offline: "オフライン",
5209
5244
  Ok: "OK",
5210
5245
  Online: "オンライン",
@@ -5318,11 +5353,11 @@ var ja_default = {
5318
5353
  "timestamp/MessageTimestamp": "{{ timestamp | timestampFormatter(calendar: false; format: HH:mm) }}",
5319
5354
  "timestamp/PollVote": "{{ timestamp | timestampFormatter(relativeCompact: true) }}",
5320
5355
  "timestamp/PollVoteTooltip": "{{ timestamp | timestampFormatter(calendar: true) }}",
5321
- "timestamp/relativeDaysAgo": "{{ count }}d ago",
5356
+ "timestamp/relativeDaysAgo": "{{ count }}日前",
5322
5357
  "timestamp/relativeToday": "今日",
5323
- "timestamp/relativeWeeksAgo": "{{ count }}w ago",
5358
+ "timestamp/relativeWeeksAgo": "{{ count }}週間前",
5324
5359
  "timestamp/relativeYesterday": "昨日",
5325
- "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[Today] [at] HH:mm\", \"nextDay\": \"[Tomorrow] [at] HH:mm\", \"lastDay\": \"[Yesterday] [at] HH:mm\", \"nextWeek\": \"dddd [at] HH:mm\", \"lastWeek\": \"[Last] dddd [at] HH:mm\", \"sameElse\": \"ddd, D MMM [at] HH:mm\" }) }}",
5360
+ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[今日] HH:mm\", \"nextDay\": \"[明日] HH:mm\", \"lastDay\": \"[昨日] HH:mm\", \"nextWeek\": \"dddd HH:mm\", \"lastWeek\": \"dddd HH:mm\", \"sameElse\": \"ddd, D MMM HH:mm\" }) }}",
5326
5361
  "timestamp/SystemMessage": "{{ timestamp | timestampFormatter(format: dddd L) }}",
5327
5362
  "To start recording, allow the camera access in your browser": "録音を開始するには、ブラウザーでカメラへのアクセスを許可してください",
5328
5363
  "To start recording, allow the microphone access in your browser": "録音を開始するには、ブラウザーでマイクロフォンへのアクセスを許可してください",
@@ -5469,6 +5504,7 @@ var ko_default = {
5469
5504
  "aria/Load More Channels": "더 많은 채널 불러오기",
5470
5505
  "aria/Mark Message Unread": "읽지 않음으로 표시",
5471
5506
  "aria/Mark messages as read": "메시지를 읽음으로 표시",
5507
+ "aria/Mention Suggestions": "멘션 제안",
5472
5508
  "aria/Menu": "메뉴",
5473
5509
  "aria/Message Actions": "메시지 작업",
5474
5510
  "aria/Message from {{ user }},": "{{ user }}의 메시지,",
@@ -5515,7 +5551,6 @@ var ko_default = {
5515
5551
  "aria/Unblock User": "사용자 차단 해제",
5516
5552
  "aria/Unmute User": "음소거 해제",
5517
5553
  "aria/Unpin Message": "핀 해제",
5518
- "aria/User Suggestions": "사용자 제안",
5519
5554
  "Ask a question": "질문하기",
5520
5555
  Attach: "첨부",
5521
5556
  "Attach files": "파일 첨부",
@@ -5700,6 +5735,10 @@ var ko_default = {
5700
5735
  "Mark as unread": "읽지 않음으로 표시",
5701
5736
  "Maximum number of votes (from 2 to 10)": "최대 투표 수 (2에서 10까지)",
5702
5737
  "Maximum votes per person": "1인당 최대 투표 수",
5738
+ "mention/Channel": "채널",
5739
+ "mention/Channel Description": "이 채널의 모두에게 알림",
5740
+ "mention/Here": "여기",
5741
+ "mention/Here Description": "이 채널의 모든 온라인 멤버에게 알림",
5703
5742
  Menu: "메뉴",
5704
5743
  "Message deleted": "메시지가 삭제되었습니다.",
5705
5744
  "Message failed to send": "메시지 전송 실패",
@@ -5725,6 +5764,7 @@ var ko_default = {
5725
5764
  "No results found": "검색 결과가 없습니다",
5726
5765
  "Nobody will be able to vote in this poll anymore.": "이 투표에 더 이상 아무도 투표할 수 없습니다.",
5727
5766
  "Nothing yet...": "아직 아무것도...",
5767
+ "Notify all {{ role }} members": "{{ role }} 역할의 모든 멤버에게 알림",
5728
5768
  Offline: "오프라인",
5729
5769
  Ok: "확인",
5730
5770
  Online: "온라인",
@@ -5838,11 +5878,11 @@ var ko_default = {
5838
5878
  "timestamp/MessageTimestamp": "{{ timestamp | timestampFormatter(calendar: false; format: HH:mm) }}",
5839
5879
  "timestamp/PollVote": "{{ timestamp | timestampFormatter(relativeCompact: true) }}",
5840
5880
  "timestamp/PollVoteTooltip": "{{ timestamp | timestampFormatter(calendar: true) }}",
5841
- "timestamp/relativeDaysAgo": "{{ count }}d ago",
5881
+ "timestamp/relativeDaysAgo": "{{ count }} ",
5842
5882
  "timestamp/relativeToday": "오늘",
5843
- "timestamp/relativeWeeksAgo": "{{ count }}w ago",
5883
+ "timestamp/relativeWeeksAgo": "{{ count }} ",
5844
5884
  "timestamp/relativeYesterday": "어제",
5845
- "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[Today] [at] HH:mm\", \"nextDay\": \"[Tomorrow] [at] HH:mm\", \"lastDay\": \"[Yesterday] [at] HH:mm\", \"nextWeek\": \"dddd [at] HH:mm\", \"lastWeek\": \"[Last] dddd [at] HH:mm\", \"sameElse\": \"ddd, D MMM [at] HH:mm\" }) }}",
5885
+ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[오늘] HH:mm\", \"nextDay\": \"[내일] HH:mm\", \"lastDay\": \"[어제] HH:mm\", \"nextWeek\": \"dddd HH:mm\", \"lastWeek\": \"[지난] dddd HH:mm\", \"sameElse\": \"ddd, D MMM HH:mm\" }) }}",
5846
5886
  "timestamp/SystemMessage": "{{ timestamp | timestampFormatter(format: dddd L) }}",
5847
5887
  "To start recording, allow the camera access in your browser": "브라우저에서 카메라 액세스를 허용하여 녹음을 시작합니다",
5848
5888
  "To start recording, allow the microphone access in your browser": "브라우저에서 마이크로폰 액세스를 허용하여 녹음을 시작합니다",
@@ -5990,6 +6030,7 @@ var nl_default = {
5990
6030
  "aria/Load More Channels": "Meer kanalen laden",
5991
6031
  "aria/Mark Message Unread": "Markeren als ongelezen",
5992
6032
  "aria/Mark messages as read": "Markeer berichten als gelezen",
6033
+ "aria/Mention Suggestions": "Vermeldingssuggesties",
5993
6034
  "aria/Menu": "Menu",
5994
6035
  "aria/Message Actions": "Berichtacties",
5995
6036
  "aria/Message from {{ user }},": "Bericht van {{ user }},",
@@ -6036,7 +6077,6 @@ var nl_default = {
6036
6077
  "aria/Unblock User": "Gebruiker deblokkeren",
6037
6078
  "aria/Unmute User": "Dempen opheffen",
6038
6079
  "aria/Unpin Message": "Losmaken",
6039
- "aria/User Suggestions": "Gebruikerssuggesties",
6040
6080
  "Ask a question": "Stel een vraag",
6041
6081
  Attach: "Bijvoegen",
6042
6082
  "Attach files": "Bijlage toevoegen",
@@ -6224,6 +6264,10 @@ var nl_default = {
6224
6264
  "Mark as unread": "Markeren als ongelezen",
6225
6265
  "Maximum number of votes (from 2 to 10)": "Maximaal aantal stemmen (van 2 tot 10)",
6226
6266
  "Maximum votes per person": "Maximum aantal stemmen per persoon",
6267
+ "mention/Channel": "Kanaal",
6268
+ "mention/Channel Description": "Iedereen in dit kanaal informeren",
6269
+ "mention/Here": "Hier",
6270
+ "mention/Here Description": "Alle online leden in dit kanaal informeren",
6227
6271
  Menu: "Menu",
6228
6272
  "Message deleted": "Bericht verwijderd",
6229
6273
  "Message failed to send": "Bericht kon niet worden verzonden",
@@ -6249,6 +6293,7 @@ var nl_default = {
6249
6293
  "No results found": "Geen resultaten gevonden",
6250
6294
  "Nobody will be able to vote in this poll anymore.": "Niemand kan meer stemmen in deze peiling.",
6251
6295
  "Nothing yet...": "Nog niets ...",
6296
+ "Notify all {{ role }} members": "Alle leden met rol {{ role }} informeren",
6252
6297
  Offline: "Offline",
6253
6298
  Ok: "Oké",
6254
6299
  Online: "Online",
@@ -6365,11 +6410,11 @@ var nl_default = {
6365
6410
  "timestamp/MessageTimestamp": "{{ timestamp | timestampFormatter(calendar: false; format: HH:mm) }}",
6366
6411
  "timestamp/PollVote": "{{ timestamp | timestampFormatter(relativeCompact: true) }}",
6367
6412
  "timestamp/PollVoteTooltip": "{{ timestamp | timestampFormatter(calendar: true) }}",
6368
- "timestamp/relativeDaysAgo": "{{ count }}d ago",
6413
+ "timestamp/relativeDaysAgo": "{{ count }} d geleden",
6369
6414
  "timestamp/relativeToday": "Vandaag",
6370
- "timestamp/relativeWeeksAgo": "{{ count }}w ago",
6415
+ "timestamp/relativeWeeksAgo": "{{ count }} w geleden",
6371
6416
  "timestamp/relativeYesterday": "Gisteren",
6372
- "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[Today] [at] HH:mm\", \"nextDay\": \"[Tomorrow] [at] HH:mm\", \"lastDay\": \"[Yesterday] [at] HH:mm\", \"nextWeek\": \"dddd [at] HH:mm\", \"lastWeek\": \"[Last] dddd [at] HH:mm\", \"sameElse\": \"ddd, D MMM [at] HH:mm\" }) }}",
6417
+ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[Vandaag] [om] HH:mm\", \"nextDay\": \"[Morgen] [om] HH:mm\", \"lastDay\": \"[Gisteren] [om] HH:mm\", \"nextWeek\": \"dddd [om] HH:mm\", \"lastWeek\": \"[afgelopen] dddd [om] HH:mm\", \"sameElse\": \"ddd, D MMM [om] HH:mm\" }) }}",
6373
6418
  "timestamp/SystemMessage": "{{ timestamp | timestampFormatter(format: dddd L) }}",
6374
6419
  "To start recording, allow the camera access in your browser": "Om te beginnen met opnemen, sta toegang tot de camera toe in uw browser",
6375
6420
  "To start recording, allow the microphone access in your browser": "Om te beginnen met opnemen, sta toegang tot de microfoon toe in uw browser",
@@ -6528,6 +6573,7 @@ var pt_default = {
6528
6573
  "aria/Load More Channels": "Carregar mais canais",
6529
6574
  "aria/Mark Message Unread": "Marcar como não lida",
6530
6575
  "aria/Mark messages as read": "Marcar mensagens como lidas",
6576
+ "aria/Mention Suggestions": "Sugestões de menções",
6531
6577
  "aria/Menu": "Menu",
6532
6578
  "aria/Message Actions": "Ações da mensagem",
6533
6579
  "aria/Message from {{ user }},": "Mensagem de {{ user }},",
@@ -6574,7 +6620,6 @@ var pt_default = {
6574
6620
  "aria/Unblock User": "Desbloquear usuário",
6575
6621
  "aria/Unmute User": "Ativar som",
6576
6622
  "aria/Unpin Message": "Desfixar mensagem",
6577
- "aria/User Suggestions": "Sugestões de usuários",
6578
6623
  "Ask a question": "Faça uma pergunta",
6579
6624
  Attach: "Anexar",
6580
6625
  "Attach files": "Anexar arquivos",
@@ -6765,6 +6810,10 @@ var pt_default = {
6765
6810
  "Mark as unread": "Marcar como não lida",
6766
6811
  "Maximum number of votes (from 2 to 10)": "Número máximo de votos (de 2 a 10)",
6767
6812
  "Maximum votes per person": "Máximo de votos por pessoa",
6813
+ "mention/Channel": "Canal",
6814
+ "mention/Channel Description": "Notificar todos neste canal",
6815
+ "mention/Here": "Aqui",
6816
+ "mention/Here Description": "Notificar todos os membros online neste canal",
6768
6817
  Menu: "Menu",
6769
6818
  "Message deleted": "Mensagem apagada",
6770
6819
  "Message failed to send": "Falha ao enviar a mensagem",
@@ -6790,6 +6839,7 @@ var pt_default = {
6790
6839
  "No results found": "Nenhum resultado encontrado",
6791
6840
  "Nobody will be able to vote in this poll anymore.": "Ninguém mais poderá votar nesta pesquisa.",
6792
6841
  "Nothing yet...": "Nada ainda...",
6842
+ "Notify all {{ role }} members": "Notificar todos os membros com a função {{ role }}",
6793
6843
  Offline: "Offline",
6794
6844
  Ok: "OK",
6795
6845
  Online: "Online",
@@ -6908,11 +6958,11 @@ var pt_default = {
6908
6958
  "timestamp/MessageTimestamp": "{{ timestamp | timestampFormatter(calendar: false; format: HH:mm) }}",
6909
6959
  "timestamp/PollVote": "{{ timestamp | timestampFormatter(relativeCompact: true) }}",
6910
6960
  "timestamp/PollVoteTooltip": "{{ timestamp | timestampFormatter(calendar: true) }}",
6911
- "timestamp/relativeDaysAgo": "{{ count }}d ago",
6961
+ "timestamp/relativeDaysAgo": "{{ count }} d",
6912
6962
  "timestamp/relativeToday": "Hoje",
6913
- "timestamp/relativeWeeksAgo": "{{ count }}w ago",
6963
+ "timestamp/relativeWeeksAgo": "{{ count }} sem",
6914
6964
  "timestamp/relativeYesterday": "Ontem",
6915
- "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[Today] [at] HH:mm\", \"nextDay\": \"[Tomorrow] [at] HH:mm\", \"lastDay\": \"[Yesterday] [at] HH:mm\", \"nextWeek\": \"dddd [at] HH:mm\", \"lastWeek\": \"[Last] dddd [at] HH:mm\", \"sameElse\": \"ddd, D MMM [at] HH:mm\" }) }}",
6965
+ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[Hoje] [às] HH:mm\", \"nextDay\": \"[Amanhã] [às] HH:mm\", \"lastDay\": \"[Ontem] [às] HH:mm\", \"nextWeek\": \"dddd [às] HH:mm\", \"lastWeek\": \"dddd [passada às] HH:mm\", \"sameElse\": \"ddd, D MMM [às] HH:mm\" }) }}",
6916
6966
  "timestamp/SystemMessage": "{{ timestamp | timestampFormatter(format: dddd L) }}",
6917
6967
  "To start recording, allow the camera access in your browser": "Para começar a gravar, permita o acesso à câmera no seu navegador",
6918
6968
  "To start recording, allow the microphone access in your browser": "Para começar a gravar, permita o acesso ao microfone no seu navegador",
@@ -7084,6 +7134,7 @@ var ru_default = {
7084
7134
  "aria/Load More Channels": "Загрузить больше каналов",
7085
7135
  "aria/Mark Message Unread": "Отметить как непрочитанное",
7086
7136
  "aria/Mark messages as read": "Отметить сообщения как прочитанные",
7137
+ "aria/Mention Suggestions": "Подсказки упоминаний",
7087
7138
  "aria/Menu": "Меню",
7088
7139
  "aria/Message Actions": "Действия с сообщением",
7089
7140
  "aria/Message from {{ user }},": "Сообщение от {{ user }},",
@@ -7130,7 +7181,6 @@ var ru_default = {
7130
7181
  "aria/Unblock User": "Разблокировать пользователя",
7131
7182
  "aria/Unmute User": "Включить уведомления",
7132
7183
  "aria/Unpin Message": "Открепить сообщение",
7133
- "aria/User Suggestions": "Подсказки пользователей",
7134
7184
  "Ask a question": "Задать вопрос",
7135
7185
  Attach: "Прикрепить",
7136
7186
  "Attach files": "Прикрепить файлы",
@@ -7327,6 +7377,10 @@ var ru_default = {
7327
7377
  "Mark as unread": "Отметить как непрочитанное",
7328
7378
  "Maximum number of votes (from 2 to 10)": "Максимальное количество голосов (от 2 до 10)",
7329
7379
  "Maximum votes per person": "Максимум голосов на человека",
7380
+ "mention/Channel": "Канал",
7381
+ "mention/Channel Description": "Уведомить всех в этом канале",
7382
+ "mention/Here": "Здесь",
7383
+ "mention/Here Description": "Уведомить всех онлайн-участников в этом канале",
7330
7384
  Menu: "Меню",
7331
7385
  "Message deleted": "Сообщение удалено",
7332
7386
  "Message failed to send": "Не удалось отправить сообщение",
@@ -7352,6 +7406,7 @@ var ru_default = {
7352
7406
  "No results found": "Результаты не найдены",
7353
7407
  "Nobody will be able to vote in this poll anymore.": "Никто больше не сможет голосовать в этом опросе.",
7354
7408
  "Nothing yet...": "Пока ничего нет...",
7409
+ "Notify all {{ role }} members": "Уведомить всех участников с ролью {{ role }}",
7355
7410
  Offline: "Не в сети",
7356
7411
  Ok: "Ок",
7357
7412
  Online: "В сети",
@@ -7474,11 +7529,11 @@ var ru_default = {
7474
7529
  "timestamp/MessageTimestamp": "{{ timestamp | timestampFormatter(calendar: false; format: HH:mm) }}",
7475
7530
  "timestamp/PollVote": "{{ timestamp | timestampFormatter(relativeCompact: true) }}",
7476
7531
  "timestamp/PollVoteTooltip": "{{ timestamp | timestampFormatter(calendar: true) }}",
7477
- "timestamp/relativeDaysAgo": "{{ count }}d ago",
7532
+ "timestamp/relativeDaysAgo": "{{ count }} дн. назад",
7478
7533
  "timestamp/relativeToday": "Сегодня",
7479
- "timestamp/relativeWeeksAgo": "{{ count }}w ago",
7534
+ "timestamp/relativeWeeksAgo": "{{ count }} нед. назад",
7480
7535
  "timestamp/relativeYesterday": "Вчера",
7481
- "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[Today] [at] HH:mm\", \"nextDay\": \"[Tomorrow] [at] HH:mm\", \"lastDay\": \"[Yesterday] [at] HH:mm\", \"nextWeek\": \"dddd [at] HH:mm\", \"lastWeek\": \"[Last] dddd [at] HH:mm\", \"sameElse\": \"ddd, D MMM [at] HH:mm\" }) }}",
7536
+ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[Сегодня] [в] HH:mm\", \"nextDay\": \"[Завтра] [в] HH:mm\", \"lastDay\": \"[Вчера] [в] HH:mm\", \"nextWeek\": \"dddd [в] HH:mm\", \"lastWeek\": \"dddd [в] HH:mm\", \"sameElse\": \"ddd, D MMM [в] HH:mm\" }) }}",
7482
7537
  "timestamp/SystemMessage": "{{ timestamp | timestampFormatter(format: dddd L) }}",
7483
7538
  "To start recording, allow the camera access in your browser": "Для начала записи разрешите доступ к камере в вашем браузере",
7484
7539
  "To start recording, allow the microphone access in your browser": "Для начала записи разрешите доступ к микрофону в вашем браузере",
@@ -7637,6 +7692,7 @@ var tr_default = {
7637
7692
  "aria/Load More Channels": "Daha Fazla Kanal Yükle",
7638
7693
  "aria/Mark Message Unread": "Okunmamış olarak işaretle",
7639
7694
  "aria/Mark messages as read": "Mesajları okundu olarak işaretle",
7695
+ "aria/Mention Suggestions": "Bahsetme önerileri",
7640
7696
  "aria/Menu": "Menü",
7641
7697
  "aria/Message Actions": "Mesaj eylemleri",
7642
7698
  "aria/Message from {{ user }},": "{{ user }} adlı kullanıcıdan mesaj,",
@@ -7683,7 +7739,6 @@ var tr_default = {
7683
7739
  "aria/Unblock User": "Kullanıcının engelini kaldır",
7684
7740
  "aria/Unmute User": "Sesini aç",
7685
7741
  "aria/Unpin Message": "Sabitlemeyi kaldır",
7686
- "aria/User Suggestions": "Kullanıcı önerileri",
7687
7742
  "Ask a question": "Bir soru sor",
7688
7743
  Attach: "Ekle",
7689
7744
  "Attach files": "Dosya ekle",
@@ -7815,7 +7870,7 @@ var tr_default = {
7815
7870
  "language/fi": "Fince",
7816
7871
  "language/fr": "Fransızca",
7817
7872
  "language/fr-CA": "Fransızca (Kanada)",
7818
- "language/ha": "Hausa",
7873
+ "language/ha": "Hausaca",
7819
7874
  "language/he": "İbranice",
7820
7875
  "language/hi": "Hintçe",
7821
7876
  "language/hr": "Hırvatça",
@@ -7871,6 +7926,10 @@ var tr_default = {
7871
7926
  "Mark as unread": "Okunmamış olarak işaretle",
7872
7927
  "Maximum number of votes (from 2 to 10)": "Maksimum oy sayısı (2 ile 10 arası)",
7873
7928
  "Maximum votes per person": "Kişi başına maksimum oy",
7929
+ "mention/Channel": "Kanal",
7930
+ "mention/Channel Description": "Bu kanaldaki herkesi bildir",
7931
+ "mention/Here": "Burada",
7932
+ "mention/Here Description": "Bu kanaldaki tüm çevrimiçi üyeleri bildir",
7874
7933
  Menu: "Menü",
7875
7934
  "Message deleted": "Mesaj silindi",
7876
7935
  "Message failed to send": "Mesaj gönderilemedi",
@@ -7896,6 +7955,7 @@ var tr_default = {
7896
7955
  "No results found": "Sonuç bulunamadı",
7897
7956
  "Nobody will be able to vote in this poll anymore.": "Artık bu ankette kimse oy kullanamayacak.",
7898
7957
  "Nothing yet...": "Şimdilik hiçbir şey...",
7958
+ "Notify all {{ role }} members": "{{ role }} rolündeki tüm üyelere bildir",
7899
7959
  Offline: "Çevrimdışı",
7900
7960
  Ok: "Tamam",
7901
7961
  Online: "Çevrimiçi",
@@ -8010,11 +8070,11 @@ var tr_default = {
8010
8070
  "timestamp/MessageTimestamp": "{{ timestamp | timestampFormatter(calendar: false; format: HH:mm) }}",
8011
8071
  "timestamp/PollVote": "{{ timestamp | timestampFormatter(relativeCompact: true) }}",
8012
8072
  "timestamp/PollVoteTooltip": "{{ timestamp | timestampFormatter(calendar: true) }}",
8013
- "timestamp/relativeDaysAgo": "{{ count }}d ago",
8073
+ "timestamp/relativeDaysAgo": "{{ count }} g önce",
8014
8074
  "timestamp/relativeToday": "Bugün",
8015
- "timestamp/relativeWeeksAgo": "{{ count }}w ago",
8075
+ "timestamp/relativeWeeksAgo": "{{ count }} hf önce",
8016
8076
  "timestamp/relativeYesterday": "Dün",
8017
- "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[Today] [at] HH:mm\", \"nextDay\": \"[Tomorrow] [at] HH:mm\", \"lastDay\": \"[Yesterday] [at] HH:mm\", \"nextWeek\": \"dddd [at] HH:mm\", \"lastWeek\": \"[Last] dddd [at] HH:mm\", \"sameElse\": \"ddd, D MMM [at] HH:mm\" }) }}",
8077
+ "timestamp/ReminderNotification": "{{ timestamp | timestampFormatter(calendar: true; calendarFormats: { \"sameDay\": \"[Bugün] [saat] HH:mm\", \"nextDay\": \"[Yarın] [saat] HH:mm\", \"lastDay\": \"[Dün] [saat] HH:mm\", \"nextWeek\": \"dddd [saat] HH:mm\", \"lastWeek\": \"[Geçen] dddd [saat] HH:mm\", \"sameElse\": \"ddd, D MMM [saat] HH:mm\" }) }}",
8018
8078
  "timestamp/SystemMessage": "{{ timestamp | timestampFormatter(format: dddd L) }}",
8019
8079
  "To start recording, allow the camera access in your browser": "Kayıt yapmaya başlamak için tarayıcınızda kameraya erişime izin verin",
8020
8080
  "To start recording, allow the microphone access in your browser": "Kayıt yapmaya başlamak için tarayıcınızda mikrofona erişime izin verin",
@@ -8975,8 +9035,9 @@ var useFlagHandler = (message) => {
8975
9035
  //#region src/components/Message/hooks/useMentionsHandler.ts
8976
9036
  function createEventHandler(fn, message) {
8977
9037
  return (event) => {
8978
- if (typeof fn !== "function" || !message?.mentioned_users?.length) return;
8979
- fn(event, message.mentioned_users);
9038
+ const hasMentions = Boolean(message?.mentioned_users?.length || message?.mentioned_channel || message?.mentioned_here || message?.mentioned_roles?.length || message?.mentioned_groups?.length);
9039
+ if (typeof fn !== "function" || !message || !hasMentions) return;
9040
+ fn(event, message?.mentioned_users ?? [], message);
8980
9041
  };
8981
9042
  }
8982
9043
  var useMentionsHandler = (message, customMentionHandler) => {
@@ -9915,34 +9976,108 @@ var emojiMarkdownPlugin = () => {
9915
9976
  };
9916
9977
  //#endregion
9917
9978
  //#region src/components/Message/renderText/rehypePlugins/mentionsMarkdownPlugin.ts
9918
- var mentionsMarkdownPlugin = (mentioned_users) => () => {
9919
- const mentioned_usernames = mentioned_users.map((user) => user.name || user.id).filter(Boolean).map(escapeRegExp);
9920
- const mentionedUsersRegex = new RegExp(mentioned_usernames.map((username) => `@${username}`).join("|"), "g");
9921
- const replace = (match) => {
9922
- const usernameOrId = match.replace("@", "");
9923
- return (0, unist_builder.u)("element", {
9924
- mentionedUser: mentioned_users.find(({ id, name }) => name === usernameOrId || id === usernameOrId),
9979
+ var MENTION_TRAILING_BOUNDARY = String.raw`(?=$|\s|[!,.?;:'")\]}])`;
9980
+ var isUserMentionEntity = (entity) => entity.mentionType === "user";
9981
+ var getMentionDisplayTexts = (entity) => {
9982
+ if (entity.mentionType === "user") return [entity.name || entity.id].filter(Boolean);
9983
+ if (entity.mentionType === "channel" || entity.mentionType === "here") return [entity.name || entity.id];
9984
+ return Array.from(new Set([entity.name, entity.id].filter(Boolean)));
9985
+ };
9986
+ var getRenderTextMentionEntities = (metadata) => {
9987
+ if (!metadata) return [];
9988
+ const mentions = (metadata.mentioned_users ?? []).map((user) => ({
9989
+ ...user,
9990
+ mentionType: "user"
9991
+ }));
9992
+ if (metadata.mentioned_channel) mentions.push({
9993
+ id: "channel",
9994
+ mentionType: "channel",
9995
+ name: "channel"
9996
+ });
9997
+ if (metadata.mentioned_here) mentions.push({
9998
+ id: "here",
9999
+ mentionType: "here",
10000
+ name: "here"
10001
+ });
10002
+ if (metadata.mentioned_roles?.length) mentions.push(...metadata.mentioned_roles.map((role) => ({
10003
+ id: role,
10004
+ mentionType: "role",
10005
+ name: role
10006
+ })));
10007
+ if (metadata.mentioned_groups?.length) mentions.push(...metadata.mentioned_groups.map((group) => ({
10008
+ id: group.id,
10009
+ mentionType: "user_group",
10010
+ name: group.name
10011
+ })));
10012
+ return mentions;
10013
+ };
10014
+ var toRenderTextMentionEntities = (mentionEntities) => mentionEntities.map((entity) => "mentionType" in entity ? entity : {
10015
+ ...entity,
10016
+ mentionType: "user"
10017
+ });
10018
+ var createMentionLookup = (mentionEntitiesOrUsers) => {
10019
+ const mentionReplacementMap = toRenderTextMentionEntities(mentionEntitiesOrUsers).reduce((replacementMap, entity) => {
10020
+ getMentionDisplayTexts(entity).forEach((mentionDisplayText) => {
10021
+ const prefixedMentionDisplayText = `@${mentionDisplayText}`;
10022
+ if (!replacementMap.has(prefixedMentionDisplayText)) replacementMap.set(prefixedMentionDisplayText, {
10023
+ entity,
10024
+ mentionDisplayText: prefixedMentionDisplayText
10025
+ });
10026
+ });
10027
+ return replacementMap;
10028
+ }, /* @__PURE__ */ new Map());
10029
+ const mentionReplacements = Array.from(mentionReplacementMap.values()).sort((a, b) => b.mentionDisplayText.length - a.mentionDisplayText.length);
10030
+ return {
10031
+ mentionDisplayTextSet: new Set(mentionReplacementMap.keys()),
10032
+ mentionReplacementMap,
10033
+ mentionReplacements,
10034
+ mentionsRegex: mentionReplacements.length ? new RegExp(`(?:${mentionReplacements.map(({ mentionDisplayText }) => escapeRegExp(mentionDisplayText)).join("|")})${MENTION_TRAILING_BOUNDARY}`, "g") : null
10035
+ };
10036
+ };
10037
+ var mentionsMarkdownPluginFromLookup = ({ mentionDisplayTextSet, mentionReplacementMap, mentionReplacements, mentionsRegex }) => () => {
10038
+ const replace = (mentionDisplayText) => {
10039
+ const replacement = mentionReplacementMap.get(mentionDisplayText);
10040
+ if (!replacement) return mentionDisplayText;
10041
+ return (0, unist_builder.u)("element", isUserMentionEntity(replacement.entity) ? {
10042
+ mentionedEntity: replacement.entity,
10043
+ mentionedUser: replacement.entity,
10044
+ properties: {},
10045
+ tagName: "mention"
10046
+ } : {
10047
+ mentionedEntity: replacement.entity,
9925
10048
  properties: {},
9926
10049
  tagName: "mention"
9927
- }, [(0, unist_builder.u)("text", match)]);
10050
+ }, [(0, unist_builder.u)("text", mentionDisplayText)]);
9928
10051
  };
9929
10052
  const transform = (tree) => {
9930
- if (!mentioned_usernames.length) return;
9931
- (0, unist_util_visit.visit)(tree, (node, index, parent) => {
10053
+ if (!mentionReplacements.length || !mentionsRegex) return;
10054
+ if (mentionDisplayTextSet.size) (0, unist_util_visit.visit)(tree, (node, index, parent) => {
9932
10055
  if (typeof index === "undefined") return;
9933
10056
  if (!parent) return;
9934
10057
  const nextChildHref = parent.children.at(index + 1)?.properties?.href;
9935
- if (node.type === "text" && /.?\s?@$|^@$/.test(node.value) && nextChildHref?.startsWith("mailto:")) {
9936
- const newTextValue = node.value.replace(/@$/, "");
9937
- const username = nextChildHref.replace("mailto:", "");
10058
+ const textNode = node;
10059
+ if (textNode.type === "text" && /.?\s?@$|^@$/.test(textNode.value) && nextChildHref?.startsWith("mailto:")) {
10060
+ const newTextValue = textNode.value.replace(/@$/, "");
10061
+ const mentionDisplayText = `@${nextChildHref.replace("mailto:", "")}`;
10062
+ if (!mentionDisplayTextSet.has(mentionDisplayText)) return;
9938
10063
  parent.children[index] = (0, unist_builder.u)("text", newTextValue);
9939
- parent.children[index + 1] = (0, unist_builder.u)("text", `@${username}`);
10064
+ parent.children[index + 1] = (0, unist_builder.u)("text", mentionDisplayText);
9940
10065
  }
9941
10066
  });
9942
- (0, hast_util_find_and_replace.findAndReplace)(tree, [mentionedUsersRegex, replace]);
10067
+ (0, hast_util_find_and_replace.findAndReplace)(tree, [mentionsRegex, replace]);
9943
10068
  };
9944
10069
  return transform;
9945
10070
  };
10071
+ var createMentionPluginAndDisplayTextSet = (mentionEntitiesOrUsers) => {
10072
+ const mentionLookup = createMentionLookup(mentionEntitiesOrUsers);
10073
+ return {
10074
+ mentionDisplayTextSet: mentionLookup.mentionDisplayTextSet,
10075
+ plugin: mentionsMarkdownPluginFromLookup(mentionLookup)
10076
+ };
10077
+ };
10078
+ function mentionsMarkdownPlugin(mentionEntitiesOrUsers) {
10079
+ return createMentionPluginAndDisplayTextSet(mentionEntitiesOrUsers).plugin;
10080
+ }
9946
10081
  //#endregion
9947
10082
  //#region src/components/Message/renderText/remarkPlugins/htmlToTextPlugin.ts
9948
10083
  var visitor = (node) => {
@@ -10125,9 +10260,11 @@ var Emoji = ({ children }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span",
10125
10260
  });
10126
10261
  //#endregion
10127
10262
  //#region src/components/Message/renderText/componentRenderers/Mention.tsx
10128
- var Mention = ({ children, node: { mentionedUser } }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
10263
+ var Mention = ({ children, node: { mentionedEntity } }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
10129
10264
  className: "str-chat__message-mention",
10130
- "data-user-id": mentionedUser.id,
10265
+ "data-mention-id": mentionedEntity.id,
10266
+ "data-mention-type": mentionedEntity.mentionType,
10267
+ "data-user-id": mentionedEntity.mentionType === "user" ? mentionedEntity.id : void 0,
10131
10268
  children
10132
10269
  });
10133
10270
  //#endregion
@@ -10206,10 +10343,12 @@ var markDownRenderers = {
10206
10343
  emoji: Emoji,
10207
10344
  mention: Mention
10208
10345
  };
10209
- var renderText = (text, mentionedUsers, { allowedTagNames = defaultAllowedTagNames, customMarkDownRenderers, getRehypePlugins = getPluginsForward, getRemarkPlugins = getPluginsForward } = {}) => {
10346
+ function renderText(text, mentionedUsers, { allowedTagNames = defaultAllowedTagNames, customMarkDownRenderers, getRehypePlugins = getPluginsForward, getRemarkPlugins = getPluginsForward, messageMentionEntities } = {}) {
10210
10347
  if (!text) return null;
10211
10348
  if (text.trim().length === 1) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: text });
10212
10349
  let newText = text;
10350
+ const renderTextMentionEntities = messageMentionEntities ?? getRenderTextMentionEntities({ mentioned_users: mentionedUsers });
10351
+ const { mentionDisplayTextSet, plugin: mentionsPlugin } = createMentionPluginAndDisplayTextSet(renderTextMentionEntities);
10213
10352
  const markdownLinks = matchMarkdownLinks(newText);
10214
10353
  const codeBlocks = messageCodeBlocks(newText);
10215
10354
  const links = [...(0, linkifyjs.find)(newText, "email"), ...(0, linkifyjs.find)(newText, "url")];
@@ -10223,8 +10362,9 @@ var renderText = (text, mentionedUsers, { allowedTagNames = defaultAllowedTagNam
10223
10362
  return strippedHref.includes(strippedText) || strippedText.includes(strippedHref);
10224
10363
  })).length > 0 || linkIsInBlock) continue;
10225
10364
  try {
10226
- if (type === "email" && mentionedUsers) {
10227
- if (mentionedUsers.find((u) => u.name === value)) {
10365
+ if (type === "email") {
10366
+ const mentionDisplayText = `@${value}`;
10367
+ if (mentionDisplayTextSet.has(mentionDisplayText)) {
10228
10368
  const isMention = newText.charAt(start - 1) === "@";
10229
10369
  newText = newText.slice(0, start) + (isMention ? value : `[${value}](${encodeDecode(href)})`) + newText.slice(end);
10230
10370
  }
@@ -10242,7 +10382,7 @@ var renderText = (text, mentionedUsers, { allowedTagNames = defaultAllowedTagNam
10242
10382
  imageToLink
10243
10383
  ];
10244
10384
  const rehypePlugins = [emojiMarkdownPlugin];
10245
- if (mentionedUsers?.length) rehypePlugins.push(mentionsMarkdownPlugin(mentionedUsers));
10385
+ if (renderTextMentionEntities.length) rehypePlugins.push(mentionsPlugin);
10246
10386
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ErrorBoundary, {
10247
10387
  fallback: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: text }),
10248
10388
  children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_markdown.default, {
@@ -10259,7 +10399,7 @@ var renderText = (text, mentionedUsers, { allowedTagNames = defaultAllowedTagNam
10259
10399
  children: newText
10260
10400
  })
10261
10401
  });
10262
- };
10402
+ }
10263
10403
  //#endregion
10264
10404
  //#region src/components/Message/MessageText.tsx
10265
10405
  var UnMemoizedMessageTextComponent = (props) => {
@@ -10275,14 +10415,28 @@ var UnMemoizedMessageTextComponent = (props) => {
10275
10415
  language: userLanguage,
10276
10416
  message
10277
10417
  }) || message.text;
10278
- const messageText = (0, react.useMemo)(() => renderText$1(messageTextToRender, message.mentioned_users), [
10418
+ const renderTextMentionEntities = (0, react.useMemo)(() => getRenderTextMentionEntities({
10419
+ mentioned_channel: message.mentioned_channel,
10420
+ mentioned_groups: message.mentioned_groups,
10421
+ mentioned_here: message.mentioned_here,
10422
+ mentioned_roles: message.mentioned_roles,
10423
+ mentioned_users: message.mentioned_users
10424
+ }), [
10425
+ message.mentioned_channel,
10426
+ message.mentioned_groups,
10427
+ message.mentioned_here,
10428
+ message.mentioned_roles,
10429
+ message.mentioned_users
10430
+ ]);
10431
+ const messageText = (0, react.useMemo)(() => renderText$1(messageTextToRender, message.mentioned_users, { messageMentionEntities: renderTextMentionEntities }), [
10279
10432
  message.mentioned_users,
10280
10433
  messageTextToRender,
10281
- renderText$1
10434
+ renderText$1,
10435
+ renderTextMentionEntities
10282
10436
  ]);
10283
10437
  const wrapperClass = customWrapperClass || "str-chat__message-text";
10284
10438
  const innerClass = customInnerClass;
10285
- const isMentionsInteractionEnabled = Boolean(message.mentioned_users?.length) && typeof onMentionsClickMessage === "function";
10439
+ const isMentionsInteractionEnabled = Boolean(renderTextMentionEntities.length) && typeof onMentionsClickMessage === "function";
10286
10440
  const senderName = message.user?.name;
10287
10441
  const messageContext = senderName ? t("aria/Message from {{ user }},", { user: senderName }) : t("aria/Message,");
10288
10442
  const messageLabelledBy = `${messageContextId} ${messageTextId}`;
@@ -12003,7 +12157,7 @@ var GalleryHeader = ({ currentItem }) => {
12003
12157
  };
12004
12158
  //#endregion
12005
12159
  //#region src/components/VideoPlayer/VideoPlayer.tsx
12006
- var ReactPlayer = react.default.lazy(() => Promise.resolve().then(() => require("./ReactPlayerWrapper.16cd6fed.js")));
12160
+ var ReactPlayer = react.default.lazy(() => Promise.resolve().then(() => require("./ReactPlayerWrapper.963d6170.js")));
12007
12161
  var VideoPlayer = ({ isPlaying, thumbnailUrl, videoUrl }) => {
12008
12162
  const { LoadingIndicator: LoadingIndicator$4 = LoadingIndicator, VideoPlayer: VideoPlayerContext } = require_useNotificationApi.useComponentContext();
12009
12163
  return VideoPlayerContext ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(VideoPlayerContext, {
@@ -13825,6 +13979,7 @@ var MediaRecorderController = class {
13825
13979
  };
13826
13980
  this.pause = () => {
13827
13981
  if (this.recordingState.value !== "recording") return;
13982
+ if (this.mediaRecorder?.state !== "recording") return;
13828
13983
  if (this.startTime) {
13829
13984
  this.recordedChunkDurations.push((/* @__PURE__ */ new Date()).getTime() - this.startTime);
13830
13985
  this.startTime = void 0;
@@ -13836,6 +13991,7 @@ var MediaRecorderController = class {
13836
13991
  };
13837
13992
  this.resume = () => {
13838
13993
  if (this.recordingState.value !== "paused") return;
13994
+ if (this.mediaRecorder?.state !== "paused") return;
13839
13995
  this.startTime = (/* @__PURE__ */ new Date()).getTime();
13840
13996
  this.mediaRecorder?.resume();
13841
13997
  this.amplitudeRecorder?.start();
@@ -14199,6 +14355,19 @@ var QuotedMessagePreviewUI = ({ authorLabel, className, getQuotedMessageAuthor,
14199
14355
  quotedMessage?.text,
14200
14356
  userLanguage
14201
14357
  ]);
14358
+ const quotedMessageMentionEntities = (0, react.useMemo)(() => getRenderTextMentionEntities({
14359
+ mentioned_channel: quotedMessage?.mentioned_channel,
14360
+ mentioned_groups: quotedMessage?.mentioned_groups,
14361
+ mentioned_here: quotedMessage?.mentioned_here,
14362
+ mentioned_roles: quotedMessage?.mentioned_roles,
14363
+ mentioned_users: quotedMessage?.mentioned_users
14364
+ }), [
14365
+ quotedMessage?.mentioned_channel,
14366
+ quotedMessage?.mentioned_groups,
14367
+ quotedMessage?.mentioned_here,
14368
+ quotedMessage?.mentioned_roles,
14369
+ quotedMessage?.mentioned_users
14370
+ ]);
14202
14371
  const { AttachmentIcon, PreviewImage, renderedText } = (0, react.useMemo)(() => {
14203
14372
  if (!quotedMessage) return {
14204
14373
  AttachmentIcon: NullAttachmentIcon,
@@ -14218,7 +14387,7 @@ var QuotedMessagePreviewUI = ({ authorLabel, className, getQuotedMessageAuthor,
14218
14387
  else if (previewType === "video") renderedText = groupedAttachments.videos.length === 1 ? t("Video") : t("{{ count }} videos", { count: groupedAttachments.videos.length });
14219
14388
  else if (previewType === "file") renderedText = groupedAttachments.documents[0].title;
14220
14389
  else if (previewType === "image") renderedText = groupedAttachments.images.length === 1 ? t("Photo") : t("{{ count }} photos", { count: groupedAttachments.images.length });
14221
- } else if (renderText) renderedText = renderText(quotedMessageText, quotedMessage?.mentioned_users);
14390
+ } else if (renderText) renderedText = renderText(quotedMessageText, quotedMessage?.mentioned_users, { messageMentionEntities: quotedMessageMentionEntities });
14222
14391
  else renderedText = quotedMessageText;
14223
14392
  return {
14224
14393
  AttachmentIcon,
@@ -14228,6 +14397,7 @@ var QuotedMessagePreviewUI = ({ authorLabel, className, getQuotedMessageAuthor,
14228
14397
  }, [
14229
14398
  giphyVersionName,
14230
14399
  quotedMessage,
14400
+ quotedMessageMentionEntities,
14231
14401
  quotedMessageText,
14232
14402
  renderText,
14233
14403
  t
@@ -17714,6 +17884,215 @@ var EmoticonItem = (props) => {
17714
17884
  });
17715
17885
  };
17716
17886
  //#endregion
17887
+ //#region src/components/ListItemLayout/ListItemLayout.tsx
17888
+ var ListItemLayout = ({ ContentSlot = ListItemLayoutContent, contentClassName, description, descriptionClassName, destructive, LeadingIcon, LeadingSlot, RootElement, rootProps, selected, subtitle, subtitleClassName, title, titleClassName, TrailingIcon, TrailingSlot }) => {
17889
+ const ContainerComponent = RootElement ?? "div";
17890
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
17891
+ className: "str-chat__list-item-layout",
17892
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(ContainerComponent, {
17893
+ ...ContainerComponent === "button" ? { type: "button" } : void 0,
17894
+ ...rootProps,
17895
+ className: (0, clsx.default)("str-chat__list-item-layout__container", rootProps?.className, destructive && "str-chat__list-item-layout__container--destructive", selected && "str-chat__list-item-layout__container--selected"),
17896
+ children: [
17897
+ LeadingIcon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
17898
+ className: "str-chat__list-item-layout__leading-icon",
17899
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LeadingIcon, {})
17900
+ }),
17901
+ LeadingSlot && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(LeadingSlot, {}),
17902
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ContentSlot, {
17903
+ className: contentClassName,
17904
+ description,
17905
+ descriptionClassName,
17906
+ subtitle,
17907
+ subtitleClassName,
17908
+ title,
17909
+ titleClassName
17910
+ }),
17911
+ TrailingIcon && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
17912
+ className: "str-chat__list-item-layout__trailing-icon",
17913
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TrailingIcon, {})
17914
+ }),
17915
+ TrailingSlot && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TrailingSlot, {})
17916
+ ]
17917
+ })
17918
+ });
17919
+ };
17920
+ var ListItemLayoutContent = ({ className, description, descriptionClassName, subtitle, subtitleClassName, title, titleClassName, ...props }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
17921
+ ...props,
17922
+ className: (0, clsx.default)("str-chat__list-item-layout__content", className, {
17923
+ "str-chat__list-item-layout__content--withDescription": description,
17924
+ "str-chat__list-item-layout__content--withSubtitle": subtitle,
17925
+ "str-chat__list-item-layout__content--withTitle": title
17926
+ }),
17927
+ children: [
17928
+ title && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
17929
+ className: (0, clsx.default)("str-chat__list-item-layout__title", titleClassName),
17930
+ children: title
17931
+ }),
17932
+ subtitle && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
17933
+ className: (0, clsx.default)("str-chat__list-item-layout__subtitle", subtitleClassName),
17934
+ children: subtitle
17935
+ }),
17936
+ description && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
17937
+ className: (0, clsx.default)("str-chat__list-item-layout__description", descriptionClassName),
17938
+ children: description
17939
+ })
17940
+ ]
17941
+ });
17942
+ //#endregion
17943
+ //#region src/components/TextareaComposer/SuggestionList/MentionItem/MentionSuggestionTitle.tsx
17944
+ var MentionSuggestionTitle = ({ children }) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: ["@", children] });
17945
+ //#endregion
17946
+ //#region src/components/TextareaComposer/SuggestionList/MentionItem/BroadcastMentionItem.tsx
17947
+ var BroadcastMentionItem = ({ entity, focused, ...buttonProps }) => {
17948
+ const { t } = require_useNotificationApi.useTranslationContext();
17949
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ListItemLayout, {
17950
+ contentClassName: "str-chat__suggestion-list__item-content",
17951
+ description: entity.mentionType === "channel" ? t("mention/Channel Description") : t("mention/Here Description"),
17952
+ descriptionClassName: "str-chat__suggestion-list__item-details",
17953
+ LeadingIcon: require_useNotificationApi.IconMegaphone,
17954
+ RootElement: "button",
17955
+ rootProps: {
17956
+ ...buttonProps,
17957
+ className: (0, clsx.default)("str-chat__context-menu__button", buttonProps.className, "str-chat__suggestion-list__mention"),
17958
+ role: buttonProps.role ?? "menuitem",
17959
+ title: `@${entity.name}`
17960
+ },
17961
+ selected: focused,
17962
+ title: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MentionSuggestionTitle, { children: entity.name }),
17963
+ titleClassName: "str-chat__suggestion-list__item-title str-chat__suggestion-list__mention-item-title"
17964
+ });
17965
+ };
17966
+ //#endregion
17967
+ //#region src/components/TextareaComposer/SuggestionList/TokenizedSuggestionParts.tsx
17968
+ var HTML_SPACE = "\xA0";
17969
+ var isWhitespace = (char) => char.trim() === "";
17970
+ var replaceBoundaryWhitespaceWithHTMLSpace = (part) => {
17971
+ if (!part) return part;
17972
+ let startIndex = 0;
17973
+ while (startIndex < part.length && isWhitespace(part[startIndex])) startIndex += 1;
17974
+ if (startIndex === part.length) return HTML_SPACE;
17975
+ let endIndex = part.length - 1;
17976
+ while (endIndex >= startIndex && isWhitespace(part[endIndex])) endIndex -= 1;
17977
+ return `${startIndex > 0 ? HTML_SPACE : ""}${part.slice(startIndex, endIndex + 1)}${endIndex < part.length - 1 ? HTML_SPACE : ""}`;
17978
+ };
17979
+ var TokenizedSuggestionParts = ({ tokenizedDisplayName }) => tokenizedDisplayName.parts.map((part, i) => {
17980
+ const matches = part.toLowerCase() === tokenizedDisplayName.token;
17981
+ const partWithHTMLSpacesAround = replaceBoundaryWhitespaceWithHTMLSpace(part);
17982
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
17983
+ className: (0, clsx.default)({
17984
+ "str-chat__emoji-item-part": !matches,
17985
+ "str-chat__suggestion-item-part--match": matches
17986
+ }),
17987
+ children: partWithHTMLSpacesAround
17988
+ }, `part-${i}`);
17989
+ });
17990
+ //#endregion
17991
+ //#region src/components/TextareaComposer/SuggestionList/MentionItem/RoleItem.tsx
17992
+ var RoleItem = ({ entity, focused, ...buttonProps }) => {
17993
+ const { t } = require_useNotificationApi.useTranslationContext();
17994
+ const role = entity.name;
17995
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ListItemLayout, {
17996
+ contentClassName: "str-chat__suggestion-list__item-content",
17997
+ LeadingIcon: require_useNotificationApi.IconShield,
17998
+ RootElement: "button",
17999
+ rootProps: {
18000
+ ...buttonProps,
18001
+ className: (0, clsx.default)("str-chat__context-menu__button", buttonProps.className, "str-chat__suggestion-list__mention"),
18002
+ role: buttonProps.role ?? "menuitem",
18003
+ title: `@${role}`
18004
+ },
18005
+ selected: focused,
18006
+ subtitle: t("Notify all {{ role }} members", { role }),
18007
+ subtitleClassName: "str-chat__suggestion-list__item-details",
18008
+ title: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MentionSuggestionTitle, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TokenizedSuggestionParts, { tokenizedDisplayName: entity.tokenizedDisplayName }) }),
18009
+ titleClassName: "str-chat__suggestion-list__item-title str-chat__suggestion-list__mention-item-title"
18010
+ });
18011
+ };
18012
+ //#endregion
18013
+ //#region src/components/TextareaComposer/SuggestionList/MentionItem/SpecialMentionItem.tsx
18014
+ var SpecialMentionItem = () => null;
18015
+ //#endregion
18016
+ //#region src/components/TextareaComposer/SuggestionList/MentionItem/UserGroupItem.tsx
18017
+ var UserGroupItem = ({ entity, focused, ...buttonProps }) => {
18018
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ListItemLayout, {
18019
+ contentClassName: "str-chat__suggestion-list__item-content",
18020
+ LeadingIcon: require_useNotificationApi.IconUsers,
18021
+ RootElement: "button",
18022
+ rootProps: {
18023
+ ...buttonProps,
18024
+ className: (0, clsx.default)("str-chat__context-menu__button", buttonProps.className, "str-chat__suggestion-list__mention"),
18025
+ role: buttonProps.role ?? "menuitem",
18026
+ title: `@${entity.name}`
18027
+ },
18028
+ selected: focused,
18029
+ subtitle: entity.description,
18030
+ subtitleClassName: "str-chat__suggestion-list__item-details",
18031
+ title: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MentionSuggestionTitle, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TokenizedSuggestionParts, { tokenizedDisplayName: entity.tokenizedDisplayName }) }),
18032
+ titleClassName: "str-chat__suggestion-list__item-title str-chat__suggestion-list__mention-item-title"
18033
+ });
18034
+ };
18035
+ //#endregion
18036
+ //#region src/components/TextareaComposer/SuggestionList/MentionItem/UserItem.tsx
18037
+ /**
18038
+ * UI component for mentions rendered in suggestion list
18039
+ */
18040
+ var UserItem = ({ entity, focused, ...buttonProps }) => {
18041
+ const hasEntity = !!Object.keys(entity).length;
18042
+ const titleAttribute = entity.name || entity.id || "";
18043
+ const LeadingSlot = (0, react.useMemo)(() => function UserItemAvatar() {
18044
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Avatar, {
18045
+ imageUrl: entity.image,
18046
+ size: "md",
18047
+ userName: titleAttribute
18048
+ });
18049
+ }, [entity.image, titleAttribute]);
18050
+ if (!hasEntity) return null;
18051
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ListItemLayout, {
18052
+ contentClassName: "str-chat__context-menu__button__label",
18053
+ LeadingSlot,
18054
+ RootElement: "button",
18055
+ rootProps: {
18056
+ ...buttonProps,
18057
+ className: (0, clsx.default)("str-chat__context-menu__button", "str-chat__user-context-menu__button", buttonProps.className, "str-chat__suggestion-list__mention"),
18058
+ role: buttonProps.role ?? "menuitem",
18059
+ title: titleAttribute
18060
+ },
18061
+ selected: focused,
18062
+ title: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(TokenizedSuggestionParts, { tokenizedDisplayName: entity.tokenizedDisplayName }),
18063
+ titleClassName: "str-chat__suggestion-list__mention-item-title"
18064
+ });
18065
+ };
18066
+ //#endregion
18067
+ //#region src/components/TextareaComposer/SuggestionList/MentionItem/MentionItem.tsx
18068
+ var MentionItem = ({ BroadcastMentionItem: BroadcastMentionItem$1 = BroadcastMentionItem, entity, focused, RoleItem: RoleItem$1 = RoleItem, SpecialMentionItem: SpecialMentionItem$1 = SpecialMentionItem, UserGroupItem: UserGroupItem$1 = UserGroupItem, UserItem: UserItem$1 = UserItem, ...buttonProps }) => {
18069
+ if (entity.mentionType === "user") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(UserItem$1, {
18070
+ ...buttonProps,
18071
+ entity,
18072
+ focused
18073
+ });
18074
+ if (entity.mentionType === "role") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RoleItem$1, {
18075
+ ...buttonProps,
18076
+ entity,
18077
+ focused
18078
+ });
18079
+ if (entity.mentionType === "user_group") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(UserGroupItem$1, {
18080
+ ...buttonProps,
18081
+ entity,
18082
+ focused
18083
+ });
18084
+ if (entity.mentionType === "channel" || entity.mentionType === "here") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(BroadcastMentionItem$1, {
18085
+ ...buttonProps,
18086
+ entity,
18087
+ focused
18088
+ });
18089
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SpecialMentionItem$1, {
18090
+ ...buttonProps,
18091
+ entity,
18092
+ focused
18093
+ });
18094
+ };
18095
+ //#endregion
17717
18096
  //#region src/components/TextareaComposer/SuggestionList/SuggestionListItem.tsx
17718
18097
  var SuggestionListItem = ({ className, component: Component, focused, item, onClick, onKeyDown, onMouseEnter, ...restProps }) => {
17719
18098
  const { textComposer } = require_useNotificationApi.useMessageComposerController();
@@ -17752,33 +18131,6 @@ var SuggestionListItem = ({ className, component: Component, focused, item, onCl
17752
18131
  });
17753
18132
  };
17754
18133
  //#endregion
17755
- //#region src/components/TextareaComposer/SuggestionList/UserItem.tsx
17756
- /**
17757
- * UI component for mentions rendered in suggestion list
17758
- */
17759
- var UserItem = ({ entity, focused: _, ...buttonProps }) => {
17760
- if (!!!Object.keys(entity).length) return null;
17761
- const { parts, token } = entity.tokenizedDisplayName;
17762
- const renderName = () => parts.map((part, i) => {
17763
- const matches = part.toLowerCase() === token;
17764
- const partWithHTMLSpacesAround = part.replace(/^\s+|\s+$/g, "\xA0");
17765
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
17766
- className: (0, clsx.default)({
17767
- "str-chat__emoji-item-part": !matches,
17768
- "str-chat__suggestion-item-part--match": matches
17769
- }),
17770
- children: partWithHTMLSpacesAround
17771
- }, `part-${i}`);
17772
- });
17773
- return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(UserContextMenuButton, {
17774
- ...buttonProps,
17775
- imageUrl: entity.image,
17776
- title: entity.name || entity.id,
17777
- userName: entity.name || entity.id,
17778
- children: renderName()
17779
- });
17780
- };
17781
- //#endregion
17782
18134
  //#region src/utils/getTextareaCaretRect.ts
17783
18135
  var CARET_MIRROR_CLASS = "str-chat__textarea-caret-mirror";
17784
18136
  var CARET_MARKER_CLASS = "str-chat__textarea-caret-marker";
@@ -17836,7 +18188,7 @@ var defaultComponents = {
17836
18188
  ...props,
17837
18189
  entity: props.entity
17838
18190
  }),
17839
- "@": (props) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(UserItem, {
18191
+ "@": (props) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(MentionItem, {
17840
18192
  ...props,
17841
18193
  entity: props.entity
17842
18194
  })
@@ -17932,7 +18284,7 @@ var SuggestionList = ({ className, closeOnClickOutside = true, containerClassNam
17932
18284
  virtualCaretReference
17933
18285
  ]);
17934
18286
  if (!suggestions || !items?.length || !component || !hasEnabledCommandSuggestions) return null;
17935
- const suggestionMenuLabel = suggestions.searchSource.type === "commands" ? t("aria/Command Suggestions") : suggestions.searchSource.type === "emojis" ? t("aria/Emoji Suggestions") : suggestions.searchSource.type === "mentions" ? t("aria/User Suggestions") : t("aria/Suggestions");
18287
+ const suggestionMenuLabel = suggestions.searchSource.type === "commands" ? t("aria/Command Suggestions") : suggestions.searchSource.type === "emojis" ? t("aria/Emoji Suggestions") : suggestions.searchSource.type === "mentions" ? t("aria/Mention Suggestions") : t("aria/Suggestions");
17936
18288
  return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
17937
18289
  className: (0, clsx.default)("str-chat__suggestion-list-container", containerClassName),
17938
18290
  ref: setContainer,
@@ -18055,14 +18407,14 @@ var TextareaComposer = ({ className, closeSuggestionsOnClickOutside, containerCl
18055
18407
  const loadedItems = textComposer.suggestions.searchSource.items;
18056
18408
  if (event.key === "Enter") {
18057
18409
  event.preventDefault();
18058
- textComposer.handleSelect(loadedItems[focusedItemIndex]);
18410
+ const selectedItem = loadedItems[focusedItemIndex];
18411
+ if (selectedItem) textComposer.handleSelect(selectedItem);
18059
18412
  }
18060
18413
  if (event.key === "ArrowUp") {
18061
18414
  event.preventDefault();
18062
18415
  setFocusedItemIndex((prev) => {
18063
18416
  let nextIndex = prev - 1;
18064
- if (suggestions?.searchSource.hasNext) nextIndex = prev;
18065
- else if (nextIndex < 0) nextIndex = loadedItems.length - 1;
18417
+ if (nextIndex < 0) nextIndex = loadedItems.length - 1;
18066
18418
  return nextIndex;
18067
18419
  });
18068
18420
  }
@@ -18070,8 +18422,7 @@ var TextareaComposer = ({ className, closeSuggestionsOnClickOutside, containerCl
18070
18422
  event.preventDefault();
18071
18423
  setFocusedItemIndex((prev) => {
18072
18424
  let nextIndex = prev + 1;
18073
- if (suggestions?.searchSource.hasNext) nextIndex = prev;
18074
- else if (nextIndex >= loadedItems.length) nextIndex = 0;
18425
+ if (nextIndex >= loadedItems.length) nextIndex = 0;
18075
18426
  return nextIndex;
18076
18427
  });
18077
18428
  }
@@ -18088,7 +18439,6 @@ var TextareaComposer = ({ className, closeSuggestionsOnClickOutside, containerCl
18088
18439
  messageComposer,
18089
18440
  onKeyDown,
18090
18441
  shouldSubmit,
18091
- suggestions,
18092
18442
  textComposer,
18093
18443
  textareaRef
18094
18444
  ]);
@@ -18106,6 +18456,11 @@ var TextareaComposer = ({ className, closeSuggestionsOnClickOutside, containerCl
18106
18456
  (0, react.useEffect)(() => {
18107
18457
  if (textComposer.suggestions) setFocusedItemIndex(0);
18108
18458
  }, [textComposer.suggestions]);
18459
+ (0, react.useEffect)(() => {
18460
+ const suggestionItems = suggestions?.searchSource.items;
18461
+ if (!suggestionItems?.length) return;
18462
+ setFocusedItemIndex((prev) => prev >= suggestionItems.length ? suggestionItems.length - 1 : prev);
18463
+ }, [suggestions?.searchSource.items]);
18109
18464
  (0, react.useEffect)(() => {
18110
18465
  const textareaIsFocused = textareaRef.current?.matches(":focus");
18111
18466
  if (!textareaRef.current || textareaIsFocused || !focus) return;
@@ -25951,7 +26306,7 @@ var useChat = ({ client, defaultLanguage = "en", i18nInstance }) => {
25951
26306
  };
25952
26307
  (0, react.useEffect)(() => {
25953
26308
  if (!client) return;
25954
- const version = "14.4.1";
26309
+ const version = "14.5.0";
25955
26310
  const userAgent = client.getUserAgent();
25956
26311
  if (!userAgent.includes("stream-chat-react")) client.setUserAgent(`stream-chat-react-${version}-${userAgent}`);
25957
26312
  client.threads.registerSubscriptions();
@@ -26238,6 +26593,7 @@ exports.Badge = Badge;
26238
26593
  exports.BaseContextMenuButton = BaseContextMenuButton;
26239
26594
  exports.BaseImage = BaseImage;
26240
26595
  exports.BinIcon = BinIcon;
26596
+ exports.BroadcastMentionItem = BroadcastMentionItem;
26241
26597
  exports.Button = require_useNotificationApi.Button;
26242
26598
  exports.Callout = Callout;
26243
26599
  exports.Card = Card;
@@ -26360,6 +26716,7 @@ exports.IconLeave = require_useNotificationApi.IconLeave;
26360
26716
  exports.IconLink = require_useNotificationApi.IconLink;
26361
26717
  exports.IconLoading = require_useNotificationApi.IconLoading;
26362
26718
  exports.IconLocation = require_useNotificationApi.IconLocation;
26719
+ exports.IconMegaphone = require_useNotificationApi.IconMegaphone;
26363
26720
  exports.IconMessageBubble = require_useNotificationApi.IconMessageBubble;
26364
26721
  exports.IconMessageBubbleFill = require_useNotificationApi.IconMessageBubbleFill;
26365
26722
  exports.IconMessageBubbles = require_useNotificationApi.IconMessageBubbles;
@@ -26383,6 +26740,7 @@ exports.IconReply = require_useNotificationApi.IconReply;
26383
26740
  exports.IconRetry = require_useNotificationApi.IconRetry;
26384
26741
  exports.IconSearch = require_useNotificationApi.IconSearch;
26385
26742
  exports.IconSend = require_useNotificationApi.IconSend;
26743
+ exports.IconShield = require_useNotificationApi.IconShield;
26386
26744
  exports.IconThread = require_useNotificationApi.IconThread;
26387
26745
  exports.IconThreadFill = require_useNotificationApi.IconThreadFill;
26388
26746
  exports.IconTranslate = require_useNotificationApi.IconTranslate;
@@ -26394,6 +26752,7 @@ exports.IconUser = require_useNotificationApi.IconUser;
26394
26752
  exports.IconUserAdd = require_useNotificationApi.IconUserAdd;
26395
26753
  exports.IconUserCheck = require_useNotificationApi.IconUserCheck;
26396
26754
  exports.IconUserRemove = require_useNotificationApi.IconUserRemove;
26755
+ exports.IconUsers = require_useNotificationApi.IconUsers;
26397
26756
  exports.IconVideo = require_useNotificationApi.IconVideo;
26398
26757
  exports.IconVideoFill = require_useNotificationApi.IconVideoFill;
26399
26758
  exports.IconVoice = require_useNotificationApi.IconVoice;
@@ -26406,6 +26765,8 @@ exports.ImagePlaceholder = ImagePlaceholder;
26406
26765
  exports.InfiniteScroll = InfiniteScroll;
26407
26766
  exports.LinkPreviewCard = LinkPreviewCard;
26408
26767
  exports.LinkPreviewList = LinkPreviewList;
26768
+ exports.ListItemLayout = ListItemLayout;
26769
+ exports.ListItemLayoutContent = ListItemLayoutContent;
26409
26770
  exports.LoadMoreButton = LoadMoreButton;
26410
26771
  exports.LoadMorePaginator = LoadMorePaginator;
26411
26772
  exports.LoadingChannel = require_useNotificationApi.LoadingChannel;
@@ -26416,6 +26777,7 @@ exports.MAX_MESSAGE_REACTIONS_TO_FETCH = MAX_MESSAGE_REACTIONS_TO_FETCH;
26416
26777
  exports.MESSAGE_ACTIONS = require_useNotificationApi.MESSAGE_ACTIONS;
26417
26778
  exports.MediaContainer = MediaContainer;
26418
26779
  exports.MediaRecordingState = MediaRecordingState;
26780
+ exports.MentionItem = MentionItem;
26419
26781
  exports.Message = Message;
26420
26782
  exports.MessageActions = MessageActions;
26421
26783
  exports.MessageAlsoSentInChannelIndicator = MessageAlsoSentInChannelIndicator;
@@ -26492,6 +26854,7 @@ exports.RecordingPermission = RecordingPermission;
26492
26854
  exports.RecordingPermissionDeniedNotification = RecordingPermissionDeniedNotification;
26493
26855
  exports.RecordingTimer = RecordingTimer;
26494
26856
  exports.ReminderNotification = ReminderNotification;
26857
+ exports.RoleItem = RoleItem;
26495
26858
  exports.Root = Root;
26496
26859
  exports.SUPPORTED_VIDEO_FORMATS = SUPPORTED_VIDEO_FORMATS;
26497
26860
  exports.SYSTEM_NOTIFICATION_TAG = require_useNotificationApi.SYSTEM_NOTIFICATION_TAG;
@@ -26515,6 +26878,7 @@ exports.SendButton = SendButton;
26515
26878
  exports.ShareLocationDialog = ShareLocationDialog;
26516
26879
  exports.SimpleAttachmentSelector = SimpleAttachmentSelector;
26517
26880
  exports.SkipNavigation = SkipNavigation;
26881
+ exports.SpecialMentionItem = SpecialMentionItem;
26518
26882
  exports.SpriteImage = SpriteImage;
26519
26883
  exports.StartRecordingAudioButton = DefaultStartRecordingAudioButton;
26520
26884
  exports.StreamedMessageText = StreamedMessageText;
@@ -26537,6 +26901,7 @@ exports.ThreadListItem = ThreadListItem;
26537
26901
  exports.ThreadListItemUI = ThreadListItemUI;
26538
26902
  exports.ThreadProvider = require_useNotificationApi.ThreadProvider;
26539
26903
  exports.ThreadStart = ThreadStart;
26904
+ exports.TokenizedSuggestionParts = TokenizedSuggestionParts;
26540
26905
  exports.Tooltip = Tooltip;
26541
26906
  exports.TranslationBuilder = TranslationBuilder;
26542
26907
  exports.TranslationContext = require_useNotificationApi.TranslationContext;
@@ -26556,6 +26921,7 @@ exports.UploadIcon = UploadIcon;
26556
26921
  exports.UploadProgressIndicator = UploadProgressIndicator;
26557
26922
  exports.UploadedSizeIndicator = UploadedSizeIndicator;
26558
26923
  exports.UserContextMenuButton = UserContextMenuButton;
26924
+ exports.UserGroupItem = UserGroupItem;
26559
26925
  exports.UserItem = UserItem;
26560
26926
  exports.UserSearchResultItem = UserSearchResultItem;
26561
26927
  exports.VideoContainer = VideoContainer;
@@ -26576,6 +26942,7 @@ exports.areMessageUIPropsEqual = require_useNotificationApi.areMessageUIPropsEqu
26576
26942
  exports.countEmojis = require_useNotificationApi.countEmojis;
26577
26943
  exports.createDefaultPickNext = createDefaultPickNext;
26578
26944
  exports.createIcon = require_useNotificationApi.createIcon;
26945
+ exports.createMentionPluginAndDisplayTextSet = createMentionPluginAndDisplayTextSet;
26579
26946
  exports.deTranslations = de_default;
26580
26947
  exports.defaultAllowedTagNames = defaultAllowedTagNames;
26581
26948
  exports.defaultAttachmentActionsDefaultFocus = defaultAttachmentActionsDefaultFocus;
@@ -26611,12 +26978,14 @@ exports.getImages = require_useNotificationApi.getImages;
26611
26978
  exports.getIsFirstUnreadMessage = require_useNotificationApi.getIsFirstUnreadMessage;
26612
26979
  exports.getLastReceived = require_useNotificationApi.getLastReceived;
26613
26980
  exports.getLatestMessagePreview = getLatestMessagePreview;
26981
+ exports.getMentionDisplayTexts = getMentionDisplayTexts;
26614
26982
  exports.getMessageActions = require_useNotificationApi.getMessageActions;
26615
26983
  exports.getNonImageAttachments = require_useNotificationApi.getNonImageAttachments;
26616
26984
  exports.getNotificationTargetPanel = require_useNotificationApi.getNotificationTargetPanel;
26617
26985
  exports.getNotificationTargetPanels = require_useNotificationApi.getNotificationTargetPanels;
26618
26986
  exports.getNotificationTargetTag = require_useNotificationApi.getNotificationTargetTag;
26619
26987
  exports.getReadByTooltipText = require_useNotificationApi.getReadByTooltipText;
26988
+ exports.getRenderTextMentionEntities = getRenderTextMentionEntities;
26620
26989
  exports.getTextareaCaretRect = getTextareaCaretRect;
26621
26990
  exports.getTranslatedMessageText = getTranslatedMessageText;
26622
26991
  exports.getWholeChar = getWholeChar;
@@ -26661,6 +27030,7 @@ exports.mapToUserNameOrId = require_useNotificationApi.mapToUserNameOrId;
26661
27030
  exports.markDownRenderers = markDownRenderers;
26662
27031
  exports.matchMarkdownLinks = matchMarkdownLinks;
26663
27032
  exports.mentionsMarkdownPlugin = mentionsMarkdownPlugin;
27033
+ exports.mentionsMarkdownPluginFromLookup = mentionsMarkdownPluginFromLookup;
26664
27034
  exports.messageCodeBlocks = messageCodeBlocks;
26665
27035
  exports.messageHasAttachments = require_useNotificationApi.messageHasAttachments;
26666
27036
  exports.messageHasGiphyAttachment = require_useNotificationApi.messageHasGiphyAttachment;