stream-chat-react 6.12.2 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (366) hide show
  1. package/README.md +1 -1
  2. package/dist/browser.full-bundle.js +1857 -18857
  3. package/dist/browser.full-bundle.js.map +1 -1
  4. package/dist/browser.full-bundle.min.js +5 -5
  5. package/dist/browser.full-bundle.min.js.map +1 -1
  6. package/dist/components/Attachment/Attachment.d.ts +8 -8
  7. package/dist/components/Attachment/Attachment.d.ts.map +1 -1
  8. package/dist/components/Attachment/AttachmentActions.d.ts +3 -3
  9. package/dist/components/Attachment/AttachmentActions.d.ts.map +1 -1
  10. package/dist/components/Attachment/Audio.d.ts +4 -4
  11. package/dist/components/Attachment/Audio.d.ts.map +1 -1
  12. package/dist/components/Attachment/Audio.js +2 -2
  13. package/dist/components/Attachment/Card.d.ts +2 -0
  14. package/dist/components/Attachment/Card.d.ts.map +1 -1
  15. package/dist/components/Attachment/Card.js +22 -2
  16. package/dist/components/Attachment/FileAttachment.d.ts +4 -4
  17. package/dist/components/Attachment/FileAttachment.d.ts.map +1 -1
  18. package/dist/components/Attachment/utils.d.ts +22 -22
  19. package/dist/components/Attachment/utils.d.ts.map +1 -1
  20. package/dist/components/Attachment/utils.js +3 -1
  21. package/dist/components/AutoCompleteTextarea/Item.d.ts.map +1 -1
  22. package/dist/components/AutoCompleteTextarea/Item.js +1 -1
  23. package/dist/components/AutoCompleteTextarea/List.d.ts.map +1 -1
  24. package/dist/components/AutoCompleteTextarea/List.js +0 -1
  25. package/dist/components/AutoCompleteTextarea/Textarea.d.ts +7 -6
  26. package/dist/components/AutoCompleteTextarea/Textarea.d.ts.map +1 -1
  27. package/dist/components/AutoCompleteTextarea/Textarea.js +9 -23
  28. package/dist/components/Avatar/Avatar.d.ts +4 -4
  29. package/dist/components/Avatar/Avatar.d.ts.map +1 -1
  30. package/dist/components/Channel/Channel.d.ts +47 -45
  31. package/dist/components/Channel/Channel.d.ts.map +1 -1
  32. package/dist/components/Channel/Channel.js +12 -4
  33. package/dist/components/Channel/channelState.d.ts +15 -15
  34. package/dist/components/Channel/channelState.d.ts.map +1 -1
  35. package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts +3 -3
  36. package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts.map +1 -1
  37. package/dist/components/Channel/hooks/useCreateChannelStateContext.js +2 -1
  38. package/dist/components/Channel/hooks/useCreateTypingContext.d.ts +2 -2
  39. package/dist/components/Channel/hooks/useCreateTypingContext.d.ts.map +1 -1
  40. package/dist/components/Channel/hooks/useEditMessageHandler.d.ts +3 -3
  41. package/dist/components/Channel/hooks/useEditMessageHandler.d.ts.map +1 -1
  42. package/dist/components/Channel/hooks/useMentionsHandlers.d.ts +3 -3
  43. package/dist/components/Channel/hooks/useMentionsHandlers.d.ts.map +1 -1
  44. package/dist/components/ChannelHeader/ChannelHeader.d.ts +4 -2
  45. package/dist/components/ChannelHeader/ChannelHeader.d.ts.map +1 -1
  46. package/dist/components/ChannelHeader/ChannelHeader.js +6 -7
  47. package/dist/components/ChannelHeader/icons.d.ts +5 -0
  48. package/dist/components/ChannelHeader/icons.d.ts.map +1 -0
  49. package/dist/components/ChannelHeader/icons.js +9 -0
  50. package/dist/components/ChannelList/ChannelList.d.ts +18 -18
  51. package/dist/components/ChannelList/ChannelList.d.ts.map +1 -1
  52. package/dist/components/ChannelList/ChannelListMessenger.d.ts +5 -5
  53. package/dist/components/ChannelList/ChannelListMessenger.d.ts.map +1 -1
  54. package/dist/components/ChannelList/ChannelListMessenger.js +1 -1
  55. package/dist/components/ChannelList/hooks/useChannelDeletedListener.d.ts +2 -2
  56. package/dist/components/ChannelList/hooks/useChannelDeletedListener.d.ts.map +1 -1
  57. package/dist/components/ChannelList/hooks/useChannelHiddenListener.d.ts +2 -2
  58. package/dist/components/ChannelList/hooks/useChannelHiddenListener.d.ts.map +1 -1
  59. package/dist/components/ChannelList/hooks/useChannelTruncatedListener.d.ts +2 -2
  60. package/dist/components/ChannelList/hooks/useChannelTruncatedListener.d.ts.map +1 -1
  61. package/dist/components/ChannelList/hooks/useChannelUpdatedListener.d.ts +2 -2
  62. package/dist/components/ChannelList/hooks/useChannelUpdatedListener.d.ts.map +1 -1
  63. package/dist/components/ChannelList/hooks/useChannelUpdatedListener.js +13 -1
  64. package/dist/components/ChannelList/hooks/useChannelVisibleListener.d.ts +2 -2
  65. package/dist/components/ChannelList/hooks/useChannelVisibleListener.d.ts.map +1 -1
  66. package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts +2 -2
  67. package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts.map +1 -1
  68. package/dist/components/ChannelList/hooks/useMessageNewListener.d.ts +2 -2
  69. package/dist/components/ChannelList/hooks/useMessageNewListener.d.ts.map +1 -1
  70. package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts +2 -2
  71. package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts.map +1 -1
  72. package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts +2 -2
  73. package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts.map +1 -1
  74. package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.d.ts +2 -2
  75. package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.d.ts.map +1 -1
  76. package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts +4 -4
  77. package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
  78. package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.d.ts +2 -2
  79. package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.d.ts.map +1 -1
  80. package/dist/components/ChannelList/utils.d.ts +6 -6
  81. package/dist/components/ChannelList/utils.d.ts.map +1 -1
  82. package/dist/components/ChannelPreview/ChannelPreview.d.ts +9 -9
  83. package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
  84. package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts +2 -2
  85. package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts.map +1 -1
  86. package/dist/components/ChannelPreview/ChannelPreviewMessenger.js +1 -1
  87. package/dist/components/ChannelPreview/hooks/useIsChannelMuted.d.ts +2 -2
  88. package/dist/components/ChannelPreview/hooks/useIsChannelMuted.d.ts.map +1 -1
  89. package/dist/components/ChannelPreview/utils.d.ts +4 -4
  90. package/dist/components/ChannelPreview/utils.d.ts.map +1 -1
  91. package/dist/components/ChannelSearch/ChannelSearch.d.ts +16 -14
  92. package/dist/components/ChannelSearch/ChannelSearch.d.ts.map +1 -1
  93. package/dist/components/ChannelSearch/ChannelSearch.js +3 -3
  94. package/dist/components/ChannelSearch/SearchInput.d.ts +9 -7
  95. package/dist/components/ChannelSearch/SearchInput.d.ts.map +1 -1
  96. package/dist/components/ChannelSearch/SearchInput.js +2 -2
  97. package/dist/components/ChannelSearch/SearchResults.d.ts +14 -14
  98. package/dist/components/ChannelSearch/SearchResults.d.ts.map +1 -1
  99. package/dist/components/ChannelSearch/SearchResults.js +6 -6
  100. package/dist/components/ChannelSearch/utils.d.ts +3 -3
  101. package/dist/components/ChannelSearch/utils.d.ts.map +1 -1
  102. package/dist/components/ChannelSearch/utils.js +1 -3
  103. package/dist/components/Chat/Chat.d.ts +4 -4
  104. package/dist/components/Chat/Chat.d.ts.map +1 -1
  105. package/dist/components/Chat/hooks/useChat.d.ts +8 -8
  106. package/dist/components/Chat/hooks/useChat.d.ts.map +1 -1
  107. package/dist/components/Chat/hooks/useChat.js +2 -2
  108. package/dist/components/Chat/hooks/useCreateChatContext.d.ts +2 -2
  109. package/dist/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
  110. package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts +18 -14
  111. package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts.map +1 -1
  112. package/dist/components/ChatAutoComplete/ChatAutoComplete.js +16 -14
  113. package/dist/components/ChatDown/ChatDown.d.ts.map +1 -1
  114. package/dist/components/ChatDown/ChatDown.js +2 -2
  115. package/dist/components/EmptyStateIndicator/EmptyStateIndicator.js +1 -1
  116. package/dist/components/EventComponent/EventComponent.d.ts +4 -4
  117. package/dist/components/EventComponent/EventComponent.d.ts.map +1 -1
  118. package/dist/components/Gallery/Gallery.d.ts +4 -4
  119. package/dist/components/Gallery/Gallery.d.ts.map +1 -1
  120. package/dist/components/Gallery/Gallery.js +5 -3
  121. package/dist/components/Gallery/Image.d.ts.map +1 -1
  122. package/dist/components/Gallery/Image.js +4 -2
  123. package/dist/components/Gallery/ModalWrapper.d.ts +3 -6
  124. package/dist/components/Gallery/ModalWrapper.d.ts.map +1 -1
  125. package/dist/components/Gallery/ModalWrapper.js +4 -7
  126. package/dist/components/Gallery/index.d.ts +0 -1
  127. package/dist/components/Gallery/index.d.ts.map +1 -1
  128. package/dist/components/Gallery/index.js +0 -1
  129. package/dist/components/LoadMore/LoadMoreButton.d.ts.map +1 -1
  130. package/dist/components/LoadMore/LoadMoreButton.js +1 -1
  131. package/dist/components/Message/FixedHeightMessage.d.ts +4 -4
  132. package/dist/components/Message/FixedHeightMessage.d.ts.map +1 -1
  133. package/dist/components/Message/Message.d.ts +2 -2
  134. package/dist/components/Message/Message.d.ts.map +1 -1
  135. package/dist/components/Message/MessageCommerce.d.ts +2 -2
  136. package/dist/components/Message/MessageCommerce.d.ts.map +1 -1
  137. package/dist/components/Message/MessageDeleted.d.ts +4 -4
  138. package/dist/components/Message/MessageDeleted.d.ts.map +1 -1
  139. package/dist/components/Message/MessageLivestream.d.ts +2 -2
  140. package/dist/components/Message/MessageLivestream.d.ts.map +1 -1
  141. package/dist/components/Message/MessageOptions.d.ts +3 -3
  142. package/dist/components/Message/MessageOptions.d.ts.map +1 -1
  143. package/dist/components/Message/MessageOptions.js +5 -5
  144. package/dist/components/Message/MessageSimple.d.ts +2 -2
  145. package/dist/components/Message/MessageSimple.d.ts.map +1 -1
  146. package/dist/components/Message/MessageSimple.js +5 -4
  147. package/dist/components/Message/MessageStatus.d.ts +2 -2
  148. package/dist/components/Message/MessageStatus.d.ts.map +1 -1
  149. package/dist/components/Message/MessageTeam.d.ts +2 -2
  150. package/dist/components/Message/MessageTeam.d.ts.map +1 -1
  151. package/dist/components/Message/MessageText.d.ts +4 -4
  152. package/dist/components/Message/MessageText.d.ts.map +1 -1
  153. package/dist/components/Message/MessageTimestamp.d.ts +4 -4
  154. package/dist/components/Message/MessageTimestamp.d.ts.map +1 -1
  155. package/dist/components/Message/QuotedMessage.d.ts +2 -2
  156. package/dist/components/Message/QuotedMessage.d.ts.map +1 -1
  157. package/dist/components/Message/hooks/useActionHandler.d.ts +2 -2
  158. package/dist/components/Message/hooks/useActionHandler.d.ts.map +1 -1
  159. package/dist/components/Message/hooks/useDeleteHandler.d.ts +4 -4
  160. package/dist/components/Message/hooks/useDeleteHandler.d.ts.map +1 -1
  161. package/dist/components/Message/hooks/useFlagHandler.d.ts +5 -5
  162. package/dist/components/Message/hooks/useFlagHandler.d.ts.map +1 -1
  163. package/dist/components/Message/hooks/useMentionsHandler.d.ts +6 -6
  164. package/dist/components/Message/hooks/useMentionsHandler.d.ts.map +1 -1
  165. package/dist/components/Message/hooks/useMuteHandler.d.ts +5 -5
  166. package/dist/components/Message/hooks/useMuteHandler.d.ts.map +1 -1
  167. package/dist/components/Message/hooks/useOpenThreadHandler.d.ts +2 -2
  168. package/dist/components/Message/hooks/useOpenThreadHandler.d.ts.map +1 -1
  169. package/dist/components/Message/hooks/usePinHandler.d.ts +4 -4
  170. package/dist/components/Message/hooks/usePinHandler.d.ts.map +1 -1
  171. package/dist/components/Message/hooks/useReactionHandler.d.ts +3 -3
  172. package/dist/components/Message/hooks/useReactionHandler.d.ts.map +1 -1
  173. package/dist/components/Message/hooks/useRetryHandler.d.ts +2 -2
  174. package/dist/components/Message/hooks/useRetryHandler.d.ts.map +1 -1
  175. package/dist/components/Message/hooks/useUserHandler.d.ts +5 -5
  176. package/dist/components/Message/hooks/useUserHandler.d.ts.map +1 -1
  177. package/dist/components/Message/hooks/useUserRole.d.ts +2 -2
  178. package/dist/components/Message/hooks/useUserRole.d.ts.map +1 -1
  179. package/dist/components/Message/hooks/useUserRole.js +1 -1
  180. package/dist/components/Message/icons.d.ts +2 -2
  181. package/dist/components/Message/icons.d.ts.map +1 -1
  182. package/dist/components/Message/types.d.ts +23 -23
  183. package/dist/components/Message/types.d.ts.map +1 -1
  184. package/dist/components/Message/utils.d.ts +14 -14
  185. package/dist/components/Message/utils.d.ts.map +1 -1
  186. package/dist/components/Message/utils.js +6 -1
  187. package/dist/components/MessageActions/MessageActions.d.ts +3 -3
  188. package/dist/components/MessageActions/MessageActions.d.ts.map +1 -1
  189. package/dist/components/MessageActions/MessageActions.js +16 -9
  190. package/dist/components/MessageActions/MessageActionsBox.d.ts +7 -7
  191. package/dist/components/MessageActions/MessageActionsBox.d.ts.map +1 -1
  192. package/dist/components/MessageActions/MessageActionsBox.js +12 -19
  193. package/dist/components/MessageInput/DefaultTriggerProvider.d.ts +7 -7
  194. package/dist/components/MessageInput/DefaultTriggerProvider.d.ts.map +1 -1
  195. package/dist/components/MessageInput/DropzoneProvider.d.ts +2 -2
  196. package/dist/components/MessageInput/DropzoneProvider.d.ts.map +1 -1
  197. package/dist/components/MessageInput/EditMessageForm.d.ts +2 -2
  198. package/dist/components/MessageInput/EditMessageForm.d.ts.map +1 -1
  199. package/dist/components/MessageInput/EditMessageForm.js +2 -2
  200. package/dist/components/MessageInput/EmojiPicker.d.ts +2 -2
  201. package/dist/components/MessageInput/EmojiPicker.d.ts.map +1 -1
  202. package/dist/components/MessageInput/MessageInput.d.ts +11 -11
  203. package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
  204. package/dist/components/MessageInput/MessageInputFlat.d.ts +2 -2
  205. package/dist/components/MessageInput/MessageInputFlat.d.ts.map +1 -1
  206. package/dist/components/MessageInput/MessageInputFlat.js +5 -5
  207. package/dist/components/MessageInput/MessageInputSmall.d.ts +2 -2
  208. package/dist/components/MessageInput/MessageInputSmall.d.ts.map +1 -1
  209. package/dist/components/MessageInput/MessageInputSmall.js +7 -5
  210. package/dist/components/MessageInput/QuotedMessagePreview.d.ts +4 -4
  211. package/dist/components/MessageInput/QuotedMessagePreview.d.ts.map +1 -1
  212. package/dist/components/MessageInput/QuotedMessagePreview.js +4 -3
  213. package/dist/components/MessageInput/UploadsPreview.d.ts +2 -2
  214. package/dist/components/MessageInput/UploadsPreview.d.ts.map +1 -1
  215. package/dist/components/MessageInput/UploadsPreview.js +4 -17
  216. package/dist/components/MessageInput/hooks/useAttachments.d.ts +2 -2
  217. package/dist/components/MessageInput/hooks/useAttachments.d.ts.map +1 -1
  218. package/dist/components/MessageInput/hooks/useCommandTrigger.d.ts +2 -2
  219. package/dist/components/MessageInput/hooks/useCommandTrigger.d.ts.map +1 -1
  220. package/dist/components/MessageInput/hooks/useCommandTrigger.js +3 -1
  221. package/dist/components/MessageInput/hooks/useCooldownTimer.d.ts +2 -2
  222. package/dist/components/MessageInput/hooks/useCooldownTimer.d.ts.map +1 -1
  223. package/dist/components/MessageInput/hooks/useCooldownTimer.js +2 -1
  224. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts +2 -2
  225. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts.map +1 -1
  226. package/dist/components/MessageInput/hooks/useEmojiPicker.d.ts +4 -4
  227. package/dist/components/MessageInput/hooks/useEmojiPicker.d.ts.map +1 -1
  228. package/dist/components/MessageInput/hooks/useEmojiPicker.js +2 -0
  229. package/dist/components/MessageInput/hooks/useFileUploads.d.ts +2 -2
  230. package/dist/components/MessageInput/hooks/useFileUploads.d.ts.map +1 -1
  231. package/dist/components/MessageInput/hooks/useImageUploads.d.ts +2 -2
  232. package/dist/components/MessageInput/hooks/useImageUploads.d.ts.map +1 -1
  233. package/dist/components/MessageInput/hooks/useMessageInputState.d.ts +11 -11
  234. package/dist/components/MessageInput/hooks/useMessageInputState.d.ts.map +1 -1
  235. package/dist/components/MessageInput/hooks/useMessageInputState.js +1 -1
  236. package/dist/components/MessageInput/hooks/useMessageInputText.d.ts +2 -2
  237. package/dist/components/MessageInput/hooks/useMessageInputText.d.ts.map +1 -1
  238. package/dist/components/MessageInput/hooks/useSubmitHandler.d.ts +3 -3
  239. package/dist/components/MessageInput/hooks/useSubmitHandler.d.ts.map +1 -1
  240. package/dist/components/MessageInput/hooks/useUserTrigger.d.ts +5 -5
  241. package/dist/components/MessageInput/hooks/useUserTrigger.d.ts.map +1 -1
  242. package/dist/components/MessageInput/hooks/utils.d.ts +8 -8
  243. package/dist/components/MessageInput/hooks/utils.d.ts.map +1 -1
  244. package/dist/components/MessageInput/hooks/utils.js +1 -1
  245. package/dist/components/MessageInput/icons.d.ts +4 -4
  246. package/dist/components/MessageInput/icons.d.ts.map +1 -1
  247. package/dist/components/MessageInput/icons.js +1 -1
  248. package/dist/components/MessageInput/index.d.ts +1 -0
  249. package/dist/components/MessageInput/index.d.ts.map +1 -1
  250. package/dist/components/MessageInput/index.js +1 -0
  251. package/dist/components/MessageList/ConnectionStatus.d.ts.map +1 -1
  252. package/dist/components/MessageList/CustomNotification.d.ts.map +1 -1
  253. package/dist/components/MessageList/CustomNotification.js +1 -1
  254. package/dist/components/MessageList/GiphyPreviewMessage.d.ts +4 -4
  255. package/dist/components/MessageList/GiphyPreviewMessage.d.ts.map +1 -1
  256. package/dist/components/MessageList/MessageList.d.ts +5 -5
  257. package/dist/components/MessageList/MessageList.d.ts.map +1 -1
  258. package/dist/components/MessageList/MessageNotification.d.ts.map +1 -1
  259. package/dist/components/MessageList/MessageNotification.js +1 -1
  260. package/dist/components/MessageList/VirtualizedMessageList.d.ts +7 -7
  261. package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
  262. package/dist/components/MessageList/VirtualizedMessageList.js +39 -10
  263. package/dist/components/MessageList/hooks/useEnrichedMessages.d.ts +6 -6
  264. package/dist/components/MessageList/hooks/useEnrichedMessages.d.ts.map +1 -1
  265. package/dist/components/MessageList/hooks/useGiphyPreview.d.ts +4 -4
  266. package/dist/components/MessageList/hooks/useGiphyPreview.d.ts.map +1 -1
  267. package/dist/components/MessageList/hooks/useLastReadData.d.ts +5 -5
  268. package/dist/components/MessageList/hooks/useLastReadData.d.ts.map +1 -1
  269. package/dist/components/MessageList/hooks/useMessageListElements.d.ts +6 -6
  270. package/dist/components/MessageList/hooks/useMessageListElements.d.ts.map +1 -1
  271. package/dist/components/MessageList/hooks/useMessageListScrollManager.d.ts +4 -4
  272. package/dist/components/MessageList/hooks/useMessageListScrollManager.d.ts.map +1 -1
  273. package/dist/components/MessageList/hooks/useNewMessageNotification.d.ts +2 -2
  274. package/dist/components/MessageList/hooks/useNewMessageNotification.d.ts.map +1 -1
  275. package/dist/components/MessageList/hooks/usePrependMessagesCount.d.ts +2 -2
  276. package/dist/components/MessageList/hooks/usePrependMessagesCount.d.ts.map +1 -1
  277. package/dist/components/MessageList/hooks/useScrollLocationLogic.d.ts +4 -4
  278. package/dist/components/MessageList/hooks/useScrollLocationLogic.d.ts.map +1 -1
  279. package/dist/components/MessageList/hooks/useShouldForceScrollToBottom.d.ts +2 -2
  280. package/dist/components/MessageList/hooks/useShouldForceScrollToBottom.d.ts.map +1 -1
  281. package/dist/components/MessageList/utils.d.ts +11 -11
  282. package/dist/components/MessageList/utils.d.ts.map +1 -1
  283. package/dist/components/Modal/Modal.d.ts.map +1 -1
  284. package/dist/components/Modal/Modal.js +8 -4
  285. package/dist/components/Reactions/ReactionSelector.d.ts +4 -4
  286. package/dist/components/Reactions/ReactionSelector.d.ts.map +1 -1
  287. package/dist/components/Reactions/ReactionSelector.js +7 -6
  288. package/dist/components/Reactions/ReactionsList.d.ts +4 -4
  289. package/dist/components/Reactions/ReactionsList.d.ts.map +1 -1
  290. package/dist/components/Reactions/ReactionsList.js +5 -4
  291. package/dist/components/Reactions/SimpleReactionsList.d.ts +4 -4
  292. package/dist/components/Reactions/SimpleReactionsList.d.ts.map +1 -1
  293. package/dist/components/Reactions/SimpleReactionsList.js +1 -1
  294. package/dist/components/SafeAnchor/SafeAnchor.d.ts.map +1 -1
  295. package/dist/components/SafeAnchor/SafeAnchor.js +1 -1
  296. package/dist/components/Thread/Thread.d.ts +10 -10
  297. package/dist/components/Thread/Thread.d.ts.map +1 -1
  298. package/dist/components/Thread/Thread.js +1 -1
  299. package/dist/components/TypingIndicator/TypingIndicator.d.ts +4 -4
  300. package/dist/components/TypingIndicator/TypingIndicator.d.ts.map +1 -1
  301. package/dist/components/Window/Window.d.ts +4 -4
  302. package/dist/components/Window/Window.d.ts.map +1 -1
  303. package/dist/components/Window/Window.js +1 -4
  304. package/dist/context/ChannelActionContext.d.ts +23 -26
  305. package/dist/context/ChannelActionContext.d.ts.map +1 -1
  306. package/dist/context/ChannelStateContext.d.ts +22 -21
  307. package/dist/context/ChannelStateContext.d.ts.map +1 -1
  308. package/dist/context/ChatContext.d.ts +12 -12
  309. package/dist/context/ChatContext.d.ts.map +1 -1
  310. package/dist/context/ComponentContext.d.ts +27 -27
  311. package/dist/context/ComponentContext.d.ts.map +1 -1
  312. package/dist/context/MessageContext.d.ts +16 -16
  313. package/dist/context/MessageContext.d.ts.map +1 -1
  314. package/dist/context/MessageInputContext.d.ts +7 -7
  315. package/dist/context/MessageInputContext.d.ts.map +1 -1
  316. package/dist/context/TypingContext.d.ts +8 -8
  317. package/dist/context/TypingContext.d.ts.map +1 -1
  318. package/dist/css/index.css +1 -1
  319. package/dist/i18n/Streami18n.d.ts +1 -0
  320. package/dist/i18n/Streami18n.d.ts.map +1 -1
  321. package/dist/i18n/de.json +1 -0
  322. package/dist/i18n/en.json +1 -0
  323. package/dist/i18n/es.json +1 -0
  324. package/dist/i18n/fr.json +1 -0
  325. package/dist/i18n/hi.json +1 -0
  326. package/dist/i18n/it.json +1 -0
  327. package/dist/i18n/ja.json +1 -0
  328. package/dist/i18n/ko.json +1 -0
  329. package/dist/i18n/nl.json +1 -0
  330. package/dist/i18n/pt.json +1 -0
  331. package/dist/i18n/ru.json +1 -0
  332. package/dist/i18n/tr.json +1 -0
  333. package/dist/index.cjs.js +353 -301
  334. package/dist/index.cjs.js.map +1 -1
  335. package/dist/scss/ChannelSearch.scss +3 -0
  336. package/dist/scss/Gallery.scss +6 -0
  337. package/dist/scss/LoadMoreButton.scss +1 -0
  338. package/dist/scss/Message.scss +19 -0
  339. package/dist/scss/MessageActions.scss +9 -0
  340. package/dist/scss/MessageInput.scss +11 -0
  341. package/dist/scss/MessageInputFlat.scss +15 -0
  342. package/dist/scss/MessageTeam.scss +8 -0
  343. package/dist/scss/Modal.scss +4 -0
  344. package/dist/scss/ReactionList.scss +7 -0
  345. package/dist/scss/ReactionSelector.scss +7 -0
  346. package/dist/scss/SendButton.scss +5 -0
  347. package/dist/scss/SmallMessageInput.scss +12 -0
  348. package/dist/scss/Thread.scss +24 -0
  349. package/dist/scss/_base.scss +4 -12
  350. package/dist/scss/_variables.scss +4 -1
  351. package/dist/scss/index.scss +1 -1
  352. package/dist/scss/vendor/react-file-utils.scss +2 -0
  353. package/dist/scss/vendor/react-image-gallery.scss +224 -0
  354. package/dist/types/types.d.ts +15 -9
  355. package/dist/types/types.d.ts.map +1 -1
  356. package/dist/utils.d.ts +5 -5
  357. package/dist/utils.d.ts.map +1 -1
  358. package/dist/utils.js +24 -3
  359. package/dist/version.d.ts +1 -1
  360. package/dist/version.d.ts.map +1 -1
  361. package/dist/version.js +1 -1
  362. package/package.json +12 -9
  363. package/dist/components/Gallery/ModalImage.d.ts +0 -9
  364. package/dist/components/Gallery/ModalImage.d.ts.map +0 -1
  365. package/dist/components/Gallery/ModalImage.js +0 -6
  366. package/dist/scss/ModalImage.scss +0 -11
package/dist/index.cjs.js CHANGED
@@ -10,7 +10,7 @@ var calendar = require('dayjs/plugin/calendar');
10
10
  var localizedFormat = require('dayjs/plugin/localizedFormat');
11
11
  var prettybytes = require('pretty-bytes');
12
12
  var reactFileUtils = require('react-file-utils');
13
- var Carousel = require('react-images');
13
+ var ImageGallery = require('react-image-gallery');
14
14
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
15
15
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
16
16
  var emojiRegex = require('emoji-regex');
@@ -30,7 +30,6 @@ var _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');
30
30
  var PropTypes = require('prop-types');
31
31
  var Textarea = require('react-textarea-autosize');
32
32
  var getCaretCoordinates = require('textarea-caret');
33
- var CustomEvent = require('custom-event');
34
33
  var reactIs = require('react-is');
35
34
  var debounce = require('lodash.debounce');
36
35
  var throttle = require('lodash.throttle');
@@ -84,7 +83,7 @@ var Dayjs__default = /*#__PURE__*/_interopDefaultLegacy(Dayjs);
84
83
  var calendar__default = /*#__PURE__*/_interopDefaultLegacy(calendar);
85
84
  var localizedFormat__default = /*#__PURE__*/_interopDefaultLegacy(localizedFormat);
86
85
  var prettybytes__default = /*#__PURE__*/_interopDefaultLegacy(prettybytes);
87
- var Carousel__default = /*#__PURE__*/_interopDefaultLegacy(Carousel);
86
+ var ImageGallery__default = /*#__PURE__*/_interopDefaultLegacy(ImageGallery);
88
87
  var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
89
88
  var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
90
89
  var emojiRegex__default = /*#__PURE__*/_interopDefaultLegacy(emojiRegex);
@@ -104,7 +103,6 @@ var _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeO
104
103
  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
105
104
  var Textarea__default = /*#__PURE__*/_interopDefaultLegacy(Textarea);
106
105
  var getCaretCoordinates__default = /*#__PURE__*/_interopDefaultLegacy(getCaretCoordinates);
107
- var CustomEvent__default = /*#__PURE__*/_interopDefaultLegacy(CustomEvent);
108
106
  var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
109
107
  var throttle__default = /*#__PURE__*/_interopDefaultLegacy(throttle);
110
108
  var deepequal__default = /*#__PURE__*/_interopDefaultLegacy(deepequal);
@@ -251,9 +249,9 @@ var UnMemoizedAudio = function (props) {
251
249
  React__default['default'].createElement("audio", { ref: audioRef },
252
250
  React__default['default'].createElement("source", { "data-testid": 'audio-source', src: asset_url, type: 'audio/mp3' })),
253
251
  React__default['default'].createElement("div", { className: 'str-chat__audio__image' },
254
- React__default['default'].createElement("div", { className: 'str-chat__audio__image--overlay' }, !isPlaying ? (React__default['default'].createElement("div", { className: 'str-chat__audio__image--button', "data-testid": 'play-audio', onClick: function () { return setIsPlaying(true); } },
252
+ React__default['default'].createElement("div", { className: 'str-chat__audio__image--overlay' }, !isPlaying ? (React__default['default'].createElement("button", { className: 'str-chat__audio__image--button', "data-testid": 'play-audio', onClick: function () { return setIsPlaying(true); } },
255
253
  React__default['default'].createElement("svg", { height: '40', viewBox: '0 0 64 64', width: '40', xmlns: 'http://www.w3.org/2000/svg' },
256
- React__default['default'].createElement("path", { d: 'M32 58c14.36 0 26-11.64 26-26S46.36 6 32 6 6 17.64 6 32s11.64 26 26 26zm0 6C14.327 64 0 49.673 0 32 0 14.327 14.327 0 32 0c17.673 0 32 14.327 32 32 0 17.673-14.327 32-32 32zm13.237-28.412L26.135 45.625a3.27 3.27 0 0 1-4.426-1.4 3.319 3.319 0 0 1-.372-1.47L21 23.36c-.032-1.823 1.41-3.327 3.222-3.358a3.263 3.263 0 0 1 1.473.322l19.438 9.36a3.311 3.311 0 0 1 .103 5.905z', fillRule: 'nonzero' })))) : (React__default['default'].createElement("div", { className: 'str-chat__audio__image--button', "data-testid": 'pause-audio', onClick: function () { return setIsPlaying(false); } },
254
+ React__default['default'].createElement("path", { d: 'M32 58c14.36 0 26-11.64 26-26S46.36 6 32 6 6 17.64 6 32s11.64 26 26 26zm0 6C14.327 64 0 49.673 0 32 0 14.327 14.327 0 32 0c17.673 0 32 14.327 32 32 0 17.673-14.327 32-32 32zm13.237-28.412L26.135 45.625a3.27 3.27 0 0 1-4.426-1.4 3.319 3.319 0 0 1-.372-1.47L21 23.36c-.032-1.823 1.41-3.327 3.222-3.358a3.263 3.263 0 0 1 1.473.322l19.438 9.36a3.311 3.311 0 0 1 .103 5.905z', fillRule: 'nonzero' })))) : (React__default['default'].createElement("button", { className: 'str-chat__audio__image--button', "data-testid": 'pause-audio', onClick: function () { return setIsPlaying(false); } },
257
255
  React__default['default'].createElement("svg", { height: '40', viewBox: '0 0 64 64', width: '40', xmlns: 'http://www.w3.org/2000/svg' },
258
256
  React__default['default'].createElement("path", { d: 'M32 58.215c14.478 0 26.215-11.737 26.215-26.215S46.478 5.785 32 5.785 5.785 17.522 5.785 32 17.522 58.215 32 58.215zM32 64C14.327 64 0 49.673 0 32 0 14.327 14.327 0 32 0c17.673 0 32 14.327 32 32 0 17.673-14.327 32-32 32zm-7.412-45.56h2.892a2.17 2.17 0 0 1 2.17 2.17v23.865a2.17 2.17 0 0 1-2.17 2.17h-2.892a2.17 2.17 0 0 1-2.17-2.17V20.61a2.17 2.17 0 0 1 2.17-2.17zm12.293 0h2.893a2.17 2.17 0 0 1 2.17 2.17v23.865a2.17 2.17 0 0 1-2.17 2.17h-2.893a2.17 2.17 0 0 1-2.17-2.17V20.61a2.17 2.17 0 0 1 2.17-2.17z', fillRule: 'nonzero' }))))),
259
257
  image_url && React__default['default'].createElement("img", { alt: "" + description, src: image_url })),
@@ -274,7 +272,7 @@ var UnMemoizedSafeAnchor = function (props) {
274
272
  if (!href)
275
273
  return null;
276
274
  var sanitized = sanitizeUrl.sanitizeUrl(href);
277
- return (React__default['default'].createElement("a", { className: className, download: download, href: sanitized, rel: rel, target: target }, children));
275
+ return (React__default['default'].createElement("a", { "aria-label": 'Attachment', className: className, download: download, href: sanitized, rel: rel, target: target }, children));
278
276
  };
279
277
  var SafeAnchor = React__default['default'].memo(UnMemoizedSafeAnchor);
280
278
 
@@ -323,10 +321,47 @@ var withTranslationContext = function (Component) {
323
321
  return WithTranslationContextComponent;
324
322
  };
325
323
 
324
+ var ChannelStateContext = React__default['default'].createContext(undefined);
325
+ var ChannelStateProvider = function (_a) {
326
+ var children = _a.children, value = _a.value;
327
+ return (React__default['default'].createElement(ChannelStateContext.Provider, { value: value }, children));
328
+ };
329
+ var useChannelStateContext = function (componentName) {
330
+ var contextValue = React.useContext(ChannelStateContext);
331
+ if (!contextValue) {
332
+ console.warn("The useChannelStateContext hook was called outside of the ChannelStateContext provider. Make sure this hook is called within a child of the Channel component. The errored call is located in the " + componentName + " component.");
333
+ return {};
334
+ }
335
+ return contextValue;
336
+ };
337
+ /**
338
+ * Typescript currently does not support partial inference, so if ChannelStateContext
339
+ * typing is desired while using the HOC withChannelStateContext, the Props for the
340
+ * wrapped component must be provided as the first generic.
341
+ */
342
+ var withChannelStateContext = function (Component) {
343
+ var WithChannelStateContextComponent = function (props) {
344
+ var channelStateContext = useChannelStateContext();
345
+ return React__default['default'].createElement(Component, __assign({}, props, channelStateContext));
346
+ };
347
+ WithChannelStateContextComponent.displayName = (Component.displayName ||
348
+ Component.name ||
349
+ 'Component').replace('Base', '');
350
+ return WithChannelStateContextComponent;
351
+ };
352
+
326
353
  var UnMemoizedCard = function (props) {
327
- var image_url = props.image_url, og_scrape_url = props.og_scrape_url, text = props.text, thumb_url = props.thumb_url, title = props.title, title_link = props.title_link, type = props.type;
354
+ var giphy = props.giphy, image_url = props.image_url, og_scrape_url = props.og_scrape_url, text = props.text, thumb_url = props.thumb_url, title = props.title, title_link = props.title_link, type = props.type;
328
355
  var t = useTranslationContext('Card').t;
356
+ var giphyVersionName = useChannelStateContext('Card').giphyVersion;
329
357
  var image = thumb_url || image_url;
358
+ var dimensions = {};
359
+ if (type === 'giphy' && typeof giphy !== 'undefined') {
360
+ var giphyVersion = giphy[giphyVersionName];
361
+ image = giphyVersion.url;
362
+ dimensions.height = giphyVersion.height;
363
+ dimensions.width = giphyVersion.width;
364
+ }
330
365
  var trimUrl = function (url) {
331
366
  if (url !== undefined && url !== null) {
332
367
  var trimmedUrl = url.replace(/^(?:https?:\/\/)?(?:www\.)?/i, '').split('/')[0];
@@ -344,7 +379,7 @@ var UnMemoizedCard = function (props) {
344
379
  }
345
380
  return (React__default['default'].createElement("div", { className: "str-chat__message-attachment-card str-chat__message-attachment-card--" + type },
346
381
  image && (React__default['default'].createElement("div", { className: 'str-chat__message-attachment-card--header' },
347
- React__default['default'].createElement("img", { alt: image, src: image }))),
382
+ React__default['default'].createElement("img", __assign({ alt: image, src: image }, dimensions)))),
348
383
  React__default['default'].createElement("div", { className: 'str-chat__message-attachment-card--content' },
349
384
  React__default['default'].createElement("div", { className: 'str-chat__message-attachment-card--flex' },
350
385
  title && React__default['default'].createElement("div", { className: 'str-chat__message-attachment-card--title' }, title),
@@ -366,19 +401,46 @@ var UnMemoizedFileAttachment = function (props) {
366
401
  };
367
402
  var FileAttachment = React__default['default'].memo(UnMemoizedFileAttachment);
368
403
 
369
- var ModalImage = function (props) {
370
- var data = props.data;
371
- return (React__default['default'].createElement("div", { className: 'str-chat__modal-image__wrapper', "data-testid": 'modal-image' },
372
- React__default['default'].createElement("img", { className: 'str-chat__modal-image__image', src: data.source })));
404
+ var Modal = function (props) {
405
+ var children = props.children, onClose = props.onClose, open = props.open;
406
+ var t = useTranslationContext('Modal').t;
407
+ var innerRef = React.useRef(null);
408
+ var closeRef = React.useRef(null);
409
+ var handleClick = function (event) {
410
+ var _a, _b;
411
+ if ((event.target instanceof HTMLDivElement &&
412
+ !((_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target)) &&
413
+ onClose) ||
414
+ (event.target instanceof HTMLButtonElement &&
415
+ ((_b = closeRef.current) === null || _b === void 0 ? void 0 : _b.contains(event.target)) &&
416
+ onClose)) {
417
+ onClose();
418
+ }
419
+ };
420
+ React.useEffect(function () {
421
+ if (!open)
422
+ return function () { return null; };
423
+ var handleEscKey = function (event) {
424
+ if (event instanceof KeyboardEvent && event.key === 'Escape' && onClose) {
425
+ onClose();
426
+ }
427
+ };
428
+ document.addEventListener('keypress', handleEscKey);
429
+ return function () { return document.removeEventListener('keypress', handleEscKey); };
430
+ }, [onClose, open]);
431
+ var openClasses = open ? 'str-chat__modal--open' : 'str-chat__modal--closed';
432
+ return (React__default['default'].createElement("div", { className: "str-chat__modal " + openClasses, onClick: handleClick },
433
+ React__default['default'].createElement("button", { className: 'str-chat__modal__close-button', ref: closeRef, title: 'Close' },
434
+ t('Close'),
435
+ React__default['default'].createElement("svg", { height: '10', width: '10', xmlns: 'http://www.w3.org/2000/svg' },
436
+ React__default['default'].createElement("path", { d: 'M9.916 1.027L8.973.084 5 4.058 1.027.084l-.943.943L4.058 5 .084 8.973l.943.943L5 5.942l3.973 3.974.943-.943L5.942 5z', fillRule: 'evenodd' }))),
437
+ React__default['default'].createElement("div", { className: 'str-chat__modal__inner', ref: innerRef }, children)));
373
438
  };
374
439
 
375
440
  var ModalComponent = function (props) {
376
441
  var images = props.images, index = props.index, modalIsOpen = props.modalIsOpen, toggleModal = props.toggleModal;
377
- return (React__default['default'].createElement(Carousel.ModalGateway, null, modalIsOpen ? (React__default['default'].createElement(Carousel.Modal, { onClose: toggleModal },
378
- React__default['default'].createElement(Carousel__default['default'], { components: {
379
- // @ts-expect-error
380
- View: ModalImage,
381
- }, currentIndex: index, views: images }))) : null));
442
+ return (React__default['default'].createElement(Modal, { onClose: toggleModal, open: modalIsOpen },
443
+ React__default['default'].createElement(ImageGallery__default['default'], { items: images, showIndex: true, showPlayButton: false, showThumbnails: false, startIndex: index })));
382
444
  };
383
445
 
384
446
  var UnMemoizedGallery = function (props) {
@@ -397,14 +459,16 @@ var UnMemoizedGallery = function (props) {
397
459
  };
398
460
  var formattedArray = React.useMemo(function () {
399
461
  return images.map(function (image) { return ({
462
+ original: image.image_url || image.thumb_url || '',
463
+ originalAlt: 'User uploaded content',
400
464
  source: image.image_url || image.thumb_url || '',
401
465
  }); });
402
466
  }, [images]);
403
- var renderImages = images.slice(0, 3).map(function (image, i) { return (React__default['default'].createElement("div", { className: 'str-chat__gallery-image', "data-testid": 'gallery-image', key: "gallery-image-" + i, onClick: function () { return toggleModal(i); } },
404
- React__default['default'].createElement("img", { src: image.image_url || image.thumb_url }))); });
467
+ var renderImages = images.slice(0, 3).map(function (image, i) { return (React__default['default'].createElement("button", { className: 'str-chat__gallery-image', "data-testid": 'gallery-image', key: "gallery-image-" + i, onClick: function () { return toggleModal(i); } },
468
+ React__default['default'].createElement("img", { alt: 'User uploaded content', src: image.image_url || image.thumb_url }))); });
405
469
  return (React__default['default'].createElement("div", { className: "str-chat__gallery " + (images.length > 3 ? 'str-chat__gallery--square' : '') },
406
470
  renderImages,
407
- images.length > 3 && (React__default['default'].createElement("div", { className: 'str-chat__gallery-placeholder', onClick: function () { return toggleModal(3); }, style: {
471
+ images.length > 3 && (React__default['default'].createElement("button", { className: 'str-chat__gallery-placeholder', onClick: function () { return toggleModal(3); }, style: {
408
472
  backgroundImage: "url(" + images[3].image_url + ")",
409
473
  } },
410
474
  React__default['default'].createElement("p", null, t('{{ imageCount }} more', {
@@ -424,15 +488,19 @@ var ImageComponent = function (props) {
424
488
  var _a = React.useState(false), modalIsOpen = _a[0], setModalIsOpen = _a[1];
425
489
  var fallback = props.fallback, image_url = props.image_url, thumb_url = props.thumb_url;
426
490
  var imageSrc = sanitizeUrl.sanitizeUrl(image_url || thumb_url);
427
- var formattedArray = [{ source: imageSrc }];
491
+ var formattedArray = [
492
+ { original: imageSrc, originalAlt: 'User uploaded content', source: imageSrc },
493
+ ];
428
494
  var toggleModal = function () { return setModalIsOpen(!modalIsOpen); };
429
495
  return (React__default['default'].createElement(React__default['default'].Fragment, null,
430
- React__default['default'].createElement("img", { alt: fallback, className: 'str-chat__message-attachment--img', "data-testid": 'image-test', onClick: toggleModal, src: imageSrc }),
496
+ React__default['default'].createElement("img", { alt: fallback, className: 'str-chat__message-attachment--img', "data-testid": 'image-test', onClick: toggleModal, onKeyPress: toggleModal, src: imageSrc, tabIndex: 0 }),
431
497
  React__default['default'].createElement(ModalComponent, { images: formattedArray, index: 0, modalIsOpen: modalIsOpen, toggleModal: toggleModal })));
432
498
  };
433
499
 
434
500
  var SUPPORTED_VIDEO_FORMATS = ['video/mp4', 'video/ogg', 'video/webm', 'video/quicktime'];
435
- var isGalleryAttachmentType = function (output) { return output.images != null; };
501
+ var isGalleryAttachmentType = function (output) {
502
+ return output.images != null;
503
+ };
436
504
  var isAudioAttachment = function (attachment) { return attachment.type === 'audio'; };
437
505
  var isFileAttachment = function (attachment) {
438
506
  return attachment.type === 'file' ||
@@ -600,14 +668,12 @@ var Item = /*#__PURE__*/React__default['default'].forwardRef(function Item(props
600
668
  return /*#__PURE__*/React__default['default'].createElement("li", {
601
669
  className: "rta__item ".concat(className || ''),
602
670
  style: style
603
- }, /*#__PURE__*/React__default['default'].createElement("div", {
671
+ }, /*#__PURE__*/React__default['default'].createElement("button", {
604
672
  className: "rta__entity ".concat(selected ? 'rta__entity--selected' : ''),
605
673
  onClick: onClickHandler,
606
674
  onFocus: selectItem,
607
675
  onMouseEnter: selectItem,
608
- ref: innerRef,
609
- role: "button",
610
- tabIndex: 0
676
+ ref: innerRef
611
677
  }, /*#__PURE__*/React__default['default'].createElement(Component, {
612
678
  entity: item,
613
679
  selected: selected
@@ -684,6 +750,23 @@ var messageCodeBlocks = function (message) {
684
750
  var matches = message.match(codeRegex);
685
751
  return matches || [];
686
752
  };
753
+ var detectHttp = /(http(s?):\/\/)?(www\.)?/;
754
+ function formatUrlForDisplay(url) {
755
+ try {
756
+ return decodeURIComponent(url).replace(detectHttp, '');
757
+ }
758
+ catch (e) {
759
+ return url;
760
+ }
761
+ }
762
+ function encodeDecode(url) {
763
+ try {
764
+ return encodeURI(decodeURIComponent(url));
765
+ }
766
+ catch (error) {
767
+ return url;
768
+ }
769
+ }
687
770
  var markDownRenderers = {
688
771
  // eslint-disable-next-line react/display-name
689
772
  link: function (props) {
@@ -748,7 +831,6 @@ var renderText = function (text, mentioned_users, options) {
748
831
  var newText = text;
749
832
  var markdownLinks = matchMarkdownLinks(newText);
750
833
  var codeBlocks = messageCodeBlocks(newText);
751
- var detectHttp = /(http(s?):\/\/)?(www\.)?/;
752
834
  // extract all valid links/emails within text and replace it with proper markup
753
835
  uniqBy__default['default'](linkify__namespace.find(newText), 'value').forEach(function (_a) {
754
836
  var href = _a.href, type = _a.type, value = _a.value;
@@ -764,8 +846,12 @@ var renderText = function (text, mentioned_users, options) {
764
846
  });
765
847
  if (noParsingNeeded.length > 0 || linkIsInBlock)
766
848
  return;
767
- var displayLink = type === 'email' ? value : value.replace(detectHttp, '');
768
- newText = newText.replace(new RegExp(escapeRegExp(value), 'g'), "[" + displayLink + "](" + encodeURI(decodeURI(href)) + ")");
849
+ try {
850
+ var displayLink = type === 'email' ? value : formatUrlForDisplay(href);
851
+ newText = newText.replace(new RegExp(escapeRegExp(value), 'g'), "[" + displayLink + "](" + encodeDecode(href) + ")");
852
+ }
853
+ catch (e) {
854
+ }
769
855
  });
770
856
  var plugins = [emojiMarkdownPlugin];
771
857
  if (mentioned_users === null || mentioned_users === void 0 ? void 0 : mentioned_users.length) {
@@ -1025,7 +1111,6 @@ var List = function List(props) {
1025
1111
 
1026
1112
  if ((event.which === KEY_CODES.ENTER || event.which === KEY_CODES.TAB) && selectedItem !== undefined) {
1027
1113
  handleClick(event);
1028
- return setSelectedItem(undefined);
1029
1114
  }
1030
1115
 
1031
1116
  return null;
@@ -1324,7 +1409,7 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
1324
1409
  value: newText
1325
1410
  }, function () {
1326
1411
  // fire onChange event after successful selection
1327
- var e = new CustomEvent__default['default']('change', {
1412
+ var e = new CustomEvent('change', {
1328
1413
  bubbles: true
1329
1414
  });
1330
1415
 
@@ -1379,7 +1464,7 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
1379
1464
  value: valueToReplace
1380
1465
  }, function () {
1381
1466
  // fire onChange event after successful selection
1382
- var e = new CustomEvent__default['default']('change', {
1467
+ var e = new CustomEvent('change', {
1383
1468
  bubbles: true
1384
1469
  });
1385
1470
 
@@ -1534,13 +1619,6 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
1534
1619
  return data;
1535
1620
  });
1536
1621
 
1537
- _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "_createRegExp", function () {
1538
- var trigger = _this.props.trigger; // negative lookahead to match only the trigger + the actual token = "bladhwd:adawd:word test" => ":word"
1539
- // https://stackoverflow.com/a/8057827/2719917
1540
-
1541
- _this.tokenRegExp = new RegExp("([".concat(Object.keys(trigger).join(''), "])(?:(?!\\1)[^\\s])*$"));
1542
- });
1543
-
1544
1622
  _defineProperty__default['default'](_assertThisInitialized__default['default'](_this), "_closeAutocomplete", function () {
1545
1623
  _this.setState({
1546
1624
  currentTrigger: null,
@@ -1759,8 +1837,6 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
1759
1837
  _value = _this$props6.value; // TODO: it would be better to have the parent control state...
1760
1838
  // if (value) this.state.value = value;
1761
1839
 
1762
- _this._createRegExp();
1763
-
1764
1840
  if (!loadingComponent) {
1765
1841
  throw new Error('RTA: loadingComponent is not defined');
1766
1842
  }
@@ -1815,40 +1891,12 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
1815
1891
  });
1816
1892
  Listeners.startListen();
1817
1893
  }
1818
- }, {
1819
- key: "UNSAFE_componentWillReceiveProps",
1820
- value: function UNSAFE_componentWillReceiveProps(nextProps) {
1821
- this._update(nextProps);
1822
- }
1823
1894
  }, {
1824
1895
  key: "componentWillUnmount",
1825
1896
  value: function componentWillUnmount() {
1826
1897
  Listeners.stopListen();
1827
1898
  Listeners.remove(this.state.listenerIndex);
1828
1899
  }
1829
- }, {
1830
- key: "_update",
1831
- value: // TODO: This is an anti pattern in react, should come up with a better way
1832
- function _update(_ref) {
1833
- var trigger = _ref.trigger,
1834
- value = _ref.value;
1835
- var oldValue = this.state.value;
1836
- var oldTrigger = this.props.trigger;
1837
- if (value !== oldValue || !oldValue) this.setState({
1838
- value: value
1839
- });
1840
- /**
1841
- * check if trigger chars are changed, if so, change the regexp accordingly
1842
- */
1843
-
1844
- if (Object.keys(trigger).join('') !== Object.keys(oldTrigger).join('')) {
1845
- this._createRegExp();
1846
- }
1847
- }
1848
- /**
1849
- * Close autocomplete, also clean up trigger (to avoid slow promises)
1850
- */
1851
-
1852
1900
  }, {
1853
1901
  key: "renderSuggestionListContainer",
1854
1902
  value: function renderSuggestionListContainer() {
@@ -1869,8 +1917,8 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
1869
1917
  if (triggerProps.values && triggerProps.currentTrigger && !(disableMentions && triggerProps.currentTrigger === '@')) {
1870
1918
  return /*#__PURE__*/React__default['default'].createElement("div", {
1871
1919
  className: "rta__autocomplete ".concat(dropdownClassName || ''),
1872
- ref: function ref(_ref2) {
1873
- _this3.dropdownRef = _ref2;
1920
+ ref: function ref(_ref) {
1921
+ _this3.dropdownRef = _ref;
1874
1922
  },
1875
1923
  style: dropdownStyle
1876
1924
  }, /*#__PURE__*/React__default['default'].createElement(SuggestionList, _extends__default['default']({
@@ -1912,14 +1960,34 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
1912
1960
  onFocus: this.props.onFocus,
1913
1961
  onScroll: this._onScrollHandler,
1914
1962
  onSelect: this._selectHandler,
1915
- ref: function ref(_ref3) {
1916
- if (_this4.props.innerRef) _this4.props.innerRef(_ref3);
1917
- _this4.textareaRef = _ref3;
1963
+ ref: function ref(_ref2) {
1964
+ if (_this4.props.innerRef) _this4.props.innerRef(_ref2);
1965
+ _this4.textareaRef = _ref2;
1918
1966
  },
1919
1967
  style: style,
1920
1968
  value: value
1921
1969
  }, this.props.additionalTextareaProps)));
1922
1970
  }
1971
+ }], [{
1972
+ key: "getDerivedStateFromProps",
1973
+ value:
1974
+ /**
1975
+ * setup to emulate the UNSAFE_componentWillReceiveProps
1976
+ */
1977
+ function getDerivedStateFromProps(props, state) {
1978
+ if (props.value !== state.propsValue || !state.value) {
1979
+ return {
1980
+ propsValue: props.value,
1981
+ value: props.value
1982
+ };
1983
+ } else {
1984
+ return null;
1985
+ }
1986
+ }
1987
+ /**
1988
+ * Close autocomplete, also clean up trigger (to avoid slow promises)
1989
+ */
1990
+
1923
1991
  }]);
1924
1992
 
1925
1993
  return ReactTextareaAutocomplete;
@@ -2065,7 +2133,7 @@ var getStrippedEmojiData = function (data) { return (__assign(__assign({}, data)
2065
2133
 
2066
2134
  var useCreateChannelStateContext = function (value) {
2067
2135
  var _a;
2068
- var acceptedFiles = value.acceptedFiles, channel = value.channel, _b = value.channelCapabilitiesArray, channelCapabilitiesArray = _b === void 0 ? [] : _b, channelConfig = value.channelConfig, dragAndDropWindow = value.dragAndDropWindow, error = value.error, hasMore = value.hasMore, loading = value.loading, loadingMore = value.loadingMore, maxNumberOfFiles = value.maxNumberOfFiles, members = value.members, _c = value.messages, messages = _c === void 0 ? [] : _c, multipleUploads = value.multipleUploads, mutes = value.mutes, notifications = value.notifications, pinnedMessages = value.pinnedMessages, quotedMessage = value.quotedMessage, _d = value.read, read = _d === void 0 ? {} : _d, skipMessageDataMemoization = value.skipMessageDataMemoization, thread = value.thread, threadHasMore = value.threadHasMore, threadLoadingMore = value.threadLoadingMore, _e = value.threadMessages, threadMessages = _e === void 0 ? [] : _e, watcherCount = value.watcherCount, watcher_count = value.watcher_count, watchers = value.watchers;
2136
+ var acceptedFiles = value.acceptedFiles, channel = value.channel, _b = value.channelCapabilitiesArray, channelCapabilitiesArray = _b === void 0 ? [] : _b, channelConfig = value.channelConfig, dragAndDropWindow = value.dragAndDropWindow, giphyVersion = value.giphyVersion, error = value.error, hasMore = value.hasMore, loading = value.loading, loadingMore = value.loadingMore, maxNumberOfFiles = value.maxNumberOfFiles, members = value.members, _c = value.messages, messages = _c === void 0 ? [] : _c, multipleUploads = value.multipleUploads, mutes = value.mutes, notifications = value.notifications, pinnedMessages = value.pinnedMessages, quotedMessage = value.quotedMessage, _d = value.read, read = _d === void 0 ? {} : _d, skipMessageDataMemoization = value.skipMessageDataMemoization, thread = value.thread, threadHasMore = value.threadHasMore, threadLoadingMore = value.threadLoadingMore, _e = value.threadMessages, threadMessages = _e === void 0 ? [] : _e, watcherCount = value.watcherCount, watcher_count = value.watcher_count, watchers = value.watchers;
2069
2137
  var channelId = channel.cid;
2070
2138
  var lastRead = channel.initialized && ((_a = channel.lastRead()) === null || _a === void 0 ? void 0 : _a.getTime());
2071
2139
  var membersLength = Object.keys(members || []).length;
@@ -2112,6 +2180,7 @@ var useCreateChannelStateContext = function (value) {
2112
2180
  channelConfig: channelConfig,
2113
2181
  dragAndDropWindow: dragAndDropWindow,
2114
2182
  error: error,
2183
+ giphyVersion: giphyVersion,
2115
2184
  hasMore: hasMore,
2116
2185
  loading: loading,
2117
2186
  loadingMore: loadingMore,
@@ -2277,35 +2346,6 @@ var LoadingIndicator = React__default['default'].memo(UnMemoizedLoadingIndicator
2277
2346
  return prevProps.color === nextProps.color && prevProps.size === nextProps.size;
2278
2347
  });
2279
2348
 
2280
- var ChannelStateContext = React__default['default'].createContext(undefined);
2281
- var ChannelStateProvider = function (_a) {
2282
- var children = _a.children, value = _a.value;
2283
- return (React__default['default'].createElement(ChannelStateContext.Provider, { value: value }, children));
2284
- };
2285
- var useChannelStateContext = function (componentName) {
2286
- var contextValue = React.useContext(ChannelStateContext);
2287
- if (!contextValue) {
2288
- console.warn("The useChannelStateContext hook was called outside of the ChannelStateContext provider. Make sure this hook is called within a child of the Channel component. The errored call is located in the " + componentName + " component.");
2289
- return {};
2290
- }
2291
- return contextValue;
2292
- };
2293
- /**
2294
- * Typescript currently does not support partial inference, so if ChannelStateContext
2295
- * typing is desired while using the HOC withChannelStateContext, the Props for the
2296
- * wrapped component must be provided as the first generic.
2297
- */
2298
- var withChannelStateContext = function (Component) {
2299
- var WithChannelStateContextComponent = function (props) {
2300
- var channelStateContext = useChannelStateContext();
2301
- return React__default['default'].createElement(Component, __assign({}, props, channelStateContext));
2302
- };
2303
- WithChannelStateContextComponent.displayName = (Component.displayName ||
2304
- Component.name ||
2305
- 'Component').replace('Base', '');
2306
- return WithChannelStateContextComponent;
2307
- };
2308
-
2309
2349
  var useUserRole = function (message, onlySenderCanEdit, disableQuotedMessages) {
2310
2350
  var _a, _b, _c;
2311
2351
  var _d = useChannelStateContext('useUserRole'), channel = _d.channel, _e = _d.channelCapabilities, channelCapabilities = _e === void 0 ? {} : _e, channelConfig = _d.channelConfig;
@@ -2322,7 +2362,7 @@ var useUserRole = function (message, onlySenderCanEdit, disableQuotedMessages) {
2322
2362
  (isMyMessage && channelCapabilities['delete-own-message']);
2323
2363
  var canFlag = !isMyMessage;
2324
2364
  var canMute = !isMyMessage && (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.mutes);
2325
- var canQuote = !disableQuotedMessages;
2365
+ var canQuote = !disableQuotedMessages && channelCapabilities['quote-message'];
2326
2366
  var canReact = (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.reactions) !== false && channelCapabilities['send-reaction'];
2327
2367
  var canReply = (channelConfig === null || channelConfig === void 0 ? void 0 : channelConfig.replies) !== false && channelCapabilities['send-reply'];
2328
2368
  return {
@@ -2519,10 +2559,15 @@ var getMessageActions = function (actions, _a) {
2519
2559
  }
2520
2560
  return messageActionsAfterPermission;
2521
2561
  };
2522
- var showMessageActionsBox = function (actions) {
2562
+ var ACTIONS_NOT_WORKING_IN_THREAD = ['pin', 'react', 'reply'];
2563
+ var showMessageActionsBox = function (actions, inThread) {
2523
2564
  if (actions.length === 0) {
2524
2565
  return false;
2525
2566
  }
2567
+ if (inThread &&
2568
+ actions.filter(function (action) { return !ACTIONS_NOT_WORKING_IN_THREAD.includes(action); }).length === 0) {
2569
+ return false;
2570
+ }
2526
2571
  if (actions.length === 1 && (actions.includes('react') || actions.includes('reply'))) {
2527
2572
  return false;
2528
2573
  }
@@ -2718,8 +2763,7 @@ var CustomMessageActionsList = function (props) {
2718
2763
  var customActionsArray = Object.keys(customMessageActions);
2719
2764
  return (React__default['default'].createElement(React__default['default'].Fragment, null, customActionsArray.map(function (customAction) {
2720
2765
  var customHandler = customMessageActions[customAction];
2721
- return (React__default['default'].createElement("button", { key: customAction, onClick: function (event) { return customHandler(message, event); } },
2722
- React__default['default'].createElement("li", { className: 'str-chat__message-actions-list-item' }, customAction)));
2766
+ return (React__default['default'].createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', key: customAction, onClick: function (event) { return customHandler(message, event); }, role: 'option' }, customAction));
2723
2767
  })));
2724
2768
  };
2725
2769
  var UnMemoizedMessageActionsBox = function (props) {
@@ -2746,32 +2790,26 @@ var UnMemoizedMessageActionsBox = function (props) {
2746
2790
  }, [messageListRect, mine, open]);
2747
2791
  var handleQuote = function () {
2748
2792
  setQuotedMessage(message);
2749
- var elements = document.getElementsByClassName('str-chat__textarea__textarea');
2793
+ var elements = message.parent_id
2794
+ ? document.querySelectorAll('.str-chat__thread .str-chat__textarea__textarea')
2795
+ : document.getElementsByClassName('str-chat__textarea__textarea');
2750
2796
  var textarea = elements.item(0);
2751
2797
  if (textarea instanceof HTMLTextAreaElement) {
2752
2798
  textarea.focus();
2753
2799
  }
2754
2800
  };
2755
2801
  return (React__default['default'].createElement("div", { className: "str-chat__message-actions-box\n " + (open ? 'str-chat__message-actions-box--open' : '') + "\n " + (mine ? 'str-chat__message-actions-box--mine' : '') + "\n " + (reverse ? 'str-chat__message-actions-box--reverse' : '') + "\n ", "data-testid": 'message-actions-box', ref: checkIfReverse },
2756
- React__default['default'].createElement("ul", { className: 'str-chat__message-actions-list' },
2802
+ React__default['default'].createElement("div", { "aria-label": 'Message Options', className: 'str-chat__message-actions-list', role: 'listbox' },
2757
2803
  customMessageActions && (React__default['default'].createElement(CustomMessageActionsList, { customMessageActions: customMessageActions, message: message })),
2758
- messageActions.indexOf(MESSAGE_ACTIONS.quote) > -1 &&
2759
- !message.parent_id &&
2760
- !message.quoted_message && (React__default['default'].createElement("button", { onClick: handleQuote },
2761
- React__default['default'].createElement("li", { className: 'str-chat__message-actions-list-item' }, t('Reply')))),
2762
- messageActions.indexOf(MESSAGE_ACTIONS.pin) > -1 && !message.parent_id && (React__default['default'].createElement("button", { onClick: handlePin },
2763
- React__default['default'].createElement("li", { className: 'str-chat__message-actions-list-item' }, !message.pinned ? t('Pin') : t('Unpin')))),
2764
- messageActions.indexOf(MESSAGE_ACTIONS.flag) > -1 && (React__default['default'].createElement("button", { onClick: handleFlag },
2765
- React__default['default'].createElement("li", { className: 'str-chat__message-actions-list-item' }, t('Flag')))),
2766
- messageActions.indexOf(MESSAGE_ACTIONS.mute) > -1 && (React__default['default'].createElement("button", { onClick: handleMute },
2767
- React__default['default'].createElement("li", { className: 'str-chat__message-actions-list-item' }, isUserMuted() ? t('Unmute') : t('Mute')))),
2768
- messageActions.indexOf(MESSAGE_ACTIONS.edit) > -1 && (React__default['default'].createElement("button", { onClick: handleEdit },
2769
- React__default['default'].createElement("li", { className: 'str-chat__message-actions-list-item' }, t('Edit Message')))),
2770
- messageActions.indexOf(MESSAGE_ACTIONS.delete) > -1 && (React__default['default'].createElement("button", { onClick: handleDelete },
2771
- React__default['default'].createElement("li", { className: 'str-chat__message-actions-list-item' }, t('Delete')))))));
2804
+ messageActions.indexOf(MESSAGE_ACTIONS.quote) > -1 && !message.quoted_message && (React__default['default'].createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', onClick: handleQuote, role: 'option' }, t('Reply'))),
2805
+ messageActions.indexOf(MESSAGE_ACTIONS.pin) > -1 && !message.parent_id && (React__default['default'].createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', onClick: handlePin, role: 'option' }, !message.pinned ? t('Pin') : t('Unpin'))),
2806
+ messageActions.indexOf(MESSAGE_ACTIONS.flag) > -1 && (React__default['default'].createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', onClick: handleFlag, role: 'option' }, t('Flag'))),
2807
+ messageActions.indexOf(MESSAGE_ACTIONS.mute) > -1 && (React__default['default'].createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', onClick: handleMute, role: 'option' }, isUserMuted() ? t('Unmute') : t('Mute'))),
2808
+ messageActions.indexOf(MESSAGE_ACTIONS.edit) > -1 && (React__default['default'].createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', onClick: handleEdit, role: 'option' }, t('Edit Message'))),
2809
+ messageActions.indexOf(MESSAGE_ACTIONS.delete) > -1 && (React__default['default'].createElement("button", { "aria-selected": 'false', className: 'str-chat__message-actions-list-item', onClick: handleDelete, role: 'option' }, t('Delete'))))));
2772
2810
  };
2773
2811
  /**
2774
- * A popup box that displays the available actions on a message, such edit, delete, pin, etc.
2812
+ * A popup box that displays the available actions on a message, such as edit, delete, pin, etc.
2775
2813
  */
2776
2814
  var MessageActionsBox = React__default['default'].memo(UnMemoizedMessageActionsBox);
2777
2815
 
@@ -2787,7 +2825,12 @@ var MessageActions = function (props) {
2787
2825
  var message = propMessage || contextMessage;
2788
2826
  var _d = React.useState(false), actionsBoxOpen = _d[0], setActionsBoxOpen = _d[1];
2789
2827
  var isMuted = React.useCallback(function () { return isUserMuted(message, mutes); }, [message, mutes]);
2790
- var hideOptions = React.useCallback(function () { return setActionsBoxOpen(false); }, []);
2828
+ var hideOptions = React.useCallback(function (event) {
2829
+ if (event instanceof KeyboardEvent && event.key !== 'Escape') {
2830
+ return;
2831
+ }
2832
+ setActionsBoxOpen(false);
2833
+ }, []);
2791
2834
  var messageActions = getMessageActions();
2792
2835
  var messageDeletedAt = !!(message === null || message === void 0 ? void 0 : message.deleted_at);
2793
2836
  React.useEffect(function () {
@@ -2801,19 +2844,21 @@ var MessageActions = function (props) {
2801
2844
  }
2802
2845
  }, [hideOptions, messageDeletedAt]);
2803
2846
  React.useEffect(function () {
2804
- if (actionsBoxOpen) {
2805
- document.addEventListener('click', hideOptions);
2806
- }
2807
- else {
2847
+ if (!actionsBoxOpen)
2848
+ return;
2849
+ document.addEventListener('click', hideOptions);
2850
+ document.addEventListener('keyup', hideOptions);
2851
+ return function () {
2808
2852
  document.removeEventListener('click', hideOptions);
2809
- }
2810
- return function () { return document.removeEventListener('click', hideOptions); };
2853
+ document.removeEventListener('keyup', hideOptions);
2854
+ };
2811
2855
  }, [actionsBoxOpen, hideOptions]);
2812
2856
  if (!messageActions.length && !customMessageActions)
2813
2857
  return null;
2814
2858
  return (React__default['default'].createElement(MessageActionsWrapper, { customWrapperClass: customWrapperClass, inline: inline, setActionsBoxOpen: setActionsBoxOpen },
2815
2859
  React__default['default'].createElement(MessageActionsBox, { getMessageActions: getMessageActions, handleDelete: handleDelete, handleEdit: setEditingState, handleFlag: handleFlag, handleMute: handleMute, handlePin: handlePin, isUserMuted: isMuted, mine: mine ? mine() : isMyMessage(), open: actionsBoxOpen }),
2816
- React__default['default'].createElement(ActionsIcon$1, null)));
2860
+ React__default['default'].createElement("button", { "aria-expanded": actionsBoxOpen, "aria-haspopup": 'true', "aria-label": 'Open Message Actions Menu' },
2861
+ React__default['default'].createElement(ActionsIcon$1, null))));
2817
2862
  };
2818
2863
  var MessageActionsWrapper = function (props) {
2819
2864
  var children = props.children, customWrapperClass = props.customWrapperClass, inline = props.inline, setActionsBoxOpen = props.setActionsBoxOpen;
@@ -2821,7 +2866,7 @@ var MessageActionsWrapper = function (props) {
2821
2866
  var wrapperClass = customWrapperClass || defaultWrapperClass;
2822
2867
  var onClickOptionsAction = function (event) {
2823
2868
  event.stopPropagation();
2824
- setActionsBoxOpen(true);
2869
+ setActionsBoxOpen(function (prev) { return !prev; });
2825
2870
  };
2826
2871
  var wrapperProps = {
2827
2872
  className: wrapperClass,
@@ -2838,7 +2883,7 @@ var UnMemoizedMessageOptions = function (props) {
2838
2883
  var _g = useMessageContext('MessageOptions'), customMessageActions = _g.customMessageActions, getMessageActions = _g.getMessageActions, contextHandleOpenThread = _g.handleOpenThread, initialMessage = _g.initialMessage, isMyMessage = _g.isMyMessage, message = _g.message, onReactionListClick = _g.onReactionListClick, threadList = _g.threadList;
2839
2884
  var handleOpenThread = propHandleOpenThread || contextHandleOpenThread;
2840
2885
  var messageActions = getMessageActions();
2841
- var showActionsBox = showMessageActionsBox(messageActions) || !!customMessageActions;
2886
+ var showActionsBox = showMessageActionsBox(messageActions, threadList) || !!customMessageActions;
2842
2887
  var shouldShowReactions = messageActions.indexOf(MESSAGE_ACTIONS.react) > -1;
2843
2888
  var shouldShowReplies = messageActions.indexOf(MESSAGE_ACTIONS.reply) > -1 && displayReplies && !threadList;
2844
2889
  if (!message.type ||
@@ -2853,15 +2898,15 @@ var UnMemoizedMessageOptions = function (props) {
2853
2898
  if (isMyMessage() && displayLeft) {
2854
2899
  return (React__default['default'].createElement("div", { className: "str-chat__message-" + theme + "__actions", "data-testid": 'message-options-left' },
2855
2900
  showActionsBox && (React__default['default'].createElement(MessageActions, { ActionsIcon: ActionsIcon$1, messageWrapperRef: messageWrapperRef })),
2856
- shouldShowReplies && (React__default['default'].createElement("div", { className: "str-chat__message-" + theme + "__actions__action str-chat__message-" + theme + "__actions__action--thread", "data-testid": 'thread-action', onClick: handleOpenThread },
2901
+ shouldShowReplies && (React__default['default'].createElement("button", { "aria-label": 'Open Thread', className: "str-chat__message-" + theme + "__actions__action str-chat__message-" + theme + "__actions__action--thread", "data-testid": 'thread-action', onClick: handleOpenThread },
2857
2902
  React__default['default'].createElement(ThreadIcon$1, null))),
2858
- shouldShowReactions && (React__default['default'].createElement("div", { className: "str-chat__message-" + theme + "__actions__action str-chat__message-" + theme + "__actions__action--reactions", "data-testid": 'message-reaction-action', onClick: onReactionListClick },
2903
+ shouldShowReactions && (React__default['default'].createElement("button", { "aria-label": 'Open Reaction Selector', className: "str-chat__message-" + theme + "__actions__action str-chat__message-" + theme + "__actions__action--reactions", "data-testid": 'message-reaction-action', onClick: onReactionListClick },
2859
2904
  React__default['default'].createElement(ReactionIcon$1, null)))));
2860
2905
  }
2861
2906
  return (React__default['default'].createElement("div", { className: "str-chat__message-" + theme + "__actions", "data-testid": 'message-options' },
2862
- shouldShowReactions && (React__default['default'].createElement("div", { className: "str-chat__message-" + theme + "__actions__action str-chat__message-" + theme + "__actions__action--reactions", "data-testid": 'message-reaction-action', onClick: onReactionListClick },
2907
+ shouldShowReactions && (React__default['default'].createElement("button", { "aria-label": 'Open Reaction Selector', className: "str-chat__message-" + theme + "__actions__action str-chat__message-" + theme + "__actions__action--reactions", "data-testid": 'message-reaction-action', onClick: onReactionListClick },
2863
2908
  React__default['default'].createElement(ReactionIcon$1, null))),
2864
- shouldShowReplies && (React__default['default'].createElement("div", { className: "str-chat__message-" + theme + "__actions__action str-chat__message-" + theme + "__actions__action--thread", "data-testid": 'thread-action', onClick: handleOpenThread },
2909
+ shouldShowReplies && (React__default['default'].createElement("button", { "aria-label": 'Open Thread', className: "str-chat__message-" + theme + "__actions__action str-chat__message-" + theme + "__actions__action--thread", "data-testid": 'thread-action', onClick: handleOpenThread },
2865
2910
  React__default['default'].createElement(ThreadIcon$1, null))),
2866
2911
  showActionsBox && (React__default['default'].createElement(MessageActions, { ActionsIcon: ActionsIcon$1, messageWrapperRef: messageWrapperRef }))));
2867
2912
  };
@@ -3634,7 +3679,9 @@ var useCommandTrigger = function () {
3634
3679
  });
3635
3680
  var result = selectedCommands.slice(0, 10);
3636
3681
  if (onReady)
3637
- onReady(result.filter(function (result) { return result.name !== undefined; }), query);
3682
+ onReady(result.filter(function (result) {
3683
+ return result.name !== undefined;
3684
+ }), query);
3638
3685
  return result;
3639
3686
  },
3640
3687
  output: function (entity) { return ({
@@ -3740,7 +3787,7 @@ var searchLocalUsers = function (params) {
3740
3787
  var transliterate;
3741
3788
  return __generator(this, function (_a) {
3742
3789
  switch (_a.label) {
3743
- case 0: return [4 /*yield*/, Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@sindresorhus/transliterate')); })];
3790
+ case 0: return [4 /*yield*/, Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('@stream-io/transliterate')); })];
3744
3791
  case 1:
3745
3792
  transliterate = (_a.sent()).default;
3746
3793
  updatedName = transliterate(user.name || '').toLowerCase();
@@ -4103,7 +4150,7 @@ var FileUploadIconFlat = function () {
4103
4150
  var SendButton = function (_a) {
4104
4151
  var sendMessage = _a.sendMessage;
4105
4152
  var t = useTranslationContext('SendButton').t;
4106
- return (React__default['default'].createElement("button", { className: 'str-chat__send-button', onClick: sendMessage },
4153
+ return (React__default['default'].createElement("button", { "aria-label": 'Send', className: 'str-chat__send-button', onClick: sendMessage },
4107
4154
  React__default['default'].createElement("svg", { height: '17', viewBox: '0 0 18 17', width: '18', xmlns: 'http://www.w3.org/2000/svg' },
4108
4155
  React__default['default'].createElement("title", null, t('Send')),
4109
4156
  React__default['default'].createElement("path", { d: 'M0 17.015l17.333-8.508L0 0v6.617l12.417 1.89L0 10.397z', fill: '#006cff', fillRule: 'evenodd' }))));
@@ -4112,24 +4159,12 @@ var SendButton = function (_a) {
4112
4159
  var UploadsPreview = function () {
4113
4160
  var _a = useChannelStateContext('UploadsPreview'), maxNumberOfFiles = _a.maxNumberOfFiles, multipleUploads = _a.multipleUploads;
4114
4161
  var messageInput = useMessageInputContext('UploadsPreview');
4115
- var fileOrder = messageInput.fileOrder, fileUploads = messageInput.fileUploads, imageOrder = messageInput.imageOrder, imageUploads = messageInput.imageUploads, numberOfUploads = messageInput.numberOfUploads, removeFile = messageInput.removeFile, removeImage = messageInput.removeImage, text = messageInput.text, uploadFile = messageInput.uploadFile, uploadImage = messageInput.uploadImage, uploadNewFiles = messageInput.uploadNewFiles;
4162
+ var fileOrder = messageInput.fileOrder, fileUploads = messageInput.fileUploads, imageOrder = messageInput.imageOrder, imageUploads = messageInput.imageUploads, numberOfUploads = messageInput.numberOfUploads, removeFile = messageInput.removeFile, removeImage = messageInput.removeImage, uploadFile = messageInput.uploadFile, uploadImage = messageInput.uploadImage, uploadNewFiles = messageInput.uploadNewFiles;
4116
4163
  var imagesToPreview = imageOrder.map(function (id) { return imageUploads[id]; });
4117
4164
  var filesToPreview = fileOrder.map(function (id) { return fileUploads[id]; });
4118
- var device = useBreakpoint().device;
4119
- React.useEffect(function () {
4120
- var elements = document.getElementsByClassName('str-chat__send-button');
4121
- var sendButton = elements.item(0);
4122
- if (sendButton instanceof HTMLButtonElement) {
4123
- if ((numberOfUploads && !text) || device !== 'full') {
4124
- sendButton.style.display = 'block';
4125
- }
4126
- else {
4127
- sendButton.style.display = 'none';
4128
- }
4129
- }
4130
- }, [device, numberOfUploads, text]);
4131
4165
  return (React__default['default'].createElement(React__default['default'].Fragment, null,
4132
- imageOrder.length > 0 && (React__default['default'].createElement(reactFileUtils.ImagePreviewer, { disabled: maxNumberOfFiles !== undefined && numberOfUploads >= maxNumberOfFiles, handleFiles: uploadNewFiles, handleRemove: removeImage, handleRetry: uploadImage, imageUploads: imagesToPreview, multiple: multipleUploads })),
4166
+ imageOrder.length > 0 && (React__default['default'].createElement(reactFileUtils.ImagePreviewer, { disabled: !multipleUploads ||
4167
+ (maxNumberOfFiles !== undefined && numberOfUploads >= maxNumberOfFiles), handleFiles: uploadNewFiles, handleRemove: removeImage, handleRetry: uploadImage, imageUploads: imagesToPreview, multiple: multipleUploads })),
4133
4168
  fileOrder.length > 0 && (React__default['default'].createElement(reactFileUtils.FilePreviewer, { handleFiles: uploadNewFiles, handleRemove: removeFile, handleRetry: uploadFile, uploads: filesToPreview }))));
4134
4169
  };
4135
4170
 
@@ -4139,32 +4174,34 @@ var UnMemoizedChatAutoComplete = function (props) {
4139
4174
  var messageInput = useMessageInputContext('ChatAutoComplete');
4140
4175
  var cooldownRemaining = messageInput.cooldownRemaining, disabled = messageInput.disabled, emojiIndex = messageInput.emojiIndex, innerRef = messageInput.textareaRef;
4141
4176
  var placeholder = props.placeholder || t('Type your message');
4142
- var emojiReplace = function (word) {
4143
- var found = (emojiIndex === null || emojiIndex === void 0 ? void 0 : emojiIndex.search(word)) || [];
4144
- var emoji = found
4145
- .filter(Boolean)
4146
- .slice(0, 10)
4147
- .find(function (_a) {
4148
- var emoticons = _a.emoticons;
4149
- return !!(emoticons === null || emoticons === void 0 ? void 0 : emoticons.includes(word));
4150
- });
4151
- if (!emoji || !('native' in emoji))
4152
- return null;
4153
- return emoji.native;
4154
- };
4177
+ var emojiReplace = props.wordReplace
4178
+ ? function (word) { var _a; return (_a = props.wordReplace) === null || _a === void 0 ? void 0 : _a.call(props, word, emojiIndex); }
4179
+ : function (word) {
4180
+ var found = (emojiIndex === null || emojiIndex === void 0 ? void 0 : emojiIndex.search(word)) || [];
4181
+ var emoji = found
4182
+ .filter(Boolean)
4183
+ .slice(0, 10)
4184
+ .find(function (_a) {
4185
+ var emoticons = _a.emoticons;
4186
+ return !!(emoticons === null || emoticons === void 0 ? void 0 : emoticons.includes(word));
4187
+ });
4188
+ if (!emoji || !('native' in emoji))
4189
+ return null;
4190
+ return emoji.native;
4191
+ };
4155
4192
  var updateInnerRef = React.useCallback(function (ref) {
4156
4193
  if (innerRef) {
4157
4194
  innerRef.current = ref;
4158
4195
  }
4159
4196
  }, [innerRef]);
4160
- return (React__default['default'].createElement(ReactTextareaAutocomplete, { additionalTextareaProps: messageInput.additionalTextareaProps, className: 'str-chat__textarea__textarea', closeCommandsList: messageInput.closeCommandsList, closeMentionsList: messageInput.closeMentionsList, containerClassName: 'str-chat__textarea', disabled: disabled || !!cooldownRemaining, disableMentions: messageInput.disableMentions, dropdownClassName: 'str-chat__emojisearch', grow: messageInput.grow, handleSubmit: props.handleSubmit || messageInput.handleSubmit, innerRef: updateInnerRef, itemClassName: 'str-chat__emojisearch__item', keycodeSubmitKeys: messageInput.keycodeSubmitKeys, listClassName: 'str-chat__emojisearch__list', loadingComponent: LoadingIndicator, maxRows: messageInput.maxRows, minChar: 0, onChange: props.onChange || messageInput.handleChange, onFocus: props.onFocus, onPaste: props.onPaste || messageInput.onPaste, placeholder: cooldownRemaining ? t('Slow Mode ON') : placeholder, replaceWord: emojiReplace, rows: props.rows || 1, showCommandsList: messageInput.showCommandsList, showMentionsList: messageInput.showMentionsList, SuggestionItem: SuggestionItem, SuggestionList: SuggestionList, trigger: messageInput.autocompleteTriggers || {}, value: props.value || messageInput.text }));
4197
+ return (React__default['default'].createElement(ReactTextareaAutocomplete, { additionalTextareaProps: messageInput.additionalTextareaProps, "aria-label": cooldownRemaining ? t('Slow Mode ON') : placeholder, className: 'str-chat__textarea__textarea', closeCommandsList: messageInput.closeCommandsList, closeMentionsList: messageInput.closeMentionsList, containerClassName: 'str-chat__textarea', disabled: disabled || !!cooldownRemaining, disableMentions: messageInput.disableMentions, dropdownClassName: 'str-chat__emojisearch', grow: messageInput.grow, handleSubmit: props.handleSubmit || messageInput.handleSubmit, innerRef: updateInnerRef, itemClassName: 'str-chat__emojisearch__item', keycodeSubmitKeys: messageInput.keycodeSubmitKeys, listClassName: 'str-chat__emojisearch__list', loadingComponent: LoadingIndicator, maxRows: messageInput.maxRows, minChar: 0, onBlur: props.onBlur, onChange: props.onChange || messageInput.handleChange, onFocus: props.onFocus, onPaste: props.onPaste || messageInput.onPaste, placeholder: cooldownRemaining ? t('Slow Mode ON') : placeholder, replaceWord: emojiReplace, rows: props.rows || 1, showCommandsList: messageInput.showCommandsList, showMentionsList: messageInput.showMentionsList, SuggestionItem: SuggestionItem, SuggestionList: SuggestionList, trigger: messageInput.autocompleteTriggers || {}, value: props.value || messageInput.text }));
4161
4198
  };
4162
4199
  var ChatAutoComplete = React__default['default'].memo(UnMemoizedChatAutoComplete);
4163
4200
 
4164
4201
  var EditMessageForm = function () {
4165
4202
  var _a = useChannelStateContext('EditMessageForm'), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads;
4166
4203
  var t = useTranslationContext('EditMessageForm').t;
4167
- var _b = useMessageInputContext('EditMessageForm'), clearEditingState = _b.clearEditingState, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, openEmojiPicker = _b.openEmojiPicker, uploadNewFiles = _b.uploadNewFiles;
4204
+ var _b = useMessageInputContext('EditMessageForm'), clearEditingState = _b.clearEditingState, closeEmojiPicker = _b.closeEmojiPicker, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, openEmojiPicker = _b.openEmojiPicker, uploadNewFiles = _b.uploadNewFiles;
4168
4205
  var _c = useComponentContext('EditMessageForm'), _d = _c.EmojiIcon, EmojiIcon = _d === void 0 ? EmojiIconSmall : _d, _e = _c.FileUploadIcon, FileUploadIcon$1 = _e === void 0 ? FileUploadIcon : _e;
4169
4206
  React.useEffect(function () {
4170
4207
  var onKeyDown = function (event) {
@@ -4182,7 +4219,7 @@ var EditMessageForm = function () {
4182
4219
  React__default['default'].createElement(ChatAutoComplete, null),
4183
4220
  React__default['default'].createElement("div", { className: 'str-chat__message-team-form-footer' },
4184
4221
  React__default['default'].createElement("div", { className: 'str-chat__edit-message-form-options' },
4185
- React__default['default'].createElement("span", { className: 'str-chat__input-emojiselect', onClick: openEmojiPicker },
4222
+ React__default['default'].createElement("button", { "aria-label": 'Open Emoji Picker', className: 'str-chat__input-emojiselect', onClick: emojiPickerIsOpen ? closeEmojiPicker : openEmojiPicker },
4186
4223
  React__default['default'].createElement(EmojiIcon, null)),
4187
4224
  isUploadEnabled && (React__default['default'].createElement("div", { className: 'str-chat__fileupload-wrapper', "data-testid": 'fileinput' },
4188
4225
  React__default['default'].createElement(Tooltip, null, maxFilesLeft
@@ -4230,7 +4267,8 @@ var useCooldownTimer = function () {
4230
4267
  var _a, _b;
4231
4268
  var client = useChatContext('useCooldownTimer').client;
4232
4269
  var channel = useChannelStateContext('useCooldownTimer').channel;
4233
- var cooldownInterval = (channel.data || {}).cooldown;
4270
+ var cooldownInterval = (channel.data ||
4271
+ {}).cooldown;
4234
4272
  var _c = React.useState(), cooldownRemaining = _c[0], setCooldownRemaining = _c[1];
4235
4273
  var globalRole = ((_a = client.user) === null || _a === void 0 ? void 0 : _a.role) || '';
4236
4274
  var channelRole = ((_b = channel.state.members[client.userID || '']) === null || _b === void 0 ? void 0 : _b.role) || '';
@@ -4590,6 +4628,7 @@ var useMessageInputText = function (props, state, dispatch) {
4590
4628
  var useEmojiPicker = function (state, dispatch, insertText, textareaRef, closeEmojiPickerOnClick) {
4591
4629
  var emojiPickerRef = React.useRef(null);
4592
4630
  var closeEmojiPicker = React.useCallback(function (event) {
4631
+ event.preventDefault();
4593
4632
  if (emojiPickerRef.current && !emojiPickerRef.current.contains(event.target)) {
4594
4633
  dispatch({
4595
4634
  type: 'setEmojiPickerIsOpen',
@@ -4598,6 +4637,7 @@ var useEmojiPicker = function (state, dispatch, insertText, textareaRef, closeEm
4598
4637
  }
4599
4638
  }, [emojiPickerRef]);
4600
4639
  var openEmojiPicker = React.useCallback(function (event) {
4640
+ event.preventDefault();
4601
4641
  dispatch({
4602
4642
  type: 'setEmojiPickerIsOpen',
4603
4643
  value: true,
@@ -4981,7 +5021,7 @@ var useMessageInputState = function (props) {
4981
5021
  var closeCommandsList = function () { return setShowCommandsList(false); };
4982
5022
  var openMentionsList = function () {
4983
5023
  dispatch({
4984
- getNewText: function () { return '@'; },
5024
+ getNewText: function (currentText) { return currentText + '@'; },
4985
5025
  type: 'setText',
4986
5026
  });
4987
5027
  setShowMentionsList(true);
@@ -5011,15 +5051,16 @@ var QuotedMessagePreviewHeader = function () {
5011
5051
  var t = useTranslationContext('QuotedMessagePreview').t;
5012
5052
  return (React__default['default'].createElement("div", { className: 'quoted-message-preview-header' },
5013
5053
  React__default['default'].createElement("div", null, t('Reply to Message')),
5014
- React__default['default'].createElement("button", { className: 'str-chat__square-button', onClick: function () { return setQuotedMessage(undefined); } },
5054
+ React__default['default'].createElement("button", { "aria-label": 'Cancel Reply', className: 'str-chat__square-button', onClick: function () { return setQuotedMessage(undefined); } },
5015
5055
  React__default['default'].createElement("svg", { height: '10', width: '10', xmlns: 'http://www.w3.org/2000/svg' },
5016
5056
  React__default['default'].createElement("path", { d: 'M9.916 1.027L8.973.084 5 4.058 1.027.084l-.943.943L4.058 5 .084 8.973l.943.943L5 5.942l3.973 3.974.943-.943L5.942 5z', fillRule: 'evenodd' })))));
5017
5057
  };
5018
5058
  var QuotedMessagePreview = function (props) {
5019
5059
  var _a;
5020
5060
  var quotedMessage = props.quotedMessage;
5021
- var Attachment = useComponentContext('QuotedMessagePreview').Attachment;
5061
+ var _b = useComponentContext('QuotedMessagePreview'), Attachment = _b.Attachment, ContextAvatar = _b.Avatar;
5022
5062
  var userLanguage = useTranslationContext('QuotedMessagePreview').userLanguage;
5063
+ var Avatar$1 = ContextAvatar || Avatar;
5023
5064
  var quotedMessageText = ((_a = quotedMessage.i18n) === null || _a === void 0 ? void 0 : _a[userLanguage + "_text"]) ||
5024
5065
  quotedMessage.text;
5025
5066
  // @ts-expect-error
@@ -5032,7 +5073,7 @@ var QuotedMessagePreview = function (props) {
5032
5073
  return (React__default['default'].createElement("div", { className: 'quoted-message-preview' },
5033
5074
  React__default['default'].createElement(QuotedMessagePreviewHeader, null),
5034
5075
  React__default['default'].createElement("div", { className: 'quoted-message-preview-content' },
5035
- quotedMessage.user && (React__default['default'].createElement(Avatar, { image: quotedMessage.user.image, name: quotedMessage.user.name || quotedMessage.user.id, size: 20, user: quotedMessage.user })),
5076
+ quotedMessage.user && (React__default['default'].createElement(Avatar$1, { image: quotedMessage.user.image, name: quotedMessage.user.name || quotedMessage.user.id, size: 20, user: quotedMessage.user })),
5036
5077
  React__default['default'].createElement("div", { className: 'quoted-message-preview-content-inner' },
5037
5078
  quotedMessageAttachment && React__default['default'].createElement(Attachment, { attachments: [quotedMessageAttachment] }),
5038
5079
  React__default['default'].createElement("div", null, quotedMessageText)))));
@@ -5041,17 +5082,17 @@ var QuotedMessagePreview = function (props) {
5041
5082
  var MessageInputFlat = function () {
5042
5083
  var _a = useChannelStateContext('MessageInputFlat'), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads, quotedMessage = _a.quotedMessage;
5043
5084
  var t = useTranslationContext('MessageInputFlat').t;
5044
- var _b = useMessageInputContext('MessageInputFlat'), closeEmojiPicker = _b.closeEmojiPicker, cooldownInterval = _b.cooldownInterval, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleEmojiKeyDown = _b.handleEmojiKeyDown, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, openEmojiPicker = _b.openEmojiPicker, setCooldownRemaining = _b.setCooldownRemaining, uploadNewFiles = _b.uploadNewFiles;
5085
+ var _b = useMessageInputContext('MessageInputFlat'), closeEmojiPicker = _b.closeEmojiPicker, cooldownInterval = _b.cooldownInterval, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, numberOfUploads = _b.numberOfUploads, openEmojiPicker = _b.openEmojiPicker, setCooldownRemaining = _b.setCooldownRemaining, uploadNewFiles = _b.uploadNewFiles;
5045
5086
  var _c = useComponentContext('MessageInputFlat'), _d = _c.CooldownTimer, CooldownTimer$1 = _d === void 0 ? CooldownTimer : _d, _e = _c.EmojiIcon, EmojiIcon = _e === void 0 ? EmojiIconLarge : _e, _f = _c.FileUploadIcon, FileUploadIcon = _f === void 0 ? FileUploadIconFlat : _f, _g = _c.QuotedMessagePreview, QuotedMessagePreview$1 = _g === void 0 ? QuotedMessagePreview : _g, _h = _c.SendButton, SendButton$1 = _h === void 0 ? SendButton : _h;
5046
- return (React__default['default'].createElement("div", { className: "str-chat__input-flat " + (SendButton$1 ? 'str-chat__input-flat--send-button-active' : null) + " " + (quotedMessage ? 'str-chat__input-flat-quoted' : null) },
5087
+ return (React__default['default'].createElement("div", { className: "str-chat__input-flat " + (SendButton$1 ? 'str-chat__input-flat--send-button-active' : '') + " " + (quotedMessage && !quotedMessage.parent_id ? 'str-chat__input-flat-quoted' : '') + "\n " + (numberOfUploads ? 'str-chat__input-flat-has-attachments' : '') + "\n " },
5047
5088
  React__default['default'].createElement(reactFileUtils.ImageDropzone, { accept: acceptedFiles, disabled: !isUploadEnabled || maxFilesLeft === 0 || !!cooldownRemaining, handleFiles: uploadNewFiles, maxNumberOfFiles: maxFilesLeft, multiple: multipleUploads },
5048
- quotedMessage && React__default['default'].createElement(QuotedMessagePreview$1, { quotedMessage: quotedMessage }),
5089
+ quotedMessage && !quotedMessage.parent_id && (React__default['default'].createElement(QuotedMessagePreview$1, { quotedMessage: quotedMessage })),
5049
5090
  React__default['default'].createElement("div", { className: 'str-chat__input-flat-wrapper' },
5091
+ isUploadEnabled && React__default['default'].createElement(UploadsPreview, null),
5050
5092
  React__default['default'].createElement("div", { className: 'str-chat__input-flat--textarea-wrapper' },
5051
- isUploadEnabled && React__default['default'].createElement(UploadsPreview, null),
5052
5093
  React__default['default'].createElement("div", { className: 'str-chat__emojiselect-wrapper' },
5053
5094
  React__default['default'].createElement(Tooltip, null, emojiPickerIsOpen ? t('Close emoji picker') : t('Open emoji picker')),
5054
- React__default['default'].createElement("span", { className: 'str-chat__input-flat-emojiselect', onClick: emojiPickerIsOpen ? closeEmojiPicker : openEmojiPicker, onKeyDown: handleEmojiKeyDown, role: 'button', tabIndex: 0 }, cooldownRemaining ? (React__default['default'].createElement("div", { className: 'str-chat__input-flat-cooldown' },
5095
+ React__default['default'].createElement("button", { "aria-label": 'Emoji picker', className: 'str-chat__input-flat-emojiselect', onClick: emojiPickerIsOpen ? closeEmojiPicker : openEmojiPicker }, cooldownRemaining ? (React__default['default'].createElement("div", { className: 'str-chat__input-flat-cooldown' },
5055
5096
  React__default['default'].createElement(CooldownTimer$1, { cooldownInterval: cooldownInterval, setCooldownRemaining: setCooldownRemaining }))) : (React__default['default'].createElement(EmojiIcon, null)))),
5056
5097
  React__default['default'].createElement(EmojiPicker, null),
5057
5098
  React__default['default'].createElement(ChatAutoComplete, null),
@@ -5187,13 +5228,14 @@ var UnMemoizedMessageInput = function (props) {
5187
5228
  var MessageInput = React__default['default'].memo(UnMemoizedMessageInput);
5188
5229
 
5189
5230
  var MessageInputSmall = function () {
5190
- var _a = useChannelStateContext('MessageInputSmall'), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads;
5231
+ var _a = useChannelStateContext('MessageInputSmall'), acceptedFiles = _a.acceptedFiles, multipleUploads = _a.multipleUploads, quotedMessage = _a.quotedMessage;
5191
5232
  var t = useTranslationContext('MessageInputSmall').t;
5192
- var _b = useMessageInputContext('MessageInputSmall'), closeEmojiPicker = _b.closeEmojiPicker, cooldownInterval = _b.cooldownInterval, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleEmojiKeyDown = _b.handleEmojiKeyDown, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, openEmojiPicker = _b.openEmojiPicker, setCooldownRemaining = _b.setCooldownRemaining, uploadNewFiles = _b.uploadNewFiles;
5193
- var _c = useComponentContext('MessageInputSmall'), _d = _c.CooldownTimer, CooldownTimer$1 = _d === void 0 ? CooldownTimer : _d, _e = _c.EmojiIcon, EmojiIcon = _e === void 0 ? EmojiIconSmall : _e, _f = _c.FileUploadIcon, FileUploadIcon = _f === void 0 ? FileUploadIconFlat : _f, _g = _c.SendButton, SendButton$1 = _g === void 0 ? SendButton : _g;
5233
+ var _b = useMessageInputContext('MessageInputSmall'), closeEmojiPicker = _b.closeEmojiPicker, cooldownInterval = _b.cooldownInterval, cooldownRemaining = _b.cooldownRemaining, emojiPickerIsOpen = _b.emojiPickerIsOpen, handleSubmit = _b.handleSubmit, isUploadEnabled = _b.isUploadEnabled, maxFilesLeft = _b.maxFilesLeft, numberOfUploads = _b.numberOfUploads, openEmojiPicker = _b.openEmojiPicker, setCooldownRemaining = _b.setCooldownRemaining, uploadNewFiles = _b.uploadNewFiles;
5234
+ var _c = useComponentContext('MessageInputSmall'), _d = _c.CooldownTimer, CooldownTimer$1 = _d === void 0 ? CooldownTimer : _d, _e = _c.EmojiIcon, EmojiIcon = _e === void 0 ? EmojiIconSmall : _e, _f = _c.FileUploadIcon, FileUploadIcon = _f === void 0 ? FileUploadIconFlat : _f, _g = _c.SendButton, SendButton$1 = _g === void 0 ? SendButton : _g, _h = _c.QuotedMessagePreview, QuotedMessagePreview$1 = _h === void 0 ? QuotedMessagePreview : _h;
5194
5235
  return (React__default['default'].createElement("div", { className: 'str-chat__small-message-input__wrapper' },
5195
5236
  React__default['default'].createElement(reactFileUtils.ImageDropzone, { accept: acceptedFiles, disabled: !isUploadEnabled || maxFilesLeft === 0 || !!cooldownRemaining, handleFiles: uploadNewFiles, maxNumberOfFiles: maxFilesLeft, multiple: multipleUploads },
5196
- React__default['default'].createElement("div", { className: "str-chat__small-message-input " + (SendButton$1 ? 'str-chat__small-message-input--send-button-active' : null) },
5237
+ React__default['default'].createElement("div", { className: "str-chat__small-message-input " + (SendButton$1 ? 'str-chat__small-message-input--send-button-active' : '') + " " + (quotedMessage && quotedMessage.parent_id ? 'str-chat__input-flat-quoted' : '') + " " + (numberOfUploads ? 'str-chat__small-message-input-has-attachments' : '') + " " },
5238
+ quotedMessage && quotedMessage.parent_id && (React__default['default'].createElement(QuotedMessagePreview$1, { quotedMessage: quotedMessage })),
5197
5239
  React__default['default'].createElement("div", { className: 'str-chat__small-message-input--textarea-wrapper' },
5198
5240
  isUploadEnabled && React__default['default'].createElement(UploadsPreview, null),
5199
5241
  React__default['default'].createElement(ChatAutoComplete, null),
@@ -5208,7 +5250,7 @@ var MessageInputSmall = function () {
5208
5250
  React__default['default'].createElement(FileUploadIcon, null))))),
5209
5251
  React__default['default'].createElement("div", { className: 'str-chat__emojiselect-wrapper' },
5210
5252
  React__default['default'].createElement(Tooltip, null, emojiPickerIsOpen ? t('Close emoji picker') : t('Open emoji picker')),
5211
- React__default['default'].createElement("span", { className: 'str-chat__small-message-input-emojiselect', onClick: emojiPickerIsOpen ? closeEmojiPicker : openEmojiPicker, onKeyDown: handleEmojiKeyDown, role: 'button', tabIndex: 0 },
5253
+ React__default['default'].createElement("button", { "aria-label": 'Emoji picker', className: 'str-chat__small-message-input-emojiselect', onClick: emojiPickerIsOpen ? closeEmojiPicker : openEmojiPicker },
5212
5254
  React__default['default'].createElement(EmojiIcon, null))))),
5213
5255
  React__default['default'].createElement(EmojiPicker, { small: true })),
5214
5256
  !cooldownRemaining && React__default['default'].createElement(SendButton$1, { sendMessage: handleSubmit })))));
@@ -5235,38 +5277,6 @@ var MML = function (props) {
5235
5277
  React__default['default'].createElement(MMLReact, { className: "mml-align-" + align, Loading: null, onSubmit: actionHandler, source: source, Success: null, theme: (theme || '').replace(' ', '-') })));
5236
5278
  };
5237
5279
 
5238
- var Modal = function (props) {
5239
- var children = props.children, onClose = props.onClose, open = props.open;
5240
- var t = useTranslationContext('Modal').t;
5241
- var innerRef = React.useRef(null);
5242
- var handleClick = function (event) {
5243
- var _a;
5244
- if (event.target instanceof HTMLDivElement &&
5245
- !((_a = innerRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target)) &&
5246
- onClose) {
5247
- onClose();
5248
- }
5249
- };
5250
- React.useEffect(function () {
5251
- if (!open)
5252
- return function () { return null; };
5253
- var handleEscKey = function (event) {
5254
- if (event instanceof KeyboardEvent && event.key === 'Escape' && onClose) {
5255
- onClose();
5256
- }
5257
- };
5258
- document.addEventListener('keypress', handleEscKey);
5259
- return function () { return document.removeEventListener('keypress', handleEscKey); };
5260
- }, [onClose, open]);
5261
- var openClasses = open ? 'str-chat__modal--open' : 'str-chat__modal--closed';
5262
- return (React__default['default'].createElement("div", { className: "str-chat__modal " + openClasses, onClick: handleClick },
5263
- React__default['default'].createElement("div", { className: 'str-chat__modal__close-button' },
5264
- t('Close'),
5265
- React__default['default'].createElement("svg", { height: '10', width: '10', xmlns: 'http://www.w3.org/2000/svg' },
5266
- React__default['default'].createElement("path", { d: 'M9.916 1.027L8.973.084 5 4.058 1.027.084l-.943.943L4.058 5 .084 8.973l.943.943L5 5.942l3.973 3.974.943-.943L5.942 5z', fillRule: 'evenodd' }))),
5267
- React__default['default'].createElement("div", { className: 'str-chat__modal__inner', ref: innerRef }, children)));
5268
- };
5269
-
5270
5280
  var isMutableRef = function (ref) {
5271
5281
  if (ref) {
5272
5282
  return ref.current !== undefined;
@@ -5344,12 +5354,13 @@ var UnMemoizedReactionSelector = React__default['default'].forwardRef(function (
5344
5354
  React__default['default'].createElement("ul", { className: 'str-chat__message-reactions-list' }, reactionOptions.map(function (reactionOption) {
5345
5355
  var latestUser = getLatestUserForReactionType(reactionOption.id);
5346
5356
  var count = reactionCounts && reactionCounts[reactionOption.id];
5347
- return (React__default['default'].createElement("li", { className: 'str-chat__message-reactions-list-item', "data-text": reactionOption.id, key: "item-" + reactionOption.id, onClick: function (event) { return handleReaction(reactionOption.id, event); } },
5348
- !!count && detailedView && (React__default['default'].createElement(React__default['default'].Fragment, null,
5349
- React__default['default'].createElement("div", { className: 'latest-user', onClick: hideTooltip, onMouseEnter: function (e) { return showTooltip(e, reactionOption.id); }, onMouseLeave: hideTooltip }, latestUser ? (React__default['default'].createElement(Avatar$1, { image: latestUser.image, name: latestUser.name, size: 20, user: latestUser })) : (React__default['default'].createElement("div", { className: 'latest-user-not-found' }))))),
5350
- React__default['default'].createElement(React.Suspense, { fallback: null },
5351
- React__default['default'].createElement(Emoji, __assign({ data: emojiData, emoji: reactionOption, size: 20 }, (reactionsAreCustom ? additionalEmojiProps : emojiSetDef)))),
5352
- Boolean(count) && detailedView && (React__default['default'].createElement("span", { className: 'str-chat__message-reactions-list-item__count' }, count || ''))));
5357
+ return (React__default['default'].createElement("li", { key: "item-" + reactionOption.id },
5358
+ React__default['default'].createElement("button", { "aria-label": "Select Reaction: " + reactionOption.name, className: 'str-chat__message-reactions-list-item', "data-text": reactionOption.id, onClick: function (event) { return handleReaction(reactionOption.id, event); } },
5359
+ !!count && detailedView && (React__default['default'].createElement(React__default['default'].Fragment, null,
5360
+ React__default['default'].createElement("div", { className: 'latest-user', onClick: hideTooltip, onMouseEnter: function (e) { return showTooltip(e, reactionOption.id); }, onMouseLeave: hideTooltip }, latestUser ? (React__default['default'].createElement(Avatar$1, { image: latestUser.image, name: latestUser.name, size: 20, user: latestUser })) : (React__default['default'].createElement("div", { className: 'latest-user-not-found' }))))),
5361
+ React__default['default'].createElement(React.Suspense, { fallback: null },
5362
+ React__default['default'].createElement(Emoji, __assign({ data: emojiData, emoji: reactionOption, size: 20 }, (reactionsAreCustom ? additionalEmojiProps : emojiSetDef)))),
5363
+ Boolean(count) && detailedView && (React__default['default'].createElement("span", { className: 'str-chat__message-reactions-list-item__count' }, count || '')))));
5353
5364
  }))));
5354
5365
  });
5355
5366
  /**
@@ -5399,14 +5410,15 @@ var UnMemoizedReactionsList = function (props) {
5399
5410
  var supportedReactionsArePresent = messageReactionTypes.some(function (type) { return supportedReactionMap[type]; });
5400
5411
  if (!supportedReactionsArePresent)
5401
5412
  return null;
5402
- return (React__default['default'].createElement("div", { className: "str-chat__reaction-list " + (reverse ? 'str-chat__reaction-list--reverse' : ''), "data-testid": 'reaction-list', onClick: onClick || onReactionListClick },
5413
+ return (React__default['default'].createElement("div", { "aria-label": 'Reaction list', className: "str-chat__reaction-list " + (reverse ? 'str-chat__reaction-list--reverse' : ''), "data-testid": 'reaction-list', onClick: onClick || onReactionListClick, onKeyPress: onClick || onReactionListClick, role: 'figure' },
5403
5414
  React__default['default'].createElement("ul", null,
5404
5415
  messageReactionTypes.map(function (reactionType) {
5405
5416
  var emojiObject = getEmojiByReactionType(reactionType);
5406
5417
  return emojiObject ? (React__default['default'].createElement("li", { key: emojiObject.id },
5407
- React__default['default'].createElement(React.Suspense, { fallback: null },
5408
- React__default['default'].createElement(Emoji, __assign({ data: emojiData, emoji: emojiObject, size: 16 }, (reactionsAreCustom ? additionalEmojiProps : emojiSetDef)))),
5409
- "\u00A0")) : null;
5418
+ React__default['default'].createElement("button", { "aria-label": "Reactions: " + reactionType },
5419
+ React__default['default'].createElement(React.Suspense, { fallback: null },
5420
+ React__default['default'].createElement(Emoji, __assign({ data: emojiData, emoji: emojiObject, size: 16 }, (reactionsAreCustom ? additionalEmojiProps : emojiSetDef)))),
5421
+ "\u00A0"))) : null;
5410
5422
  }),
5411
5423
  React__default['default'].createElement("li", null,
5412
5424
  React__default['default'].createElement("span", { className: 'str-chat__reaction-list--counter' }, getTotalReactionCount())))));
@@ -5475,7 +5487,7 @@ var UnMemoizedSimpleReactionsList = function (props) {
5475
5487
  messageReactionTypes.map(function (reactionType, i) {
5476
5488
  var _a;
5477
5489
  var emojiObject = getEmojiByReactionType(reactionType);
5478
- return emojiObject ? (React__default['default'].createElement("li", { className: 'str-chat__simple-reactions-list-item', key: emojiObject.id + "-" + i, onClick: function (event) { return handleReaction(reactionType, event); } },
5490
+ return emojiObject ? (React__default['default'].createElement("li", { className: 'str-chat__simple-reactions-list-item', key: emojiObject.id + "-" + i, onClick: function (event) { return handleReaction(reactionType, event); }, onKeyPress: function (event) { return handleReaction(reactionType, event); } },
5479
5491
  React__default['default'].createElement("span", { onMouseEnter: function () { return setTooltipReactionType(reactionType); } },
5480
5492
  React__default['default'].createElement(React.Suspense, { fallback: null },
5481
5493
  React__default['default'].createElement(Emoji, __assign({ data: emojiData, emoji: emojiObject, size: 13 }, (reactionsAreCustom ? additionalEmojiProps : emojiSetDef)))),
@@ -5492,7 +5504,6 @@ var MessageSimpleWithContext = function (props) {
5492
5504
  var _a;
5493
5505
  var additionalMessageInputProps = props.additionalMessageInputProps, clearEditingState = props.clearEditingState, editing = props.editing, endOfGroup = props.endOfGroup, firstOfGroup = props.firstOfGroup, groupedByUser = props.groupedByUser, handleAction = props.handleAction, handleOpenThread = props.handleOpenThread, handleRetry = props.handleRetry, isMyMessage = props.isMyMessage, isReactionEnabled = props.isReactionEnabled, message = props.message, onUserClick = props.onUserClick, onUserHover = props.onUserHover, reactionSelectorRef = props.reactionSelectorRef, showDetailedReactions = props.showDetailedReactions, threadList = props.threadList;
5494
5506
  var _b = useComponentContext('MessageSimple'), Attachment = _b.Attachment, _c = _b.Avatar, Avatar$1 = _c === void 0 ? Avatar : _c, _d = _b.EditMessageInput, EditMessageInput = _d === void 0 ? EditMessageForm : _d, _e = _b.MessageDeleted, MessageDeleted$1 = _e === void 0 ? MessageDeleted : _e, _f = _b.MessageOptions, MessageOptions$1 = _f === void 0 ? MessageOptions : _f, _g = _b.MessageRepliesCountButton, MessageRepliesCountButton$1 = _g === void 0 ? MessageRepliesCountButton : _g, _h = _b.MessageStatus, MessageStatus$1 = _h === void 0 ? MessageStatus : _h, _j = _b.MessageTimestamp, MessageTimestamp$1 = _j === void 0 ? MessageTimestamp : _j, _k = _b.ReactionSelector, ReactionSelector$1 = _k === void 0 ? ReactionSelector : _k, _l = _b.ReactionsList, ReactionsList$1 = _l === void 0 ? ReactionsList : _l;
5495
- var messageWrapperRef = React.useRef(null);
5496
5507
  var hasAttachment = messageHasAttachments(message);
5497
5508
  var hasReactions = messageHasReactions(message);
5498
5509
  var messageClasses = isMyMessage()
@@ -5507,14 +5518,16 @@ var MessageSimpleWithContext = function (props) {
5507
5518
  return (React__default['default'].createElement(React__default['default'].Fragment, null,
5508
5519
  editing && (React__default['default'].createElement(Modal, { onClose: clearEditingState, open: editing },
5509
5520
  React__default['default'].createElement(MessageInput, __assign({ clearEditingState: clearEditingState, Input: EditMessageInput, message: message }, additionalMessageInputProps)))),
5510
- React__default['default'].createElement("div", { className: ("\n\t\t\t\t\t\t" + messageClasses + "\n\t\t\t\t\t\tstr-chat__message--" + message.type + "\n\t\t\t\t\t\tstr-chat__message--" + message.status + "\n\t\t\t\t\t\t" + (message.text ? 'str-chat__message--has-text' : 'has-no-text') + "\n\t\t\t\t\t\t" + (hasAttachment ? 'str-chat__message--has-attachment' : '') + "\n " + (hasReactions && isReactionEnabled ? 'str-chat__message--with-reactions' : '') + "\n " + (message.pinned ? 'pinned-message' : '') + "\n " + (groupedByUser ? 'str-chat__virtual-message__wrapper--group' : '') + "\n " + (firstOfGroup ? 'str-chat__virtual-message__wrapper--first' : '') + "\n " + (endOfGroup ? 'str-chat__virtual-message__wrapper--end' : '') + "\n\t\t\t\t\t").trim(), key: message.id, ref: messageWrapperRef },
5521
+ React__default['default'].createElement("div", { className: ("\n\t\t\t\t\t\t" + messageClasses + "\n\t\t\t\t\t\tstr-chat__message--" + message.type + "\n\t\t\t\t\t\tstr-chat__message--" + message.status + "\n\t\t\t\t\t\t" + (message.text ? 'str-chat__message--has-text' : 'has-no-text') + "\n\t\t\t\t\t\t" + (hasAttachment ? 'str-chat__message--has-attachment' : '') + "\n " + (hasReactions && isReactionEnabled ? 'str-chat__message--with-reactions' : '') + "\n " + (message.pinned ? 'pinned-message' : '') + "\n " + (groupedByUser ? 'str-chat__virtual-message__wrapper--group' : '') + "\n " + (firstOfGroup ? 'str-chat__virtual-message__wrapper--first' : '') + "\n " + (endOfGroup ? 'str-chat__virtual-message__wrapper--end' : '') + "\n\t\t\t\t\t").trim(), key: message.id },
5511
5522
  React__default['default'].createElement(MessageStatus$1, null),
5512
5523
  message.user && (React__default['default'].createElement(Avatar$1, { image: message.user.image, name: message.user.name || message.user.id, onClick: onUserClick, onMouseOver: onUserHover, user: message.user })),
5513
5524
  React__default['default'].createElement("div", { className: 'str-chat__message-inner', "data-testid": 'message-inner', onClick: message.status === 'failed' && message.errorStatusCode !== 403
5525
+ ? function () { return handleRetry(message); }
5526
+ : undefined, onKeyPress: message.status === 'failed' && message.errorStatusCode !== 403
5514
5527
  ? function () { return handleRetry(message); }
5515
5528
  : undefined },
5516
5529
  React__default['default'].createElement(React__default['default'].Fragment, null,
5517
- React__default['default'].createElement(MessageOptions$1, { messageWrapperRef: messageWrapperRef }),
5530
+ React__default['default'].createElement(MessageOptions$1, null),
5518
5531
  hasReactions && !showDetailedReactions && isReactionEnabled && (React__default['default'].createElement(ReactionsList$1, { reverse: true })),
5519
5532
  showDetailedReactions && isReactionEnabled && (React__default['default'].createElement(ReactionSelector$1, { ref: reactionSelectorRef }))),
5520
5533
  ((_a = message.attachments) === null || _a === void 0 ? void 0 : _a.length) && !message.quoted_message ? (React__default['default'].createElement(Attachment, { actionHandler: handleAction, attachments: message.attachments })) : null,
@@ -5729,7 +5742,7 @@ var ChannelInner = function (props) {
5729
5742
  client.off('user.deleted', handleEvent);
5730
5743
  notificationTimeouts.forEach(clearTimeout);
5731
5744
  };
5732
- }, [channel.cid]);
5745
+ }, [channel.cid, doMarkReadRequest]);
5733
5746
  React.useEffect(function () {
5734
5747
  var _a;
5735
5748
  if (state.thread && ((_a = state.messages) === null || _a === void 0 ? void 0 : _a.length)) {
@@ -5830,7 +5843,7 @@ var ChannelInner = function (props) {
5830
5843
  return id;
5831
5844
  })
5832
5845
  : mentioned_users;
5833
- messageData = __assign({ attachments: attachments, id: id, mentioned_users: mentions, parent_id: parent_id, quoted_message_id: quotedMessage === null || quotedMessage === void 0 ? void 0 : quotedMessage.id, text: text }, customMessageData);
5846
+ messageData = __assign({ attachments: attachments, id: id, mentioned_users: mentions, parent_id: parent_id, quoted_message_id: parent_id === (quotedMessage === null || quotedMessage === void 0 ? void 0 : quotedMessage.parent_id) ? quotedMessage === null || quotedMessage === void 0 ? void 0 : quotedMessage.id : undefined, text: text }, customMessageData);
5834
5847
  _b.label = 1;
5835
5848
  case 1:
5836
5849
  _b.trys.push([1, 6, , 7]);
@@ -5849,7 +5862,7 @@ var ChannelInner = function (props) {
5849
5862
  if (messageResponse === null || messageResponse === void 0 ? void 0 : messageResponse.message) {
5850
5863
  updateMessage(__assign(__assign({}, messageResponse.message), { status: 'received' }));
5851
5864
  }
5852
- if (quotedMessage)
5865
+ if (quotedMessage && parent_id === (quotedMessage === null || quotedMessage === void 0 ? void 0 : quotedMessage.parent_id))
5853
5866
  setQuotedMessage(undefined);
5854
5867
  return [3 /*break*/, 7];
5855
5868
  case 6:
@@ -5907,6 +5920,14 @@ var ChannelInner = function (props) {
5907
5920
  /** THREAD */
5908
5921
  var openThread = function (message, event) {
5909
5922
  event.preventDefault();
5923
+ setQuotedMessage(function (current) {
5924
+ if ((current === null || current === void 0 ? void 0 : current.parent_id) !== (message === null || message === void 0 ? void 0 : message.parent_id)) {
5925
+ return undefined;
5926
+ }
5927
+ else {
5928
+ return current;
5929
+ }
5930
+ });
5910
5931
  dispatch({ channel: channel, message: message, type: 'openThread' });
5911
5932
  };
5912
5933
  var closeThread = function (event) {
@@ -5961,7 +5982,7 @@ var ChannelInner = function (props) {
5961
5982
  var onMentionsHoverOrClick = useMentionsHandlers(onMentionsHover, onMentionsClick);
5962
5983
  var editMessage = useEditMessageHandler(doUpdateMessageRequest);
5963
5984
  var typing = state.typing, restState = __rest(state, ["typing"]);
5964
- var channelStateContextValue = useCreateChannelStateContext(__assign(__assign({}, restState), { acceptedFiles: acceptedFiles, channel: channel, channelCapabilitiesArray: channelCapabilitiesArray, channelConfig: channelConfig, dragAndDropWindow: dragAndDropWindow, maxNumberOfFiles: maxNumberOfFiles, multipleUploads: multipleUploads, mutes: mutes, notifications: notifications, quotedMessage: quotedMessage, watcher_count: state.watcherCount }));
5985
+ var channelStateContextValue = useCreateChannelStateContext(__assign(__assign({}, restState), { acceptedFiles: acceptedFiles, channel: channel, channelCapabilitiesArray: channelCapabilitiesArray, channelConfig: channelConfig, dragAndDropWindow: dragAndDropWindow, giphyVersion: props.giphyVersion || 'fixed_height', maxNumberOfFiles: maxNumberOfFiles, multipleUploads: multipleUploads, mutes: mutes, notifications: notifications, quotedMessage: quotedMessage, watcher_count: state.watcherCount }));
5965
5986
  var channelActionContextValue = React.useMemo(function () { return ({
5966
5987
  addNotification: addNotification,
5967
5988
  closeThread: closeThread,
@@ -6068,18 +6089,24 @@ var ChannelInner = function (props) {
6068
6089
  */
6069
6090
  var Channel = React__default['default'].memo(UnMemoizedChannel);
6070
6091
 
6092
+ var MenuIcon = function (_a) {
6093
+ var title = _a.title;
6094
+ var t = useTranslationContext('MenuIcon').t;
6095
+ return (React__default['default'].createElement("svg", { "data-testid": 'menu-icon', viewBox: '0 0 448 512', xmlns: 'http://www.w3.org/2000/svg' },
6096
+ React__default['default'].createElement("title", null, title || t('Menu')),
6097
+ React__default['default'].createElement("path", { d: 'M0 88C0 74.75 10.75 64 24 64H424C437.3 64 448 74.75 448 88C448 101.3 437.3 112 424 112H24C10.75 112 0 101.3 0 88zM0 248C0 234.7 10.75 224 24 224H424C437.3 224 448 234.7 448 248C448 261.3 437.3 272 424 272H24C10.75 272 0 261.3 0 248zM424 432H24C10.75 432 0 421.3 0 408C0 394.7 10.75 384 24 384H424C437.3 384 448 394.7 448 408C448 421.3 437.3 432 424 432z', fill: 'currentColor' })));
6098
+ };
6099
+
6071
6100
  var UnMemoizedChannelHeader = function (props) {
6072
- var _a = props.Avatar, Avatar$1 = _a === void 0 ? Avatar : _a, propImage = props.image, live = props.live, title = props.title;
6073
- var _b = useChannelStateContext('ChannelHeader'), channel = _b.channel, watcher_count = _b.watcher_count;
6101
+ var _a = props.Avatar, Avatar$1 = _a === void 0 ? Avatar : _a, _b = props.MenuIcon, MenuIcon$1 = _b === void 0 ? MenuIcon : _b, propImage = props.image, live = props.live, title = props.title;
6102
+ var _c = useChannelStateContext('ChannelHeader'), channel = _c.channel, watcher_count = _c.watcher_count;
6074
6103
  var openMobileNav = useChatContext('ChannelHeader').openMobileNav;
6075
6104
  var t = useTranslationContext('ChannelHeader').t;
6076
- var _c = (channel === null || channel === void 0 ? void 0 : channel.data) || {}, channelImage = _c.image, member_count = _c.member_count, name = _c.name, subtitle = _c.subtitle;
6105
+ var _d = (channel === null || channel === void 0 ? void 0 : channel.data) || {}, channelImage = _d.image, member_count = _d.member_count, name = _d.name, subtitle = _d.subtitle;
6077
6106
  var image = propImage || channelImage;
6078
6107
  return (React__default['default'].createElement("div", { className: 'str-chat__header-livestream' },
6079
- React__default['default'].createElement("div", { className: 'str-chat__header-hamburger', onClick: openMobileNav },
6080
- React__default['default'].createElement("span", { className: 'str-chat__header-hamburger--line' }),
6081
- React__default['default'].createElement("span", { className: 'str-chat__header-hamburger--line' }),
6082
- React__default['default'].createElement("span", { className: 'str-chat__header-hamburger--line' })),
6108
+ React__default['default'].createElement("button", { "aria-label": 'Menu', className: 'str-chat__header-hamburger', onClick: openMobileNav },
6109
+ React__default['default'].createElement(MenuIcon$1, null)),
6083
6110
  image && (React__default['default'].createElement(Avatar$1, { image: image, shape: 'rounded', size: (channel === null || channel === void 0 ? void 0 : channel.type) === 'commerce' ? 60 : 40 })),
6084
6111
  React__default['default'].createElement("div", { className: 'str-chat__header-livestream-left' },
6085
6112
  React__default['default'].createElement("p", { className: 'str-chat__header-livestream-left--title' },
@@ -6109,9 +6136,9 @@ var UnMemoizedChatDown = function (props) {
6109
6136
  return (React__default['default'].createElement("div", { className: 'str-chat__down' },
6110
6137
  React__default['default'].createElement(LoadingChannels, null),
6111
6138
  React__default['default'].createElement("div", { className: 'str-chat__down-main' },
6112
- React__default['default'].createElement("img", { "data-testid": 'chatdown-img', src: image || img }),
6139
+ React__default['default'].createElement("img", { alt: 'Connection error', "data-testid": 'chatdown-img', src: image || img }),
6113
6140
  React__default['default'].createElement("h1", null, type),
6114
- React__default['default'].createElement("h3", null, text || t('Error connecting to chat, refresh the page to try again.')))));
6141
+ React__default['default'].createElement("h3", { "aria-live": 'assertive' }, text || t('Error connecting to chat, refresh the page to try again.')))));
6115
6142
  };
6116
6143
  /**
6117
6144
  * A simple indicator that chat functionality isn't available, triggered when the Chat API is unavailable or your network isn't working.
@@ -6130,7 +6157,7 @@ var ChannelListMessenger = function (props) {
6130
6157
  return React__default['default'].createElement(LoadingIndicator, null);
6131
6158
  }
6132
6159
  return (React__default['default'].createElement("div", { className: 'str-chat__channel-list-messenger' },
6133
- React__default['default'].createElement("div", { className: 'str-chat__channel-list-messenger__main' }, children)));
6160
+ React__default['default'].createElement("div", { "aria-label": 'Channel list', className: 'str-chat__channel-list-messenger__main', role: 'listbox' }, children)));
6134
6161
  };
6135
6162
 
6136
6163
  var useChannelDeletedListener = function (setChannels, customHandler) {
@@ -6207,10 +6234,11 @@ var useChannelUpdatedListener = function (setChannels, customHandler, forceUpdat
6207
6234
  React.useEffect(function () {
6208
6235
  var handleEvent = function (event) {
6209
6236
  setChannels(function (channels) {
6237
+ var _a, _b, _c, _d, _e, _f;
6210
6238
  var channelIndex = channels.findIndex(function (channel) { var _a; return channel.cid === ((_a = event.channel) === null || _a === void 0 ? void 0 : _a.cid); });
6211
6239
  if (channelIndex > -1 && event.channel) {
6212
6240
  var newChannels = channels;
6213
- newChannels[channelIndex].data = event.channel;
6241
+ newChannels[channelIndex].data = __assign(__assign({}, event.channel), { hidden: (_b = (_a = event.channel) === null || _a === void 0 ? void 0 : _a.hidden) !== null && _b !== void 0 ? _b : (_c = newChannels[channelIndex].data) === null || _c === void 0 ? void 0 : _c.hidden, own_capabilities: (_e = (_d = event.channel) === null || _d === void 0 ? void 0 : _d.own_capabilities) !== null && _e !== void 0 ? _e : (_f = newChannels[channelIndex].data) === null || _f === void 0 ? void 0 : _f.own_capabilities });
6214
6242
  return __spreadArray([], newChannels);
6215
6243
  }
6216
6244
  return channels;
@@ -6525,7 +6553,7 @@ var UnMemoizedChannelPreviewMessenger = function (props) {
6525
6553
  channelPreviewButton.current.blur();
6526
6554
  }
6527
6555
  };
6528
- return (React__default['default'].createElement("button", { className: "str-chat__channel-preview-messenger " + unreadClass + " " + activeClass, "data-testid": 'channel-preview-button', onClick: onSelectChannel, ref: channelPreviewButton },
6556
+ return (React__default['default'].createElement("button", { "aria-label": "Select Channel: " + (displayTitle || ''), "aria-selected": active, className: "str-chat__channel-preview-messenger " + unreadClass + " " + activeClass, "data-testid": 'channel-preview-button', onClick: onSelectChannel, ref: channelPreviewButton, role: 'option' },
6529
6557
  React__default['default'].createElement("div", { className: 'str-chat__channel-preview-messenger--left' },
6530
6558
  React__default['default'].createElement(Avatar$1, { image: displayImage, name: avatarName, size: 40 })),
6531
6559
  React__default['default'].createElement("div", { className: 'str-chat__channel-preview-messenger--right' },
@@ -6655,33 +6683,31 @@ var ChannelPreview = function (props) {
6655
6683
  };
6656
6684
 
6657
6685
  var SearchInput = function (props) {
6658
- var channelSearchParams = props.channelSearchParams, inputRef = props.inputRef, onSearch = props.onSearch, query = props.query, searchFunction = props.searchFunction;
6686
+ var channelSearchParams = props.channelSearchParams, inputRef = props.inputRef, onSearch = props.onSearch, placeholder = props.placeholder, query = props.query, searchFunction = props.searchFunction;
6659
6687
  var t = useTranslationContext('SearchInput').t;
6660
6688
  return (React__default['default'].createElement("input", { className: 'str-chat__channel-search-input', onChange: function (event) {
6661
6689
  return searchFunction ? searchFunction(channelSearchParams, event) : onSearch(event);
6662
- }, placeholder: t('Search'), ref: inputRef, type: 'text', value: query }));
6690
+ }, placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : t('Search'), ref: inputRef, type: 'text', value: query }));
6663
6691
  };
6664
6692
 
6665
- var isChannel = function (output) {
6666
- return output.cid != null;
6667
- };
6693
+ var isChannel = function (output) { return output.cid != null; };
6668
6694
 
6669
6695
  var DefaultDropdownContainer = function (props) {
6670
6696
  var focusedUser = props.focusedUser, results = props.results, _a = props.SearchResultItem, SearchResultItem = _a === void 0 ? DefaultSearchResultItem : _a, selectResult = props.selectResult;
6671
- return (React__default['default'].createElement("div", null, results.map(function (result, index) { return (React__default['default'].createElement(SearchResultItem, { focusedUser: focusedUser, index: index, key: index, result: result, selectResult: selectResult })); })));
6697
+ return (React__default['default'].createElement(React__default['default'].Fragment, null, results.map(function (result, index) { return (React__default['default'].createElement(SearchResultItem, { focusedUser: focusedUser, index: index, key: index, result: result, selectResult: selectResult })); })));
6672
6698
  };
6673
6699
  var DefaultSearchResultItem = function (props) {
6674
- var _a;
6700
+ var _a, _b;
6675
6701
  var focusedUser = props.focusedUser, index = props.index, result = props.result, selectResult = props.selectResult;
6676
6702
  var focused = focusedUser === index;
6677
6703
  if (isChannel(result)) {
6678
6704
  var channel_1 = result;
6679
- return (React__default['default'].createElement("div", { className: "str-chat__channel-search-result " + (focused ? 'focused' : ''), onClick: function () { return selectResult(channel_1); } },
6705
+ return (React__default['default'].createElement("button", { "aria-label": "Select Channel: " + (((_a = channel_1.data) === null || _a === void 0 ? void 0 : _a.name) || ''), className: "str-chat__channel-search-result " + (focused ? 'focused' : ''), onClick: function () { return selectResult(channel_1); } },
6680
6706
  React__default['default'].createElement("div", { className: 'result-hashtag' }, "#"),
6681
- React__default['default'].createElement("p", { className: 'channel-search__result-text' }, (_a = channel_1.data) === null || _a === void 0 ? void 0 : _a.name)));
6707
+ React__default['default'].createElement("p", { className: 'channel-search__result-text' }, (_b = channel_1.data) === null || _b === void 0 ? void 0 : _b.name)));
6682
6708
  }
6683
6709
  else {
6684
- return (React__default['default'].createElement("div", { className: "str-chat__channel-search-result " + (focused ? 'focused' : ''), onClick: function () { return selectResult(result); } },
6710
+ return (React__default['default'].createElement("button", { "aria-label": "Select User Channel: " + (result.name || ''), className: "str-chat__channel-search-result " + (focused ? 'focused' : ''), onClick: function () { return selectResult(result); } },
6685
6711
  React__default['default'].createElement(Avatar, { image: result.image, user: result }),
6686
6712
  result.name || result.id));
6687
6713
  }
@@ -6727,7 +6753,7 @@ var SearchResults = function (props) {
6727
6753
  return (React__default['default'].createElement(ResultsContainer, null, SearchLoading ? (React__default['default'].createElement(SearchLoading, null)) : (React__default['default'].createElement("div", { className: 'str-chat__channel-search-container-searching' }, t('Searching...')))));
6728
6754
  }
6729
6755
  if (!results.length) {
6730
- return (React__default['default'].createElement(ResultsContainer, null, SearchEmpty ? (React__default['default'].createElement(SearchEmpty, null)) : (React__default['default'].createElement("div", { className: 'str-chat__channel-search-container-empty' }, t('No results found')))));
6756
+ return (React__default['default'].createElement(ResultsContainer, null, SearchEmpty ? (React__default['default'].createElement(SearchEmpty, null)) : (React__default['default'].createElement("div", { "aria-live": 'polite', className: 'str-chat__channel-search-container-empty' }, t('No results found')))));
6731
6757
  }
6732
6758
  return (React__default['default'].createElement(ResultsContainer, null,
6733
6759
  SearchResultsHeader && React__default['default'].createElement(SearchResultsHeader, null),
@@ -6735,7 +6761,7 @@ var SearchResults = function (props) {
6735
6761
  };
6736
6762
 
6737
6763
  var UnMemoizedChannelSearch = function (props) {
6738
- var _a = props.channelType, channelType = _a === void 0 ? 'messaging' : _a, DropdownContainer = props.DropdownContainer, onSelectResult = props.onSelectResult, _b = props.popupResults, popupResults = _b === void 0 ? false : _b, SearchEmpty = props.SearchEmpty, _c = props.searchForChannels, searchForChannels = _c === void 0 ? false : _c, searchFunction = props.searchFunction, _d = props.SearchInput, SearchInput$1 = _d === void 0 ? SearchInput : _d, SearchLoading = props.SearchLoading, searchQueryParams = props.searchQueryParams, SearchResultItem = props.SearchResultItem, SearchResultsHeader = props.SearchResultsHeader;
6764
+ var _a = props.channelType, channelType = _a === void 0 ? 'messaging' : _a, DropdownContainer = props.DropdownContainer, onSelectResult = props.onSelectResult, placeholder = props.placeholder, _b = props.popupResults, popupResults = _b === void 0 ? false : _b, SearchEmpty = props.SearchEmpty, _c = props.searchForChannels, searchForChannels = _c === void 0 ? false : _c, searchFunction = props.searchFunction, _d = props.SearchInput, SearchInput$1 = _d === void 0 ? SearchInput : _d, SearchLoading = props.SearchLoading, searchQueryParams = props.searchQueryParams, SearchResultItem = props.SearchResultItem, SearchResultsHeader = props.SearchResultsHeader;
6739
6765
  var _e = useChatContext('ChannelSearch'), client = _e.client, setActiveChannel = _e.setActiveChannel;
6740
6766
  var _f = React.useState(''), query = _f[0], setQuery = _f[1];
6741
6767
  var _g = React.useState([]), results = _g[0], setResults = _g[1];
@@ -6837,8 +6863,8 @@ var UnMemoizedChannelSearch = function (props) {
6837
6863
  setResultsOpen: setResultsOpen,
6838
6864
  setSearching: setSearching,
6839
6865
  };
6840
- return (React__default['default'].createElement("div", { className: 'str-chat__channel-search' },
6841
- React__default['default'].createElement(SearchInput$1, { channelSearchParams: channelSearchParams, inputRef: inputRef, onSearch: onSearch, query: query, searchFunction: searchFunction }),
6866
+ return (React__default['default'].createElement("div", { className: 'str-chat__channel-search', "data-testid": 'channel-search' },
6867
+ React__default['default'].createElement(SearchInput$1, { channelSearchParams: channelSearchParams, inputRef: inputRef, onSearch: onSearch, placeholder: placeholder, query: query, searchFunction: searchFunction }),
6842
6868
  query && (React__default['default'].createElement(SearchResults, { DropdownContainer: DropdownContainer, popupResults: popupResults, results: results, SearchEmpty: SearchEmpty, searching: searching, SearchLoading: SearchLoading, SearchResultItem: SearchResultItem, SearchResultsHeader: SearchResultsHeader, selectResult: onSelectResult || selectResult }))));
6843
6869
  };
6844
6870
  /**
@@ -6852,7 +6878,7 @@ var UnMemoizedEmptyStateIndicator = function (props) {
6852
6878
  var listType = props.listType;
6853
6879
  var t = useTranslationContext('EmptyStateIndicator').t;
6854
6880
  if (listType === 'channel')
6855
- return React__default['default'].createElement("p", null, t('You have no channels currently'));
6881
+ return React__default['default'].createElement("p", { role: 'listitem' }, t('You have no channels currently'));
6856
6882
  if (listType === 'message')
6857
6883
  return null;
6858
6884
  return React__default['default'].createElement("p", null, "No items exist");
@@ -6862,7 +6888,7 @@ var EmptyStateIndicator = React__default['default'].memo(UnMemoizedEmptyStateInd
6862
6888
  var UnMemoizedLoadMoreButton = function (props) {
6863
6889
  var _a = props.children, children = _a === void 0 ? 'Load more' : _a, onClick = props.onClick, refreshing = props.refreshing;
6864
6890
  return (React__default['default'].createElement("div", { className: 'str-chat__load-more-button' },
6865
- React__default['default'].createElement("button", { className: 'str-chat__load-more-button__button', "data-testid": 'load-more-button', disabled: refreshing, onClick: onClick }, refreshing ? React__default['default'].createElement(reactFileUtils.LoadingIndicator, null) : children)));
6891
+ React__default['default'].createElement("button", { "aria-label": 'Load More Channels', className: 'str-chat__load-more-button__button', "data-testid": 'load-more-button', disabled: refreshing, onClick: onClick }, refreshing ? React__default['default'].createElement(reactFileUtils.LoadingIndicator, null) : children)));
6866
6892
  };
6867
6893
  var LoadMoreButton = React__default['default'].memo(UnMemoizedLoadMoreButton);
6868
6894
 
@@ -6983,29 +7009,29 @@ var UnMemoizedChannelList = function (props) {
6983
7009
  */
6984
7010
  var ChannelList = React__default['default'].memo(UnMemoizedChannelList);
6985
7011
 
6986
- var Cancel$b="Stornieren";var Close$b="Schließen";var Delete$b="Löschen";var Delivered$b="Geliefert";var Flag$b="Flagge";var Mute$b="Stumm";var New$b="Neu";var Pin$b="Stift";var Reply$b="Antworten";var Search$b="Suche";var Send$b="Senden";var Thread$c="Thread";var Unmute$b="Stummschaltung aufheben";var Unpin$b="Lösen Sie den Stift";var live$b="live";var deTranslations = {"1 reply":"1 Antwort","Attach files":"Dateien anhängen",Cancel:Cancel$b,"Channel Missing":"Kanal fehlt",Close:Close$b,"Close emoji picker":"Emoji-Picker schließen","Commands matching":"Übereinstimmende Befehle","Connection failure, reconnecting now...":"Verbindungsfehler, jetzt wieder verbinden...",Delete:Delete$b,Delivered:Delivered$b,"Edit Message":"Nachricht bearbeiten","Edit message request failed":"Anfrage zum Bearbeiten der Nachricht fehlgeschlagen","Emoji matching":"Emoji passend","Empty message...":"Leere Nachricht...","Error adding flag":"Fehler beim Hinzufügen des Flags","Error connecting to chat, refresh the page to try again.":"Fehler beim Herstellen einer Verbindung zum Chat. Aktualisieren Sie die Seite, um es erneut zu versuchen.","Error deleting message":"Fehler beim Löschen der Nachricht","Error muting a user ...":"Fehler beim Stummschalten eines Benutzers...","Error pinning message":"Fehler beim Fixieren der Nachricht","Error removing message pin":"Fehler beim Entfernen des Nachrichten-Pins","Error unmuting a user ...":"Fehler beim Stummschalten eines Benutzers...","Error uploading file":"Fehler beim Hochladen der Datei","Error uploading image":"Fehler beim hochladen des Bildes","Error · Unsent":"Fehler nicht gesendet","Error: {{ errorMessage }}":"Fehler: {{ errorMessage }}",Flag:Flag$b,"Message Failed · Click to try again":"Nachricht fehlgeschlagen · Klicken Sie hier, um es erneut zu versuchen","Message Failed · Unauthorized":"Nachricht fehlgeschlagen · Nicht autorisiert","Message deleted":"Nachricht gelöscht","Message has been successfully flagged":"Nachricht wurde erfolgreich markiert","Message pinned":"Nachricht angeheftet",Mute:Mute$b,New:New$b,"New Messages!":"Neue Nachrichten!","No results found":"keine Ergebnisse gefunden","Nothing yet...":"Noch nichts...","Only visible to you":"Nur für Sie sichtbar","Open emoji picker":"Öffnen Sie den Emoji-Picker","People matching":"Passende Personen","Pick your emoji":"Wähle dein Emoji",Pin:Pin$b,"Pinned by":"Gepinnt von",Reply:Reply$b,"Reply to Message":"Auf Nachricht antworten",Search:Search$b,"Searching...":"Suchen...",Send:Send$b,"Send message request failed":"Nachrichtenanfrage senden fehlgeschlagen","Sending...":"Senden...","Slow Mode ON":"Langsamer Modus EIN","Start of a new thread":"Start eines neuen Threads","This message was deleted...":"Diese Nachricht wurde gelöscht...",Thread:Thread$c,"Type your message":"Geben Sie Ihre Nachricht ein",Unmute:Unmute$b,Unpin:Unpin$b,"Upload type: \"{{ type }}\" is not allowed":"Upload-Typ: \"{{ type }}\" ist nicht erlaubt","Wait until all attachments have uploaded":"Warten Sie, bis alle Anhänge hochgeladen wurden","You have no channels currently":"Sie haben derzeit keine Kanäle","You've reached the maximum number of files":"Sie haben die maximale Anzahl von Dateien erreicht",live:live$b,"this content could not be displayed":"Dieser Inhalt konnte nicht angezeigt werden","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} und {{moreCount}} Mehr","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} und {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} und {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} Mehr","{{ memberCount }} members":"{{ memberCount }} Mitglieder","{{ replyCount }} replies":"{{ replyCount }} antworten","{{ user }} has been muted":"{{ user }} wurde stummgeschaltet","{{ user }} has been unmuted":"{{ user }} wurde nicht stummgeschaltet","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Anhang..."};
7012
+ var Cancel$b="Stornieren";var Close$b="Schließen";var Delete$b="Löschen";var Delivered$b="Geliefert";var Flag$b="Flagge";var Menu$b="Speisekarte";var Mute$b="Stumm";var New$b="Neu";var Pin$b="Stift";var Reply$b="Antworten";var Search$b="Suche";var Send$b="Senden";var Thread$c="Thread";var Unmute$b="Stummschaltung aufheben";var Unpin$b="Lösen Sie den Stift";var live$b="live";var deTranslations = {"1 reply":"1 Antwort","Attach files":"Dateien anhängen",Cancel:Cancel$b,"Channel Missing":"Kanal fehlt",Close:Close$b,"Close emoji picker":"Emoji-Picker schließen","Commands matching":"Übereinstimmende Befehle","Connection failure, reconnecting now...":"Verbindungsfehler, jetzt wieder verbinden...",Delete:Delete$b,Delivered:Delivered$b,"Edit Message":"Nachricht bearbeiten","Edit message request failed":"Anfrage zum Bearbeiten der Nachricht fehlgeschlagen","Emoji matching":"Emoji passend","Empty message...":"Leere Nachricht...","Error adding flag":"Fehler beim Hinzufügen des Flags","Error connecting to chat, refresh the page to try again.":"Fehler beim Herstellen einer Verbindung zum Chat. Aktualisieren Sie die Seite, um es erneut zu versuchen.","Error deleting message":"Fehler beim Löschen der Nachricht","Error muting a user ...":"Fehler beim Stummschalten eines Benutzers...","Error pinning message":"Fehler beim Fixieren der Nachricht","Error removing message pin":"Fehler beim Entfernen des Nachrichten-Pins","Error unmuting a user ...":"Fehler beim Stummschalten eines Benutzers...","Error uploading file":"Fehler beim Hochladen der Datei","Error uploading image":"Fehler beim hochladen des Bildes","Error · Unsent":"Fehler nicht gesendet","Error: {{ errorMessage }}":"Fehler: {{ errorMessage }}",Flag:Flag$b,Menu:Menu$b,"Message Failed · Click to try again":"Nachricht fehlgeschlagen · Klicken Sie hier, um es erneut zu versuchen","Message Failed · Unauthorized":"Nachricht fehlgeschlagen · Nicht autorisiert","Message deleted":"Nachricht gelöscht","Message has been successfully flagged":"Nachricht wurde erfolgreich markiert","Message pinned":"Nachricht angeheftet",Mute:Mute$b,New:New$b,"New Messages!":"Neue Nachrichten!","No results found":"keine Ergebnisse gefunden","Nothing yet...":"Noch nichts...","Only visible to you":"Nur für Sie sichtbar","Open emoji picker":"Öffnen Sie den Emoji-Picker","People matching":"Passende Personen","Pick your emoji":"Wähle dein Emoji",Pin:Pin$b,"Pinned by":"Gepinnt von",Reply:Reply$b,"Reply to Message":"Auf Nachricht antworten",Search:Search$b,"Searching...":"Suchen...",Send:Send$b,"Send message request failed":"Nachrichtenanfrage senden fehlgeschlagen","Sending...":"Senden...","Slow Mode ON":"Langsamer Modus EIN","Start of a new thread":"Start eines neuen Threads","This message was deleted...":"Diese Nachricht wurde gelöscht...",Thread:Thread$c,"Type your message":"Geben Sie Ihre Nachricht ein",Unmute:Unmute$b,Unpin:Unpin$b,"Upload type: \"{{ type }}\" is not allowed":"Upload-Typ: \"{{ type }}\" ist nicht erlaubt","Wait until all attachments have uploaded":"Warten Sie, bis alle Anhänge hochgeladen wurden","You have no channels currently":"Sie haben derzeit keine Kanäle","You've reached the maximum number of files":"Sie haben die maximale Anzahl von Dateien erreicht",live:live$b,"this content could not be displayed":"Dieser Inhalt konnte nicht angezeigt werden","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} und {{moreCount}} Mehr","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} und {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} und {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} Mehr","{{ memberCount }} members":"{{ memberCount }} Mitglieder","{{ replyCount }} replies":"{{ replyCount }} antworten","{{ user }} has been muted":"{{ user }} wurde stummgeschaltet","{{ user }} has been unmuted":"{{ user }} wurde nicht stummgeschaltet","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Anhang..."};
6987
7013
 
6988
- var Cancel$a="Cancel";var Close$a="Close";var Delete$a="Delete";var Delivered$a="Delivered";var Flag$a="Flag";var Mute$a="Mute";var New$a="New";var Pin$a="Pin";var Reply$a="Reply";var Search$a="Search";var Send$a="Send";var Thread$b="Thread";var Unmute$a="Unmute";var Unpin$a="Unpin";var live$a="live";var enTranslations = {"1 reply":"1 reply","Attach files":"Attach files",Cancel:Cancel$a,"Channel Missing":"Channel Missing",Close:Close$a,"Close emoji picker":"Close emoji picker","Commands matching":"Commands matching","Connection failure, reconnecting now...":"Connection failure, reconnecting now...",Delete:Delete$a,Delivered:Delivered$a,"Edit Message":"Edit Message","Edit message request failed":"Edit message request failed","Emoji matching":"Emoji matching","Empty message...":"Empty message...","Error adding flag":"Error adding flag","Error connecting to chat, refresh the page to try again.":"Error connecting to chat, refresh the page to try again.","Error deleting message":"Error deleting message","Error muting a user ...":"Error muting a user ...","Error pinning message":"Error pinning message","Error removing message pin":"Error removing message pin","Error unmuting a user ...":"Error unmuting a user ...","Error uploading file":"Error uploading file","Error uploading image":"Error uploading image","Error · Unsent":"Error · Unsent","Error: {{ errorMessage }}":"Error: {{ errorMessage }}",Flag:Flag$a,"Message Failed · Click to try again":"Message Failed · Click to try again","Message Failed · Unauthorized":"Message Failed · Unauthorized","Message deleted":"Message deleted","Message has been successfully flagged":"Message has been successfully flagged","Message pinned":"Message pinned",Mute:Mute$a,New:New$a,"New Messages!":"New Messages!","No results found":"No results found","Nothing yet...":"Nothing yet...","Only visible to you":"Only visible to you","Open emoji picker":"Open emoji picker","People matching":"People matching","Pick your emoji":"Pick your emoji",Pin:Pin$a,"Pinned by":"Pinned by",Reply:Reply$a,"Reply to Message":"Reply to Message",Search:Search$a,"Searching...":"Searching...",Send:Send$a,"Send message request failed":"Send message request failed","Sending...":"Sending...","Slow Mode ON":"Slow Mode ON","Start of a new thread":"Start of a new thread","This message was deleted...":"This message was deleted...",Thread:Thread$b,"Type your message":"Type your message",Unmute:Unmute$a,Unpin:Unpin$a,"Upload type: \"{{ type }}\" is not allowed":"Upload type: \"{{ type }}\" is not allowed","Wait until all attachments have uploaded":"Wait until all attachments have uploaded","You have no channels currently":"You have no channels currently","You've reached the maximum number of files":"You've reached the maximum number of files",live:live$a,"this content could not be displayed":"this content could not be displayed","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} and {{ moreCount }} more","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }}, and {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} and {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} more","{{ memberCount }} members":"{{ memberCount }} members","{{ replyCount }} replies":"{{ replyCount }} replies","{{ user }} has been muted":"{{ user }} has been muted","{{ user }} has been unmuted":"{{ user }} has been unmuted","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Attachment..."};
7014
+ var Cancel$a="Cancel";var Close$a="Close";var Delete$a="Delete";var Delivered$a="Delivered";var Flag$a="Flag";var Menu$a="Menu";var Mute$a="Mute";var New$a="New";var Pin$a="Pin";var Reply$a="Reply";var Search$a="Search";var Send$a="Send";var Thread$b="Thread";var Unmute$a="Unmute";var Unpin$a="Unpin";var live$a="live";var enTranslations = {"1 reply":"1 reply","Attach files":"Attach files",Cancel:Cancel$a,"Channel Missing":"Channel Missing",Close:Close$a,"Close emoji picker":"Close emoji picker","Commands matching":"Commands matching","Connection failure, reconnecting now...":"Connection failure, reconnecting now...",Delete:Delete$a,Delivered:Delivered$a,"Edit Message":"Edit Message","Edit message request failed":"Edit message request failed","Emoji matching":"Emoji matching","Empty message...":"Empty message...","Error adding flag":"Error adding flag","Error connecting to chat, refresh the page to try again.":"Error connecting to chat, refresh the page to try again.","Error deleting message":"Error deleting message","Error muting a user ...":"Error muting a user ...","Error pinning message":"Error pinning message","Error removing message pin":"Error removing message pin","Error unmuting a user ...":"Error unmuting a user ...","Error uploading file":"Error uploading file","Error uploading image":"Error uploading image","Error · Unsent":"Error · Unsent","Error: {{ errorMessage }}":"Error: {{ errorMessage }}",Flag:Flag$a,Menu:Menu$a,"Message Failed · Click to try again":"Message Failed · Click to try again","Message Failed · Unauthorized":"Message Failed · Unauthorized","Message deleted":"Message deleted","Message has been successfully flagged":"Message has been successfully flagged","Message pinned":"Message pinned",Mute:Mute$a,New:New$a,"New Messages!":"New Messages!","No results found":"No results found","Nothing yet...":"Nothing yet...","Only visible to you":"Only visible to you","Open emoji picker":"Open emoji picker","People matching":"People matching","Pick your emoji":"Pick your emoji",Pin:Pin$a,"Pinned by":"Pinned by",Reply:Reply$a,"Reply to Message":"Reply to Message",Search:Search$a,"Searching...":"Searching...",Send:Send$a,"Send message request failed":"Send message request failed","Sending...":"Sending...","Slow Mode ON":"Slow Mode ON","Start of a new thread":"Start of a new thread","This message was deleted...":"This message was deleted...",Thread:Thread$b,"Type your message":"Type your message",Unmute:Unmute$a,Unpin:Unpin$a,"Upload type: \"{{ type }}\" is not allowed":"Upload type: \"{{ type }}\" is not allowed","Wait until all attachments have uploaded":"Wait until all attachments have uploaded","You have no channels currently":"You have no channels currently","You've reached the maximum number of files":"You've reached the maximum number of files",live:live$a,"this content could not be displayed":"this content could not be displayed","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} and {{ moreCount }} more","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }}, and {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} and {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} more","{{ memberCount }} members":"{{ memberCount }} members","{{ replyCount }} replies":"{{ replyCount }} replies","{{ user }} has been muted":"{{ user }} has been muted","{{ user }} has been unmuted":"{{ user }} has been unmuted","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Attachment..."};
6989
7015
 
6990
- var Cancel$9="Cancelar";var Close$9="Cerca";var Delete$9="Borrar";var Delivered$9="Entregado";var Flag$9="Bandera";var Mute$9="Mudo";var New$9="Nuevo";var Pin$9="Alfiler";var Reply$9="Respuesta";var Search$9="Buscar";var Send$9="Enviar";var Thread$a="Hilo";var Unmute$9="Activar sonido";var Unpin$9="Desprender";var live$9="En Vivo";var esTranslations = {"1 reply":"1 respuesta","Attach files":"Adjuntar archivos",Cancel:Cancel$9,"Channel Missing":"Falta canal",Close:Close$9,"Close emoji picker":"Cerrar el selector de emojis","Commands matching":"Coincidencia de comandos","Connection failure, reconnecting now...":"Fallo de conexión, reconectando ahora ...",Delete:Delete$9,Delivered:Delivered$9,"Edit Message":"Editar mensaje","Edit message request failed":"Error al editar la solicitud de mensaje","Emoji matching":"Coincidencia de emoji","Empty message...":"Mensaje vacío ...","Error adding flag":"Error al agregar la bandera","Error connecting to chat, refresh the page to try again.":"Error al conectarse al chat, actualice la página para volver a intentarlo.","Error deleting message":"Error al eliminar el mensaje","Error muting a user ...":"Error al silenciar a un usuario ...","Error pinning message":"Mensaje de error al fijar","Error removing message pin":"Error al quitar el pin del mensaje","Error unmuting a user ...":"Error al activar el silencio de un usuario ...","Error uploading file":"Error al cargar el archivo","Error uploading image":"Error subiendo imagen","Error · Unsent":"Error · No enviado","Error: {{ errorMessage }}":"Error: {{ errorMessage }}",Flag:Flag$9,"Message Failed · Click to try again":"Mensaje fallido · Haga clic para volver a intentarlo","Message Failed · Unauthorized":"Mensaje fallido · No autorizado","Message deleted":"Mensaje borrado","Message has been successfully flagged":"El mensaje se marcó correctamente","Message pinned":"Mensaje fijado",Mute:Mute$9,New:New$9,"New Messages!":"¡Nuevos mensajes!","No results found":"No se han encontrado resultados","Nothing yet...":"Nada aún...","Only visible to you":"Solo visible para ti","Open emoji picker":"Selector de emoji abierto","People matching":"Personas que coinciden","Pick your emoji":"Elige tu emoji",Pin:Pin$9,"Pinned by":"Fijado por",Reply:Reply$9,"Reply to Message":"Responder al mensaje",Search:Search$9,"Searching...":"Buscando...",Send:Send$9,"Send message request failed":"Error al enviar la solicitud de mensaje","Sending...":"Enviando...","Slow Mode ON":"Modo lento activado","Start of a new thread":"Inicio de un nuevo hilo","This message was deleted...":"Este mensaje fue eliminado ...",Thread:Thread$a,"Type your message":"Escribe tu mensaje",Unmute:Unmute$9,Unpin:Unpin$9,"Upload type: \"{{ type }}\" is not allowed":"Tipo de carga: \"{{ type }}\" no está permitido","Wait until all attachments have uploaded":"Espere hasta que se hayan cargado todos los archivos adjuntos","You have no channels currently":"Actualmente no tienes canales","You've reached the maximum number of files":"Has alcanzado el número máximo de archivos",live:live$9,"this content could not be displayed":"este contenido no se pudo mostrar","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} y {{ moreCount }} más","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} y {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} y {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} más","{{ memberCount }} members":"{{ memberCount }} miembros","{{ replyCount }} replies":"{{ replyCount }} respuestas","{{ user }} has been muted":"{{ user }} ha sido silenciado","{{ user }} has been unmuted":"{{ user }} se ha desactivado","{{ watcherCount }} online":"{{ watcherCount }} en línea","🏙 Attachment...":"🏙 Adjunto..."};
7016
+ var Cancel$9="Cancelar";var Close$9="Cerca";var Delete$9="Borrar";var Delivered$9="Entregado";var Flag$9="Bandera";var Menu$9="Menú";var Mute$9="Mudo";var New$9="Nuevo";var Pin$9="Alfiler";var Reply$9="Respuesta";var Search$9="Buscar";var Send$9="Enviar";var Thread$a="Hilo";var Unmute$9="Activar sonido";var Unpin$9="Desprender";var live$9="En Vivo";var esTranslations = {"1 reply":"1 respuesta","Attach files":"Adjuntar archivos",Cancel:Cancel$9,"Channel Missing":"Falta canal",Close:Close$9,"Close emoji picker":"Cerrar el selector de emojis","Commands matching":"Coincidencia de comandos","Connection failure, reconnecting now...":"Fallo de conexión, reconectando ahora ...",Delete:Delete$9,Delivered:Delivered$9,"Edit Message":"Editar mensaje","Edit message request failed":"Error al editar la solicitud de mensaje","Emoji matching":"Coincidencia de emoji","Empty message...":"Mensaje vacío ...","Error adding flag":"Error al agregar la bandera","Error connecting to chat, refresh the page to try again.":"Error al conectarse al chat, actualice la página para volver a intentarlo.","Error deleting message":"Error al eliminar el mensaje","Error muting a user ...":"Error al silenciar a un usuario ...","Error pinning message":"Mensaje de error al fijar","Error removing message pin":"Error al quitar el pin del mensaje","Error unmuting a user ...":"Error al activar el silencio de un usuario ...","Error uploading file":"Error al cargar el archivo","Error uploading image":"Error subiendo imagen","Error · Unsent":"Error · No enviado","Error: {{ errorMessage }}":"Error: {{ errorMessage }}",Flag:Flag$9,Menu:Menu$9,"Message Failed · Click to try again":"Mensaje fallido · Haga clic para volver a intentarlo","Message Failed · Unauthorized":"Mensaje fallido · No autorizado","Message deleted":"Mensaje borrado","Message has been successfully flagged":"El mensaje se marcó correctamente","Message pinned":"Mensaje fijado",Mute:Mute$9,New:New$9,"New Messages!":"¡Nuevos mensajes!","No results found":"No se han encontrado resultados","Nothing yet...":"Nada aún...","Only visible to you":"Solo visible para ti","Open emoji picker":"Selector de emoji abierto","People matching":"Personas que coinciden","Pick your emoji":"Elige tu emoji",Pin:Pin$9,"Pinned by":"Fijado por",Reply:Reply$9,"Reply to Message":"Responder al mensaje",Search:Search$9,"Searching...":"Buscando...",Send:Send$9,"Send message request failed":"Error al enviar la solicitud de mensaje","Sending...":"Enviando...","Slow Mode ON":"Modo lento activado","Start of a new thread":"Inicio de un nuevo hilo","This message was deleted...":"Este mensaje fue eliminado ...",Thread:Thread$a,"Type your message":"Escribe tu mensaje",Unmute:Unmute$9,Unpin:Unpin$9,"Upload type: \"{{ type }}\" is not allowed":"Tipo de carga: \"{{ type }}\" no está permitido","Wait until all attachments have uploaded":"Espere hasta que se hayan cargado todos los archivos adjuntos","You have no channels currently":"Actualmente no tienes canales","You've reached the maximum number of files":"Has alcanzado el número máximo de archivos",live:live$9,"this content could not be displayed":"este contenido no se pudo mostrar","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} y {{ moreCount }} más","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} y {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} y {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} más","{{ memberCount }} members":"{{ memberCount }} miembros","{{ replyCount }} replies":"{{ replyCount }} respuestas","{{ user }} has been muted":"{{ user }} ha sido silenciado","{{ user }} has been unmuted":"{{ user }} se ha desactivado","{{ watcherCount }} online":"{{ watcherCount }} en línea","🏙 Attachment...":"🏙 Adjunto..."};
6991
7017
 
6992
- var Cancel$8="Annuler";var Close$8="Fermer";var Delete$8="Supprimer";var Delivered$8="Publié";var Flag$8="Signaler";var Mute$8="Muet";var New$8="Nouveaux";var Pin$8="Épingle";var Reply$8="Réponse";var Search$8="Rechercher";var Send$8="Envoyer";var Thread$9="Fil de discussion";var Unmute$8="Désactiver muet";var Unpin$8="Détacher";var live$8="en direct";var frTranslations = {"1 reply":"1 réponse","Attach files":"Pièces jointes",Cancel:Cancel$8,"Channel Missing":"Canal Manquant",Close:Close$8,"Close emoji picker":"Fermer le sélecteur d'emojis","Commands matching":"Correspondance des commandes","Connection failure, reconnecting now...":"Échec de la connexion, reconnexion en cours...",Delete:Delete$8,Delivered:Delivered$8,"Edit Message":"Éditer un message","Edit message request failed":"Échec de la demande de modification du message","Emoji matching":"Correspondance emoji","Empty message...":"Message vide...","Error adding flag":"Erreur lors de l'ajout du drapeau","Error connecting to chat, refresh the page to try again.":"Erreur de connexion au chat, rafraîchissez la page pour réessayer.","Error deleting message":"Erreur lors de la suppression du message","Error muting a user ...":"Erreur de mise en sourdine d'un utilisateur ...","Error pinning message":"Erreur d'épinglage du message","Error removing message pin":"Erreur lors de la suppression du code PIN du message","Error unmuting a user ...":"Erreur de désactivation de la fonction sourdine pour un utilisateur ...","Error uploading file":"Erreur lors du téléchargement du fichier","Error uploading image":"Erreur lors de l'envoi de l'image","Error · Unsent":"Erreur - Non envoyé","Error: {{ errorMessage }}":"Erreur : {{ errorMessage }}",Flag:Flag$8,"Message Failed · Click to try again":"Échec de l'envoi du message - Cliquez pour réessayer","Message Failed · Unauthorized":"Échec de l'envoi du message - Non autorisé","Message deleted":"Message supprimé","Message has been successfully flagged":"Le message a été signalé avec succès","Message pinned":"Message épinglé",Mute:Mute$8,New:New$8,"New Messages!":"Nouveaux Messages!","No results found":"Aucun résultat trouvé","Nothing yet...":"Aucun message...","Only visible to you":"Visible uniquement pour vous","Open emoji picker":"Ouvrez le sélecteur d'emoji","People matching":"Correspondance de personnes","Pick your emoji":"Choisissez votre emoji",Pin:Pin$8,"Pinned by":"Épinglé par",Reply:Reply$8,"Reply to Message":"Répondre au message",Search:Search$8,"Searching...":"Recherche...",Send:Send$8,"Send message request failed":"Échec de la demande d'envoi de message","Sending...":"Envoi en cours...","Slow Mode ON":"Mode lent activé","Start of a new thread":"Début d'un nouveau fil de discussion","This message was deleted...":"Ce message a été supprimé...",Thread:Thread$9,"Type your message":"Saisissez votre message",Unmute:Unmute$8,Unpin:Unpin$8,"Upload type: \"{{ type }}\" is not allowed":"Le type de téléchargement: \"{{ type }}\" n'est pas autorisé","Wait until all attachments have uploaded":"Attendez que toutes les pièces jointes soient téléchargées","You have no channels currently":"Vous n'avez actuellement aucun canal","You've reached the maximum number of files":"Vous avez atteint le nombre maximum de fichiers",live:live$8,"this content could not be displayed":"ce contenu n'a pu être affiché","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} et {{ moreCount }} autres","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} et {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} et {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} supplémentaires","{{ memberCount }} members":"{{ memberCount }} membres","{{ replyCount }} replies":"{{ replyCount }} réponses","{{ user }} has been muted":"{{ user }} a été mis en sourdine","{{ user }} has been unmuted":"{{ user }} n'est plus en sourdine","{{ watcherCount }} online":"{{ watcherCount }} en ligne","🏙 Attachment...":"🏙 Pièce jointe..."};
7018
+ var Cancel$8="Annuler";var Close$8="Fermer";var Delete$8="Supprimer";var Delivered$8="Publié";var Flag$8="Signaler";var Menu$8="Menu";var Mute$8="Muet";var New$8="Nouveaux";var Pin$8="Épingle";var Reply$8="Réponse";var Search$8="Rechercher";var Send$8="Envoyer";var Thread$9="Fil de discussion";var Unmute$8="Désactiver muet";var Unpin$8="Détacher";var live$8="en direct";var frTranslations = {"1 reply":"1 réponse","Attach files":"Pièces jointes",Cancel:Cancel$8,"Channel Missing":"Canal Manquant",Close:Close$8,"Close emoji picker":"Fermer le sélecteur d'emojis","Commands matching":"Correspondance des commandes","Connection failure, reconnecting now...":"Échec de la connexion, reconnexion en cours...",Delete:Delete$8,Delivered:Delivered$8,"Edit Message":"Éditer un message","Edit message request failed":"Échec de la demande de modification du message","Emoji matching":"Correspondance emoji","Empty message...":"Message vide...","Error adding flag":"Erreur lors de l'ajout du drapeau","Error connecting to chat, refresh the page to try again.":"Erreur de connexion au chat, rafraîchissez la page pour réessayer.","Error deleting message":"Erreur lors de la suppression du message","Error muting a user ...":"Erreur de mise en sourdine d'un utilisateur ...","Error pinning message":"Erreur d'épinglage du message","Error removing message pin":"Erreur lors de la suppression du code PIN du message","Error unmuting a user ...":"Erreur de désactivation de la fonction sourdine pour un utilisateur ...","Error uploading file":"Erreur lors du téléchargement du fichier","Error uploading image":"Erreur lors de l'envoi de l'image","Error · Unsent":"Erreur - Non envoyé","Error: {{ errorMessage }}":"Erreur : {{ errorMessage }}",Flag:Flag$8,Menu:Menu$8,"Message Failed · Click to try again":"Échec de l'envoi du message - Cliquez pour réessayer","Message Failed · Unauthorized":"Échec de l'envoi du message - Non autorisé","Message deleted":"Message supprimé","Message has been successfully flagged":"Le message a été signalé avec succès","Message pinned":"Message épinglé",Mute:Mute$8,New:New$8,"New Messages!":"Nouveaux Messages!","No results found":"Aucun résultat trouvé","Nothing yet...":"Aucun message...","Only visible to you":"Visible uniquement pour vous","Open emoji picker":"Ouvrez le sélecteur d'emoji","People matching":"Correspondance de personnes","Pick your emoji":"Choisissez votre emoji",Pin:Pin$8,"Pinned by":"Épinglé par",Reply:Reply$8,"Reply to Message":"Répondre au message",Search:Search$8,"Searching...":"Recherche...",Send:Send$8,"Send message request failed":"Échec de la demande d'envoi de message","Sending...":"Envoi en cours...","Slow Mode ON":"Mode lent activé","Start of a new thread":"Début d'un nouveau fil de discussion","This message was deleted...":"Ce message a été supprimé...",Thread:Thread$9,"Type your message":"Saisissez votre message",Unmute:Unmute$8,Unpin:Unpin$8,"Upload type: \"{{ type }}\" is not allowed":"Le type de téléchargement: \"{{ type }}\" n'est pas autorisé","Wait until all attachments have uploaded":"Attendez que toutes les pièces jointes soient téléchargées","You have no channels currently":"Vous n'avez actuellement aucun canal","You've reached the maximum number of files":"Vous avez atteint le nombre maximum de fichiers",live:live$8,"this content could not be displayed":"ce contenu n'a pu être affiché","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} et {{ moreCount }} autres","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} et {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} et {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} supplémentaires","{{ memberCount }} members":"{{ memberCount }} membres","{{ replyCount }} replies":"{{ replyCount }} réponses","{{ user }} has been muted":"{{ user }} a été mis en sourdine","{{ user }} has been unmuted":"{{ user }} n'est plus en sourdine","{{ watcherCount }} online":"{{ watcherCount }} en ligne","🏙 Attachment...":"🏙 Pièce jointe..."};
6993
7019
 
6994
- var Cancel$7="रद्द करें";var Close$7="बंद करे";var Delete$7="डिलीट";var Delivered$7="पहुंच गया";var Flag$7="फ्लैग करे";var Mute$7="म्यूट करे";var New$7="नए";var Pin$7="पिन";var Reply$7="जवाब दे दो";var Search$7="खोज";var Send$7="भेजे";var Thread$8="रिप्लाई थ्रेड";var Unmute$7="अनम्यूट";var Unpin$7="अनपिन";var live$7="लाइव";var hiTranslations = {"1 reply":"1 रिप्लाई","Attach files":"फाइल्स अटैच करे",Cancel:Cancel$7,"Channel Missing":"चैनल उपलब्ध नहीं है",Close:Close$7,"Close emoji picker":"इमोजी पिकर बंद करें","Commands matching":"मेल खाती है","Connection failure, reconnecting now...":"कनेक्शन विफल रहा, अब पुनः कनेक्ट हो रहा है ...",Delete:Delete$7,Delivered:Delivered$7,"Edit Message":"मैसेज में बदलाव करे","Edit message request failed":"संदेश संपादित करने का अनुरोध विफल रहा","Emoji matching":"इमोजी मिलान","Empty message...":"खाली संदेश ...","Error adding flag":"ध्वज जोड़ने में त्रुटि","Error connecting to chat, refresh the page to try again.":"चैट से कनेक्ट करने में त्रुटि, पेज को रिफ्रेश करें","Error deleting message":"संदेश हटाने में त्रुटि","Error muting a user ...":"यूजर को म्यूट करने का प्रयास फेल हुआ","Error pinning message":"संदेश को पिन करने में त्रुटि","Error removing message pin":"संदेश पिन निकालने में त्रुटि","Error unmuting a user ...":"यूजर को अनम्यूट करने का प्रयास फेल हुआ","Error uploading file":"फ़ाइल अपलोड करने में त्रुटि","Error uploading image":"छवि अपलोड करने में त्रुटि","Error · Unsent":"फेल","Error: {{ errorMessage }}":"फेल: {{ errorMessage }}",Flag:Flag$7,"Message Failed · Click to try again":"मैसेज फ़ैल - पुनः कोशिश करें","Message Failed · Unauthorized":"मैसेज फ़ैल - अनधिकृत","Message deleted":"मैसेज हटा दिया गया","Message has been successfully flagged":"मैसेज को फ्लैग कर दिया गया है","Message pinned":"संदेश पिन किया गया",Mute:Mute$7,New:New$7,"New Messages!":"नए मैसेज!","No results found":"कोई परिणाम नहीं मिला","Nothing yet...":"कोई मैसेज नहीं है","Only visible to you":"सिर्फ आपको दिखाई दे रहा है","Open emoji picker":"इमोजी पिकर खोलिये","People matching":"मेल खाते लोग","Pick your emoji":"इमोजी चूस करे",Pin:Pin$7,"Pinned by":"द्वारा पिन किया गया",Reply:Reply$7,"Reply to Message":"संदेश का जवाब दें",Search:Search$7,"Searching...":"खोज कर...",Send:Send$7,"Send message request failed":"संदेश भेजने का अनुरोध विफल रहा","Sending...":"भेजा जा रहा है","Slow Mode ON":"स्लो मोड ऑन","Start of a new thread":"एक नए थ्रेड की शुरुआत","This message was deleted...":"मैसेज हटा दिया गया",Thread:Thread$8,"Type your message":"अपना मैसेज लिखे",Unmute:Unmute$7,Unpin:Unpin$7,"Upload type: \"{{ type }}\" is not allowed":"अपलोड प्रकार: \"{{ type }}\" की अनुमति नहीं है","Wait until all attachments have uploaded":"सभी अटैचमेंट अपलोड होने तक प्रतीक्षा करें","You have no channels currently":"आपके पास कोई चैनल नहीं है","You've reached the maximum number of files":"आप अधिकतम फ़ाइलों तक पहुँच गए हैं",live:live$7,"this content could not be displayed":"यह कॉन्टेंट लोड नहीं हो पाया","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} और {{ moreCount }} और","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} और {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} और {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} और","{{ memberCount }} members":"{{ memberCount }} मेंबर्स","{{ replyCount }} replies":"{{ replyCount }} रिप्लाई","{{ user }} has been muted":"{{ user }} को म्यूट कर दिया गया है","{{ user }} has been unmuted":"{{ user }} को अनम्यूट कर दिया गया है","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 अटैचमेंट"};
7020
+ var Cancel$7="रद्द करें";var Close$7="बंद करे";var Delete$7="डिलीट";var Delivered$7="पहुंच गया";var Flag$7="फ्लैग करे";var Menu$7="मेन्यू";var Mute$7="म्यूट करे";var New$7="नए";var Pin$7="पिन";var Reply$7="जवाब दे दो";var Search$7="खोज";var Send$7="भेजे";var Thread$8="रिप्लाई थ्रेड";var Unmute$7="अनम्यूट";var Unpin$7="अनपिन";var live$7="लाइव";var hiTranslations = {"1 reply":"1 रिप्लाई","Attach files":"फाइल्स अटैच करे",Cancel:Cancel$7,"Channel Missing":"चैनल उपलब्ध नहीं है",Close:Close$7,"Close emoji picker":"इमोजी पिकर बंद करें","Commands matching":"मेल खाती है","Connection failure, reconnecting now...":"कनेक्शन विफल रहा, अब पुनः कनेक्ट हो रहा है ...",Delete:Delete$7,Delivered:Delivered$7,"Edit Message":"मैसेज में बदलाव करे","Edit message request failed":"संदेश संपादित करने का अनुरोध विफल रहा","Emoji matching":"इमोजी मिलान","Empty message...":"खाली संदेश ...","Error adding flag":"ध्वज जोड़ने में त्रुटि","Error connecting to chat, refresh the page to try again.":"चैट से कनेक्ट करने में त्रुटि, पेज को रिफ्रेश करें","Error deleting message":"संदेश हटाने में त्रुटि","Error muting a user ...":"यूजर को म्यूट करने का प्रयास फेल हुआ","Error pinning message":"संदेश को पिन करने में त्रुटि","Error removing message pin":"संदेश पिन निकालने में त्रुटि","Error unmuting a user ...":"यूजर को अनम्यूट करने का प्रयास फेल हुआ","Error uploading file":"फ़ाइल अपलोड करने में त्रुटि","Error uploading image":"छवि अपलोड करने में त्रुटि","Error · Unsent":"फेल","Error: {{ errorMessage }}":"फेल: {{ errorMessage }}",Flag:Flag$7,Menu:Menu$7,"Message Failed · Click to try again":"मैसेज फ़ैल - पुनः कोशिश करें","Message Failed · Unauthorized":"मैसेज फ़ैल - अनधिकृत","Message deleted":"मैसेज हटा दिया गया","Message has been successfully flagged":"मैसेज को फ्लैग कर दिया गया है","Message pinned":"संदेश पिन किया गया",Mute:Mute$7,New:New$7,"New Messages!":"नए मैसेज!","No results found":"कोई परिणाम नहीं मिला","Nothing yet...":"कोई मैसेज नहीं है","Only visible to you":"सिर्फ आपको दिखाई दे रहा है","Open emoji picker":"इमोजी पिकर खोलिये","People matching":"मेल खाते लोग","Pick your emoji":"इमोजी चूस करे",Pin:Pin$7,"Pinned by":"द्वारा पिन किया गया",Reply:Reply$7,"Reply to Message":"संदेश का जवाब दें",Search:Search$7,"Searching...":"खोज कर...",Send:Send$7,"Send message request failed":"संदेश भेजने का अनुरोध विफल रहा","Sending...":"भेजा जा रहा है","Slow Mode ON":"स्लो मोड ऑन","Start of a new thread":"एक नए थ्रेड की शुरुआत","This message was deleted...":"मैसेज हटा दिया गया",Thread:Thread$8,"Type your message":"अपना मैसेज लिखे",Unmute:Unmute$7,Unpin:Unpin$7,"Upload type: \"{{ type }}\" is not allowed":"अपलोड प्रकार: \"{{ type }}\" की अनुमति नहीं है","Wait until all attachments have uploaded":"सभी अटैचमेंट अपलोड होने तक प्रतीक्षा करें","You have no channels currently":"आपके पास कोई चैनल नहीं है","You've reached the maximum number of files":"आप अधिकतम फ़ाइलों तक पहुँच गए हैं",live:live$7,"this content could not be displayed":"यह कॉन्टेंट लोड नहीं हो पाया","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} और {{ moreCount }} और","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} और {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} और {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} और","{{ memberCount }} members":"{{ memberCount }} मेंबर्स","{{ replyCount }} replies":"{{ replyCount }} रिप्लाई","{{ user }} has been muted":"{{ user }} को म्यूट कर दिया गया है","{{ user }} has been unmuted":"{{ user }} को अनम्यूट कर दिया गया है","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 अटैचमेंट"};
6995
7021
 
6996
- var Cancel$6="Annulla";var Close$6="Chiudi";var Delete$6="Cancella";var Delivered$6="Consegnato";var Flag$6="Segnala";var Mute$6="Silenzia";var New$6="Nuovo";var Pin$6="Pin";var Reply$6="Rispondere";var Search$6="Ricerca";var Send$6="Invia";var Thread$7="Thread";var Unmute$6="Riattiva le notifiche";var Unpin$6="Sblocca";var live$6="live";var itTranslations = {"1 reply":"Una risposta","Attach files":"Allega file",Cancel:Cancel$6,"Channel Missing":"Il canale non esiste",Close:Close$6,"Close emoji picker":"Chiudi il selettore di emoji","Commands matching":"Comandi corrispondenti","Connection failure, reconnecting now...":"Connessione fallitta, riconnessione in corso...",Delete:Delete$6,Delivered:Delivered$6,"Edit Message":"Modifica messaggio","Edit message request failed":"Richiesta di modifica del messaggio non riuscita","Emoji matching":"Abbinamento emoji","Empty message...":"Message vuoto...","Error adding flag":"Errore durante l'aggiunta del flag","Error connecting to chat, refresh the page to try again.":"Errore di connessione alla chat, aggiorna la pagina per riprovare","Error deleting message":"Errore durante l'eliminazione del messaggio","Error muting a user ...":"Errore silenziando un utente ...","Error pinning message":"Errore durante il blocco del messaggio","Error removing message pin":"Errore durante la rimozione del PIN del messaggio","Error unmuting a user ...":"Errore riattivando le notifiche per l'utente ...","Error uploading file":"Errore durante il caricamento del file","Error uploading image":"Errore durante il caricamento dell'immagine","Error · Unsent":"Errore · Non inviato","Error: {{ errorMessage }}":"Errore: {{ errorMessage }}",Flag:Flag$6,"Message Failed · Click to try again":"Invio messaggio fallito · Clicca per riprovare","Message Failed · Unauthorized":"Invio messaggio fallito · Non autorizzato","Message deleted":"Messaggio cancellato","Message has been successfully flagged":"Il messaggio é stato segnalato con successo","Message pinned":"Messaggio bloccato",Mute:Mute$6,New:New$6,"New Messages!":"Nuovo messaggio!","No results found":"Nessun risultato trovato","Nothing yet...":"Ancora niente...","Only visible to you":"Visibile soltanto da te","Open emoji picker":"Apri il selettore dellle emoji","People matching":"Persone che corrispondono","Pick your emoji":"Scegli la tua emoji",Pin:Pin$6,"Pinned by":"Appuntato da",Reply:Reply$6,"Reply to Message":"Rispondi al messaggio",Search:Search$6,"Searching...":"Ricerca in corso ...",Send:Send$6,"Send message request failed":"Invia messaggio di richiesta non riuscito","Sending...":"Invio in corso...","Slow Mode ON":"Modalità lenta attivata","Start of a new thread":"Inizia un nuovo thread","This message was deleted...":"Questo messaggio é stato cancellato",Thread:Thread$7,"Type your message":"Scrivi il tuo messaggio",Unmute:Unmute$6,Unpin:Unpin$6,"Upload type: \"{{ type }}\" is not allowed":"Tipo di caricamento: \"{{ type }}\" non è consentito","Wait until all attachments have uploaded":"Attendi il caricamento di tutti gli allegati","You have no channels currently":"Al momento non sono presenti canali","You've reached the maximum number of files":"Hai raggiunto il numero massimo di file",live:live$6,"this content could not be displayed":"questo contenuto non puó essere mostrato","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} e altri {{ moreCount }}","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} e {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} e {{ secondUser }}","{{ imageCount }} more":"+ {{ imageCount }}","{{ memberCount }} members":"{{ memberCount }} membri","{{ replyCount }} replies":"{{ replyCount }} risposte","{{ user }} has been muted":"{{ user }} é stato silenziato","{{ user }} has been unmuted":"Notifiche riattivate per {{ user }}","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Allegato..."};
7022
+ var Cancel$6="Annulla";var Close$6="Chiudi";var Delete$6="Cancella";var Delivered$6="Consegnato";var Flag$6="Segnala";var Menu$6="Menù";var Mute$6="Silenzia";var New$6="Nuovo";var Pin$6="Pin";var Reply$6="Rispondere";var Search$6="Ricerca";var Send$6="Invia";var Thread$7="Thread";var Unmute$6="Riattiva le notifiche";var Unpin$6="Sblocca";var live$6="live";var itTranslations = {"1 reply":"Una risposta","Attach files":"Allega file",Cancel:Cancel$6,"Channel Missing":"Il canale non esiste",Close:Close$6,"Close emoji picker":"Chiudi il selettore di emoji","Commands matching":"Comandi corrispondenti","Connection failure, reconnecting now...":"Connessione fallitta, riconnessione in corso...",Delete:Delete$6,Delivered:Delivered$6,"Edit Message":"Modifica messaggio","Edit message request failed":"Richiesta di modifica del messaggio non riuscita","Emoji matching":"Abbinamento emoji","Empty message...":"Message vuoto...","Error adding flag":"Errore durante l'aggiunta del flag","Error connecting to chat, refresh the page to try again.":"Errore di connessione alla chat, aggiorna la pagina per riprovare","Error deleting message":"Errore durante l'eliminazione del messaggio","Error muting a user ...":"Errore silenziando un utente ...","Error pinning message":"Errore durante il blocco del messaggio","Error removing message pin":"Errore durante la rimozione del PIN del messaggio","Error unmuting a user ...":"Errore riattivando le notifiche per l'utente ...","Error uploading file":"Errore durante il caricamento del file","Error uploading image":"Errore durante il caricamento dell'immagine","Error · Unsent":"Errore · Non inviato","Error: {{ errorMessage }}":"Errore: {{ errorMessage }}",Flag:Flag$6,Menu:Menu$6,"Message Failed · Click to try again":"Invio messaggio fallito · Clicca per riprovare","Message Failed · Unauthorized":"Invio messaggio fallito · Non autorizzato","Message deleted":"Messaggio cancellato","Message has been successfully flagged":"Il messaggio é stato segnalato con successo","Message pinned":"Messaggio bloccato",Mute:Mute$6,New:New$6,"New Messages!":"Nuovo messaggio!","No results found":"Nessun risultato trovato","Nothing yet...":"Ancora niente...","Only visible to you":"Visibile soltanto da te","Open emoji picker":"Apri il selettore dellle emoji","People matching":"Persone che corrispondono","Pick your emoji":"Scegli la tua emoji",Pin:Pin$6,"Pinned by":"Appuntato da",Reply:Reply$6,"Reply to Message":"Rispondi al messaggio",Search:Search$6,"Searching...":"Ricerca in corso ...",Send:Send$6,"Send message request failed":"Invia messaggio di richiesta non riuscito","Sending...":"Invio in corso...","Slow Mode ON":"Modalità lenta attivata","Start of a new thread":"Inizia un nuovo thread","This message was deleted...":"Questo messaggio é stato cancellato",Thread:Thread$7,"Type your message":"Scrivi il tuo messaggio",Unmute:Unmute$6,Unpin:Unpin$6,"Upload type: \"{{ type }}\" is not allowed":"Tipo di caricamento: \"{{ type }}\" non è consentito","Wait until all attachments have uploaded":"Attendi il caricamento di tutti gli allegati","You have no channels currently":"Al momento non sono presenti canali","You've reached the maximum number of files":"Hai raggiunto il numero massimo di file",live:live$6,"this content could not be displayed":"questo contenuto non puó essere mostrato","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} e altri {{ moreCount }}","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} e {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} e {{ secondUser }}","{{ imageCount }} more":"+ {{ imageCount }}","{{ memberCount }} members":"{{ memberCount }} membri","{{ replyCount }} replies":"{{ replyCount }} risposte","{{ user }} has been muted":"{{ user }} é stato silenziato","{{ user }} has been unmuted":"Notifiche riattivate per {{ user }}","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Allegato..."};
6997
7023
 
6998
- var Cancel$5="キャンセル";var Close$5="閉める";var Delete$5="消去";var Delivered$5="配信しました";var Flag$5="フラグ";var Mute$5="無音";var New$5="新しい";var Pin$5="ピン";var Reply$5="返事";var Search$5="探す";var Send$5="送信";var Thread$6="スレッド";var Unmute$5="無音を解除する";var Unpin$5="ピンを解除する";var live$5="ライブ";var jaTranslations = {"1 reply":"1件の返信","Attach files":"ファイルを添付する",Cancel:Cancel$5,"Channel Missing":"チャネルがありません",Close:Close$5,"Close emoji picker":"絵文字ピッカーを閉める","Commands matching":"一致するコマンド","Connection failure, reconnecting now...":"接続が失敗しました。再接続中...",Delete:Delete$5,Delivered:Delivered$5,"Edit Message":"メッセージを編集","Edit message request failed":"メッセージの編集要求が失敗しました","Emoji matching":"絵文字マッチング","Empty message...":"空のメッセージ...","Error adding flag":"フラグを追加のエラーが発生しました","Error connecting to chat, refresh the page to try again.":"チャットへの接続ができませんでした。ページを更新してください。","Error deleting message":"メッセージを削除するエラーが発生しました","Error muting a user ...":"ユーザーを無音するエラーが発生しました...","Error pinning message":"メッセージをピンのエラーが発生しました","Error removing message pin":"メッセージのピンを削除のエラーが発生しました","Error unmuting a user ...":"ユーザーの無音解除のエラーが発生しました...","Error uploading file":"ファイルをアップロードのエラーが発生しました","Error uploading image":"画像をアップロードのエラーが発生しました","Error · Unsent":"エラー・未送信","Error: {{ errorMessage }}":"エラー: {{ errorMessage }}",Flag:Flag$5,"Message Failed · Click to try again":"メッセージが失敗しました · クリックして再試行してください","Message Failed · Unauthorized":"メッセージが失敗しました · 許可されていません","Message deleted":"メッセージが削除されました","Message has been successfully flagged":"メッセージに正常にフラグが付けられました","Message pinned":"メッセージにピンが付けられました",Mute:Mute$5,New:New$5,"New Messages!":"新しいメッセージ!","No results found":"結果が見つかりません","Nothing yet...":"まだ何もありません...","Only visible to you":"あなただけに見える","Open emoji picker":"絵文字ピッカーを開く","People matching":"一致する人","Pick your emoji":"絵文字を選んでください",Pin:Pin$5,"Pinned by":"ピンした方",Reply:Reply$5,"Reply to Message":"メッセージに返信",Search:Search$5,"Searching...":"検索中...",Send:Send$5,"Send message request failed":"メッセージ送信リクエストが失敗しました","Sending...":"送信中...","Slow Mode ON":"スローモードオン","Start of a new thread":"新しいスレッドの開始","This message was deleted...":"このメッセージは削除されました...",Thread:Thread$6,"Type your message":"メッセージを入力してください",Unmute:Unmute$5,Unpin:Unpin$5,"Upload type: \"{{ type }}\" is not allowed":"アップロードタイプ:\"{{ type }}\"は許可されていません","Wait until all attachments have uploaded":"すべての添付ファイルがアップロードされるまでお待ちください","You have no channels currently":"現在チャンネルはありません","You've reached the maximum number of files":"ファイルの最大数に達しました",live:live$5,"this content could not be displayed":"このコンテンツは表示できませんでした","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} と {{ moreCount }} 他人","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} と {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} と {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} イメージ","{{ memberCount }} members":"{{ memberCount }} メンバー","{{ replyCount }} replies":"{{ replyCount }} 返信","{{ user }} has been muted":"{{ user }} 無音されています","{{ user }} has been unmuted":"{{ user }} 無音されていません","{{ watcherCount }} online":"{{ watcherCount }} オンライン","🏙 Attachment...":"🏙 アタッチメント..."};
7024
+ var Cancel$5="キャンセル";var Close$5="閉める";var Delete$5="消去";var Delivered$5="配信しました";var Flag$5="フラグ";var Menu$5="メニュー";var Mute$5="無音";var New$5="新しい";var Pin$5="ピン";var Reply$5="返事";var Search$5="探す";var Send$5="送信";var Thread$6="スレッド";var Unmute$5="無音を解除する";var Unpin$5="ピンを解除する";var live$5="ライブ";var jaTranslations = {"1 reply":"1件の返信","Attach files":"ファイルを添付する",Cancel:Cancel$5,"Channel Missing":"チャネルがありません",Close:Close$5,"Close emoji picker":"絵文字ピッカーを閉める","Commands matching":"一致するコマンド","Connection failure, reconnecting now...":"接続が失敗しました。再接続中...",Delete:Delete$5,Delivered:Delivered$5,"Edit Message":"メッセージを編集","Edit message request failed":"メッセージの編集要求が失敗しました","Emoji matching":"絵文字マッチング","Empty message...":"空のメッセージ...","Error adding flag":"フラグを追加のエラーが発生しました","Error connecting to chat, refresh the page to try again.":"チャットへの接続ができませんでした。ページを更新してください。","Error deleting message":"メッセージを削除するエラーが発生しました","Error muting a user ...":"ユーザーを無音するエラーが発生しました...","Error pinning message":"メッセージをピンのエラーが発生しました","Error removing message pin":"メッセージのピンを削除のエラーが発生しました","Error unmuting a user ...":"ユーザーの無音解除のエラーが発生しました...","Error uploading file":"ファイルをアップロードのエラーが発生しました","Error uploading image":"画像をアップロードのエラーが発生しました","Error · Unsent":"エラー・未送信","Error: {{ errorMessage }}":"エラー: {{ errorMessage }}",Flag:Flag$5,Menu:Menu$5,"Message Failed · Click to try again":"メッセージが失敗しました · クリックして再試行してください","Message Failed · Unauthorized":"メッセージが失敗しました · 許可されていません","Message deleted":"メッセージが削除されました","Message has been successfully flagged":"メッセージに正常にフラグが付けられました","Message pinned":"メッセージにピンが付けられました",Mute:Mute$5,New:New$5,"New Messages!":"新しいメッセージ!","No results found":"結果が見つかりません","Nothing yet...":"まだ何もありません...","Only visible to you":"あなただけに見える","Open emoji picker":"絵文字ピッカーを開く","People matching":"一致する人","Pick your emoji":"絵文字を選んでください",Pin:Pin$5,"Pinned by":"ピンした方",Reply:Reply$5,"Reply to Message":"メッセージに返信",Search:Search$5,"Searching...":"検索中...",Send:Send$5,"Send message request failed":"メッセージ送信リクエストが失敗しました","Sending...":"送信中...","Slow Mode ON":"スローモードオン","Start of a new thread":"新しいスレッドの開始","This message was deleted...":"このメッセージは削除されました...",Thread:Thread$6,"Type your message":"メッセージを入力してください",Unmute:Unmute$5,Unpin:Unpin$5,"Upload type: \"{{ type }}\" is not allowed":"アップロードタイプ:\"{{ type }}\"は許可されていません","Wait until all attachments have uploaded":"すべての添付ファイルがアップロードされるまでお待ちください","You have no channels currently":"現在チャンネルはありません","You've reached the maximum number of files":"ファイルの最大数に達しました",live:live$5,"this content could not be displayed":"このコンテンツは表示できませんでした","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} と {{ moreCount }} 他人","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} と {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} と {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} イメージ","{{ memberCount }} members":"{{ memberCount }} メンバー","{{ replyCount }} replies":"{{ replyCount }} 返信","{{ user }} has been muted":"{{ user }} 無音されています","{{ user }} has been unmuted":"{{ user }} 無音されていません","{{ watcherCount }} online":"{{ watcherCount }} オンライン","🏙 Attachment...":"🏙 アタッチメント..."};
6999
7025
 
7000
- var Cancel$4="취소";var Close$4="닫기";var Delete$4="삭제";var Delivered$4="배달됨";var Flag$4="플래그";var Mute$4="무음";var New$4="새로운";var Pin$4="핀";var Reply$4="답장";var Search$4="찾다";var Send$4="보내다";var Thread$5="스레드";var Unmute$4="음소거 해제";var Unpin$4="핀 해제";var live$4="라이브";var koTranslations = {"1 reply":"답장 1개","Attach files":"파일 첨부",Cancel:Cancel$4,"Channel Missing":"채널 누락",Close:Close$4,"Close emoji picker":"이모티콘 선택기 닫기","Commands matching":"일치하는 명령","Connection failure, reconnecting now...":"연결 실패, 지금 다시 연결 중...",Delete:Delete$4,Delivered:Delivered$4,"Edit Message":"메시지 수정","Edit message request failed":"메시지 수정 요청 실패","Emoji matching":"이모티콘 매칭","Empty message...":"빈 메시지...","Error adding flag":"플래그를 추가하는 동안 오류가 발생했습니다.","Error connecting to chat, refresh the page to try again.":"채팅에 연결하는 동안 오류가 발생했습니다. 페이지를 새로고침하여 다시 시도하세요.","Error deleting message":"메시지를 삭제하는 중에 오류가 발생했습니다.","Error muting a user ...":"사용자를 음소거하는 중에 오류가 발생했습니다...","Error pinning message":"메시지를 핀하는 중에 오류가 발생했습니다.","Error removing message pin":"메시지 핀을 제거하는 중에 오류가 발생했습니다.","Error unmuting a user ...":"사용자 음소거 해제 중 오류 발생...","Error uploading file":"파일 업로드 오류","Error uploading image":"이미지를 업로드하는 동안 오류가 발생했습니다.","Error · Unsent":"오류 · 전송되지 않음","Error: {{ errorMessage }}":"오류: {{ errorMessage }}",Flag:Flag$4,"Message Failed · Click to try again":"메시지 실패 · 다시 시도하려면 클릭하세요.","Message Failed · Unauthorized":"메시지 실패 · 승인되지 않음","Message deleted":"메시지가 삭제되었습니다.","Message has been successfully flagged":"메시지에 플래그가 지정되었습니다.","Message pinned":"메시지 핀했습니다",Mute:Mute$4,New:New$4,"New Messages!":"새 메시지!","No results found":"검색 결과가 없습니다","Nothing yet...":"아직 아무것도...","Only visible to you":"당신만 볼 수 있습니다","Open emoji picker":"이모티콘 선택기 열기","People matching":"일치하는 사람","Pick your emoji":"이모티콘 선택",Pin:Pin$4,"Pinned by":"핀했던 분:",Reply:Reply$4,"Reply to Message":"메시지에 답장",Search:Search$4,"Searching...":"수색...",Send:Send$4,"Send message request failed":"메시지 보내기 요청 실패","Sending...":"배상중...","Slow Mode ON":"슬로우 모드 켜짐","Start of a new thread":"새 스레드의 시작","This message was deleted...":"이 메시지는 삭제되었습니다...",Thread:Thread$5,"Type your message":"메시지 입력",Unmute:Unmute$4,Unpin:Unpin$4,"Upload type: \"{{ type }}\" is not allowed":"업로드 유형: \"{{ type }}\"은(는) 허용되지 않습니다.","Wait until all attachments have uploaded":"모든 첨부 파일이 업로드될 때까지 기다립니다.","You have no channels currently":"현재 채널이 없습니다.","You've reached the maximum number of files":"최대 파일 수에 도달했습니다.",live:live$4,"this content could not be displayed":"이 콘텐츠를 표시할 수 없습니다","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} 그리고 {{ moreCount }}명 더","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} 그리고 {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} 그리고 {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }}개 더","{{ memberCount }} members":"{{ memberCount }}명","{{ replyCount }} replies":"{{ replyCount }} 답장","{{ user }} has been muted":"{{ user }} 음소거되었습니다","{{ user }} has been unmuted":"{{ user }} 음소거가 해제되었습니다","{{ watcherCount }} online":"{{ watcherCount }} 온라인","🏙 Attachment...":"🏙 부착..."};
7026
+ var Cancel$4="취소";var Close$4="닫기";var Delete$4="삭제";var Delivered$4="배달됨";var Flag$4="플래그";var Menu$4="메뉴";var Mute$4="무음";var New$4="새로운";var Pin$4="핀";var Reply$4="답장";var Search$4="찾다";var Send$4="보내다";var Thread$5="스레드";var Unmute$4="음소거 해제";var Unpin$4="핀 해제";var live$4="라이브";var koTranslations = {"1 reply":"답장 1개","Attach files":"파일 첨부",Cancel:Cancel$4,"Channel Missing":"채널 누락",Close:Close$4,"Close emoji picker":"이모티콘 선택기 닫기","Commands matching":"일치하는 명령","Connection failure, reconnecting now...":"연결 실패, 지금 다시 연결 중...",Delete:Delete$4,Delivered:Delivered$4,"Edit Message":"메시지 수정","Edit message request failed":"메시지 수정 요청 실패","Emoji matching":"이모티콘 매칭","Empty message...":"빈 메시지...","Error adding flag":"플래그를 추가하는 동안 오류가 발생했습니다.","Error connecting to chat, refresh the page to try again.":"채팅에 연결하는 동안 오류가 발생했습니다. 페이지를 새로고침하여 다시 시도하세요.","Error deleting message":"메시지를 삭제하는 중에 오류가 발생했습니다.","Error muting a user ...":"사용자를 음소거하는 중에 오류가 발생했습니다...","Error pinning message":"메시지를 핀하는 중에 오류가 발생했습니다.","Error removing message pin":"메시지 핀을 제거하는 중에 오류가 발생했습니다.","Error unmuting a user ...":"사용자 음소거 해제 중 오류 발생...","Error uploading file":"파일 업로드 오류","Error uploading image":"이미지를 업로드하는 동안 오류가 발생했습니다.","Error · Unsent":"오류 · 전송되지 않음","Error: {{ errorMessage }}":"오류: {{ errorMessage }}",Flag:Flag$4,Menu:Menu$4,"Message Failed · Click to try again":"메시지 실패 · 다시 시도하려면 클릭하세요.","Message Failed · Unauthorized":"메시지 실패 · 승인되지 않음","Message deleted":"메시지가 삭제되었습니다.","Message has been successfully flagged":"메시지에 플래그가 지정되었습니다.","Message pinned":"메시지 핀했습니다",Mute:Mute$4,New:New$4,"New Messages!":"새 메시지!","No results found":"검색 결과가 없습니다","Nothing yet...":"아직 아무것도...","Only visible to you":"당신만 볼 수 있습니다","Open emoji picker":"이모티콘 선택기 열기","People matching":"일치하는 사람","Pick your emoji":"이모티콘 선택",Pin:Pin$4,"Pinned by":"핀했던 분:",Reply:Reply$4,"Reply to Message":"메시지에 답장",Search:Search$4,"Searching...":"수색...",Send:Send$4,"Send message request failed":"메시지 보내기 요청 실패","Sending...":"배상중...","Slow Mode ON":"슬로우 모드 켜짐","Start of a new thread":"새 스레드의 시작","This message was deleted...":"이 메시지는 삭제되었습니다...",Thread:Thread$5,"Type your message":"메시지 입력",Unmute:Unmute$4,Unpin:Unpin$4,"Upload type: \"{{ type }}\" is not allowed":"업로드 유형: \"{{ type }}\"은(는) 허용되지 않습니다.","Wait until all attachments have uploaded":"모든 첨부 파일이 업로드될 때까지 기다립니다.","You have no channels currently":"현재 채널이 없습니다.","You've reached the maximum number of files":"최대 파일 수에 도달했습니다.",live:live$4,"this content could not be displayed":"이 콘텐츠를 표시할 수 없습니다","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} 그리고 {{ moreCount }}명 더","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} 그리고 {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} 그리고 {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }}개 더","{{ memberCount }} members":"{{ memberCount }}명","{{ replyCount }} replies":"{{ replyCount }} 답장","{{ user }} has been muted":"{{ user }} 음소거되었습니다","{{ user }} has been unmuted":"{{ user }} 음소거가 해제되었습니다","{{ watcherCount }} online":"{{ watcherCount }} 온라인","🏙 Attachment...":"🏙 부착..."};
7001
7027
 
7002
- var Cancel$3="Annuleer";var Close$3="Sluit";var Delete$3="Verwijder";var Delivered$3="Afgeleverd";var Flag$3="Markeer";var Mute$3="Mute";var New$3="Nieuwe";var Pin$3="Pin";var Reply$3="Antwoord";var Search$3="Zoeken";var Send$3="Verstuur";var Thread$4="Draadje";var Unmute$3="Unmute";var Unpin$3="Losmaken";var live$3="live";var nlTranslations = {"1 reply":"1 antwoord","Attach files":"Bijlage toevoegen",Cancel:Cancel$3,"Channel Missing":"Kanaal niet gevonden",Close:Close$3,"Close emoji picker":"Sluit de emoji-kiezer","Commands matching":"Bijpassende opdrachten","Connection failure, reconnecting now...":"Probleem met de verbinding, opnieuw verbinding maken...",Delete:Delete$3,Delivered:Delivered$3,"Edit Message":"Pas bericht aan","Edit message request failed":"Verzoek om bericht bewerken mislukt","Emoji matching":"Emoji-overeenkomsten","Empty message...":"Leeg bericht...","Error adding flag":"Fout bij toevoegen van vlag","Error connecting to chat, refresh the page to try again.":"Fout bij het verbinden, ververs de pagina om nogmaals te proberen","Error deleting message":"Fout bij verwijderen van bericht","Error muting a user ...":"Fout bij het muten van de gebruiker","Error pinning message":"Fout bij vastzetten van bericht","Error removing message pin":"Fout bij verwijderen van berichtpin","Error unmuting a user ...":"Fout bij het unmuten van de gebruiker","Error uploading file":"Fout bij uploaden bestand","Error uploading image":"Fout bij uploaden afbeelding","Error · Unsent":"Error: · niet verzonden","Error: {{ errorMessage }}":"Error: {{ errorMessage }}",Flag:Flag$3,"Message Failed · Click to try again":"Bericht mislukt, klik om het nogmaals te proberen","Message Failed · Unauthorized":"Bericht mislukt, ongeautoriseerd","Message deleted":"Bericht verwijderd","Message has been successfully flagged":"Bericht is succesvol gemarkeerd","Message pinned":"Bericht vastgezet",Mute:Mute$3,New:New$3,"New Messages!":"Nieuwe Berichten!","No results found":"Geen resultaten gevonden","Nothing yet...":"Nog niets ...","Only visible to you":"Alleen zichtbaar voor jou","Open emoji picker":"Open emojipicker","People matching":"Mensen die matchen","Pick your emoji":"Kies je emoji",Pin:Pin$3,"Pinned by":"Vastgemaakt door",Reply:Reply$3,"Reply to Message":"Antwoord op bericht",Search:Search$3,"Searching...":"Zoeken...",Send:Send$3,"Send message request failed":"Verzoek om bericht te verzenden mislukt","Sending...":"Aan het verzenden...","Slow Mode ON":"Langzame modus aan","Start of a new thread":"Begin van een nieuwe draadje","This message was deleted...":"Dit bericht was verwijderd",Thread:Thread$4,"Type your message":"Type je bericht",Unmute:Unmute$3,Unpin:Unpin$3,"Upload type: \"{{ type }}\" is not allowed":"Uploadtype: \"{{ type }}\" is niet toegestaan","Wait until all attachments have uploaded":"Wacht tot alle bijlagen zijn geüpload","You have no channels currently":"Er zijn geen chats beschikbaar","You've reached the maximum number of files":"Je hebt het maximale aantal bestanden bereikt",live:live$3,"this content could not be displayed":"Deze inhoud kan niet weergegeven worden","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} en {{ moreCount }} meer","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} en {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} en {{ secondUser }}","{{ imageCount }} more":"+{{ imageCount }}","{{ memberCount }} members":"{{ memberCount }} deelnemers","{{ replyCount }} replies":"{{ replyCount }} antwoorden","{{ user }} has been muted":"{{ user }} is muted","{{ user }} has been unmuted":"{{ user }} is unmuted","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Bijlage..."};
7028
+ var Cancel$3="Annuleer";var Close$3="Sluit";var Delete$3="Verwijder";var Delivered$3="Afgeleverd";var Flag$3="Markeer";var Menu$3="Menu";var Mute$3="Mute";var New$3="Nieuwe";var Pin$3="Pin";var Reply$3="Antwoord";var Search$3="Zoeken";var Send$3="Verstuur";var Thread$4="Draadje";var Unmute$3="Unmute";var Unpin$3="Losmaken";var live$3="live";var nlTranslations = {"1 reply":"1 antwoord","Attach files":"Bijlage toevoegen",Cancel:Cancel$3,"Channel Missing":"Kanaal niet gevonden",Close:Close$3,"Close emoji picker":"Sluit de emoji-kiezer","Commands matching":"Bijpassende opdrachten","Connection failure, reconnecting now...":"Probleem met de verbinding, opnieuw verbinding maken...",Delete:Delete$3,Delivered:Delivered$3,"Edit Message":"Pas bericht aan","Edit message request failed":"Verzoek om bericht bewerken mislukt","Emoji matching":"Emoji-overeenkomsten","Empty message...":"Leeg bericht...","Error adding flag":"Fout bij toevoegen van vlag","Error connecting to chat, refresh the page to try again.":"Fout bij het verbinden, ververs de pagina om nogmaals te proberen","Error deleting message":"Fout bij verwijderen van bericht","Error muting a user ...":"Fout bij het muten van de gebruiker","Error pinning message":"Fout bij vastzetten van bericht","Error removing message pin":"Fout bij verwijderen van berichtpin","Error unmuting a user ...":"Fout bij het unmuten van de gebruiker","Error uploading file":"Fout bij uploaden bestand","Error uploading image":"Fout bij uploaden afbeelding","Error · Unsent":"Error: · niet verzonden","Error: {{ errorMessage }}":"Error: {{ errorMessage }}",Flag:Flag$3,Menu:Menu$3,"Message Failed · Click to try again":"Bericht mislukt, klik om het nogmaals te proberen","Message Failed · Unauthorized":"Bericht mislukt, ongeautoriseerd","Message deleted":"Bericht verwijderd","Message has been successfully flagged":"Bericht is succesvol gemarkeerd","Message pinned":"Bericht vastgezet",Mute:Mute$3,New:New$3,"New Messages!":"Nieuwe Berichten!","No results found":"Geen resultaten gevonden","Nothing yet...":"Nog niets ...","Only visible to you":"Alleen zichtbaar voor jou","Open emoji picker":"Open emojipicker","People matching":"Mensen die matchen","Pick your emoji":"Kies je emoji",Pin:Pin$3,"Pinned by":"Vastgemaakt door",Reply:Reply$3,"Reply to Message":"Antwoord op bericht",Search:Search$3,"Searching...":"Zoeken...",Send:Send$3,"Send message request failed":"Verzoek om bericht te verzenden mislukt","Sending...":"Aan het verzenden...","Slow Mode ON":"Langzame modus aan","Start of a new thread":"Begin van een nieuwe draadje","This message was deleted...":"Dit bericht was verwijderd",Thread:Thread$4,"Type your message":"Type je bericht",Unmute:Unmute$3,Unpin:Unpin$3,"Upload type: \"{{ type }}\" is not allowed":"Uploadtype: \"{{ type }}\" is niet toegestaan","Wait until all attachments have uploaded":"Wacht tot alle bijlagen zijn geüpload","You have no channels currently":"Er zijn geen chats beschikbaar","You've reached the maximum number of files":"Je hebt het maximale aantal bestanden bereikt",live:live$3,"this content could not be displayed":"Deze inhoud kan niet weergegeven worden","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} en {{ moreCount }} meer","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} en {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} en {{ secondUser }}","{{ imageCount }} more":"+{{ imageCount }}","{{ memberCount }} members":"{{ memberCount }} deelnemers","{{ replyCount }} replies":"{{ replyCount }} antwoorden","{{ user }} has been muted":"{{ user }} is muted","{{ user }} has been unmuted":"{{ user }} is unmuted","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Bijlage..."};
7003
7029
 
7004
- var Cancel$2="Cancelar";var Close$2="Perto";var Delete$2="Excluir";var Delivered$2="Entregue";var Flag$2="Bandeira";var Mute$2="Mudo";var New$2="Novo";var Pin$2="Alfinete";var Reply$2="Responder";var Search$2="Procurar";var Send$2="Mandar";var Thread$3="Fio";var Unmute$2="Com som";var Unpin$2="Liberar";var live$2="viver";var ptTranslations = {"1 reply":"1 resposta","Attach files":"Anexar arquivos",Cancel:Cancel$2,"Channel Missing":"Canal ausente",Close:Close$2,"Close emoji picker":"Fechar seletor de emoji","Commands matching":"Correspondência de comandos","Connection failure, reconnecting now...":"Falha de conexão, reconectando agora ...",Delete:Delete$2,Delivered:Delivered$2,"Edit Message":"Editar Mensagem","Edit message request failed":"O pedido de edição da mensagem falhou","Emoji matching":"Emoji correspondente","Empty message...":"Mensagem vazia ...","Error adding flag":"Erro ao adicionar bandeira","Error connecting to chat, refresh the page to try again.":"Erro ao conectar ao bate-papo, atualize a página para tentar novamente.","Error deleting message":"Erro ao deletar mensagem","Error muting a user ...":"Erro ao silenciar um usuário ...","Error pinning message":"Erro ao fixar mensagem","Error removing message pin":"Erro ao remover o PIN da mensagem","Error unmuting a user ...":"Erro ao ativar o som de um usuário ...","Error uploading file":"Erro ao enviar arquivo","Error uploading image":"Erro ao carregar a imagem","Error · Unsent":"Erro · Não enviado","Error: {{ errorMessage }}":"Erro: {{ errorMessage }}",Flag:Flag$2,"Message Failed · Click to try again":"A mensagem falhou · Clique para tentar novamente","Message Failed · Unauthorized":"A mensagem falhou · não autorizado","Message deleted":"Mensagem apagada","Message has been successfully flagged":"A mensagem foi sinalizada com sucesso","Message pinned":"Mensagem fixada",Mute:Mute$2,New:New$2,"New Messages!":"Novas mensagens!","No results found":"Nenhum resultado encontrado","Nothing yet...":"Nada ainda...","Only visible to you":"Visível apenas para você","Open emoji picker":"Abrir seletor de emoji","People matching":"Pessoas combinando","Pick your emoji":"Escolha o seu emoji",Pin:Pin$2,"Pinned by":"Fixado por",Reply:Reply$2,"Reply to Message":"Responder a mensagem",Search:Search$2,"Searching...":"Procurando...",Send:Send$2,"Send message request failed":"O pedido de envio de mensagem falhou","Sending...":"Enviando ...","Slow Mode ON":"Modo lento LIGADO","Start of a new thread":"Início de um novo tópico","This message was deleted...":"Esta mensagem foi excluída ...",Thread:Thread$3,"Type your message":"Digite sua mensagem",Unmute:Unmute$2,Unpin:Unpin$2,"Upload type: \"{{ type }}\" is not allowed":"Tipo de upload: \"{{ type }}\" não é permitido","Wait until all attachments have uploaded":"Espere até que todos os anexos tenham sido carregados","You have no channels currently":"Você não tem canais atualmente","You've reached the maximum number of files":"Você atingiu o número máximo de arquivos",live:live$2,"this content could not be displayed":"este conteúdo não pôde ser exibido","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} e mais {{ moreCount }}","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} e {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} e {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} mais","{{ memberCount }} members":"{{ memberCount }} membros","{{ replyCount }} replies":"{{ replyCount }} respostas","{{ user }} has been muted":"{{ user }} foi silenciado","{{ user }} has been unmuted":"{{ user }} foi reativado","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Anexo ..."};
7030
+ var Cancel$2="Cancelar";var Close$2="Perto";var Delete$2="Excluir";var Delivered$2="Entregue";var Flag$2="Bandeira";var Menu$2="Cardápio";var Mute$2="Mudo";var New$2="Novo";var Pin$2="Alfinete";var Reply$2="Responder";var Search$2="Procurar";var Send$2="Mandar";var Thread$3="Fio";var Unmute$2="Com som";var Unpin$2="Liberar";var live$2="viver";var ptTranslations = {"1 reply":"1 resposta","Attach files":"Anexar arquivos",Cancel:Cancel$2,"Channel Missing":"Canal ausente",Close:Close$2,"Close emoji picker":"Fechar seletor de emoji","Commands matching":"Correspondência de comandos","Connection failure, reconnecting now...":"Falha de conexão, reconectando agora ...",Delete:Delete$2,Delivered:Delivered$2,"Edit Message":"Editar Mensagem","Edit message request failed":"O pedido de edição da mensagem falhou","Emoji matching":"Emoji correspondente","Empty message...":"Mensagem vazia ...","Error adding flag":"Erro ao adicionar bandeira","Error connecting to chat, refresh the page to try again.":"Erro ao conectar ao bate-papo, atualize a página para tentar novamente.","Error deleting message":"Erro ao deletar mensagem","Error muting a user ...":"Erro ao silenciar um usuário ...","Error pinning message":"Erro ao fixar mensagem","Error removing message pin":"Erro ao remover o PIN da mensagem","Error unmuting a user ...":"Erro ao ativar o som de um usuário ...","Error uploading file":"Erro ao enviar arquivo","Error uploading image":"Erro ao carregar a imagem","Error · Unsent":"Erro · Não enviado","Error: {{ errorMessage }}":"Erro: {{ errorMessage }}",Flag:Flag$2,Menu:Menu$2,"Message Failed · Click to try again":"A mensagem falhou · Clique para tentar novamente","Message Failed · Unauthorized":"A mensagem falhou · não autorizado","Message deleted":"Mensagem apagada","Message has been successfully flagged":"A mensagem foi sinalizada com sucesso","Message pinned":"Mensagem fixada",Mute:Mute$2,New:New$2,"New Messages!":"Novas mensagens!","No results found":"Nenhum resultado encontrado","Nothing yet...":"Nada ainda...","Only visible to you":"Visível apenas para você","Open emoji picker":"Abrir seletor de emoji","People matching":"Pessoas combinando","Pick your emoji":"Escolha o seu emoji",Pin:Pin$2,"Pinned by":"Fixado por",Reply:Reply$2,"Reply to Message":"Responder a mensagem",Search:Search$2,"Searching...":"Procurando...",Send:Send$2,"Send message request failed":"O pedido de envio de mensagem falhou","Sending...":"Enviando ...","Slow Mode ON":"Modo lento LIGADO","Start of a new thread":"Início de um novo tópico","This message was deleted...":"Esta mensagem foi excluída ...",Thread:Thread$3,"Type your message":"Digite sua mensagem",Unmute:Unmute$2,Unpin:Unpin$2,"Upload type: \"{{ type }}\" is not allowed":"Tipo de upload: \"{{ type }}\" não é permitido","Wait until all attachments have uploaded":"Espere até que todos os anexos tenham sido carregados","You have no channels currently":"Você não tem canais atualmente","You've reached the maximum number of files":"Você atingiu o número máximo de arquivos",live:live$2,"this content could not be displayed":"este conteúdo não pôde ser exibido","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} e mais {{ moreCount }}","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} e {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} e {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} mais","{{ memberCount }} members":"{{ memberCount }} membros","{{ replyCount }} replies":"{{ replyCount }} respostas","{{ user }} has been muted":"{{ user }} foi silenciado","{{ user }} has been unmuted":"{{ user }} foi reativado","{{ watcherCount }} online":"{{ watcherCount }} online","🏙 Attachment...":"🏙 Anexo ..."};
7005
7031
 
7006
- var Cancel$1="Отмена";var Close$1="Закрыть";var Delete$1="Удалить";var Delivered$1="Отправлено";var Flag$1="Пожаловаться";var Mute$1="Отключить уведомления";var New$1="Новые";var Pin$1="Штырь";var Reply$1="Отвечать";var Search$1="Поиск";var Send$1="Отправить";var Thread$2="Ветка";var Unmute$1="Включить уведомления";var Unpin$1="Открепить";var live$1="В прямом эфире";var ruTranslations = {"1 reply":"1 ответ","Attach files":"Прикрепить файлы",Cancel:Cancel$1,"Channel Missing":"Канал не найден",Close:Close$1,"Close emoji picker":"Закрыть окно выбора смайлов","Commands matching":"Соответствие команд","Connection failure, reconnecting now...":"Ошибка соединения, переподключение...",Delete:Delete$1,Delivered:Delivered$1,"Edit Message":"Редактировать сообщение","Edit message request failed":"Не удалось изменить запрос сообщения","Emoji matching":"Соответствие эмодзи","Empty message...":"Пустое сообщение...","Error adding flag":"Ошибка добавления флага","Error connecting to chat, refresh the page to try again.":"Ошибка подключения к чату, обновите страницу чтобы попробовать снова.","Error deleting message":"Ошибка при удалении сообщения","Error muting a user ...":"Ошибка отключения уведомлений от пользователя...","Error pinning message":"Сообщение об ошибке при закреплении","Error removing message pin":"Ошибка при удалении булавки сообщения","Error unmuting a user ...":"Ошибка включения уведомлений...","Error uploading file":"Ошибка при загрузке файла","Error uploading image":"Ошибка загрузки изображения","Error · Unsent":"Ошибка · Не отправлено","Error: {{ errorMessage }}":"Ошибка: {{ errorMessage }}",Flag:Flag$1,"Message Failed · Click to try again":"Ошибка отправки сообщения · Нажмите чтобы повторить","Message Failed · Unauthorized":"Ошибка отправки сообщения · Неавторизованный","Message deleted":"Сообщение удалено","Message has been successfully flagged":"Жалоба на сообщение была принята","Message pinned":"Сообщение закреплено",Mute:Mute$1,New:New$1,"New Messages!":"Новые сообщения!","No results found":"результаты не найдены","Nothing yet...":"Пока ничего нет...","Only visible to you":"Только видно для вас","Open emoji picker":"Выбрать emoji","People matching":"Соответствующие люди","Pick your emoji":"Выберите свой emoji",Pin:Pin$1,"Pinned by":"Закреплено",Reply:Reply$1,"Reply to Message":"Ответить на сообщение",Search:Search$1,"Searching...":"Ищем...",Send:Send$1,"Send message request failed":"Не удалось отправить запрос на отправку сообщения","Sending...":"Отправка...","Slow Mode ON":"Медленный режим включен","Start of a new thread":"Начало новой ветки","This message was deleted...":"Сообщение было удалено...",Thread:Thread$2,"Type your message":"Ваше сообщение",Unmute:Unmute$1,Unpin:Unpin$1,"Upload type: \"{{ type }}\" is not allowed":"Тип загрузки: \"{{ type }}\" не разрешен","Wait until all attachments have uploaded":"Подождите, пока все вложения загрузятся","You have no channels currently":"У вас нет каналов в данный момент","You've reached the maximum number of files":"Вы достигли максимального количества файлов",live:live$1,"this content could not be displayed":"Этот контент не может быть отображен в данный момент","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} и {{ moreCount }} еще","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} и {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} и {{ secondUser }}","{{ imageCount }} more":"Ещё {{ imageCount }}","{{ memberCount }} members":"{{ memberCount }} члены","{{ replyCount }} replies":"{{ replyCount }} ответов","{{ user }} has been muted":"Вы отписались от уведомлений от {{ user }}","{{ user }} has been unmuted":"Уведомления от {{ user }} были включены","{{ watcherCount }} online":"{{ watcherCount }} в сети","🏙 Attachment...":"🏙 Вложение..."};
7032
+ var Cancel$1="Отмена";var Close$1="Закрыть";var Delete$1="Удалить";var Delivered$1="Отправлено";var Flag$1="Пожаловаться";var Menu$1="Меню";var Mute$1="Отключить уведомления";var New$1="Новые";var Pin$1="Штырь";var Reply$1="Отвечать";var Search$1="Поиск";var Send$1="Отправить";var Thread$2="Ветка";var Unmute$1="Включить уведомления";var Unpin$1="Открепить";var live$1="В прямом эфире";var ruTranslations = {"1 reply":"1 ответ","Attach files":"Прикрепить файлы",Cancel:Cancel$1,"Channel Missing":"Канал не найден",Close:Close$1,"Close emoji picker":"Закрыть окно выбора смайлов","Commands matching":"Соответствие команд","Connection failure, reconnecting now...":"Ошибка соединения, переподключение...",Delete:Delete$1,Delivered:Delivered$1,"Edit Message":"Редактировать сообщение","Edit message request failed":"Не удалось изменить запрос сообщения","Emoji matching":"Соответствие эмодзи","Empty message...":"Пустое сообщение...","Error adding flag":"Ошибка добавления флага","Error connecting to chat, refresh the page to try again.":"Ошибка подключения к чату, обновите страницу чтобы попробовать снова.","Error deleting message":"Ошибка при удалении сообщения","Error muting a user ...":"Ошибка отключения уведомлений от пользователя...","Error pinning message":"Сообщение об ошибке при закреплении","Error removing message pin":"Ошибка при удалении булавки сообщения","Error unmuting a user ...":"Ошибка включения уведомлений...","Error uploading file":"Ошибка при загрузке файла","Error uploading image":"Ошибка загрузки изображения","Error · Unsent":"Ошибка · Не отправлено","Error: {{ errorMessage }}":"Ошибка: {{ errorMessage }}",Flag:Flag$1,Menu:Menu$1,"Message Failed · Click to try again":"Ошибка отправки сообщения · Нажмите чтобы повторить","Message Failed · Unauthorized":"Ошибка отправки сообщения · Неавторизованный","Message deleted":"Сообщение удалено","Message has been successfully flagged":"Жалоба на сообщение была принята","Message pinned":"Сообщение закреплено",Mute:Mute$1,New:New$1,"New Messages!":"Новые сообщения!","No results found":"результаты не найдены","Nothing yet...":"Пока ничего нет...","Only visible to you":"Только видно для вас","Open emoji picker":"Выбрать emoji","People matching":"Соответствующие люди","Pick your emoji":"Выберите свой emoji",Pin:Pin$1,"Pinned by":"Закреплено",Reply:Reply$1,"Reply to Message":"Ответить на сообщение",Search:Search$1,"Searching...":"Ищем...",Send:Send$1,"Send message request failed":"Не удалось отправить запрос на отправку сообщения","Sending...":"Отправка...","Slow Mode ON":"Медленный режим включен","Start of a new thread":"Начало новой ветки","This message was deleted...":"Сообщение было удалено...",Thread:Thread$2,"Type your message":"Ваше сообщение",Unmute:Unmute$1,Unpin:Unpin$1,"Upload type: \"{{ type }}\" is not allowed":"Тип загрузки: \"{{ type }}\" не разрешен","Wait until all attachments have uploaded":"Подождите, пока все вложения загрузятся","You have no channels currently":"У вас нет каналов в данный момент","You've reached the maximum number of files":"Вы достигли максимального количества файлов",live:live$1,"this content could not be displayed":"Этот контент не может быть отображен в данный момент","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} и {{ moreCount }} еще","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} и {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} и {{ secondUser }}","{{ imageCount }} more":"Ещё {{ imageCount }}","{{ memberCount }} members":"{{ memberCount }} члены","{{ replyCount }} replies":"{{ replyCount }} ответов","{{ user }} has been muted":"Вы отписались от уведомлений от {{ user }}","{{ user }} has been unmuted":"Уведомления от {{ user }} были включены","{{ watcherCount }} online":"{{ watcherCount }} в сети","🏙 Attachment...":"🏙 Вложение..."};
7007
7033
 
7008
- var Cancel="İptal";var Close="Kapat";var Delete="Sil";var Delivered="İletildi";var Flag="Bayrak";var Mute="Sessiz";var New="Yeni";var Pin="Toplu iğne";var Reply="Cevapla";var Search="Arama";var Send="Gönder";var Thread$1="Konu";var Unmute="Sesini aç";var Unpin="Sabitlemeyi kaldır";var live="canlı";var trTranslations = {"1 reply":"1 cevap","Attach files":"Dosya ekle",Cancel:Cancel,"Channel Missing":"Kanal bulunamıyor",Close:Close,"Close emoji picker":"Emoji seçiciyi kapat","Commands matching":"Eşleşen komutlar","Connection failure, reconnecting now...":"Bağlantı hatası, tekrar bağlanılıyor...",Delete:Delete,Delivered:Delivered,"Edit Message":"Mesajı Düzenle","Edit message request failed":"Mesaj düzenleme isteği başarısız oldu","Emoji matching":"Emoji eşleştirme","Empty message...":"Boş mesaj...","Error adding flag":"Bayrak eklenirken hata oluştu","Error connecting to chat, refresh the page to try again.":"Bağlantı hatası, sayfayı yenileyip tekrar deneyin.","Error deleting message":"Mesaj silinirken hata oluştu","Error muting a user ...":"Kullanıcıyı sessize alırken hata oluştu ...","Error pinning message":"Mesaj sabitlenirken hata oluştu","Error removing message pin":"Mesaj PIN'i kaldırılırken hata oluştu","Error unmuting a user ...":"Kullanıcının sesini açarken hata oluştu ...","Error uploading file":"Dosya yüklenirken hata oluştu","Error uploading image":"Resmi yüklerken hata","Error · Unsent":"Hata · Gönderilemedi","Error: {{ errorMessage }}":"Hata: {{ errorMessage }}",Flag:Flag,"Message Failed · Click to try again":"Mesaj Başarısız · Tekrar denemek için tıklayın","Message Failed · Unauthorized":"Mesaj Başarısız · Yetkisiz","Message deleted":"Mesaj silindi","Message has been successfully flagged":"Mesaj başarıyla bayraklandı","Message pinned":"Mesaj sabitlendi",Mute:Mute,New:New,"New Messages!":"Yeni Mesajlar!","No results found":"Sonuç bulunamadı","Nothing yet...":"Şimdilik hiçbir şey...","Only visible to you":"Sadece size görünür","Open emoji picker":"Emoji klavyesini aç","People matching":"Eşleşen kişiler","Pick your emoji":"Emoji seçin",Pin:Pin,"Pinned by":"Sabitleyen",Reply:Reply,"Reply to Message":"Mesajı Cevapla",Search:Search,"Searching...":"Aranıyor...",Send:Send,"Send message request failed":"Mesaj gönderme isteği başarısız oldu","Sending...":"Gönderiliyor...","Slow Mode ON":"Yavaş Mod Açık","Start of a new thread":"Yeni konunun başı","This message was deleted...":"Bu mesaj silindi",Thread:Thread$1,"Type your message":"Mesajınızı yazın",Unmute:Unmute,Unpin:Unpin,"Upload type: \"{{ type }}\" is not allowed":"Yükleme türü: \"{{ type }}\" izin verilmez","Wait until all attachments have uploaded":"Tüm ekler yüklenene kadar bekleyin","You have no channels currently":"Henüz kanalınız yok","You've reached the maximum number of files":"Maksimum dosya sayısına ulaştınız",live:live,"this content could not be displayed":"bu içerik gösterilemiyor","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} ve {{ moreCount }} daha","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }}, ve {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} ve {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} adet daha","{{ memberCount }} members":"{{ memberCount }} üyeler","{{ replyCount }} replies":"{{ replyCount }} cevaplar","{{ user }} has been muted":"{{ user }} sessize alındı","{{ user }} has been unmuted":"{{ user }} sesi açıldı","{{ watcherCount }} online":"{{ watcherCount }} çevrimiçi","🏙 Attachment...":"🏙 Ek..."};
7034
+ var Cancel="İptal";var Close="Kapat";var Delete="Sil";var Delivered="İletildi";var Flag="Bayrak";var Menu="Menü";var Mute="Sessiz";var New="Yeni";var Pin="Toplu iğne";var Reply="Cevapla";var Search="Arama";var Send="Gönder";var Thread$1="Konu";var Unmute="Sesini aç";var Unpin="Sabitlemeyi kaldır";var live="canlı";var trTranslations = {"1 reply":"1 cevap","Attach files":"Dosya ekle",Cancel:Cancel,"Channel Missing":"Kanal bulunamıyor",Close:Close,"Close emoji picker":"Emoji seçiciyi kapat","Commands matching":"Eşleşen komutlar","Connection failure, reconnecting now...":"Bağlantı hatası, tekrar bağlanılıyor...",Delete:Delete,Delivered:Delivered,"Edit Message":"Mesajı Düzenle","Edit message request failed":"Mesaj düzenleme isteği başarısız oldu","Emoji matching":"Emoji eşleştirme","Empty message...":"Boş mesaj...","Error adding flag":"Bayrak eklenirken hata oluştu","Error connecting to chat, refresh the page to try again.":"Bağlantı hatası, sayfayı yenileyip tekrar deneyin.","Error deleting message":"Mesaj silinirken hata oluştu","Error muting a user ...":"Kullanıcıyı sessize alırken hata oluştu ...","Error pinning message":"Mesaj sabitlenirken hata oluştu","Error removing message pin":"Mesaj PIN'i kaldırılırken hata oluştu","Error unmuting a user ...":"Kullanıcının sesini açarken hata oluştu ...","Error uploading file":"Dosya yüklenirken hata oluştu","Error uploading image":"Resmi yüklerken hata","Error · Unsent":"Hata · Gönderilemedi","Error: {{ errorMessage }}":"Hata: {{ errorMessage }}",Flag:Flag,Menu:Menu,"Message Failed · Click to try again":"Mesaj Başarısız · Tekrar denemek için tıklayın","Message Failed · Unauthorized":"Mesaj Başarısız · Yetkisiz","Message deleted":"Mesaj silindi","Message has been successfully flagged":"Mesaj başarıyla bayraklandı","Message pinned":"Mesaj sabitlendi",Mute:Mute,New:New,"New Messages!":"Yeni Mesajlar!","No results found":"Sonuç bulunamadı","Nothing yet...":"Şimdilik hiçbir şey...","Only visible to you":"Sadece size görünür","Open emoji picker":"Emoji klavyesini aç","People matching":"Eşleşen kişiler","Pick your emoji":"Emoji seçin",Pin:Pin,"Pinned by":"Sabitleyen",Reply:Reply,"Reply to Message":"Mesajı Cevapla",Search:Search,"Searching...":"Aranıyor...",Send:Send,"Send message request failed":"Mesaj gönderme isteği başarısız oldu","Sending...":"Gönderiliyor...","Slow Mode ON":"Yavaş Mod Açık","Start of a new thread":"Yeni konunun başı","This message was deleted...":"Bu mesaj silindi",Thread:Thread$1,"Type your message":"Mesajınızı yazın",Unmute:Unmute,Unpin:Unpin,"Upload type: \"{{ type }}\" is not allowed":"Yükleme türü: \"{{ type }}\" izin verilmez","Wait until all attachments have uploaded":"Tüm ekler yüklenene kadar bekleyin","You have no channels currently":"Henüz kanalınız yok","You've reached the maximum number of files":"Maksimum dosya sayısına ulaştınız",live:live,"this content could not be displayed":"bu içerik gösterilemiyor","{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} ve {{ moreCount }} daha","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }}, ve {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} ve {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} adet daha","{{ memberCount }} members":"{{ memberCount }} üyeler","{{ replyCount }} replies":"{{ replyCount }} cevaplar","{{ user }} has been muted":"{{ user }} sessize alındı","{{ user }} has been unmuted":"{{ user }} sesi açıldı","{{ watcherCount }} online":"{{ watcherCount }} çevrimiçi","🏙 Attachment...":"🏙 Ek..."};
7009
7035
 
7010
7036
  var defaultNS = 'translation';
7011
7037
  var defaultLng = 'en';
@@ -7606,7 +7632,7 @@ var Streami18n = /** @class */ (function () {
7606
7632
  return Streami18n;
7607
7633
  }());
7608
7634
 
7609
- var version = '6.12.2';
7635
+ var version = '8.0.0';
7610
7636
 
7611
7637
  var useChat = function (_a) {
7612
7638
  var _b;
@@ -7619,7 +7645,7 @@ var useChat = function (_a) {
7619
7645
  var _e = React.useState(), channel = _e[0], setChannel = _e[1];
7620
7646
  var _f = React.useState([]), mutes = _f[0], setMutes = _f[1];
7621
7647
  var _g = React.useState(initialNavOpen), navOpen = _g[0], setNavOpen = _g[1];
7622
- var clientMutes = (_b = client.user) === null || _b === void 0 ? void 0 : _b.mutes;
7648
+ var clientMutes = ((_b = client.user) === null || _b === void 0 ? void 0 : _b.mutes) || [];
7623
7649
  var closeMobileNav = function () { return setNavOpen(false); };
7624
7650
  var openMobileNav = function () { return setTimeout(function () { return setNavOpen(true); }, 100); };
7625
7651
  var appSettings = React.useRef(null);
@@ -7640,7 +7666,7 @@ var useChat = function (_a) {
7640
7666
  }
7641
7667
  }, [client]);
7642
7668
  React.useEffect(function () {
7643
- setMutes(clientMutes || []);
7669
+ setMutes(clientMutes);
7644
7670
  var handleEvent = function (event) {
7645
7671
  var _a;
7646
7672
  setMutes(((_a = event.me) === null || _a === void 0 ? void 0 : _a.mutes) || []);
@@ -8341,7 +8367,7 @@ var UnMemoizedCustomNotification = function (props) {
8341
8367
  var active = props.active, children = props.children, type = props.type;
8342
8368
  if (!active)
8343
8369
  return null;
8344
- return (React__default['default'].createElement("div", { className: "str-chat__custom-notification notification-" + type, "data-testid": 'custom-notification' }, children));
8370
+ return (React__default['default'].createElement("div", { "aria-live": 'polite', className: "str-chat__custom-notification notification-" + type, "data-testid": 'custom-notification' }, children));
8345
8371
  };
8346
8372
  var CustomNotification = React__default['default'].memo(UnMemoizedCustomNotification);
8347
8373
 
@@ -8793,7 +8819,7 @@ var UnMemoizedMessageNotification = function (props) {
8793
8819
  var children = props.children, onClick = props.onClick, _a = props.showNotification, showNotification = _a === void 0 ? true : _a;
8794
8820
  if (!showNotification)
8795
8821
  return null;
8796
- return (React__default['default'].createElement("button", { className: 'str-chat__message-notification', "data-testid": 'message-notification', onClick: onClick }, children));
8822
+ return (React__default['default'].createElement("button", { "aria-live": 'polite', className: 'str-chat__message-notification', "data-testid": 'message-notification', onClick: onClick }, children));
8797
8823
  };
8798
8824
  var MessageNotification = React__default['default'].memo(UnMemoizedMessageNotification);
8799
8825
 
@@ -9041,10 +9067,30 @@ function useShouldForceScrollToBottom(messages, currentUserId) {
9041
9067
  }
9042
9068
 
9043
9069
  var PREPEND_OFFSET = Math.pow(10, 7);
9070
+ function captureResizeObserverExceededError(e) {
9071
+ if (e.message === 'ResizeObserver loop completed with undelivered notifications.' ||
9072
+ e.message === 'ResizeObserver loop limit exceeded') {
9073
+ e.stopImmediatePropagation();
9074
+ }
9075
+ }
9076
+ function useCaptureResizeObserverExceededError() {
9077
+ React.useEffect(function () {
9078
+ window.addEventListener('error', captureResizeObserverExceededError);
9079
+ return function () {
9080
+ window.removeEventListener('error', captureResizeObserverExceededError);
9081
+ };
9082
+ }, []);
9083
+ }
9084
+ function fractionalItemSize(element) {
9085
+ return element.getBoundingClientRect().height;
9086
+ }
9044
9087
  var VirtualizedMessageListWithContext = function (props) {
9045
9088
  var additionalVirtuosoProps = props.additionalVirtuosoProps, channel = props.channel, closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, customMessageRenderer = props.customMessageRenderer, defaultItemHeight = props.defaultItemHeight, _a = props.disableDateSeparator, disableDateSeparator = _a === void 0 ? true : _a, hasMore = props.hasMore, _b = props.hideDeletedMessages, hideDeletedMessages = _b === void 0 ? false : _b, _c = props.hideNewMessageSeparator, hideNewMessageSeparator = _c === void 0 ? false : _c, loadingMore = props.loadingMore, loadMore = props.loadMore, propMessage = props.Message, _d = props.messageLimit, messageLimit = _d === void 0 ? 100 : _d, messages = props.messages, notifications = props.notifications, _e = props.overscan, overscan = _e === void 0 ? 0 : _e,
9046
9089
  // TODO: refactor to scrollSeekPlaceHolderConfiguration and components.ScrollSeekPlaceholder, like the Virtuoso Component
9047
9090
  scrollSeekPlaceHolder = props.scrollSeekPlaceHolder, _f = props.scrollToLatestMessageOnFocus, scrollToLatestMessageOnFocus = _f === void 0 ? false : _f, _g = props.separateGiphyPreview, separateGiphyPreview = _g === void 0 ? false : _g, _h = props.shouldGroupByUser, shouldGroupByUser = _h === void 0 ? false : _h, _j = props.stickToBottomScrollBehavior, stickToBottomScrollBehavior = _j === void 0 ? 'smooth' : _j;
9091
+ // Stops errors generated from react-virtuoso to bubble up
9092
+ // to Sentry or other tracking tools.
9093
+ useCaptureResizeObserverExceededError();
9048
9094
  var _k = useComponentContext('VirtualizedMessageList'), _l = _k.DateSeparator, DateSeparator$1 = _l === void 0 ? DateSeparator : _l, _m = _k.EmptyStateIndicator, EmptyStateIndicator$1 = _m === void 0 ? EmptyStateIndicator : _m, _o = _k.GiphyPreviewMessage, GiphyPreviewMessage$1 = _o === void 0 ? GiphyPreviewMessage : _o, _p = _k.LoadingIndicator, LoadingIndicator$1 = _p === void 0 ? LoadingIndicator : _p, _q = _k.MessageListNotifications, MessageListNotifications$1 = _q === void 0 ? MessageListNotifications : _q, _r = _k.MessageNotification, MessageNotification$1 = _r === void 0 ? MessageNotification : _r, _s = _k.MessageSystem, MessageSystem = _s === void 0 ? EventComponent : _s, _t = _k.TypingIndicator, TypingIndicator = _t === void 0 ? null : _t, _u = _k.VirtualMessage, contextMessage = _u === void 0 ? MessageSimple : _u;
9049
9095
  var _v = useChatContext('VirtualizedMessageList'), client = _v.client, customClasses = _v.customClasses;
9050
9096
  var lastRead = React.useMemo(function () { var _a; return (_a = channel.lastRead) === null || _a === void 0 ? void 0 : _a.call(channel); }, [channel]);
@@ -9087,16 +9133,29 @@ var VirtualizedMessageListWithContext = function (props) {
9087
9133
  }
9088
9134
  setNewMessagesNotification(false);
9089
9135
  }, [virtuoso, processedMessages, setNewMessagesNotification, processedMessages.length]);
9136
+ var _y = React__default['default'].useState(false), newMessagesReceivedInBackground = _y[0], setNewMessagesReceivedInBackground = _y[1];
9137
+ var resetNewMessagesReceivedInBackground = React.useCallback(function () {
9138
+ setNewMessagesReceivedInBackground(false);
9139
+ }, []);
9140
+ React.useEffect(function () {
9141
+ setNewMessagesReceivedInBackground(true);
9142
+ }, [messages]);
9090
9143
  var scrollToBottomIfConfigured = React.useCallback(function (event) {
9091
9144
  if (scrollToLatestMessageOnFocus && event.target === window) {
9092
- setTimeout(scrollToBottom, 100);
9145
+ if (newMessagesReceivedInBackground) {
9146
+ setTimeout(scrollToBottom, 100);
9147
+ }
9093
9148
  }
9094
- }, [scrollToLatestMessageOnFocus, scrollToBottom]);
9149
+ }, [scrollToLatestMessageOnFocus, scrollToBottom, newMessagesReceivedInBackground]);
9095
9150
  React.useEffect(function () {
9096
9151
  if (typeof window !== 'undefined') {
9097
9152
  window.addEventListener('focus', scrollToBottomIfConfigured);
9153
+ window.addEventListener('blur', resetNewMessagesReceivedInBackground);
9098
9154
  }
9099
- return function () { return window.removeEventListener('focus', scrollToBottomIfConfigured); };
9155
+ return function () {
9156
+ window.removeEventListener('focus', scrollToBottomIfConfigured);
9157
+ window.removeEventListener('blur', resetNewMessagesReceivedInBackground);
9158
+ };
9100
9159
  }, [scrollToBottomIfConfigured]);
9101
9160
  var numItemsPrepended = usePrependedMessagesCount(processedMessages);
9102
9161
  var shouldForceScrollToBottom = useShouldForceScrollToBottom(processedMessages, client.userID);
@@ -9126,12 +9185,8 @@ var VirtualizedMessageListWithContext = function (props) {
9126
9185
  var groupedByUser = shouldGroupByUser &&
9127
9186
  streamMessageIndex > 0 &&
9128
9187
  ((_a = message.user) === null || _a === void 0 ? void 0 : _a.id) === ((_b = messageList[streamMessageIndex - 1].user) === null || _b === void 0 ? void 0 : _b.id);
9129
- var firstOfGroup = shouldGroupByUser &&
9130
- streamMessageIndex > 0 &&
9131
- ((_c = message.user) === null || _c === void 0 ? void 0 : _c.id) !== ((_e = (_d = messageList[streamMessageIndex - 1]) === null || _d === void 0 ? void 0 : _d.user) === null || _e === void 0 ? void 0 : _e.id);
9132
- var endOfGroup = shouldGroupByUser &&
9133
- streamMessageIndex > 0 &&
9134
- ((_f = message.user) === null || _f === void 0 ? void 0 : _f.id) !== ((_h = (_g = messageList[streamMessageIndex + 1]) === null || _g === void 0 ? void 0 : _g.user) === null || _h === void 0 ? void 0 : _h.id);
9188
+ var firstOfGroup = shouldGroupByUser && ((_c = message.user) === null || _c === void 0 ? void 0 : _c.id) !== ((_e = (_d = messageList[streamMessageIndex - 1]) === null || _d === void 0 ? void 0 : _d.user) === null || _e === void 0 ? void 0 : _e.id);
9189
+ var endOfGroup = shouldGroupByUser && ((_f = message.user) === null || _f === void 0 ? void 0 : _f.id) !== ((_h = (_g = messageList[streamMessageIndex + 1]) === null || _g === void 0 ? void 0 : _g.user) === null || _h === void 0 ? void 0 : _h.id);
9135
9190
  return (React__default['default'].createElement(Message, { closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: props.customMessageActions, endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, groupedByUser: groupedByUser, message: message, Message: MessageUIComponent, messageActions: props.messageActions }));
9136
9191
  }, [customMessageRenderer, shouldGroupByUser, numItemsPrepended]);
9137
9192
  var virtuosoComponents = React.useMemo(function () {
@@ -9169,7 +9224,7 @@ var VirtualizedMessageListWithContext = function (props) {
9169
9224
  var virtualizedMessageListClass = (customClasses === null || customClasses === void 0 ? void 0 : customClasses.virtualizedMessageList) || 'str-chat__virtual-list';
9170
9225
  return (React__default['default'].createElement(React__default['default'].Fragment, null,
9171
9226
  React__default['default'].createElement("div", { className: virtualizedMessageListClass },
9172
- React__default['default'].createElement(reactVirtuoso.Virtuoso, __assign({ atBottomStateChange: atBottomStateChange, components: virtuosoComponents, firstItemIndex: PREPEND_OFFSET - numItemsPrepended, followOutput: followOutput, initialTopMostItemIndex: processedMessages.length ? processedMessages.length - 1 : 0, itemContent: function (i) { return messageRenderer(processedMessages, i); }, overscan: overscan, ref: virtuoso, startReached: startReached, style: { overflowX: 'hidden' }, totalCount: processedMessages.length }, additionalVirtuosoProps, (scrollSeekPlaceHolder ? { scrollSeek: scrollSeekPlaceHolder } : {}), (defaultItemHeight ? { defaultItemHeight: defaultItemHeight } : {})))),
9227
+ React__default['default'].createElement(reactVirtuoso.Virtuoso, __assign({ atBottomStateChange: atBottomStateChange, components: virtuosoComponents, firstItemIndex: PREPEND_OFFSET - numItemsPrepended, followOutput: followOutput, increaseViewportBy: { bottom: 200, top: 0 }, initialTopMostItemIndex: processedMessages.length ? processedMessages.length - 1 : 0, itemContent: function (i) { return messageRenderer(processedMessages, i); }, itemSize: fractionalItemSize, overscan: overscan, ref: virtuoso, startReached: startReached, style: { overflowX: 'hidden' }, totalCount: processedMessages.length }, additionalVirtuosoProps, (scrollSeekPlaceHolder ? { scrollSeek: scrollSeekPlaceHolder } : {}), (defaultItemHeight ? { defaultItemHeight: defaultItemHeight } : {})))),
9173
9228
  React__default['default'].createElement(MessageListNotifications$1, { hasNewMessages: newMessagesNotification, MessageNotification: MessageNotification$1, notifications: notifications, scrollToBottom: scrollToBottom }),
9174
9229
  giphyPreviewMessage && React__default['default'].createElement(GiphyPreviewMessage$1, { message: giphyPreviewMessage })));
9175
9230
  };
@@ -9212,7 +9267,7 @@ var DefaultThreadHeader = function (props) {
9212
9267
  React__default['default'].createElement("div", { className: 'str-chat__thread-header-details' },
9213
9268
  React__default['default'].createElement("strong", null, t('Thread')),
9214
9269
  React__default['default'].createElement("small", null, getReplyCount())),
9215
- React__default['default'].createElement("button", { className: 'str-chat__square-button', "data-testid": 'close-button', onClick: function (event) { return closeThread(event); } },
9270
+ React__default['default'].createElement("button", { "aria-label": 'Close thread', className: 'str-chat__square-button', "data-testid": 'close-button', onClick: function (event) { return closeThread(event); } },
9216
9271
  React__default['default'].createElement("svg", { height: '10', width: '10', xmlns: 'http://www.w3.org/2000/svg' },
9217
9272
  React__default['default'].createElement("path", { d: 'M9.916 1.027L8.973.084 5 4.058 1.027.084l-.943.943L4.058 5 .084 8.973l.943.943L5 5.942l3.973 3.974.943-.943L5.942 5z', fillRule: 'evenodd' })))));
9218
9273
  };
@@ -9260,10 +9315,7 @@ var ThreadInner = function (props) {
9260
9315
  var UnMemoizedWindow = function (props) {
9261
9316
  var children = props.children, _a = props.hideOnThread, hideOnThread = _a === void 0 ? false : _a;
9262
9317
  var thread = useChannelStateContext('Window').thread;
9263
- // If thread is active and window should hide on thread. Return null
9264
- if (thread && hideOnThread)
9265
- return null;
9266
- return React__default['default'].createElement("div", { className: "str-chat__main-panel" }, children);
9318
+ return (React__default['default'].createElement("div", { className: "str-chat__main-panel " + (hideOnThread && thread ? 'str-chat__main-panel--hideOnThread' : '') }, children));
9267
9319
  };
9268
9320
  /**
9269
9321
  * A UI component for conditionally displaying a Thread or Channel
@@ -9356,9 +9408,9 @@ exports.MessageText = MessageText;
9356
9408
  exports.MessageTimestamp = MessageTimestamp;
9357
9409
  exports.Modal = Modal;
9358
9410
  exports.ModalComponent = ModalComponent;
9359
- exports.ModalImage = ModalImage;
9360
9411
  exports.PinIcon = PinIcon;
9361
9412
  exports.PinIndicator = PinIndicator;
9413
+ exports.QuotedMessagePreview = QuotedMessagePreview;
9362
9414
  exports.ReactionIcon = ReactionIcon;
9363
9415
  exports.ReactionSelector = ReactionSelector;
9364
9416
  exports.ReactionsList = ReactionsList;