stream-chat-react 11.18.1 → 11.20.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 (64) hide show
  1. package/dist/{Window-5802024e.js → Window-06cc5899.js} +90 -86
  2. package/dist/browser.full-bundle.js +105 -95
  3. package/dist/browser.full-bundle.js.map +1 -1
  4. package/dist/browser.full-bundle.min.js +2 -2
  5. package/dist/browser.full-bundle.min.js.map +1 -1
  6. package/dist/components/Channel/Channel.d.ts.map +1 -1
  7. package/dist/components/Channel/Channel.js +11 -9
  8. package/dist/components/Emojis/index.cjs.js +1 -1
  9. package/dist/components/Gallery/Gallery.d.ts.map +1 -1
  10. package/dist/components/Gallery/Gallery.js +1 -1
  11. package/dist/components/Gallery/Image.js +1 -1
  12. package/dist/components/Message/Message.d.ts.map +1 -1
  13. package/dist/components/Message/Message.js +2 -2
  14. package/dist/components/Message/MessageSimple.js +1 -1
  15. package/dist/components/Message/MessageStatus.d.ts +3 -0
  16. package/dist/components/Message/MessageStatus.d.ts.map +1 -1
  17. package/dist/components/Message/MessageStatus.js +21 -18
  18. package/dist/components/Message/hooks/useReactionsFetcher.d.ts +4 -3
  19. package/dist/components/Message/hooks/useReactionsFetcher.d.ts.map +1 -1
  20. package/dist/components/Message/hooks/useReactionsFetcher.js +14 -21
  21. package/dist/components/Message/types.d.ts +7 -3
  22. package/dist/components/Message/types.d.ts.map +1 -1
  23. package/dist/components/Message/utils.d.ts.map +1 -1
  24. package/dist/components/Message/utils.js +7 -4
  25. package/dist/components/MessageBounce/MessageBounceModal.js +1 -1
  26. package/dist/components/MessageInput/AttachmentPreviewList/AttachmentPreviewList.d.ts.map +1 -1
  27. package/dist/components/MessageInput/AttachmentPreviewList/AttachmentPreviewList.js +3 -1
  28. package/dist/components/MessageInput/MessageInputFlat.js +3 -1
  29. package/dist/components/MessageList/MessageList.d.ts +1 -1
  30. package/dist/components/MessageList/MessageList.d.ts.map +1 -1
  31. package/dist/components/MessageList/MessageList.js +4 -1
  32. package/dist/components/MessageList/VirtualizedMessageList.d.ts +2 -2
  33. package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
  34. package/dist/components/MessageList/VirtualizedMessageList.js +2 -1
  35. package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -1
  36. package/dist/components/MessageList/VirtualizedMessageListComponents.js +2 -2
  37. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts +1 -1
  38. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts.map +1 -1
  39. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.js +5 -3
  40. package/dist/components/MessageList/renderMessages.js +1 -1
  41. package/dist/components/Modal/Modal.d.ts +3 -1
  42. package/dist/components/Modal/Modal.d.ts.map +1 -1
  43. package/dist/components/Modal/Modal.js +3 -2
  44. package/dist/components/Reactions/ReactionsList.d.ts +5 -3
  45. package/dist/components/Reactions/ReactionsList.d.ts.map +1 -1
  46. package/dist/components/Reactions/ReactionsList.js +2 -2
  47. package/dist/components/Reactions/ReactionsListModal.d.ts +9 -6
  48. package/dist/components/Reactions/ReactionsListModal.d.ts.map +1 -1
  49. package/dist/components/Reactions/ReactionsListModal.js +20 -22
  50. package/dist/components/Reactions/hooks/useFetchReactions.d.ts +6 -3
  51. package/dist/components/Reactions/hooks/useFetchReactions.d.ts.map +1 -1
  52. package/dist/components/Reactions/hooks/useFetchReactions.js +3 -3
  53. package/dist/components/Reactions/types.d.ts +4 -2
  54. package/dist/components/Reactions/types.d.ts.map +1 -1
  55. package/dist/constants/limits.d.ts +1 -0
  56. package/dist/constants/limits.d.ts.map +1 -1
  57. package/dist/constants/limits.js +1 -0
  58. package/dist/context/MessageContext.d.ts +9 -5
  59. package/dist/context/MessageContext.d.ts.map +1 -1
  60. package/dist/i18n/pt.json +18 -18
  61. package/dist/index.cjs.js +16 -10
  62. package/dist/version.d.ts +1 -1
  63. package/dist/version.js +1 -1
  64. package/package.json +3 -3
@@ -463,7 +463,7 @@ var Cancel$4="취소";var Close$4="닫기";var Delete$4="삭제";var Delivered$4
463
463
 
464
464
  var Cancel$3="Annuleer";var Close$3="Sluit";var Delete$3="Verwijder";var Delivered$3="Afgeleverd";var Edited$3="Bewerkt";var Flag$3="Markeer";var Menu$3="Menu";var Mute$3="Mute";var New$3="Nieuwe";var Ok$3="Oké";var Pin$3="Pin";var Reply$3="Antwoord";var Search$3="Zoeken";var Send$3="Verstuur";var Shuffle$3="Schudden";var Thread$3="Draadje";var Unmute$3="Unmute";var Unpin$3="Losmaken";var live$3="live";var replyCount_one$3="1 antwoord";var replyCount_other$3="{{ count }} antwoorden";var searchResultsCount_one$3="1 resultaat";var searchResultsCount_other$3="{{ count }} resultaten";var unreadMessagesSeparatorText_one$3="1 ongelezen bericht";var unreadMessagesSeparatorText_other$3="{{count}} ongelezen berichten";var nlTranslations = {"Allow access to camera":"Toegang tot camera toestaan","Allow access to microphone":"Toegang tot microfoon toestaan","An error has occurred during recording":"Er is een fout opgetreden tijdens het opnemen","An error has occurred during the recording processing":"Er is een fout opgetreden tijdens de verwerking van de opname","Attach files":"Bijlage toevoegen",Cancel:Cancel$3,"Cannot seek in the recording":"Kan niet zoeken in de opname","Channel Missing":"Kanaal niet gevonden",Close:Close$3,"Close emoji picker":"Sluit de emoji-kiezer","Commands matching":"Bijpassende opdrachten","Connection failure, reconnecting now...":"Probleem met de verbinding, opnieuw verbinding maken...",Delete:Delete$3,Delivered:Delivered$3,"Drag your files here":"Sleep je bestanden hier naartoe","Drag your files here to add to your post":"Sleep je bestanden hier naartoe om aan je bericht toe te voegen","Edit Message":"Pas bericht aan","Edit message request failed":"Verzoek om bericht bewerken mislukt",Edited:Edited$3,"Emoji matching":"Emoji-overeenkomsten","Empty message...":"Leeg bericht...","Error adding flag":"Fout bij toevoegen van vlag","Error connecting to chat, refresh the page to try again.":"Fout bij het verbinden, ververs de pagina om nogmaals te proberen","Error deleting message":"Fout bij verwijderen van bericht","Error fetching reactions":"Fout bij het laden van reacties","Error marking message unread. Cannot mark unread messages older than the newest 100 channel messages.":"Fout bij markeren van bericht als ongelezen. Kan geen oudere ongelezen berichten markeren dan de nieuwste 100 kanaalberichten.","Error muting a user ...":"Fout bij het muten van de gebruiker","Error pinning message":"Fout bij vastzetten van bericht","Error removing message pin":"Fout bij verwijderen van berichtpin","Error reproducing the recording":"Fout bij het afspelen van de opname","Error starting recording":"Fout bij het starten van de opname","Error unmuting a user ...":"Fout bij het unmuten van de gebruiker","Error uploading attachment":"Fout bij het uploaden van de bijlage","Error uploading file":"Fout bij uploaden bestand","Error uploading image":"Fout bij uploaden afbeelding","Error · Unsent":"Error: · niet verzonden","Error: {{ errorMessage }}":"Error: {{ errorMessage }}","Failed to jump to the first unread message":"Niet gelukt om naar het eerste ongelezen bericht te springen","Failed to mark channel as read":"Kanaal kon niet als gelezen worden gemarkeerd","Failed to play the recording":"Kan de opname niet afspelen","File is too large: {{ size }}, maximum upload size is {{ limit }}":"Bestand is te groot: {{ size }}, maximale uploadgrootte is {{ limit }}",Flag:Flag$3,"Latest Messages":"Laatste berichten","Load more":"Meer laden","Mark as unread":"Markeren als ongelezen",Menu:Menu$3,"Message Failed · Click to try again":"Bericht mislukt, klik om het nogmaals te proberen","Message Failed · Unauthorized":"Bericht mislukt, ongeautoriseerd","Message deleted":"Bericht verwijderd","Message has been successfully flagged":"Bericht is succesvol gemarkeerd","Message pinned":"Bericht vastgezet","Messages have been marked unread.":"Berichten zijn gemarkeerd als ongelezen.","Missing permissions to upload the attachment":"Missende toestemmingen om de bijlage te uploaden",Mute:Mute$3,New:New$3,"New Messages!":"Nieuwe Berichten!","No chats here yet…":"Nog geen chats hier...","No results found":"Geen resultaten gevonden","Nothing yet...":"Nog niets ...",Ok:Ok$3,"Open emoji picker":"Open emojipicker","People matching":"Mensen die matchen",Pin:Pin$3,"Pinned by":"Vastgemaakt door","Recording format is not supported and cannot be reproduced":"Opnameformaat wordt niet ondersteund en kan niet worden gereproduceerd",Reply:Reply$3,"Reply to Message":"Antwoord op bericht",Search:Search$3,"Searching...":"Zoeken...",Send:Send$3,"Send Anyway":"Toch versturen","Send message request failed":"Verzoek om bericht te verzenden mislukt","Sending...":"Aan het verzenden...",Shuffle:Shuffle$3,"Slow Mode ON":"Langzame modus aan","Some of the files will not be accepted":"Sommige bestanden zullen niet worden geaccepteerd","This message did not meet our content guidelines":"Dit bericht voldeed niet aan onze inhoudsrichtlijnen","This message was deleted...":"Dit bericht was verwijderd",Thread:Thread$3,"To start recording, allow the camera access in your browser":"Om te beginnen met opnemen, sta toegang tot de camera toe in uw browser","To start recording, allow the microphone access in your browser":"Om te beginnen met opnemen, sta toegang tot de microfoon toe in uw browser","Type your message":"Type je bericht",Unmute:Unmute$3,Unpin:Unpin$3,"Unread messages":"Ongelezen berichten","Unsupported attachment":"Niet-ondersteunde bijlage","Upload type: \"{{ type }}\" is not allowed":"Uploadtype: \"{{ type }}\" is niet toegestaan","User uploaded content":"Gebruikersgeüploade inhoud","Voice message":"Voicemail","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","aria/Attachment":"Bijlage","aria/Cancel Reply":"Antwoord annuleren","aria/Cancel upload":"Upload annuleren","aria/Channel list":"Kanaallijst","aria/Channel search results":"Zoekresultaten voor kanalen","aria/Close thread":"Draad sluiten","aria/Emoji picker":"Emoji kiezer","aria/File input":"Bestandsinvoer","aria/File upload":"Bestand uploaden","aria/Image input":"Afbeelding invoeren","aria/Load More Channels":"Meer kanalen laden","aria/Menu":"Menu","aria/Message Options":"Berichtopties","aria/Open Message Actions Menu":"Menu voor berichtacties openen","aria/Open Reaction Selector":"Reactiekiezer openen","aria/Open Thread":"Draad openen","aria/Reaction list":"Reactielijst","aria/Retry upload":"Upload opnieuw proberen","aria/Send":"Verzenden","ban-command-args":"[@gebruikersnaam] [tekst]","ban-command-description":"Een gebruiker verbannen","giphy-command-args":"[tekst]","giphy-command-description":"Plaats een willekeurige gif in het kanaal",live:live$3,"mute-command-args":"[@gebruikersnaam]","mute-command-description":"Een gebruiker dempen",replyCount_one:replyCount_one$3,replyCount_other:replyCount_other$3,searchResultsCount_one:searchResultsCount_one$3,searchResultsCount_other:searchResultsCount_other$3,"this content could not be displayed":"Deze inhoud kan niet weergegeven worden","unban-command-args":"[@gebruikersnaam]","unban-command-description":"Een gebruiker debannen","unmute-command-args":"[@gebruikersnaam]","unmute-command-description":"Een gebruiker niet meer dempen",unreadMessagesSeparatorText_one:unreadMessagesSeparatorText_one$3,unreadMessagesSeparatorText_other:unreadMessagesSeparatorText_other$3,"{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} en {{ moreCount }} meer","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} en {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} en {{ secondUser }}","{{ imageCount }} more":"+{{ imageCount }}","{{ memberCount }} members":"{{ memberCount }} deelnemers","{{ user }} has been muted":"{{ user }} is muted","{{ user }} has been unmuted":"{{ user }} is unmuted","{{ user }} is typing...":"{{ user }} is typing...","{{ users }} and more are typing...":"{{ users }} and more are typing...","{{ users }} and {{ user }} are typing...":"{{ users }} and {{ user }} are typing...","{{ watcherCount }} online":"{{ watcherCount }} online","{{count}} unread_one":"{{count}} ongelezen","{{count}} unread_other":"{{count}} ongelezen","🏙 Attachment...":"🏙 Bijlage..."};
465
465
 
466
- var Cancel$2="Cancelar";var Close$2="Fechar";var Delete$2="Excluir";var Delivered$2="Entregue";var Edited$2="Editada";var Flag$2="Reportar";var Menu$2="Menu";var Mute$2="Mudo";var New$2="Novo";var Ok$2="Ok";var Pin$2="Fixar";var Reply$2="Responder";var Search$2="Procurar";var Send$2="Enviar";var Shuffle$2="Embaralhar";var Thread$2="Fio";var Unmute$2="Ativar som";var Unpin$2="Liberar";var live$2="ao vivo";var replyCount_many$1="{{ count }} respostas";var replyCount_one$2="1 resposta";var replyCount_other$2="{{ count }} respostas";var searchResultsCount_many$1="{{ count }} resultados";var searchResultsCount_one$2="1 resultado";var searchResultsCount_other$2="{{ count }} resultados";var unreadMessagesSeparatorText_many$1="{{count}} mensagens não lidas";var unreadMessagesSeparatorText_one$2="1 mensagem não lida";var unreadMessagesSeparatorText_other$2="{{count}} mensagens não lidas";var ptTranslations = {"Allow access to camera":"Permitir acesso à câmera","Allow access to microphone":"Permitir acesso ao microfone","An error has occurred during recording":"Ocorreu um erro durante a gravação","An error has occurred during the recording processing":"Ocorreu um erro durante o processamento da gravação","Attach files":"Anexar arquivos",Cancel:Cancel$2,"Cannot seek in the recording":"Não é possível buscar na gravação","Channel Missing":"Canal ausente",Close:Close$2,"Close emoji picker":"Fechar seletor de emoji","Commands matching":"Comandos correspondentes","Connection failure, reconnecting now...":"Falha de conexão, reconectando agora...",Delete:Delete$2,Delivered:Delivered$2,"Drag your files here":"Arraste seus arquivos aqui","Drag your files here to add to your post":"Arraste seus arquivos aqui para adicionar ao seu post","Edit Message":"Editar Mensagem","Edit message request failed":"O pedido de edição da mensagem falhou",Edited:Edited$2,"Emoji matching":"Emoji correspondente","Empty message...":"Mensagem vazia...","Error adding flag":"Erro ao reportar","Error connecting to chat, refresh the page to try again.":"Erro ao conectar ao bate-papo, atualize a página para tentar novamente.","Error deleting message":"Erro ao deletar mensagem","Error fetching reactions":"Erro ao carregar reacções","Error marking message unread. Cannot mark unread messages older than the newest 100 channel messages.":"Erro ao marcar a mensagem como não lida. Não é possível marcar mensagens não lidas mais antigas do que as 100 mensagens mais recentes do canal.","Error muting a user ...":"Erro ao silenciar um usuário...","Error pinning message":"Erro ao fixar mensagem","Error removing message pin":"Erro ao remover o PIN da mensagem","Error reproducing the recording":"Erro ao reproduzir a gravação","Error starting recording":"Erro ao iniciar a gravação","Error unmuting a user ...":"Erro ao ativar o som de um usuário...","Error uploading attachment":"Erro ao carregar o anexo","Error uploading file":"Erro ao enviar arquivo","Error uploading image":"Erro ao carregar a imagem","Error · Unsent":"Erro · Não enviado","Error: {{ errorMessage }}":"Erro: {{ errorMessage }}","Failed to jump to the first unread message":"Falha ao pular para a primeira mensagem não lida","Failed to mark channel as read":"Falha ao marcar o canal como lido","Failed to play the recording":"Permissões faltando para carregar o anexo","File is too large: {{ size }}, maximum upload size is {{ limit }}":"O arquivo é muito grande: {{ size }}, o tamanho máximo de upload é {{ limit }}",Flag:Flag$2,"Latest Messages":"Mensagens mais recentes","Load more":"Carregar mais","Mark as unread":"Marcar como não lida",Menu:Menu$2,"Message Failed · Click to try again":"A mensagem falhou · Clique para tentar novamente","Message Failed · Unauthorized":"A mensagem falhou · não autorizado","Message deleted":"Mensagem apagada","Message has been successfully flagged":"A mensagem foi reportada com sucesso","Message pinned":"Mensagem fixada","Messages have been marked unread.":"Mensagens foram marcadas como não lidas.","Missing permissions to upload the attachment":"Missing permissions to upload the attachment",Mute:Mute$2,New:New$2,"New Messages!":"Novas mensagens!","No chats here yet…":"Ainda não há conversas aqui...","No results found":"Nenhum resultado encontrado","Nothing yet...":"Nada ainda...",Ok:Ok$2,"Open emoji picker":"Abrir seletor de emoji","People matching":"Pessoas correspondentes",Pin:Pin$2,"Pinned by":"Fixado por","Recording format is not supported and cannot be reproduced":"Formato de gravação não é suportado e não pode ser reproduzido",Reply:Reply$2,"Reply to Message":"Responder a mensagem",Search:Search$2,"Searching...":"Procurando...",Send:Send$2,"Send Anyway":"Enviar de qualquer forma","Send message request failed":"O pedido de envio de mensagem falhou","Sending...":"Enviando...",Shuffle:Shuffle$2,"Slow Mode ON":"Modo lento LIGADO","Some of the files will not be accepted":"Alguns dos arquivos não serão aceitos","This message did not meet our content guidelines":"Esta mensagem não corresponde às nossas directrizes de conteúdo","This message was deleted...":"Esta mensagem foi excluída...",Thread:Thread$2,"To start recording, allow the camera access in your browser":"Para começar a gravar, permita o acesso à câmera no seu navegador","To start recording, allow the microphone access in your browser":"Para começar a gravar, permita o acesso ao microfone no seu navegador","Type your message":"Digite sua mensagem",Unmute:Unmute$2,Unpin:Unpin$2,"Unread messages":"Mensagens não lidas","Unsupported attachment":"Anexo não suportado","Upload type: \"{{ type }}\" is not allowed":"Tipo de upload: \"{{ type }}\" não é permitido","User uploaded content":"Conteúdo enviado pelo usuário","Voice message":"Mensagem de voz","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","aria/Attachment":"Bijlage","aria/Cancel Reply":"Antwoord annuleren","aria/Cancel upload":"Upload annuleren","aria/Channel list":"Kanaallijst","aria/Channel search results":"Zoekresultaten voor kanalen","aria/Close thread":"Draad sluiten","aria/Emoji picker":"Emoji kiezer","aria/File input":"Bestandsinvoer","aria/File upload":"Bestand uploaden","aria/Image input":"Afbeelding invoeren","aria/Load More Channels":"Meer kanalen laden","aria/Menu":"Menu","aria/Message Options":"Berichtopties","aria/Open Message Actions Menu":"Menu voor berichtacties openen","aria/Open Reaction Selector":"Reactiekiezer openen","aria/Open Thread":"Draad openen","aria/Reaction list":"Reactielijst","aria/Retry upload":"Upload opnieuw proberen","aria/Send":"Verzenden","ban-command-args":"[@nomedeusuário] [texto]","ban-command-description":"Banir um usuário","giphy-command-args":"[texto]","giphy-command-description":"Postar um gif aleatório no canal",live:live$2,"mute-command-args":"[@nomedeusuário]","mute-command-description":"Silenciar um usuário",replyCount_many:replyCount_many$1,replyCount_one:replyCount_one$2,replyCount_other:replyCount_other$2,searchResultsCount_many:searchResultsCount_many$1,searchResultsCount_one:searchResultsCount_one$2,searchResultsCount_other:searchResultsCount_other$2,"this content could not be displayed":"este conteúdo não pôde ser exibido","unban-command-args":"[@nomedeusuário]","unban-command-description":"Desbanir um usuário","unmute-command-args":"[@nomedeusuário]","unmute-command-description":"Retirar o silenciamento de um usuário",unreadMessagesSeparatorText_many:unreadMessagesSeparatorText_many$1,unreadMessagesSeparatorText_one:unreadMessagesSeparatorText_one$2,unreadMessagesSeparatorText_other:unreadMessagesSeparatorText_other$2,"{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} e mais {{ moreCount }}","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} e {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} e {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} mais","{{ memberCount }} members":"{{ memberCount }} membros","{{ user }} has been muted":"{{ user }} foi silenciado","{{ user }} has been unmuted":"{{ user }} foi reativado","{{ user }} is typing...":"{{ user }} is typing...","{{ users }} and more are typing...":"{{ users }} and more are typing...","{{ users }} and {{ user }} are typing...":"{{ users }} and {{ user }} are typing...","{{ watcherCount }} online":"{{ watcherCount }} online","{{count}} unread_many":"{{count}} não lidos","{{count}} unread_one":"{{count}} não lido","{{count}} unread_other":"{{count}} não lidos","🏙 Attachment...":"🏙 Anexo..."};
466
+ var Cancel$2="Cancelar";var Close$2="Fechar";var Delete$2="Excluir";var Delivered$2="Entregue";var Edited$2="Editada";var Flag$2="Reportar";var Menu$2="Menu";var Mute$2="Mudo";var New$2="Novo";var Ok$2="Ok";var Pin$2="Fixar";var Reply$2="Responder";var Search$2="Procurar";var Send$2="Enviar";var Shuffle$2="Embaralhar";var Thread$2="Fio";var Unmute$2="Ativar som";var Unpin$2="Liberar";var live$2="ao vivo";var replyCount_many$1="{{ count }} respostas";var replyCount_one$2="1 resposta";var replyCount_other$2="{{ count }} respostas";var searchResultsCount_many$1="{{ count }} resultados";var searchResultsCount_one$2="1 resultado";var searchResultsCount_other$2="{{ count }} resultados";var unreadMessagesSeparatorText_many$1="{{count}} mensagens não lidas";var unreadMessagesSeparatorText_one$2="1 mensagem não lida";var unreadMessagesSeparatorText_other$2="{{count}} mensagens não lidas";var ptTranslations = {"Allow access to camera":"Permitir acesso à câmera","Allow access to microphone":"Permitir acesso ao microfone","An error has occurred during recording":"Ocorreu um erro durante a gravação","An error has occurred during the recording processing":"Ocorreu um erro durante o processamento da gravação","Attach files":"Anexar arquivos",Cancel:Cancel$2,"Cannot seek in the recording":"Não é possível buscar na gravação","Channel Missing":"Canal ausente",Close:Close$2,"Close emoji picker":"Fechar seletor de emoji","Commands matching":"Comandos correspondentes","Connection failure, reconnecting now...":"Falha de conexão, reconectando agora...",Delete:Delete$2,Delivered:Delivered$2,"Drag your files here":"Arraste seus arquivos aqui","Drag your files here to add to your post":"Arraste seus arquivos aqui para adicionar ao seu post","Edit Message":"Editar Mensagem","Edit message request failed":"O pedido de edição da mensagem falhou",Edited:Edited$2,"Emoji matching":"Emoji correspondente","Empty message...":"Mensagem vazia...","Error adding flag":"Erro ao reportar","Error connecting to chat, refresh the page to try again.":"Erro ao conectar ao bate-papo, atualize a página para tentar novamente.","Error deleting message":"Erro ao deletar mensagem","Error fetching reactions":"Erro ao carregar reacções","Error marking message unread. Cannot mark unread messages older than the newest 100 channel messages.":"Erro ao marcar a mensagem como não lida. Não é possível marcar mensagens não lidas mais antigas do que as 100 mensagens mais recentes do canal.","Error muting a user ...":"Erro ao silenciar um usuário...","Error pinning message":"Erro ao fixar mensagem","Error removing message pin":"Erro ao remover o PIN da mensagem","Error reproducing the recording":"Erro ao reproduzir a gravação","Error starting recording":"Erro ao iniciar a gravação","Error unmuting a user ...":"Erro ao ativar o som de um usuário...","Error uploading attachment":"Erro ao carregar o anexo","Error uploading file":"Erro ao enviar arquivo","Error uploading image":"Erro ao carregar a imagem","Error · Unsent":"Erro · Não enviado","Error: {{ errorMessage }}":"Erro: {{ errorMessage }}","Failed to jump to the first unread message":"Falha ao pular para a primeira mensagem não lida","Failed to mark channel as read":"Falha ao marcar o canal como lido","Failed to play the recording":"Permissões faltando para carregar o anexo","File is too large: {{ size }}, maximum upload size is {{ limit }}":"O arquivo é muito grande: {{ size }}, o tamanho máximo de upload é {{ limit }}",Flag:Flag$2,"Latest Messages":"Mensagens mais recentes","Load more":"Carregar mais","Mark as unread":"Marcar como não lida",Menu:Menu$2,"Message Failed · Click to try again":"A mensagem falhou · Clique para tentar novamente","Message Failed · Unauthorized":"A mensagem falhou · não autorizado","Message deleted":"Mensagem apagada","Message has been successfully flagged":"A mensagem foi reportada com sucesso","Message pinned":"Mensagem fixada","Messages have been marked unread.":"Mensagens foram marcadas como não lidas.","Missing permissions to upload the attachment":"Missing permissions to upload the attachment",Mute:Mute$2,New:New$2,"New Messages!":"Novas mensagens!","No chats here yet…":"Ainda não há conversas aqui...","No results found":"Nenhum resultado encontrado","Nothing yet...":"Nada ainda...",Ok:Ok$2,"Open emoji picker":"Abrir seletor de emoji","People matching":"Pessoas correspondentes",Pin:Pin$2,"Pinned by":"Fixado por","Recording format is not supported and cannot be reproduced":"Formato de gravação não é suportado e não pode ser reproduzido",Reply:Reply$2,"Reply to Message":"Responder a mensagem",Search:Search$2,"Searching...":"Procurando...",Send:Send$2,"Send Anyway":"Enviar de qualquer forma","Send message request failed":"O pedido de envio de mensagem falhou","Sending...":"Enviando...",Shuffle:Shuffle$2,"Slow Mode ON":"Modo lento LIGADO","Some of the files will not be accepted":"Alguns dos arquivos não serão aceitos","This message did not meet our content guidelines":"Esta mensagem não corresponde às nossas directrizes de conteúdo","This message was deleted...":"Esta mensagem foi excluída...",Thread:Thread$2,"To start recording, allow the camera access in your browser":"Para começar a gravar, permita o acesso à câmera no seu navegador","To start recording, allow the microphone access in your browser":"Para começar a gravar, permita o acesso ao microfone no seu navegador","Type your message":"Digite sua mensagem",Unmute:Unmute$2,Unpin:Unpin$2,"Unread messages":"Mensagens não lidas","Unsupported attachment":"Anexo não suportado","Upload type: \"{{ type }}\" is not allowed":"Tipo de upload: \"{{ type }}\" não é permitido","User uploaded content":"Conteúdo enviado pelo usuário","Voice message":"Mensagem de voz","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","aria/Attachment":"Anexo","aria/Cancel Reply":"Cancelar resposta","aria/Cancel upload":"Cancelar upload","aria/Channel list":"Lista de canais","aria/Channel search results":"Resultados de pesquisa de canais","aria/Close thread":"Fechar tópico","aria/Emoji picker":"Seletor de emojis","aria/File input":"Entrada de arquivo","aria/File upload":"Carregar arquivo","aria/Image input":"Entrada de imagem","aria/Load More Channels":"Carregar mais canais","aria/Menu":"Menu","aria/Message Options":"Opções de mensagem","aria/Open Message Actions Menu":"Abrir menu de ações de mensagem","aria/Open Reaction Selector":"Abrir seletor de reações","aria/Open Thread":"Abrir tópico","aria/Reaction list":"Lista de reações","aria/Retry upload":"Tentar upload novamente","aria/Send":"Enviar","ban-command-args":"[@nomedeusuário] [texto]","ban-command-description":"Banir um usuário","giphy-command-args":"[texto]","giphy-command-description":"Postar um gif aleatório no canal",live:live$2,"mute-command-args":"[@nomedeusuário]","mute-command-description":"Silenciar um usuário",replyCount_many:replyCount_many$1,replyCount_one:replyCount_one$2,replyCount_other:replyCount_other$2,searchResultsCount_many:searchResultsCount_many$1,searchResultsCount_one:searchResultsCount_one$2,searchResultsCount_other:searchResultsCount_other$2,"this content could not be displayed":"este conteúdo não pôde ser exibido","unban-command-args":"[@nomedeusuário]","unban-command-description":"Desbanir um usuário","unmute-command-args":"[@nomedeusuário]","unmute-command-description":"Retirar o silenciamento de um usuário",unreadMessagesSeparatorText_many:unreadMessagesSeparatorText_many$1,unreadMessagesSeparatorText_one:unreadMessagesSeparatorText_one$2,unreadMessagesSeparatorText_other:unreadMessagesSeparatorText_other$2,"{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} e mais {{ moreCount }}","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} e {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} e {{ secondUser }}","{{ imageCount }} more":"{{ imageCount }} mais","{{ memberCount }} members":"{{ memberCount }} membros","{{ user }} has been muted":"{{ user }} foi silenciado","{{ user }} has been unmuted":"{{ user }} foi reativado","{{ user }} is typing...":"{{ user }} is typing...","{{ users }} and more are typing...":"{{ users }} and more are typing...","{{ users }} and {{ user }} are typing...":"{{ users }} and {{ user }} are typing...","{{ watcherCount }} online":"{{ watcherCount }} online","{{count}} unread_many":"{{count}} não lidos","{{count}} unread_one":"{{count}} não lido","{{count}} unread_other":"{{count}} não lidos","🏙 Attachment...":"🏙 Anexo..."};
467
467
 
468
468
  var Cancel$1="Отмена";var Close$1="Закрыть";var Delete$1="Удалить";var Delivered$1="Отправлено";var Edited$1="Отредактировано";var Flag$1="Пожаловаться";var Menu$1="Меню";var Mute$1="Отключить уведомления";var New$1="Новые";var Ok$1="Ok";var Pin$1="Штырь";var Reply$1="Отвечать";var Search$1="Поиск";var Send$1="Отправить";var Shuffle$1="Перемешать";var Thread$1="Ветка";var Unmute$1="Включить уведомления";var Unpin$1="Открепить";var live$1="В прямом эфире";var replyCount_few="{{ count }} ответов";var replyCount_many="{{ count }} ответов";var replyCount_one$1="1 ответ";var replyCount_other$1="{{ count }} ответов";var searchResultsCount_few="{{ count }} результата";var searchResultsCount_many="{{ count }} результатов";var searchResultsCount_one$1="1 результат";var searchResultsCount_other$1="{{ count }} результатов";var unreadMessagesSeparatorText_few="1 непрочитанное сообщения";var unreadMessagesSeparatorText_many="{{count}} непрочитанных сообщений";var unreadMessagesSeparatorText_one$1="1 непрочитанное сообщение";var unreadMessagesSeparatorText_other$1="{{count}} непрочитанных сообщений";var ruTranslations = {"Allow access to camera":"Разрешить доступ к камере","Allow access to microphone":"Разрешить доступ к микрофон","An error has occurred during recording":"Произошла ошибка во время записи","An error has occurred during the recording processing":"Произошла ошибка во время обработки записи","Attach files":"Прикрепить файлы",Cancel:Cancel$1,"Cannot seek in the recording":"Невозможно осуществить поиск в записи","Channel Missing":"Канал не найден",Close:Close$1,"Close emoji picker":"Закрыть окно выбора смайлов","Commands matching":"Соответствие команд","Connection failure, reconnecting now...":"Ошибка соединения, переподключение...",Delete:Delete$1,Delivered:Delivered$1,"Drag your files here":"Перетащите ваши файлы сюда","Drag your files here to add to your post":"Перетащите ваши файлы сюда, чтобы добавить их в ваш пост","Edit Message":"Редактировать сообщение","Edit message request failed":"Не удалось изменить запрос сообщения",Edited:Edited$1,"Emoji matching":"Соответствие эмодзи","Empty message...":"Пустое сообщение...","Error adding flag":"Ошибка добавления флага","Error connecting to chat, refresh the page to try again.":"Ошибка подключения к чату, обновите страницу чтобы попробовать снова.","Error deleting message":"Ошибка при удалении сообщения","Error fetching reactions":"Ошибка при загрузке реакций","Error marking message unread. Cannot mark unread messages older than the newest 100 channel messages.":"Ошибка при отметке сообщения как непрочитанного. Невозможно отметить как непрочитанные сообщения старше последних 100 сообщений в канале.","Error muting a user ...":"Ошибка отключения уведомлений от пользователя...","Error pinning message":"Сообщение об ошибке при закреплении","Error removing message pin":"Ошибка при удалении булавки сообщения","Error reproducing the recording":"Ошибка воспроизведения записи","Error starting recording":"Ошибка при запуске записи","Error unmuting a user ...":"Ошибка включения уведомлений...","Error uploading attachment":"Ошибка при загрузке вложения","Error uploading file":"Ошибка при загрузке файла","Error uploading image":"Ошибка загрузки изображения","Error · Unsent":"Ошибка · Не отправлено","Error: {{ errorMessage }}":"Ошибка: {{ errorMessage }}","Failed to jump to the first unread message":"Не удалось перейти к первому непрочитанному сообщению","Failed to mark channel as read":"Не удалось пометить канал как прочитанный","Failed to play the recording":"Не удалось воспроизвести запись","File is too large: {{ size }}, maximum upload size is {{ limit }}":"Файл слишком большой: {{ size }}, максимальный размер загрузки составляет {{ limit }}",Flag:Flag$1,"Latest Messages":"Последние сообщения","Load more":"Загрузить больше","Mark as unread":"Отметить как непрочитанное",Menu:Menu$1,"Message Failed · Click to try again":"Ошибка отправки сообщения · Нажмите чтобы повторить","Message Failed · Unauthorized":"Ошибка отправки сообщения · Неавторизованный","Message deleted":"Сообщение удалено","Message has been successfully flagged":"Жалоба на сообщение была принята","Message pinned":"Сообщение закреплено","Messages have been marked unread.":"Сообщения были отмечены как непрочитанные.","Missing permissions to upload the attachment":"Отсутствуют разрешения для загрузки вложения",Mute:Mute$1,New:New$1,"New Messages!":"Новые сообщения!","No chats here yet…":"Здесь еще нет чатов...","No results found":"результаты не найдены","Nothing yet...":"Пока ничего нет...",Ok:Ok$1,"Open emoji picker":"Выбрать emoji","People matching":"Соответствующие люди",Pin:Pin$1,"Pinned by":"Закреплено","Recording format is not supported and cannot be reproduced":"Формат записи не поддерживается и не может быть воспроизведен",Reply:Reply$1,"Reply to Message":"Ответить на сообщение",Search:Search$1,"Searching...":"Ищем...",Send:Send$1,"Send Anyway":"Мне всё равно, отправить","Send message request failed":"Не удалось отправить запрос на отправку сообщения","Sending...":"Отправка...",Shuffle:Shuffle$1,"Slow Mode ON":"Медленный режим включен","Some of the files will not be accepted":"Некоторые файлы не будут приняты","This message did not meet our content guidelines":"Сообщение не соответствует правилам","This message was deleted...":"Сообщение было удалено...",Thread:Thread$1,"To start recording, allow the camera access in your browser":"Для начала записи разрешите доступ к камере в вашем браузере","To start recording, allow the microphone access in your browser":"Для начала записи разрешите доступ к микрофону в вашем браузере","Type your message":"Ваше сообщение",Unmute:Unmute$1,Unpin:Unpin$1,"Unread messages":"Непрочитанные сообщения","Unsupported attachment":"Неподдерживаемое вложение","Upload type: \"{{ type }}\" is not allowed":"Тип загрузки: \"{{ type }}\" не разрешен","User uploaded content":"Пользователь загрузил контент","Voice message":"Голосовое сообщение","Wait until all attachments have uploaded":"Подождите, пока все вложения загрузятся","You have no channels currently":"У вас нет каналов в данный момент","You've reached the maximum number of files":"Вы достигли максимального количества файлов","aria/Attachment":"Вложение","aria/Cancel Reply":"Отменить ответ","aria/Cancel upload":"Отменить загрузку","aria/Channel list":"Список каналов","aria/Channel search results":"Результаты поиска по каналам","aria/Close thread":"Закрыть тему","aria/Emoji picker":"Выбор эмодзи","aria/File input":"Ввод файла","aria/File upload":"Загрузка файла","aria/Image input":"Ввод изображения","aria/Load More Channels":"Загрузить больше каналов","aria/Menu":"Меню","aria/Message Options":"Параметры сообщения","aria/Open Message Actions Menu":"Открыть меню действий с сообщениями","aria/Open Reaction Selector":"Открыть селектор реакций","aria/Open Thread":"Открыть тему","aria/Reaction list":"Список реакций","aria/Retry upload":"Повторить загрузку","aria/Send":"Отправить","ban-command-args":"[@имяпользователя] [текст]","ban-command-description":"Заблокировать пользователя","giphy-command-args":"[текст]","giphy-command-description":"Опубликовать случайную GIF-анимацию в канале",live:live$1,"mute-command-args":"[@имяпользователя]","mute-command-description":"Выключить микрофон у пользователя",replyCount_few:replyCount_few,replyCount_many:replyCount_many,replyCount_one:replyCount_one$1,replyCount_other:replyCount_other$1,searchResultsCount_few:searchResultsCount_few,searchResultsCount_many:searchResultsCount_many,searchResultsCount_one:searchResultsCount_one$1,searchResultsCount_other:searchResultsCount_other$1,"this content could not be displayed":"Этот контент не может быть отображен в данный момент","unban-command-args":"[@имяпользователя]","unban-command-description":"Разблокировать пользователя","unmute-command-args":"[@имяпользователя]","unmute-command-description":"Включить микрофон у пользователя",unreadMessagesSeparatorText_few:unreadMessagesSeparatorText_few,unreadMessagesSeparatorText_many:unreadMessagesSeparatorText_many,unreadMessagesSeparatorText_one:unreadMessagesSeparatorText_one$1,unreadMessagesSeparatorText_other:unreadMessagesSeparatorText_other$1,"{{ commaSeparatedUsers }} and {{ moreCount }} more":"{{ commaSeparatedUsers }} и {{ moreCount }} еще","{{ commaSeparatedUsers }}, and {{ lastUser }}":"{{ commaSeparatedUsers }} и {{ lastUser }}","{{ firstUser }} and {{ secondUser }}":"{{ firstUser }} и {{ secondUser }}","{{ imageCount }} more":"Ещё {{ imageCount }}","{{ memberCount }} members":"{{ memberCount }} члены","{{ user }} has been muted":"Вы отписались от уведомлений от {{ user }}","{{ user }} has been unmuted":"Уведомления от {{ user }} были включены","{{ user }} is typing...":"{{ user }} is typing...","{{ users }} and more are typing...":"{{ users }} and more are typing...","{{ users }} and {{ user }} are typing...":"{{ users }} and {{ user }} are typing...","{{ watcherCount }} online":"{{ watcherCount }} в сети","{{count}} unread_few":"{{count}} непрочитанных","{{count}} unread_many":"{{count}} непрочитанных","{{count}} unread_one":"{{count}} непрочитанное","{{count}} unread_other":"{{count}} непрочитанных","🏙 Attachment...":"🏙 Вложение..."};
469
469
 
@@ -1190,6 +1190,7 @@ var DEFAULT_JUMP_TO_PAGE_SIZE = 100;
1190
1190
  var DEFAULT_THREAD_PAGE_SIZE = 50;
1191
1191
  var DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD = 250;
1192
1192
  var DEFAULT_UPLOAD_SIZE_LIMIT_BYTES = 100 * 1024 * 1024; // 100 MB
1193
+ var DEFAULT_HIGHLIGHT_DURATION = 500;
1193
1194
 
1194
1195
  var accentsMap = {
1195
1196
  a: 'á|à|ã|â|À|Á|Ã|Â',
@@ -2825,7 +2826,7 @@ var CloseIconRound = function () { return (React__default["default"].createEleme
2825
2826
  React__default["default"].createElement("path", { clipRule: 'evenodd', d: 'M28 14C28 21.732 21.732 28 14 28C6.26801 28 0 21.732 0 14C0 6.26801 6.26801 0 14 0C21.732 0 28 6.26801 28 14ZM26 14C26 20.6274 20.6274 26 14 26C7.37258 26 2 20.6274 2 14C2 7.37258 7.37258 2 14 2C20.6274 2 26 7.37258 26 14ZM19.59 7L21 8.41L15.41 14L21 19.59L19.59 21L14 15.41L8.41 21L7 19.59L12.59 14L7 8.41L8.41 7L14 12.59L19.59 7Z', fill: 'white', fillRule: 'evenodd' }))); };
2826
2827
 
2827
2828
  var Modal = function (_a) {
2828
- var children = _a.children, onClose = _a.onClose, open = _a.open;
2829
+ var children = _a.children, className = _a.className, onClose = _a.onClose, open = _a.open;
2829
2830
  var t = useTranslationContext('Modal').t;
2830
2831
  var themeVersion = useChatContext('Modal').themeVersion;
2831
2832
  var innerRef = React.useRef(null);
@@ -2849,7 +2850,7 @@ var Modal = function (_a) {
2849
2850
  }, [onClose, open]);
2850
2851
  if (!open)
2851
2852
  return null;
2852
- return (React__default["default"].createElement("div", { className: 'str-chat__modal str-chat__modal--open', onClick: handleClick },
2853
+ return (React__default["default"].createElement("div", { className: clsx('str-chat__modal str-chat__modal--open', className), onClick: handleClick },
2853
2854
  React__default["default"].createElement($9bf71ea28793e738$export$20e40289641fbbb6, { autoFocus: true, contain: true },
2854
2855
  React__default["default"].createElement("button", { className: 'str-chat__modal__close-button', ref: closeRef, title: t('Close') },
2855
2856
  themeVersion === '2' && React__default["default"].createElement(CloseIconRound, null),
@@ -2920,7 +2921,7 @@ var UnMemoizedGallery = function (props) {
2920
2921
  });
2921
2922
  return (React__default["default"].createElement("div", { className: className },
2922
2923
  renderImages,
2923
- React__default["default"].createElement(Modal, { onClose: function () { return setModalOpen(function (modalOpen) { return !modalOpen; }); }, open: modalOpen },
2924
+ React__default["default"].createElement(Modal, { className: 'str-chat__gallery-modal', onClose: function () { return setModalOpen(function (modalOpen) { return !modalOpen; }); }, open: modalOpen },
2924
2925
  React__default["default"].createElement(ModalGallery$1, { images: images, index: index }))));
2925
2926
  };
2926
2927
  /**
@@ -2939,7 +2940,7 @@ var ImageComponent = function (props) {
2939
2940
  var toggleModal = function () { return setModalIsOpen(function (modalIsOpen) { return !modalIsOpen; }); };
2940
2941
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
2941
2942
  React__default["default"].createElement(BaseImage$1, exports.__assign({ alt: fallback, className: 'str-chat__message-attachment--img', "data-testid": 'image-test', onClick: toggleModal, src: imageSrc, style: style, tabIndex: 0, title: fallback }, dimensions, (innerRef && { ref: innerRef }))),
2942
- React__default["default"].createElement(Modal, { onClose: toggleModal, open: modalIsOpen },
2943
+ React__default["default"].createElement(Modal, { className: 'str-chat__image-modal', onClose: toggleModal, open: modalIsOpen },
2943
2944
  React__default["default"].createElement(ModalGallery$1, { images: [props], index: 0 }))));
2944
2945
  };
2945
2946
 
@@ -36564,7 +36565,7 @@ var MessageErrorIcon = function () { return (React__default["default"].createEle
36564
36565
 
36565
36566
  function MessageBounceModal(_a) {
36566
36567
  var MessageBouncePrompt = _a.MessageBouncePrompt, modalProps = __rest(_a, ["MessageBouncePrompt"]);
36567
- return (React__default["default"].createElement(Modal, exports.__assign({}, modalProps),
36568
+ return (React__default["default"].createElement(Modal, exports.__assign({ className: 'str-chat__message-bounce-modal' }, modalProps),
36568
36569
  React__default["default"].createElement(MessageBounceProvider, null,
36569
36570
  React__default["default"].createElement(MessageBouncePrompt, { onClose: modalProps.onClose }))));
36570
36571
  }
@@ -36809,9 +36810,9 @@ var showMessageActionsBox = function (actions, inThread) {
36809
36810
  }
36810
36811
  return true;
36811
36812
  };
36812
- var areMessagesEqual = function (prevMessage, nextMessage) {
36813
+ function areMessagesEqual(prevMessage, nextMessage) {
36813
36814
  var _a, _b, _c, _d, _e, _f;
36814
- return prevMessage.deleted_at === nextMessage.deleted_at &&
36815
+ return (prevMessage.deleted_at === nextMessage.deleted_at &&
36815
36816
  ((_a = prevMessage.latest_reactions) === null || _a === void 0 ? void 0 : _a.length) === ((_b = nextMessage.latest_reactions) === null || _b === void 0 ? void 0 : _b.length) &&
36816
36817
  ((_c = prevMessage.own_reactions) === null || _c === void 0 ? void 0 : _c.length) === ((_d = nextMessage.own_reactions) === null || _d === void 0 ? void 0 : _d.length) &&
36817
36818
  prevMessage.pinned === nextMessage.pinned &&
@@ -36820,8 +36821,11 @@ var areMessagesEqual = function (prevMessage, nextMessage) {
36820
36821
  prevMessage.text === nextMessage.text &&
36821
36822
  prevMessage.type === nextMessage.type &&
36822
36823
  prevMessage.updated_at === nextMessage.updated_at &&
36823
- ((_e = prevMessage.user) === null || _e === void 0 ? void 0 : _e.updated_at) === ((_f = nextMessage.user) === null || _f === void 0 ? void 0 : _f.updated_at);
36824
- };
36824
+ ((_e = prevMessage.user) === null || _e === void 0 ? void 0 : _e.updated_at) === ((_f = nextMessage.user) === null || _f === void 0 ? void 0 : _f.updated_at) &&
36825
+ Boolean(prevMessage.quoted_message) === Boolean(nextMessage.quoted_message) &&
36826
+ (!prevMessage.quoted_message ||
36827
+ areMessagesEqual(prevMessage.quoted_message, nextMessage.quoted_message)));
36828
+ }
36825
36829
  var areMessagePropsEqual = function (prevProps, nextProps) {
36826
36830
  var prevMessage = prevProps.message, prevMessageUI = prevProps.Message;
36827
36831
  var nextMessage = nextProps.message, nextMessageUI = nextProps.Message;
@@ -39097,14 +39101,13 @@ var useEnterLeaveHandlers = function (_a) {
39097
39101
 
39098
39102
  var UnMemoizedMessageStatus = function (props) {
39099
39103
  var _a;
39100
- var propAvatar = props.Avatar, _b = props.messageType, messageType = _b === void 0 ? 'simple' : _b, _c = props.tooltipUserNameMapper, tooltipUserNameMapper = _c === void 0 ? mapToUserNameOrId : _c;
39104
+ var propAvatar = props.Avatar, MessageDeliveredStatus = props.MessageDeliveredStatus, MessageReadStatus = props.MessageReadStatus, MessageSendingStatus = props.MessageSendingStatus, _b = props.messageType, messageType = _b === void 0 ? 'simple' : _b, _c = props.tooltipUserNameMapper, tooltipUserNameMapper = _c === void 0 ? mapToUserNameOrId : _c;
39101
39105
  var _d = useEnterLeaveHandlers(), handleEnter = _d.handleEnter, handleLeave = _d.handleLeave, tooltipVisible = _d.tooltipVisible;
39102
- var client = useChatContext('MessageStatus').client;
39106
+ var _e = useChatContext('MessageStatus'), client = _e.client, themeVersion = _e.themeVersion;
39103
39107
  var contextAvatar = useComponentContext('MessageStatus').Avatar;
39104
- var _e = useMessageContext('MessageStatus'), isMyMessage = _e.isMyMessage, lastReceivedId = _e.lastReceivedId, message = _e.message, readBy = _e.readBy, threadList = _e.threadList;
39108
+ var _f = useMessageContext('MessageStatus'), isMyMessage = _f.isMyMessage, lastReceivedId = _f.lastReceivedId, message = _f.message, readBy = _f.readBy, threadList = _f.threadList;
39105
39109
  var t = useTranslationContext('MessageStatus').t;
39106
- var themeVersion = useChatContext('MessageStatus').themeVersion;
39107
- var _f = React.useState(null), referenceElement = _f[0], setReferenceElement = _f[1];
39110
+ var _g = React.useState(null), referenceElement = _g[0], setReferenceElement = _g[1];
39108
39111
  var Avatar$1 = propAvatar || contextAvatar || Avatar;
39109
39112
  if (!isMyMessage() || message.type === 'error')
39110
39113
  return null;
@@ -39121,19 +39124,23 @@ var UnMemoizedMessageStatus = function (props) {
39121
39124
  'message-status-received': delivered && !deliveredAndRead,
39122
39125
  'message-status-sending': sending,
39123
39126
  }), onMouseEnter: handleEnter, onMouseLeave: handleLeave, ref: setReferenceElement },
39124
- sending && (React__default["default"].createElement(React__default["default"].Fragment, null,
39125
- themeVersion === '1' && React__default["default"].createElement(Tooltip, null, t('Sending...')),
39126
- themeVersion === '2' && (React__default["default"].createElement(PopperTooltip, { offset: [0, 5], referenceElement: referenceElement, visible: tooltipVisible }, t('Sending...'))),
39127
- React__default["default"].createElement(LoadingIndicator, null))),
39128
- delivered && !deliveredAndRead && (React__default["default"].createElement(React__default["default"].Fragment, null,
39129
- themeVersion === '1' && React__default["default"].createElement(Tooltip, null, t('Delivered')),
39130
- themeVersion === '2' && (React__default["default"].createElement(PopperTooltip, { offset: [0, 5], referenceElement: referenceElement, visible: tooltipVisible }, t('Delivered'))),
39131
- themeVersion === '2' ? React__default["default"].createElement(MessageDeliveredIcon, null) : React__default["default"].createElement(DeliveredCheckIcon, null))),
39132
- deliveredAndRead && (React__default["default"].createElement(React__default["default"].Fragment, null,
39133
- themeVersion === '1' && (React__default["default"].createElement(Tooltip, null, getReadByTooltipText(readBy, t, client, tooltipUserNameMapper))),
39134
- themeVersion === '2' && (React__default["default"].createElement(PopperTooltip, { offset: [0, 5], referenceElement: referenceElement, visible: tooltipVisible }, getReadByTooltipText(readBy, t, client, tooltipUserNameMapper))),
39135
- React__default["default"].createElement(Avatar$1, { image: lastReadUser.image, name: lastReadUser.name || lastReadUser.id, size: 15, user: lastReadUser }),
39136
- readBy.length > 2 && (React__default["default"].createElement("span", { className: "str-chat__message-".concat(messageType, "-status-number"), "data-testid": 'message-status-read-by-many' }, readBy.length - 1))))));
39127
+ sending &&
39128
+ (MessageSendingStatus ? (React__default["default"].createElement(MessageSendingStatus, null)) : (React__default["default"].createElement(React__default["default"].Fragment, null,
39129
+ themeVersion === '1' && React__default["default"].createElement(Tooltip, null, t('Sending...')),
39130
+ themeVersion === '2' && (React__default["default"].createElement(PopperTooltip, { offset: [0, 5], referenceElement: referenceElement, visible: tooltipVisible }, t('Sending...'))),
39131
+ React__default["default"].createElement(LoadingIndicator, null)))),
39132
+ delivered &&
39133
+ !deliveredAndRead &&
39134
+ (MessageDeliveredStatus ? (React__default["default"].createElement(MessageDeliveredStatus, null)) : (React__default["default"].createElement(React__default["default"].Fragment, null,
39135
+ themeVersion === '1' && React__default["default"].createElement(Tooltip, null, t('Delivered')),
39136
+ themeVersion === '2' && (React__default["default"].createElement(PopperTooltip, { offset: [0, 5], referenceElement: referenceElement, visible: tooltipVisible }, t('Delivered'))),
39137
+ themeVersion === '2' ? React__default["default"].createElement(MessageDeliveredIcon, null) : React__default["default"].createElement(DeliveredCheckIcon, null)))),
39138
+ deliveredAndRead &&
39139
+ (MessageReadStatus ? (React__default["default"].createElement(MessageReadStatus, null)) : (React__default["default"].createElement(React__default["default"].Fragment, null,
39140
+ themeVersion === '1' && (React__default["default"].createElement(Tooltip, null, getReadByTooltipText(readBy, t, client, tooltipUserNameMapper))),
39141
+ themeVersion === '2' && (React__default["default"].createElement(PopperTooltip, { offset: [0, 5], referenceElement: referenceElement, visible: tooltipVisible }, getReadByTooltipText(readBy, t, client, tooltipUserNameMapper))),
39142
+ React__default["default"].createElement(Avatar$1, { image: lastReadUser.image, name: lastReadUser.name || lastReadUser.id, size: 15, user: lastReadUser }),
39143
+ readBy.length > 2 && (React__default["default"].createElement("span", { className: "str-chat__message-".concat(messageType, "-status-number"), "data-testid": 'message-status-read-by-many' }, readBy.length - 1)))))));
39137
39144
  };
39138
39145
  var MessageStatus = React__default["default"].memo(UnMemoizedMessageStatus);
39139
39146
 
@@ -52633,6 +52640,8 @@ var AttachmentPreviewList = function (_a) {
52633
52640
  return (React__default["default"].createElement("div", { className: 'str-chat__attachment-preview-list' },
52634
52641
  React__default["default"].createElement("div", { className: 'str-chat__attachment-list-scroll-container', "data-testid": 'attachment-list-scroll-container' },
52635
52642
  attachments.map(function (attachment) {
52643
+ if (isScrapedContent(attachment))
52644
+ return null;
52636
52645
  if (isLocalVoiceRecordingAttachment(attachment)) {
52637
52646
  return (React__default["default"].createElement(VoiceRecordingPreview$1, { attachment: attachment, handleRetry: uploadAttachment, key: attachment.localMetadata.id || attachment.asset_url, removeAttachments: removeAttachments }));
52638
52647
  }
@@ -53228,7 +53237,9 @@ var MessageInputV2 = function () {
53228
53237
  React__default["default"].createElement(FileUploadIcon, null))),
53229
53238
  React__default["default"].createElement("div", { className: 'str-chat__message-textarea-container' },
53230
53239
  displayQuotedMessage && React__default["default"].createElement(QuotedMessagePreview$1, { quotedMessage: quotedMessage }),
53231
- isUploadEnabled && !!(numberOfUploads || attachments.length) && (React__default["default"].createElement(AttachmentPreviewList$1, null)),
53240
+ isUploadEnabled &&
53241
+ !!(numberOfUploads ||
53242
+ (attachments.length && attachments.length !== linkPreviews.size)) && React__default["default"].createElement(AttachmentPreviewList$1, null),
53232
53243
  React__default["default"].createElement("div", { className: 'str-chat__message-textarea-with-emoji-picker' },
53233
53244
  React__default["default"].createElement(ChatAutoComplete, null),
53234
53245
  EmojiPicker && React__default["default"].createElement(EmojiPicker, null))),
@@ -54767,7 +54778,7 @@ function useFetchReactions(options) {
54767
54778
  var _this = this;
54768
54779
  var contextHandleFetchReactions = useMessageContext('useFetchReactions').handleFetchReactions;
54769
54780
  var _a = React.useState([]), reactions = _a[0], setReactions = _a[1];
54770
- var propHandleFetchReactions = options.handleFetchReactions, shouldFetch = options.shouldFetch;
54781
+ var propHandleFetchReactions = options.handleFetchReactions, reactionType = options.reactionType, shouldFetch = options.shouldFetch, sort = options.sort;
54771
54782
  var _b = React.useState(shouldFetch), isLoading = _b[0], setIsLoading = _b[1];
54772
54783
  var handleFetchReactions = propHandleFetchReactions !== null && propHandleFetchReactions !== void 0 ? propHandleFetchReactions : contextHandleFetchReactions;
54773
54784
  React.useEffect(function () {
@@ -54782,7 +54793,7 @@ function useFetchReactions(options) {
54782
54793
  case 0:
54783
54794
  _a.trys.push([0, 2, 3, 4]);
54784
54795
  setIsLoading(true);
54785
- return [4 /*yield*/, handleFetchReactions()];
54796
+ return [4 /*yield*/, handleFetchReactions(reactionType, sort)];
54786
54797
  case 1:
54787
54798
  reactions_1 = _a.sent();
54788
54799
  if (!cancel) {
@@ -54807,44 +54818,42 @@ function useFetchReactions(options) {
54807
54818
  return function () {
54808
54819
  cancel = true;
54809
54820
  };
54810
- }, [handleFetchReactions, shouldFetch]);
54821
+ }, [handleFetchReactions, reactionType, shouldFetch, sort]);
54811
54822
  return { isLoading: isLoading, reactions: reactions };
54812
54823
  }
54813
54824
 
54814
- var defaultSortReactionDetails = function (a, b) {
54815
- var _a, _b, _c, _d, _e, _f;
54816
- var aName = (_b = (_a = a.user) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : (_c = a.user) === null || _c === void 0 ? void 0 : _c.id;
54817
- var bName = (_e = (_d = b.user) === null || _d === void 0 ? void 0 : _d.name) !== null && _e !== void 0 ? _e : (_f = b.user) === null || _f === void 0 ? void 0 : _f.id;
54818
- return aName ? (bName ? aName.localeCompare(bName, 'en') : -1) : 1;
54819
- };
54825
+ var defaultReactionDetailsSort = { created_at: -1 };
54820
54826
  function ReactionsListModal(_a) {
54821
54827
  var _b, _c;
54822
- var handleFetchReactions = _a.handleFetchReactions, onSelectedReactionTypeChange = _a.onSelectedReactionTypeChange, reactions = _a.reactions, selectedReactionType = _a.selectedReactionType, propSortReactionDetails = _a.sortReactionDetails, modalProps = __rest(_a, ["handleFetchReactions", "onSelectedReactionTypeChange", "reactions", "selectedReactionType", "sortReactionDetails"]);
54828
+ var handleFetchReactions = _a.handleFetchReactions, onSelectedReactionTypeChange = _a.onSelectedReactionTypeChange, propReactionDetailsSort = _a.reactionDetailsSort, reactions = _a.reactions, selectedReactionType = _a.selectedReactionType, propSortReactionDetails = _a.sortReactionDetails, modalProps = __rest(_a, ["handleFetchReactions", "onSelectedReactionTypeChange", "reactionDetailsSort", "reactions", "selectedReactionType", "sortReactionDetails"]);
54823
54829
  var selectedReaction = reactions.find(function (_a) {
54824
54830
  var reactionType = _a.reactionType;
54825
54831
  return reactionType === selectedReactionType;
54826
54832
  });
54827
54833
  var SelectedEmojiComponent = (_b = selectedReaction === null || selectedReaction === void 0 ? void 0 : selectedReaction.EmojiComponent) !== null && _b !== void 0 ? _b : null;
54828
- var _d = useFetchReactions({
54834
+ var _d = useMessageContext('ReactionsListModal'), contextReactionDetailsSort = _d.reactionDetailsSort, contextSortReactionDetails = _d.sortReactionDetails;
54835
+ var legacySortReactionDetails = propSortReactionDetails !== null && propSortReactionDetails !== void 0 ? propSortReactionDetails : contextSortReactionDetails;
54836
+ var reactionDetailsSort = (_c = propReactionDetailsSort !== null && propReactionDetailsSort !== void 0 ? propReactionDetailsSort : contextReactionDetailsSort) !== null && _c !== void 0 ? _c : defaultReactionDetailsSort;
54837
+ var _e = useFetchReactions({
54829
54838
  handleFetchReactions: handleFetchReactions,
54839
+ reactionType: selectedReactionType,
54830
54840
  shouldFetch: modalProps.open,
54831
- }), areReactionsLoading = _d.isLoading, allReactions = _d.reactions;
54832
- var contextSortReactionDetails = useMessageContext('ReactionsListModal').sortReactionDetails;
54833
- var sortReactionDetails = (_c = propSortReactionDetails !== null && propSortReactionDetails !== void 0 ? propSortReactionDetails : contextSortReactionDetails) !== null && _c !== void 0 ? _c : defaultSortReactionDetails;
54834
- var currentReactions = React.useMemo(function () {
54835
- if (!selectedReactionType) {
54836
- return [];
54837
- }
54838
- var unsortedCurrentReactions = allReactions.filter(function (reaction) { return reaction.type === selectedReactionType && reaction.user; });
54839
- return unsortedCurrentReactions.sort(sortReactionDetails);
54840
- }, [allReactions, selectedReactionType, sortReactionDetails]);
54841
- return (React__default["default"].createElement(Modal, exports.__assign({}, modalProps),
54841
+ sort: reactionDetailsSort,
54842
+ }), areReactionsLoading = _e.isLoading, reactionDetails = _e.reactions;
54843
+ var reactionDetailsWithLegacyFallback = React.useMemo(function () {
54844
+ return legacySortReactionDetails
54845
+ ? __spreadArray([], reactionDetails, true).sort(legacySortReactionDetails)
54846
+ : reactionDetails;
54847
+ }, [legacySortReactionDetails, reactionDetails]);
54848
+ return (React__default["default"].createElement(Modal, exports.__assign({}, modalProps, { className: clsx('str-chat__message-reactions-details-modal', modalProps.className) }),
54842
54849
  React__default["default"].createElement("div", { className: 'str-chat__message-reactions-details', "data-testid": 'reactions-list-modal' },
54843
54850
  React__default["default"].createElement("div", { className: 'str-chat__message-reactions-details-reaction-types' }, reactions.map(function (_a) {
54844
54851
  var EmojiComponent = _a.EmojiComponent, reactionCount = _a.reactionCount, reactionType = _a.reactionType;
54845
54852
  return EmojiComponent && (React__default["default"].createElement("div", { className: clsx('str-chat__message-reactions-details-reaction-type', {
54846
54853
  'str-chat__message-reactions-details-reaction-type--selected': selectedReactionType === reactionType,
54847
- }), "data-testid": "reaction-details-selector-".concat(reactionType), key: reactionType, onClick: function () { return onSelectedReactionTypeChange === null || onSelectedReactionTypeChange === void 0 ? void 0 : onSelectedReactionTypeChange(reactionType); } },
54854
+ }), "data-testid": "reaction-details-selector-".concat(reactionType), key: reactionType, onClick: function () {
54855
+ return onSelectedReactionTypeChange === null || onSelectedReactionTypeChange === void 0 ? void 0 : onSelectedReactionTypeChange(reactionType);
54856
+ } },
54848
54857
  React__default["default"].createElement("span", { className: 'emoji str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback' },
54849
54858
  React__default["default"].createElement(EmojiComponent, null)),
54850
54859
  "\u00A0",
@@ -54852,7 +54861,7 @@ function ReactionsListModal(_a) {
54852
54861
  })),
54853
54862
  SelectedEmojiComponent && (React__default["default"].createElement("div", { className: 'emoji str-chat__message-reaction-emoji str-chat__message-reaction-emoji--with-fallback str-chat__message-reaction-emoji-big' },
54854
54863
  React__default["default"].createElement(SelectedEmojiComponent, null))),
54855
- React__default["default"].createElement("div", { className: 'str-chat__message-reactions-details-reacting-users', "data-testid": 'all-reacting-users' }, areReactionsLoading ? (React__default["default"].createElement(LoadingIndicator, null)) : (currentReactions.map(function (_a) {
54864
+ React__default["default"].createElement("div", { className: 'str-chat__message-reactions-details-reacting-users', "data-testid": 'all-reacting-users' }, areReactionsLoading ? (React__default["default"].createElement(LoadingIndicator, null)) : (reactionDetailsWithLegacyFallback.map(function (_a) {
54856
54865
  var user = _a.user;
54857
54866
  return (React__default["default"].createElement("div", { className: 'str-chat__message-reactions-details-reacting-user', key: user === null || user === void 0 ? void 0 : user.id },
54858
54867
  React__default["default"].createElement(Avatar, { "data-testid": 'avatar', image: user === null || user === void 0 ? void 0 : user.image, name: (user === null || user === void 0 ? void 0 : user.name) || (user === null || user === void 0 ? void 0 : user.id) }),
@@ -55420,20 +55429,20 @@ var useUserHandler = function (message, eventHandlers) { return ({
55420
55429
  },
55421
55430
  }); };
55422
55431
 
55423
- var MAX_MESSAGE_REACTIONS_TO_FETCH = 1200;
55432
+ var MAX_MESSAGE_REACTIONS_TO_FETCH = 1000;
55424
55433
  function useReactionsFetcher(message, notifications) {
55425
55434
  var _this = this;
55426
55435
  if (notifications === void 0) { notifications = {}; }
55427
- var channel = useChannelStateContext('useReactionFetcher').channel;
55436
+ var client = useChatContext('useRectionsFetcher').client;
55428
55437
  var t = useTranslationContext('useReactionFetcher').t;
55429
55438
  var getErrorNotification = notifications.getErrorNotification, notify = notifications.notify;
55430
- return function () { return __awaiter(_this, void 0, void 0, function () {
55439
+ return function (reactionType, sort) { return __awaiter(_this, void 0, void 0, function () {
55431
55440
  var e_1, errorMessage;
55432
55441
  return __generator(this, function (_a) {
55433
55442
  switch (_a.label) {
55434
55443
  case 0:
55435
55444
  _a.trys.push([0, 2, , 3]);
55436
- return [4 /*yield*/, fetchMessageReactions(channel, message.id)];
55445
+ return [4 /*yield*/, fetchMessageReactions(client, message.id, reactionType, sort)];
55437
55446
  case 1: return [2 /*return*/, _a.sent()];
55438
55447
  case 2:
55439
55448
  e_1 = _a.sent();
@@ -55445,31 +55454,24 @@ function useReactionsFetcher(message, notifications) {
55445
55454
  });
55446
55455
  }); };
55447
55456
  }
55448
- function fetchMessageReactions(channel, messageId) {
55457
+ function fetchMessageReactions(client, messageId, reactionType, sort) {
55449
55458
  return __awaiter(this, void 0, void 0, function () {
55450
- var reactions, limit, offset, reactionsLimit, lastPageSize, response;
55459
+ var reactions, limit, next, hasNext, response;
55451
55460
  return __generator(this, function (_a) {
55452
55461
  switch (_a.label) {
55453
55462
  case 0:
55454
55463
  reactions = [];
55455
- limit = 300;
55456
- offset = 0;
55457
- reactionsLimit = MAX_MESSAGE_REACTIONS_TO_FETCH;
55458
- lastPageSize = limit;
55464
+ limit = 25;
55465
+ hasNext = true;
55459
55466
  _a.label = 1;
55460
55467
  case 1:
55461
- if (!(lastPageSize === limit && reactions.length < reactionsLimit)) return [3 /*break*/, 3];
55462
- return [4 /*yield*/, channel.getReactions(messageId, {
55463
- limit: limit,
55464
- offset: offset,
55465
- })];
55468
+ if (!(hasNext && reactions.length < MAX_MESSAGE_REACTIONS_TO_FETCH)) return [3 /*break*/, 3];
55469
+ return [4 /*yield*/, client.queryReactions(messageId, reactionType ? { type: reactionType } : {}, sort, { limit: limit, next: next })];
55466
55470
  case 2:
55467
55471
  response = _a.sent();
55468
- lastPageSize = response.reactions.length;
55469
- if (lastPageSize > 0) {
55470
- reactions.push.apply(reactions, response.reactions);
55471
- }
55472
- offset += lastPageSize;
55472
+ reactions.push.apply(reactions, response.reactions);
55473
+ next = response.next;
55474
+ hasNext = Boolean(next);
55473
55475
  return [3 /*break*/, 1];
55474
55476
  case 3: return [2 /*return*/, reactions];
55475
55477
  }
@@ -55478,7 +55480,7 @@ function fetchMessageReactions(channel, messageId) {
55478
55480
  }
55479
55481
 
55480
55482
  var UnMemoizedReactionsList = function (props) {
55481
- var handleFetchReactions = props.handleFetchReactions, _a = props.reverse, reverse = _a === void 0 ? false : _a, sortReactionDetails = props.sortReactionDetails, rest = __rest(props, ["handleFetchReactions", "reverse", "sortReactionDetails"]);
55483
+ var handleFetchReactions = props.handleFetchReactions; props.reactionDetailsSort; var _a = props.reverse, reverse = _a === void 0 ? false : _a, sortReactionDetails = props.sortReactionDetails, rest = __rest(props, ["handleFetchReactions", "reactionDetailsSort", "reverse", "sortReactionDetails"]);
55482
55484
  var _b = useProcessReactions(rest), existingReactions = _b.existingReactions, hasReactions = _b.hasReactions, totalReactionCount = _b.totalReactionCount;
55483
55485
  var _c = React.useState(null), selectedReactionType = _c[0], setSelectedReactionType = _c[1];
55484
55486
  var t = useTranslationContext('ReactionsList').t;
@@ -55508,7 +55510,7 @@ var UnMemoizedReactionsList = function (props) {
55508
55510
  }),
55509
55511
  React__default["default"].createElement("li", null,
55510
55512
  React__default["default"].createElement("span", { className: 'str-chat__reaction-list--counter' }, totalReactionCount)))),
55511
- React__default["default"].createElement(ReactionsListModal, { handleFetchReactions: handleFetchReactions, onClose: function () { return setSelectedReactionType(null); }, onSelectedReactionTypeChange: setSelectedReactionType, open: selectedReactionType !== null, reactions: existingReactions, selectedReactionType: selectedReactionType, sortReactionDetails: sortReactionDetails })));
55513
+ selectedReactionType !== null && (React__default["default"].createElement(ReactionsListModal, { handleFetchReactions: handleFetchReactions, onClose: function () { return setSelectedReactionType(null); }, onSelectedReactionTypeChange: setSelectedReactionType, open: selectedReactionType !== null, reactions: existingReactions, selectedReactionType: selectedReactionType, sortReactionDetails: sortReactionDetails }))));
55512
55514
  };
55513
55515
  /**
55514
55516
  * Component that displays a list of reactions on a message.
@@ -55663,7 +55665,7 @@ var MessageSimpleWithContext = function (props) {
55663
55665
  'str-chat__virtual-message__wrapper--group': groupedByUser,
55664
55666
  });
55665
55667
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
55666
- editing && (React__default["default"].createElement(Modal, { onClose: clearEditingState, open: editing },
55668
+ editing && (React__default["default"].createElement(Modal, { className: 'str-chat__edit-message-modal', onClose: clearEditingState, open: editing },
55667
55669
  React__default["default"].createElement(MessageInput, exports.__assign({ clearEditingState: clearEditingState, grow: true, hideSendButton: true, Input: EditMessageInput, message: message }, additionalMessageInputProps)))),
55668
55670
  isBounceDialogOpen && (React__default["default"].createElement(MessageBounceModal, { MessageBouncePrompt: MessageBouncePrompt$1, onClose: function () { return setIsBounceDialogOpen(false); }, open: isBounceDialogOpen })),
55669
55671
  React__default["default"].createElement("div", { className: rootClassName, key: message.id },
@@ -55806,7 +55808,7 @@ var MemoizedMessage = React__default["default"].memo(MessageWithContext, areMess
55806
55808
  * an individual message. The actual UI of the message is delegated via the Message prop on Channel.
55807
55809
  */
55808
55810
  var Message = function (props) {
55809
- var closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, disableQuotedMessages = props.disableQuotedMessages, getDeleteMessageErrorNotification = props.getDeleteMessageErrorNotification, getFetchReactionsErrorNotification = props.getFetchReactionsErrorNotification, getFlagMessageErrorNotification = props.getFlagMessageErrorNotification, getFlagMessageSuccessNotification = props.getFlagMessageSuccessNotification, getMarkMessageUnreadErrorNotification = props.getMarkMessageUnreadErrorNotification, getMarkMessageUnreadSuccessNotification = props.getMarkMessageUnreadSuccessNotification, getMuteUserErrorNotification = props.getMuteUserErrorNotification, getMuteUserSuccessNotification = props.getMuteUserSuccessNotification, getPinMessageErrorNotification = props.getPinMessageErrorNotification, message = props.message, _a = props.onlySenderCanEdit, onlySenderCanEdit = _a === void 0 ? false : _a, propOnMentionsClick = props.onMentionsClick, propOnMentionsHover = props.onMentionsHover, propOpenThread = props.openThread, pinPermissions = props.pinPermissions, propRetrySendMessage = props.retrySendMessage, sortReactionDetails = props.sortReactionDetails, sortReactions = props.sortReactions;
55811
+ var closeReactionSelectorOnClick = props.closeReactionSelectorOnClick, disableQuotedMessages = props.disableQuotedMessages, getDeleteMessageErrorNotification = props.getDeleteMessageErrorNotification, getFetchReactionsErrorNotification = props.getFetchReactionsErrorNotification, getFlagMessageErrorNotification = props.getFlagMessageErrorNotification, getFlagMessageSuccessNotification = props.getFlagMessageSuccessNotification, getMarkMessageUnreadErrorNotification = props.getMarkMessageUnreadErrorNotification, getMarkMessageUnreadSuccessNotification = props.getMarkMessageUnreadSuccessNotification, getMuteUserErrorNotification = props.getMuteUserErrorNotification, getMuteUserSuccessNotification = props.getMuteUserSuccessNotification, getPinMessageErrorNotification = props.getPinMessageErrorNotification, message = props.message, _a = props.onlySenderCanEdit, onlySenderCanEdit = _a === void 0 ? false : _a, propOnMentionsClick = props.onMentionsClick, propOnMentionsHover = props.onMentionsHover, propOpenThread = props.openThread, pinPermissions = props.pinPermissions, reactionDetailsSort = props.reactionDetailsSort, propRetrySendMessage = props.retrySendMessage, sortReactionDetails = props.sortReactionDetails, sortReactions = props.sortReactions;
55810
55812
  var addNotification = useChannelActionContext('Message').addNotification;
55811
55813
  var _b = useChannelStateContext('Message'), highlightedMessageId = _b.highlightedMessageId, mutes = _b.mutes;
55812
55814
  var reactionSelectorRef = React.useRef(null);
@@ -55848,7 +55850,7 @@ var Message = function (props) {
55848
55850
  }), canPin = _d.canPin, handlePin = _d.handlePin;
55849
55851
  var _e = useReactionClick(message, reactionSelectorRef, undefined, closeReactionSelectorOnClick), isReactionEnabled = _e.isReactionEnabled, onReactionListClick = _e.onReactionListClick, showDetailedReactions = _e.showDetailedReactions;
55850
55852
  var highlighted = highlightedMessageId === message.id;
55851
- return (React__default["default"].createElement(MemoizedMessage, { additionalMessageInputProps: props.additionalMessageInputProps, autoscrollToBottom: props.autoscrollToBottom, canPin: canPin, customMessageActions: props.customMessageActions, disableQuotedMessages: props.disableQuotedMessages, endOfGroup: props.endOfGroup, firstOfGroup: props.firstOfGroup, formatDate: props.formatDate, groupedByUser: props.groupedByUser, groupStyles: props.groupStyles, handleAction: handleAction, handleDelete: handleDelete, handleFetchReactions: handleFetchReactions, handleFlag: handleFlag, handleMarkUnread: handleMarkUnread, handleMute: handleMute, handleOpenThread: handleOpenThread, handlePin: handlePin, handleReaction: handleReaction, handleRetry: handleRetry, highlighted: highlighted, initialMessage: props.initialMessage, isReactionEnabled: isReactionEnabled, lastReceivedId: props.lastReceivedId, message: message, Message: props.Message, messageActions: props.messageActions, messageListRect: props.messageListRect, mutes: mutes, onMentionsClickMessage: onMentionsClick, onMentionsHoverMessage: onMentionsHover, onReactionListClick: onReactionListClick, onUserClick: props.onUserClick, onUserHover: props.onUserHover, pinPermissions: props.pinPermissions, reactionSelectorRef: reactionSelectorRef, readBy: props.readBy, renderText: props.renderText, showDetailedReactions: showDetailedReactions, sortReactionDetails: sortReactionDetails, sortReactions: sortReactions, threadList: props.threadList, unsafeHTML: props.unsafeHTML, userRoles: userRoles }));
55853
+ return (React__default["default"].createElement(MemoizedMessage, { additionalMessageInputProps: props.additionalMessageInputProps, autoscrollToBottom: props.autoscrollToBottom, canPin: canPin, customMessageActions: props.customMessageActions, disableQuotedMessages: props.disableQuotedMessages, endOfGroup: props.endOfGroup, firstOfGroup: props.firstOfGroup, formatDate: props.formatDate, groupedByUser: props.groupedByUser, groupStyles: props.groupStyles, handleAction: handleAction, handleDelete: handleDelete, handleFetchReactions: handleFetchReactions, handleFlag: handleFlag, handleMarkUnread: handleMarkUnread, handleMute: handleMute, handleOpenThread: handleOpenThread, handlePin: handlePin, handleReaction: handleReaction, handleRetry: handleRetry, highlighted: highlighted, initialMessage: props.initialMessage, isReactionEnabled: isReactionEnabled, lastReceivedId: props.lastReceivedId, message: message, Message: props.Message, messageActions: props.messageActions, messageListRect: props.messageListRect, mutes: mutes, onMentionsClickMessage: onMentionsClick, onMentionsHoverMessage: onMentionsHover, onReactionListClick: onReactionListClick, onUserClick: props.onUserClick, onUserHover: props.onUserHover, pinPermissions: props.pinPermissions, reactionDetailsSort: reactionDetailsSort, reactionSelectorRef: reactionSelectorRef, readBy: props.readBy, renderText: props.renderText, showDetailedReactions: showDetailedReactions, sortReactionDetails: sortReactionDetails, sortReactions: sortReactions, threadList: props.threadList, unsafeHTML: props.unsafeHTML, userRoles: userRoles }));
55852
55854
  };
55853
55855
 
55854
55856
  /**
@@ -57006,8 +57008,9 @@ var ChannelInner = function (props) {
57006
57008
  });
57007
57009
  };
57008
57010
  var clearHighlightedMessageTimeoutId = React.useRef(null);
57009
- var jumpToMessage = function (messageId, messageLimit) {
57011
+ var jumpToMessage = React.useCallback(function (messageId, messageLimit, highlightDuration) {
57010
57012
  if (messageLimit === void 0) { messageLimit = DEFAULT_JUMP_TO_PAGE_SIZE; }
57013
+ if (highlightDuration === void 0) { highlightDuration = DEFAULT_HIGHLIGHT_DURATION; }
57011
57014
  return __awaiter(void 0, void 0, void 0, function () {
57012
57015
  var indexOfMessage, hasMoreMessages;
57013
57016
  return __generator(this, function (_a) {
@@ -57031,13 +57034,13 @@ var ChannelInner = function (props) {
57031
57034
  clearHighlightedMessageTimeoutId.current = setTimeout(function () {
57032
57035
  clearHighlightedMessageTimeoutId.current = null;
57033
57036
  dispatch({ type: 'clearHighlightedMessage' });
57034
- }, 500);
57037
+ }, highlightDuration);
57035
57038
  return [2 /*return*/];
57036
57039
  }
57037
57040
  });
57038
57041
  });
57039
- };
57040
- var jumpToLatestMessage = function () { return __awaiter(void 0, void 0, void 0, function () {
57042
+ }, [channel, loadMoreFinished]);
57043
+ var jumpToLatestMessage = React.useCallback(function () { return __awaiter(void 0, void 0, void 0, function () {
57041
57044
  var hasMoreOlder;
57042
57045
  return __generator(this, function (_a) {
57043
57046
  switch (_a.label) {
@@ -57052,9 +57055,10 @@ var ChannelInner = function (props) {
57052
57055
  return [2 /*return*/];
57053
57056
  }
57054
57057
  });
57055
- }); };
57056
- var jumpToFirstUnreadMessage = React.useCallback(function (queryMessageLimit) {
57058
+ }); }, [channel, loadMoreFinished]);
57059
+ var jumpToFirstUnreadMessage = React.useCallback(function (queryMessageLimit, highlightDuration) {
57057
57060
  if (queryMessageLimit === void 0) { queryMessageLimit = DEFAULT_JUMP_TO_PAGE_SIZE; }
57061
+ if (highlightDuration === void 0) { highlightDuration = DEFAULT_HIGHLIGHT_DURATION; }
57058
57062
  return __awaiter(void 0, void 0, void 0, function () {
57059
57063
  var lastReadMessageId, firstUnreadMessageId, isInCurrentMessageSet, hasMoreMessages, result, result, lastReadTimestamp, _a, lastReadMessageIndex, lastReadMessage, messages, firstMessageWithCreationDate, firstMessageTimestamp, result, targetId_1, indexOfTarget;
57060
57064
  var _b, _c, _d, _e;
@@ -57169,7 +57173,7 @@ var ChannelInner = function (props) {
57169
57173
  clearHighlightedMessageTimeoutId.current = setTimeout(function () {
57170
57174
  clearHighlightedMessageTimeoutId.current = null;
57171
57175
  dispatch({ type: 'clearHighlightedMessage' });
57172
- }, 500);
57176
+ }, highlightDuration);
57173
57177
  return [2 /*return*/];
57174
57178
  }
57175
57179
  });
@@ -57358,7 +57362,7 @@ var ChannelInner = function (props) {
57358
57362
  switch (_b.label) {
57359
57363
  case 0:
57360
57364
  // FIXME: should prevent loading more, if state.thread.reply_count === channel.state.threads[parentID].length
57361
- if (state.threadLoadingMore || !state.thread)
57365
+ if (state.threadLoadingMore || !state.thread || !state.threadHasMore)
57362
57366
  return [2 /*return*/];
57363
57367
  dispatch({ type: 'startLoadingThread' });
57364
57368
  parentId = state.thread.id;