stream-chat-react 11.10.0 → 11.12.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 (134) hide show
  1. package/dist/{Window-7d524c3b.js → Window-e8323a54.js} +357 -74
  2. package/dist/browser.full-bundle.js +466 -147
  3. package/dist/browser.full-bundle.js.map +1 -1
  4. package/dist/browser.full-bundle.min.js +4 -4
  5. package/dist/browser.full-bundle.min.js.map +1 -1
  6. package/dist/components/Attachment/Attachment.d.ts +6 -1
  7. package/dist/components/Attachment/Attachment.d.ts.map +1 -1
  8. package/dist/components/Attachment/Attachment.js +8 -2
  9. package/dist/components/Attachment/AttachmentContainer.d.ts +1 -0
  10. package/dist/components/Attachment/AttachmentContainer.d.ts.map +1 -1
  11. package/dist/components/Attachment/AttachmentContainer.js +7 -0
  12. package/dist/components/Attachment/Audio.d.ts +0 -10
  13. package/dist/components/Attachment/Audio.d.ts.map +1 -1
  14. package/dist/components/Attachment/Audio.js +1 -14
  15. package/dist/components/Attachment/Card.d.ts.map +1 -1
  16. package/dist/components/Attachment/Card.js +1 -1
  17. package/dist/components/Attachment/FileAttachment.d.ts.map +1 -1
  18. package/dist/components/Attachment/FileAttachment.js +1 -2
  19. package/dist/components/Attachment/VoiceRecording.d.ts +18 -0
  20. package/dist/components/Attachment/VoiceRecording.d.ts.map +1 -0
  21. package/dist/components/Attachment/VoiceRecording.js +45 -0
  22. package/dist/components/Attachment/components/DownloadButton.d.ts.map +1 -0
  23. package/dist/components/Attachment/{DownloadButton.js → components/DownloadButton.js} +2 -2
  24. package/dist/components/Attachment/components/FileSizeIndicator.d.ts +13 -0
  25. package/dist/components/Attachment/components/FileSizeIndicator.d.ts.map +1 -0
  26. package/dist/components/Attachment/{FileSizeIndicator.js → components/FileSizeIndicator.js} +2 -2
  27. package/dist/components/Attachment/components/PlayButton.d.ts +8 -0
  28. package/dist/components/Attachment/components/PlayButton.d.ts.map +1 -0
  29. package/dist/components/Attachment/components/PlayButton.js +6 -0
  30. package/dist/components/Attachment/components/PlaybackRateButton.d.ts +4 -0
  31. package/dist/components/Attachment/components/PlaybackRateButton.d.ts.map +1 -0
  32. package/dist/components/Attachment/components/PlaybackRateButton.js +5 -0
  33. package/dist/components/Attachment/components/ProgressBar.d.ts +7 -0
  34. package/dist/components/Attachment/components/ProgressBar.d.ts.map +1 -0
  35. package/dist/components/Attachment/components/ProgressBar.js +8 -0
  36. package/dist/components/Attachment/components/WaveProgressBar.d.ts +22 -0
  37. package/dist/components/Attachment/components/WaveProgressBar.d.ts.map +1 -0
  38. package/dist/components/Attachment/components/WaveProgressBar.js +121 -0
  39. package/dist/components/Attachment/components/index.d.ts +7 -0
  40. package/dist/components/Attachment/components/index.d.ts.map +1 -0
  41. package/dist/components/Attachment/components/index.js +6 -0
  42. package/dist/components/Attachment/hooks/useAudioController.d.ts +12 -2
  43. package/dist/components/Attachment/hooks/useAudioController.d.ts.map +1 -1
  44. package/dist/components/Attachment/hooks/useAudioController.js +60 -25
  45. package/dist/components/Attachment/index.d.ts +1 -0
  46. package/dist/components/Attachment/index.d.ts.map +1 -1
  47. package/dist/components/Attachment/index.js +1 -0
  48. package/dist/components/Attachment/utils.d.ts +4 -2
  49. package/dist/components/Attachment/utils.d.ts.map +1 -1
  50. package/dist/components/Attachment/utils.js +14 -0
  51. package/dist/components/Channel/Channel.d.ts +2 -0
  52. package/dist/components/Channel/Channel.d.ts.map +1 -1
  53. package/dist/components/Channel/Channel.js +1 -0
  54. package/dist/components/Chat/hooks/useCreateChatClient.d.ts +10 -0
  55. package/dist/components/Chat/hooks/useCreateChatClient.d.ts.map +1 -0
  56. package/dist/components/Chat/hooks/useCreateChatClient.js +31 -0
  57. package/dist/components/Chat/index.d.ts +1 -0
  58. package/dist/components/Chat/index.d.ts.map +1 -1
  59. package/dist/components/Chat/index.js +1 -0
  60. package/dist/components/Emojis/index.cjs.js +3 -3
  61. package/dist/components/Gallery/BaseImage.js +1 -1
  62. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts.map +1 -1
  63. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.js +2 -1
  64. package/dist/components/Message/MessageEditedTimestamp.d.ts +8 -0
  65. package/dist/components/Message/MessageEditedTimestamp.d.ts.map +1 -0
  66. package/dist/components/Message/MessageEditedTimestamp.js +22 -0
  67. package/dist/components/Message/MessageSimple.d.ts.map +1 -1
  68. package/dist/components/Message/MessageSimple.js +13 -3
  69. package/dist/components/Message/MessageTimestamp.d.ts +1 -1
  70. package/dist/components/Message/MessageTimestamp.d.ts.map +1 -1
  71. package/dist/components/Message/MessageTimestamp.js +8 -13
  72. package/dist/components/Message/QuotedMessage.d.ts.map +1 -1
  73. package/dist/components/Message/QuotedMessage.js +1 -1
  74. package/dist/components/Message/Timestamp.d.ts +10 -0
  75. package/dist/components/Message/Timestamp.d.ts.map +1 -0
  76. package/dist/components/Message/Timestamp.js +24 -0
  77. package/dist/components/Message/renderText/index.d.ts +1 -1
  78. package/dist/components/Message/renderText/index.d.ts.map +1 -1
  79. package/dist/components/Message/utils.d.ts +1 -0
  80. package/dist/components/Message/utils.d.ts.map +1 -1
  81. package/dist/components/Message/utils.js +1 -0
  82. package/dist/components/MessageInput/QuotedMessagePreview.d.ts.map +1 -1
  83. package/dist/components/MessageInput/QuotedMessagePreview.js +1 -1
  84. package/dist/components/MessageList/MessageList.d.ts +1 -1
  85. package/dist/components/MessageList/MessageList.d.ts.map +1 -1
  86. package/dist/components/MessageList/MessageList.js +12 -13
  87. package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -1
  88. package/dist/components/MessageList/VirtualizedMessageListComponents.js +11 -6
  89. package/dist/components/MessageList/utils.d.ts.map +1 -1
  90. package/dist/components/MessageList/utils.js +5 -2
  91. package/dist/components/index.d.ts +2 -1
  92. package/dist/components/index.d.ts.map +1 -1
  93. package/dist/constants/limits.d.ts +1 -0
  94. package/dist/constants/limits.d.ts.map +1 -1
  95. package/dist/constants/limits.js +1 -0
  96. package/dist/context/ComponentContext.d.ts +2 -0
  97. package/dist/context/ComponentContext.d.ts.map +1 -1
  98. package/dist/css/index.css +1 -1
  99. package/dist/css/v2/index.css +1 -1
  100. package/dist/css/v2/index.layout.css +1 -1
  101. package/dist/i18n/Streami18n.d.ts +3 -0
  102. package/dist/i18n/Streami18n.d.ts.map +1 -1
  103. package/dist/i18n/de.json +3 -0
  104. package/dist/i18n/en.json +3 -0
  105. package/dist/i18n/es.json +3 -0
  106. package/dist/i18n/fr.json +3 -0
  107. package/dist/i18n/hi.json +3 -0
  108. package/dist/i18n/it.json +3 -0
  109. package/dist/i18n/ja.json +3 -0
  110. package/dist/i18n/ko.json +3 -0
  111. package/dist/i18n/nl.json +3 -0
  112. package/dist/i18n/pt.json +3 -0
  113. package/dist/i18n/ru.json +3 -0
  114. package/dist/i18n/tr.json +3 -0
  115. package/dist/index.cjs.js +67 -21
  116. package/dist/scss/Message.scss +21 -17
  117. package/dist/scss/MessageActions.scss +0 -9
  118. package/dist/scss/_base.scss +8 -1
  119. package/dist/scss/v2/AttachmentList/AttachmentList-layout.scss +84 -0
  120. package/dist/scss/v2/AttachmentList/AttachmentList-theme.scss +72 -1
  121. package/dist/scss/v2/EditMessageForm/EditMessageForm-layout.scss +13 -15
  122. package/dist/scss/v2/Message/Message-layout.scss +48 -4
  123. package/dist/scss/v2/MessageActionsBox/MessageActionsBox-layout.scss +0 -8
  124. package/dist/scss/v2/_base.scss +1 -2
  125. package/dist/scss/v2/_utils.scss +0 -1
  126. package/dist/types/index.d.ts +1 -1
  127. package/dist/types/index.d.ts.map +1 -1
  128. package/dist/version.d.ts +1 -1
  129. package/dist/version.js +1 -1
  130. package/package.json +7 -7
  131. package/dist/components/Attachment/DownloadButton.d.ts.map +0 -1
  132. package/dist/components/Attachment/FileSizeIndicator.d.ts +0 -7
  133. package/dist/components/Attachment/FileSizeIndicator.d.ts.map +0 -1
  134. /package/dist/components/Attachment/{DownloadButton.d.ts → components/DownloadButton.d.ts} +0 -0
package/dist/i18n/ko.json CHANGED
@@ -12,6 +12,7 @@
12
12
  "Drag your files here to add to your post": "게시물에 추가하려면 파일을 여기로 끌어다 놓으세요",
13
13
  "Edit Message": "메시지 수정",
14
14
  "Edit message request failed": "메시지 수정 요청 실패",
15
+ "Edited": "편집됨",
15
16
  "Emoji matching": "이모티콘 매칭",
16
17
  "Empty message...": "빈 메시지...",
17
18
  "Error adding flag": "플래그를 추가하는 동안 오류가 발생했습니다.",
@@ -22,6 +23,7 @@
22
23
  "Error muting a user ...": "사용자를 음소거하는 중에 오류가 발생했습니다...",
23
24
  "Error pinning message": "메시지를 핀하는 중에 오류가 발생했습니다.",
24
25
  "Error removing message pin": "메시지 핀을 제거하는 중에 오류가 발생했습니다.",
26
+ "Error reproducing the recording": "녹음 재생 중 오류 발생",
25
27
  "Error unmuting a user ...": "사용자 음소거 해제 중 오류 발생...",
26
28
  "Error uploading file": "파일 업로드 오류",
27
29
  "Error uploading image": "이미지를 업로드하는 동안 오류가 발생했습니다.",
@@ -70,6 +72,7 @@
70
72
  "Unread messages": "읽지 않은 메시지",
71
73
  "Upload type: \"{{ type }}\" is not allowed": "업로드 유형: \"{{ type }}\"은(는) 허용되지 않습니다.",
72
74
  "User uploaded content": "사용자 업로드 콘텐츠",
75
+ "Voice message": "음성 메시지",
73
76
  "Wait until all attachments have uploaded": "모든 첨부 파일이 업로드될 때까지 기다립니다.",
74
77
  "You have no channels currently": "현재 채널이 없습니다.",
75
78
  "You've reached the maximum number of files": "최대 파일 수에 도달했습니다.",
package/dist/i18n/nl.json CHANGED
@@ -12,6 +12,7 @@
12
12
  "Drag your files here to add to your post": "Sleep je bestanden hier naartoe om aan je bericht toe te voegen",
13
13
  "Edit Message": "Pas bericht aan",
14
14
  "Edit message request failed": "Verzoek om bericht bewerken mislukt",
15
+ "Edited": "Bewerkt",
15
16
  "Emoji matching": "Emoji-overeenkomsten",
16
17
  "Empty message...": "Leeg bericht...",
17
18
  "Error adding flag": "Fout bij toevoegen van vlag",
@@ -22,6 +23,7 @@
22
23
  "Error muting a user ...": "Fout bij het muten van de gebruiker",
23
24
  "Error pinning message": "Fout bij vastzetten van bericht",
24
25
  "Error removing message pin": "Fout bij verwijderen van berichtpin",
26
+ "Error reproducing the recording": "Fout bij het afspelen van de opname",
25
27
  "Error unmuting a user ...": "Fout bij het unmuten van de gebruiker",
26
28
  "Error uploading file": "Fout bij uploaden bestand",
27
29
  "Error uploading image": "Fout bij uploaden afbeelding",
@@ -70,6 +72,7 @@
70
72
  "Unread messages": "Ongelezen berichten",
71
73
  "Upload type: \"{{ type }}\" is not allowed": "Uploadtype: \"{{ type }}\" is niet toegestaan",
72
74
  "User uploaded content": "Gebruikersgeüploade inhoud",
75
+ "Voice message": "Voicemail",
73
76
  "Wait until all attachments have uploaded": "Wacht tot alle bijlagen zijn geüpload",
74
77
  "You have no channels currently": "Er zijn geen chats beschikbaar",
75
78
  "You've reached the maximum number of files": "Je hebt het maximale aantal bestanden bereikt",
package/dist/i18n/pt.json CHANGED
@@ -12,6 +12,7 @@
12
12
  "Drag your files here to add to your post": "Arraste seus arquivos aqui para adicionar ao seu post",
13
13
  "Edit Message": "Editar Mensagem",
14
14
  "Edit message request failed": "O pedido de edição da mensagem falhou",
15
+ "Edited": "Editada",
15
16
  "Emoji matching": "Emoji correspondente",
16
17
  "Empty message...": "Mensagem vazia...",
17
18
  "Error adding flag": "Erro ao reportar",
@@ -22,6 +23,7 @@
22
23
  "Error muting a user ...": "Erro ao silenciar um usuário...",
23
24
  "Error pinning message": "Erro ao fixar mensagem",
24
25
  "Error removing message pin": "Erro ao remover o PIN da mensagem",
26
+ "Error reproducing the recording": "Erro ao reproduzir a gravação",
25
27
  "Error unmuting a user ...": "Erro ao ativar o som de um usuário...",
26
28
  "Error uploading file": "Erro ao enviar arquivo",
27
29
  "Error uploading image": "Erro ao carregar a imagem",
@@ -70,6 +72,7 @@
70
72
  "Unread messages": "Mensagens não lidas",
71
73
  "Upload type: \"{{ type }}\" is not allowed": "Tipo de upload: \"{{ type }}\" não é permitido",
72
74
  "User uploaded content": "Conteúdo enviado pelo usuário",
75
+ "Voice message": "Mensagem de voz",
73
76
  "Wait until all attachments have uploaded": "Espere até que todos os anexos tenham sido carregados",
74
77
  "You have no channels currently": "Você não tem canais atualmente",
75
78
  "You've reached the maximum number of files": "Você atingiu o número máximo de arquivos",
package/dist/i18n/ru.json CHANGED
@@ -12,6 +12,7 @@
12
12
  "Drag your files here to add to your post": "Перетащите ваши файлы сюда, чтобы добавить их в ваш пост",
13
13
  "Edit Message": "Редактировать сообщение",
14
14
  "Edit message request failed": "Не удалось изменить запрос сообщения",
15
+ "Edited": "Отредактировано",
15
16
  "Emoji matching": "Соответствие эмодзи",
16
17
  "Empty message...": "Пустое сообщение...",
17
18
  "Error adding flag": "Ошибка добавления флага",
@@ -22,6 +23,7 @@
22
23
  "Error muting a user ...": "Ошибка отключения уведомлений от пользователя...",
23
24
  "Error pinning message": "Сообщение об ошибке при закреплении",
24
25
  "Error removing message pin": "Ошибка при удалении булавки сообщения",
26
+ "Error reproducing the recording": "Ошибка воспроизведения записи",
25
27
  "Error unmuting a user ...": "Ошибка включения уведомлений...",
26
28
  "Error uploading file": "Ошибка при загрузке файла",
27
29
  "Error uploading image": "Ошибка загрузки изображения",
@@ -70,6 +72,7 @@
70
72
  "Unread messages": "Непрочитанные сообщения",
71
73
  "Upload type: \"{{ type }}\" is not allowed": "Тип загрузки: \"{{ type }}\" не разрешен",
72
74
  "User uploaded content": "Пользователь загрузил контент",
75
+ "Voice message": "Голосовое сообщение",
73
76
  "Wait until all attachments have uploaded": "Подождите, пока все вложения загрузятся",
74
77
  "You have no channels currently": "У вас нет каналов в данный момент",
75
78
  "You've reached the maximum number of files": "Вы достигли максимального количества файлов",
package/dist/i18n/tr.json CHANGED
@@ -12,6 +12,7 @@
12
12
  "Drag your files here to add to your post": "Gönderinize eklemek için dosyalarınızı buraya sürükleyin",
13
13
  "Edit Message": "Mesajı Düzenle",
14
14
  "Edit message request failed": "Mesaj düzenleme isteği başarısız oldu",
15
+ "Edited": "Düzenlendi",
15
16
  "Emoji matching": "Emoji eşleştirme",
16
17
  "Empty message...": "Boş mesaj...",
17
18
  "Error adding flag": "Bayrak eklenirken hata oluştu",
@@ -22,6 +23,7 @@
22
23
  "Error muting a user ...": "Kullanıcıyı sessize alırken hata oluştu ...",
23
24
  "Error pinning message": "Mesaj sabitlenirken hata oluştu",
24
25
  "Error removing message pin": "Mesaj PIN'i kaldırılırken hata oluştu",
26
+ "Error reproducing the recording": "Kaydı yeniden üretme hatası",
25
27
  "Error unmuting a user ...": "Kullanıcının sesini açarken hata oluştu ...",
26
28
  "Error uploading file": "Dosya yüklenirken hata oluştu",
27
29
  "Error uploading image": "Resmi yüklerken hata",
@@ -70,6 +72,7 @@
70
72
  "Unread messages": "Okunmamış mesajlar",
71
73
  "Upload type: \"{{ type }}\" is not allowed": "Yükleme türü: \"{{ type }}\" izin verilmez",
72
74
  "User uploaded content": "Kullanıcı tarafından yüklenen içerik",
75
+ "Voice message": "Sesli mesaj",
73
76
  "Wait until all attachments have uploaded": "Tüm ekler yüklenene kadar bekleyin",
74
77
  "You have no channels currently": "Henüz kanalınız yok",
75
78
  "You've reached the maximum number of files": "Maksimum dosya sayısına ulaştınız",
package/dist/index.cjs.js CHANGED
@@ -2,8 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Window = require('./Window-7d524c3b.js');
5
+ var Window = require('./Window-e8323a54.js');
6
6
  var React = require('react');
7
+ var streamChat = require('stream-chat');
7
8
  var reactVirtuoso = require('react-virtuoso');
8
9
  var throttle = require('lodash.throttle');
9
10
  require('emoji-regex');
@@ -13,7 +14,6 @@ require('@braintree/sanitize-url');
13
14
  require('react-image-gallery');
14
15
  require('react-dom');
15
16
  require('react-fast-compare');
16
- require('stream-chat');
17
17
  require('lodash.debounce');
18
18
  require('dayjs');
19
19
  require('dayjs/plugin/calendar');
@@ -521,7 +521,7 @@ var mousewheelListener = function (event) {
521
521
  }
522
522
  };
523
523
  var InfiniteScroll = function (props) {
524
- var children = props.children, _a = props.element, element = _a === void 0 ? 'div' : _a, hasMore = props.hasMore, hasMoreNewer = props.hasMoreNewer, hasNextPage = props.hasNextPage, hasPreviousPage = props.hasPreviousPage, head = props.head, _b = props.initialLoad, initialLoad = _b === void 0 ? true : _b, isLoading = props.isLoading, listenToScroll = props.listenToScroll, loader = props.loader, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, loadNextPage = props.loadNextPage, loadPreviousPage = props.loadPreviousPage, _c = props.threshold, threshold = _c === void 0 ? 250 : _c, _d = props.useCapture, useCapture = _d === void 0 ? false : _d, elementProps = Window.__rest(props, ["children", "element", "hasMore", "hasMoreNewer", "hasNextPage", "hasPreviousPage", "head", "initialLoad", "isLoading", "listenToScroll", "loader", "loadMore", "loadMoreNewer", "loadNextPage", "loadPreviousPage", "threshold", "useCapture"]);
524
+ var children = props.children, _a = props.element, element = _a === void 0 ? 'div' : _a, hasMore = props.hasMore, hasMoreNewer = props.hasMoreNewer, hasNextPage = props.hasNextPage, hasPreviousPage = props.hasPreviousPage, head = props.head, _b = props.initialLoad, initialLoad = _b === void 0 ? true : _b, isLoading = props.isLoading, listenToScroll = props.listenToScroll, loader = props.loader, loadMore = props.loadMore, loadMoreNewer = props.loadMoreNewer, loadNextPage = props.loadNextPage, loadPreviousPage = props.loadPreviousPage, _c = props.threshold, threshold = _c === void 0 ? Window.DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD : _c, _d = props.useCapture, useCapture = _d === void 0 ? false : _d, elementProps = Window.__rest(props, ["children", "element", "hasMore", "hasMoreNewer", "hasNextPage", "hasPreviousPage", "head", "initialLoad", "isLoading", "listenToScroll", "loader", "loadMore", "loadMoreNewer", "loadNextPage", "loadPreviousPage", "threshold", "useCapture"]);
525
525
  var loadNextPageFn = loadNextPage || loadMoreNewer;
526
526
  var loadPreviousPageFn = loadPreviousPage || loadMore;
527
527
  var hasNextPageFlag = hasNextPage || hasMoreNewer;
@@ -630,22 +630,21 @@ function defaultRenderMessages(_a) {
630
630
 
631
631
  var MessageListWithContext = function (props) {
632
632
  var _a;
633
- var channel = props.channel, channelUnreadUiState = props.channelUnreadUiState, _b = props.disableDateSeparator, disableDateSeparator = _b === void 0 ? false : _b, groupStyles = props.groupStyles, _c = props.hideDeletedMessages, hideDeletedMessages = _c === void 0 ? false : _c, _d = props.hideNewMessageSeparator, hideNewMessageSeparator = _d === void 0 ? false : _d, internalInfiniteScrollProps = props.internalInfiniteScrollProps, _e = props.messageActions, messageActions = _e === void 0 ? Object.keys(Window.MESSAGE_ACTIONS) : _e, _f = props.messages, messages = _f === void 0 ? [] : _f, notifications = props.notifications, _g = props.noGroupByUser, noGroupByUser = _g === void 0 ? false : _g, _h = props.pinPermissions, pinPermissions = _h === void 0 ? Window.defaultPinPermissions : _h, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
634
- _j = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
635
- returnAllReadData = _j === void 0 ? false : _j, _k = props.threadList, threadList = _k === void 0 ? false : _k, _l = props.unsafeHTML, unsafeHTML = _l === void 0 ? false : _l, headerPosition = props.headerPosition, read = props.read, _m = props.renderMessages, renderMessages = _m === void 0 ? defaultRenderMessages : _m, _o = props.messageLimit, messageLimit = _o === void 0 ? Window.DEFAULT_NEXT_CHANNEL_PAGE_SIZE : _o, loadMoreCallback = props.loadMore, loadMoreNewerCallback = props.loadMoreNewer, _p = props.hasMoreNewer, hasMoreNewer = _p === void 0 ? false : _p, showUnreadNotificationAlways = props.showUnreadNotificationAlways, suppressAutoscroll = props.suppressAutoscroll, highlightedMessageId = props.highlightedMessageId, _q = props.jumpToLatestMessage, jumpToLatestMessage = _q === void 0 ? function () { return Promise.resolve(); } : _q;
636
- var _r = React__default["default"].useState(null), listElement = _r[0], setListElement = _r[1];
637
- var _s = React__default["default"].useState(null), ulElement = _s[0], setUlElement = _s[1];
633
+ var channel = props.channel, channelUnreadUiState = props.channelUnreadUiState, _b = props.disableDateSeparator, disableDateSeparator = _b === void 0 ? false : _b, groupStyles = props.groupStyles, _c = props.hideDeletedMessages, hideDeletedMessages = _c === void 0 ? false : _c, _d = props.hideNewMessageSeparator, hideNewMessageSeparator = _d === void 0 ? false : _d, _e = props.internalInfiniteScrollProps, _f = _e === void 0 ? {} : _e, _g = _f.threshold, loadMoreScrollThreshold = _g === void 0 ? Window.DEFAULT_LOAD_PAGE_SCROLL_THRESHOLD : _g, restInternalInfiniteScrollProps = Window.__rest(_f, ["threshold"]), _h = props.messageActions, messageActions = _h === void 0 ? Object.keys(Window.MESSAGE_ACTIONS) : _h, _j = props.messages, messages = _j === void 0 ? [] : _j, notifications = props.notifications, _k = props.noGroupByUser, noGroupByUser = _k === void 0 ? false : _k, _l = props.pinPermissions, pinPermissions = _l === void 0 ? Window.defaultPinPermissions : _l, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
634
+ _m = props.returnAllReadData, // @deprecated in favor of `channelCapabilities` - TODO: remove in next major release
635
+ returnAllReadData = _m === void 0 ? false : _m, _o = props.threadList, threadList = _o === void 0 ? false : _o, _p = props.unsafeHTML, unsafeHTML = _p === void 0 ? false : _p, headerPosition = props.headerPosition, read = props.read, _q = props.renderMessages, renderMessages = _q === void 0 ? defaultRenderMessages : _q, _r = props.messageLimit, messageLimit = _r === void 0 ? Window.DEFAULT_NEXT_CHANNEL_PAGE_SIZE : _r, loadMoreCallback = props.loadMore, loadMoreNewerCallback = props.loadMoreNewer, _s = props.hasMoreNewer, hasMoreNewer = _s === void 0 ? false : _s, showUnreadNotificationAlways = props.showUnreadNotificationAlways, suppressAutoscroll = props.suppressAutoscroll, highlightedMessageId = props.highlightedMessageId, _t = props.jumpToLatestMessage, jumpToLatestMessage = _t === void 0 ? function () { return Promise.resolve(); } : _t;
636
+ var _u = React__default["default"].useState(null), listElement = _u[0], setListElement = _u[1];
637
+ var _v = React__default["default"].useState(null), ulElement = _v[0], setUlElement = _v[1];
638
638
  var customClasses = Window.useChatContext('MessageList').customClasses;
639
- var _t = Window.useComponentContext('MessageList'), _u = _t.EmptyStateIndicator, EmptyStateIndicator = _u === void 0 ? Window.EmptyStateIndicator : _u, _v = _t.LoadingIndicator, LoadingIndicator = _v === void 0 ? Window.LoadingIndicator : _v, _w = _t.MessageListNotifications, MessageListNotifications$1 = _w === void 0 ? MessageListNotifications : _w, _x = _t.MessageNotification, MessageNotification = _x === void 0 ? Window.MessageNotification : _x, _y = _t.TypingIndicator, TypingIndicator = _y === void 0 ? Window.TypingIndicator : _y, _z = _t.UnreadMessagesNotification, UnreadMessagesNotification$1 = _z === void 0 ? UnreadMessagesNotification : _z;
640
- var loadMoreScrollThreshold = (internalInfiniteScrollProps === null || internalInfiniteScrollProps === void 0 ? void 0 : internalInfiniteScrollProps.threshold) || 250;
641
- var _0 = useScrollLocationLogic({
639
+ var _w = Window.useComponentContext('MessageList'), _x = _w.EmptyStateIndicator, EmptyStateIndicator = _x === void 0 ? Window.EmptyStateIndicator : _x, _y = _w.LoadingIndicator, LoadingIndicator = _y === void 0 ? Window.LoadingIndicator : _y, _z = _w.MessageListNotifications, MessageListNotifications$1 = _z === void 0 ? MessageListNotifications : _z, _0 = _w.MessageNotification, MessageNotification = _0 === void 0 ? Window.MessageNotification : _0, _1 = _w.TypingIndicator, TypingIndicator = _1 === void 0 ? Window.TypingIndicator : _1, _2 = _w.UnreadMessagesNotification, UnreadMessagesNotification$1 = _2 === void 0 ? UnreadMessagesNotification : _2;
640
+ var _3 = useScrollLocationLogic({
642
641
  hasMoreNewer: hasMoreNewer,
643
642
  listElement: listElement,
644
643
  loadMoreScrollThreshold: loadMoreScrollThreshold,
645
644
  messages: messages,
646
645
  scrolledUpThreshold: props.scrolledUpThreshold,
647
646
  suppressAutoscroll: suppressAutoscroll,
648
- }), hasNewMessages = _0.hasNewMessages, isMessageListScrolledToBottom = _0.isMessageListScrolledToBottom, onScroll = _0.onScroll, scrollToBottom = _0.scrollToBottom, wrapperRect = _0.wrapperRect;
647
+ }), hasNewMessages = _3.hasNewMessages, isMessageListScrolledToBottom = _3.isMessageListScrolledToBottom, onScroll = _3.onScroll, scrollToBottom = _3.scrollToBottom, wrapperRect = _3.wrapperRect;
649
648
  var showUnreadMessagesNotification = useUnreadMessagesNotification({
650
649
  isMessageListScrolledToBottom: isMessageListScrolledToBottom,
651
650
  showAlways: !!showUnreadNotificationAlways,
@@ -657,7 +656,7 @@ var MessageListWithContext = function (props) {
657
656
  unreadCount: (_a = channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages) !== null && _a !== void 0 ? _a : 0,
658
657
  wasMarkedUnread: !!(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.first_unread_message_id),
659
658
  });
660
- var _1 = useEnrichedMessages({
659
+ var _4 = useEnrichedMessages({
661
660
  channel: channel,
662
661
  disableDateSeparator: disableDateSeparator,
663
662
  groupStyles: groupStyles,
@@ -666,7 +665,7 @@ var MessageListWithContext = function (props) {
666
665
  hideNewMessageSeparator: hideNewMessageSeparator,
667
666
  messages: messages,
668
667
  noGroupByUser: noGroupByUser,
669
- }), messageGroupStyles = _1.messageGroupStyles, enrichedMessages = _1.messages;
668
+ }), messageGroupStyles = _4.messageGroupStyles, enrichedMessages = _4.messages;
670
669
  var elements = useMessageListElements({
671
670
  channelUnreadUiState: channelUnreadUiState,
672
671
  enrichedMessages: enrichedMessages,
@@ -745,7 +744,7 @@ var MessageListWithContext = function (props) {
745
744
  return (React__default["default"].createElement(Window.MessageListContextProvider, { value: { listElement: listElement, scrollToBottom: scrollToBottom } },
746
745
  React__default["default"].createElement(MessageListMainPanel, null,
747
746
  !threadList && showUnreadMessagesNotification && (React__default["default"].createElement(UnreadMessagesNotification$1, { unreadCount: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages })),
748
- React__default["default"].createElement("div", { className: "".concat(messageListClass, " ").concat(threadListClass), onScroll: onScroll, ref: setListElement, tabIndex: 0 }, showEmptyStateIndicator ? (React__default["default"].createElement(EmptyStateIndicator, { key: 'empty-state-indicator', listType: threadList ? 'thread' : 'message' })) : (React__default["default"].createElement(InfiniteScroll, Window.__assign({ className: 'str-chat__reverse-infinite-scroll str-chat__message-list-scroll', "data-testid": 'reverse-infinite-scroll', hasNextPage: props.hasMoreNewer, hasPreviousPage: props.hasMore, head: props.head, isLoading: props.loadingMore, loader: React__default["default"].createElement("div", { className: 'str-chat__list__loading', key: 'loading-indicator' }, props.loadingMore && React__default["default"].createElement(LoadingIndicator, { size: 20 })), loadNextPage: loadMoreNewer, loadPreviousPage: loadMore }, props.internalInfiniteScrollProps, { threshold: loadMoreScrollThreshold }),
747
+ React__default["default"].createElement("div", { className: "".concat(messageListClass, " ").concat(threadListClass), onScroll: onScroll, ref: setListElement, tabIndex: 0 }, showEmptyStateIndicator ? (React__default["default"].createElement(EmptyStateIndicator, { key: 'empty-state-indicator', listType: threadList ? 'thread' : 'message' })) : (React__default["default"].createElement(InfiniteScroll, Window.__assign({ className: 'str-chat__reverse-infinite-scroll str-chat__message-list-scroll', "data-testid": 'reverse-infinite-scroll', hasNextPage: props.hasMoreNewer, hasPreviousPage: props.hasMore, head: props.head, isLoading: props.loadingMore, loader: React__default["default"].createElement("div", { className: 'str-chat__list__loading', key: 'loading-indicator' }, props.loadingMore && React__default["default"].createElement(LoadingIndicator, { size: 20 })), loadNextPage: loadMoreNewer, loadPreviousPage: loadMore, threshold: loadMoreScrollThreshold }, restInternalInfiniteScrollProps),
749
748
  React__default["default"].createElement("ul", { className: 'str-chat__ul', ref: setUlElement }, elements),
750
749
  React__default["default"].createElement(TypingIndicator, { threadList: threadList }),
751
750
  React__default["default"].createElement("div", { key: 'bottom' }))))),
@@ -1048,8 +1047,8 @@ var Footer = function () {
1048
1047
  return TypingIndicator ? React__default["default"].createElement(TypingIndicator, { avatarSize: 24 }) : null;
1049
1048
  };
1050
1049
  var messageRenderer = function (virtuosoIndex, _data, virtuosoContext) {
1051
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
1052
- var additionalMessageInputProps = virtuosoContext.additionalMessageInputProps, closeReactionSelectorOnClick = virtuosoContext.closeReactionSelectorOnClick, customMessageActions = virtuosoContext.customMessageActions, customMessageRenderer = virtuosoContext.customMessageRenderer, DateSeparator = virtuosoContext.DateSeparator, firstUnreadMessageId = virtuosoContext.firstUnreadMessageId, lastReadMessageId = virtuosoContext.lastReadMessageId, lastReceivedMessageId = virtuosoContext.lastReceivedMessageId, MessageUIComponent = virtuosoContext.Message, messageActions = virtuosoContext.messageActions, MessageSystem = virtuosoContext.MessageSystem, numItemsPrepended = virtuosoContext.numItemsPrepended, ownMessagesReadByOthers = virtuosoContext.ownMessagesReadByOthers, messageList = virtuosoContext.processedMessages, shouldGroupByUser = virtuosoContext.shouldGroupByUser, sortReactionDetails = virtuosoContext.sortReactionDetails, sortReactions = virtuosoContext.sortReactions, _k = virtuosoContext.unreadMessageCount, unreadMessageCount = _k === void 0 ? 0 : _k, UnreadMessagesSeparator = virtuosoContext.UnreadMessagesSeparator, virtuosoRef = virtuosoContext.virtuosoRef;
1050
+ var _a, _b, _c, _d, _e, _f, _g;
1051
+ var additionalMessageInputProps = virtuosoContext.additionalMessageInputProps, closeReactionSelectorOnClick = virtuosoContext.closeReactionSelectorOnClick, customMessageActions = virtuosoContext.customMessageActions, customMessageRenderer = virtuosoContext.customMessageRenderer, DateSeparator = virtuosoContext.DateSeparator, firstUnreadMessageId = virtuosoContext.firstUnreadMessageId, lastReadMessageId = virtuosoContext.lastReadMessageId, lastReceivedMessageId = virtuosoContext.lastReceivedMessageId, MessageUIComponent = virtuosoContext.Message, messageActions = virtuosoContext.messageActions, MessageSystem = virtuosoContext.MessageSystem, numItemsPrepended = virtuosoContext.numItemsPrepended, ownMessagesReadByOthers = virtuosoContext.ownMessagesReadByOthers, messageList = virtuosoContext.processedMessages, shouldGroupByUser = virtuosoContext.shouldGroupByUser, sortReactionDetails = virtuosoContext.sortReactionDetails, sortReactions = virtuosoContext.sortReactions, _h = virtuosoContext.unreadMessageCount, unreadMessageCount = _h === void 0 ? 0 : _h, UnreadMessagesSeparator = virtuosoContext.UnreadMessagesSeparator, virtuosoRef = virtuosoContext.virtuosoRef;
1053
1052
  var streamMessageIndex = calculateItemIndex(virtuosoIndex, numItemsPrepended);
1054
1053
  if (customMessageRenderer) {
1055
1054
  return customMessageRenderer(messageList, streamMessageIndex);
@@ -1066,13 +1065,18 @@ var messageRenderer = function (virtuosoIndex, _data, virtuosoContext) {
1066
1065
  var groupedByUser = shouldGroupByUser &&
1067
1066
  streamMessageIndex > 0 &&
1068
1067
  ((_a = message.user) === null || _a === void 0 ? void 0 : _a.id) === ((_b = messageList[streamMessageIndex - 1].user) === null || _b === void 0 ? void 0 : _b.id);
1069
- 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);
1070
- 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);
1068
+ var maybePrevMessage = messageList[streamMessageIndex - 1];
1069
+ var maybeNextMessage = messageList[streamMessageIndex + 1];
1070
+ var firstOfGroup = shouldGroupByUser &&
1071
+ (((_c = message.user) === null || _c === void 0 ? void 0 : _c.id) !== ((_d = maybePrevMessage === null || maybePrevMessage === void 0 ? void 0 : maybePrevMessage.user) === null || _d === void 0 ? void 0 : _d.id) ||
1072
+ (maybePrevMessage && Window.isMessageEdited(maybePrevMessage)));
1073
+ var endOfGroup = shouldGroupByUser &&
1074
+ (((_e = message.user) === null || _e === void 0 ? void 0 : _e.id) !== ((_f = maybeNextMessage === null || maybeNextMessage === void 0 ? void 0 : maybeNextMessage.user) === null || _f === void 0 ? void 0 : _f.id) || Window.isMessageEdited(message));
1071
1075
  var isNewestMessage = lastReadMessageId === lastReceivedMessageId;
1072
1076
  var isLastReadMessage = message.id === lastReadMessageId;
1073
1077
  var showUnreadSeparator = isLastReadMessage && !isNewestMessage && (firstUnreadMessageId || unreadMessageCount > 0); // unread count can be 0 if the user marks unread only own messages
1074
1078
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
1075
- React__default["default"].createElement(Window.Message, { additionalMessageInputProps: additionalMessageInputProps, autoscrollToBottom: (_j = virtuosoRef.current) === null || _j === void 0 ? void 0 : _j.autoscrollToBottom, closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: customMessageActions, endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, groupedByUser: groupedByUser, lastReceivedId: lastReceivedMessageId, message: message, Message: MessageUIComponent, messageActions: messageActions, readBy: ownMessagesReadByOthers[message.id] || [], sortReactionDetails: sortReactionDetails, sortReactions: sortReactions }),
1079
+ React__default["default"].createElement(Window.Message, { additionalMessageInputProps: additionalMessageInputProps, autoscrollToBottom: (_g = virtuosoRef.current) === null || _g === void 0 ? void 0 : _g.autoscrollToBottom, closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: customMessageActions, endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, groupedByUser: groupedByUser, lastReceivedId: lastReceivedMessageId, message: message, Message: MessageUIComponent, messageActions: messageActions, readBy: ownMessagesReadByOthers[message.id] || [], sortReactionDetails: sortReactionDetails, sortReactions: sortReactions }),
1076
1080
  showUnreadSeparator && (React__default["default"].createElement("div", { className: 'str-chat__unread-messages-separator-wrapper' },
1077
1081
  React__default["default"].createElement(UnreadMessagesSeparator, { unreadCount: unreadMessageCount })))));
1078
1082
  };
@@ -1306,7 +1310,7 @@ function VirtualizedMessageList(props) {
1306
1310
  return (React__default["default"].createElement(VirtualizedMessageListWithContext, Window.__assign({ channel: channel, channelUnreadUiState: channelUnreadUiState, hasMore: !!hasMore, hasMoreNewer: !!hasMoreNewer, highlightedMessageId: highlightedMessageId, jumpToLatestMessage: jumpToLatestMessage, loadingMore: !!loadingMore, loadingMoreNewer: !!loadingMoreNewer, loadMore: loadMore, loadMoreNewer: loadMoreNewer, messages: messages, notifications: notifications, read: read, suppressAutoscroll: suppressAutoscroll }, props)));
1307
1311
  }
1308
1312
 
1309
- var version = '11.10.0';
1313
+ var version = '11.12.0';
1310
1314
 
1311
1315
  var useChat = function (_a) {
1312
1316
  var _b, _c;
@@ -1525,6 +1529,36 @@ var Chat = function (props) {
1525
1529
  React__default["default"].createElement(Window.TranslationProvider, { value: translators }, children)));
1526
1530
  };
1527
1531
 
1532
+ /**
1533
+ * React hook to create, connect and return `StreamChat` client.
1534
+ */
1535
+ var useCreateChatClient = function (_a) {
1536
+ var apiKey = _a.apiKey, tokenOrProvider = _a.tokenOrProvider, userData = _a.userData;
1537
+ var _b = React.useState(null), chatClient = _b[0], setChatClient = _b[1];
1538
+ var _c = React.useState(userData), cachedUserData = _c[0], setCachedUserData = _c[1];
1539
+ if (userData.id !== cachedUserData.id) {
1540
+ setCachedUserData(userData);
1541
+ }
1542
+ React.useEffect(function () {
1543
+ var client = new streamChat.StreamChat(apiKey);
1544
+ var didUserConnectInterrupt = false;
1545
+ var connectionPromise = client.connectUser(cachedUserData, tokenOrProvider).then(function () {
1546
+ if (!didUserConnectInterrupt)
1547
+ setChatClient(client);
1548
+ });
1549
+ return function () {
1550
+ didUserConnectInterrupt = true;
1551
+ setChatClient(null);
1552
+ connectionPromise
1553
+ .then(function () { return client.disconnectUser(); })
1554
+ .then(function () {
1555
+ console.log("Connection for user \"".concat(cachedUserData.id, "\" has been closed"));
1556
+ });
1557
+ };
1558
+ }, [apiKey, cachedUserData, tokenOrProvider]);
1559
+ return chatClient;
1560
+ };
1561
+
1528
1562
  var CloseIcon = function (_a) {
1529
1563
  var title = _a.title;
1530
1564
  var t = Window.useTranslationContext('CloseIcon').t;
@@ -1654,6 +1688,7 @@ exports.DefaultSuggestionListHeader = Window.DefaultSuggestionListHeader;
1654
1688
  exports.DefaultSuggestionListItem = Window.Item;
1655
1689
  exports.DefaultTriggerProvider = Window.DefaultTriggerProvider;
1656
1690
  exports.DeliveredCheckIcon = Window.DeliveredCheckIcon;
1691
+ exports.DownloadButton = Window.DownloadButton;
1657
1692
  exports.DownloadIcon = Window.DownloadIcon;
1658
1693
  exports.EditMessageForm = Window.EditMessageForm;
1659
1694
  exports.EmojiIconLarge = Window.EmojiIconLarge;
@@ -1665,6 +1700,7 @@ exports.ErrorIcon = Window.ErrorIcon;
1665
1700
  exports.EventComponent = Window.EventComponent;
1666
1701
  exports.FileAttachment = Window.FileAttachment;
1667
1702
  exports.FileContainer = Window.FileContainer;
1703
+ exports.FileSizeIndicator = Window.FileSizeIndicator;
1668
1704
  exports.FileUploadIcon = Window.FileUploadIcon;
1669
1705
  exports.FileUploadIconFlat = Window.FileUploadIconFlat;
1670
1706
  exports.FixedHeightMessage = Window.FixedHeightMessage;
@@ -1721,6 +1757,7 @@ exports.NullComponent = Window.NullComponent;
1721
1757
  exports.PinIcon = Window.PinIcon;
1722
1758
  exports.PinIndicator = Window.PinIndicator;
1723
1759
  exports.PlayButton = Window.PlayButton;
1760
+ exports.PlaybackRateButton = Window.PlaybackRateButton;
1724
1761
  exports.PopperTooltip = Window.PopperTooltip;
1725
1762
  exports.ProgressBar = Window.ProgressBar;
1726
1763
  exports.QuotedMessage = Window.QuotedMessage;
@@ -1764,6 +1801,8 @@ exports.UploadButton = Window.UploadButton;
1764
1801
  exports.UploadIcon = Window.UploadIcon;
1765
1802
  exports.UploadsPreview = Window.UploadsPreview;
1766
1803
  exports.UserItem = Window.UserItem;
1804
+ exports.VoiceRecordingContainer = Window.VoiceRecordingContainer;
1805
+ exports.WaveProgressBar = Window.WaveProgressBar;
1767
1806
  exports.Window = Window.Window;
1768
1807
  exports.areMessagePropsEqual = Window.areMessagePropsEqual;
1769
1808
  exports.areMessageUIPropsEqual = Window.areMessageUIPropsEqual;
@@ -1775,6 +1814,9 @@ exports.defaultReactionOptions = Window.defaultReactionOptions;
1775
1814
  exports.defaultScrollToItem = Window.defaultScrollToItem;
1776
1815
  exports.defaultTimestampFormat = Window.defaultTimestampFormat;
1777
1816
  exports.defaultTranslatorFunction = Window.defaultTranslatorFunction;
1817
+ exports.displayDuration = Window.displayDuration;
1818
+ exports.divMod = Window.divMod;
1819
+ exports.downSample = Window.downSample;
1778
1820
  exports.emojiMarkdownPlugin = Window.emojiMarkdownPlugin;
1779
1821
  exports.enTranslations = Window.enTranslations;
1780
1822
  exports.esTranslations = Window.esTranslations;
@@ -1808,12 +1850,14 @@ exports.isGalleryAttachmentType = Window.isGalleryAttachmentType;
1808
1850
  exports.isLanguageSupported = Window.isLanguageSupported;
1809
1851
  exports.isMediaAttachment = Window.isMediaAttachment;
1810
1852
  exports.isMessageBounced = Window.isMessageBounced;
1853
+ exports.isMessageEdited = Window.isMessageEdited;
1811
1854
  exports.isNumberOrString = Window.isNumberOrString;
1812
1855
  exports.isOnlyEmojis = Window.isOnlyEmojis;
1813
1856
  exports.isScrapedContent = Window.isScrapedContent;
1814
1857
  exports.isSvgAttachment = Window.isSvgAttachment;
1815
1858
  exports.isUploadedImage = Window.isUploadedImage;
1816
1859
  exports.isUserMuted = Window.isUserMuted;
1860
+ exports.isVoiceRecordingAttachment = Window.isVoiceRecordingAttachment;
1817
1861
  exports.itTranslations = Window.itTranslations;
1818
1862
  exports.jaTranslations = Window.jaTranslations;
1819
1863
  exports.keepLineBreaksPlugin = Window.keepLineBreaksPlugin;
@@ -1846,6 +1890,7 @@ exports.renderText = Window.renderText;
1846
1890
  exports.ruTranslations = Window.ruTranslations;
1847
1891
  exports.showMessageActionsBox = Window.showMessageActionsBox;
1848
1892
  exports.trTranslations = Window.trTranslations;
1893
+ exports.upSample = Window.upSample;
1849
1894
  exports.useActionHandler = Window.useActionHandler;
1850
1895
  exports.useChannelActionContext = Window.useChannelActionContext;
1851
1896
  exports.useChannelDeletedListener = Window.useChannelDeletedListener;
@@ -1912,6 +1957,7 @@ exports.VirtualizedMessageList = VirtualizedMessageList;
1912
1957
  exports.darkModeTheme = darkModeTheme;
1913
1958
  exports.defaultRenderMessages = defaultRenderMessages;
1914
1959
  exports.useChat = useChat;
1960
+ exports.useCreateChatClient = useCreateChatClient;
1915
1961
  exports.useCustomStyles = useCustomStyles;
1916
1962
  exports.useEnrichedMessages = useEnrichedMessages;
1917
1963
  exports.useLastReadData = useLastReadData;
@@ -83,7 +83,7 @@
83
83
  /* group styling */
84
84
  &--top,
85
85
  &--single {
86
- padding-top: calc(var(--md-p)/2);
86
+ padding-top: calc(var(--md-p) / 2);
87
87
 
88
88
  .str-chat__message {
89
89
  &-attachment--img,
@@ -176,7 +176,7 @@
176
176
  }
177
177
 
178
178
  &--bottom {
179
- padding-bottom: calc(var(--md-p)/2);
179
+ padding-bottom: calc(var(--md-p) / 2);
180
180
 
181
181
  .str-chat__message {
182
182
  &-attachment--img,
@@ -217,7 +217,7 @@
217
217
  }
218
218
 
219
219
  &--single {
220
- padding-bottom: calc(var(--md-m)/2);
220
+ padding-bottom: calc(var(--md-m) / 2);
221
221
  }
222
222
 
223
223
  &--top,
@@ -233,14 +233,16 @@
233
233
  .str-chat__message {
234
234
  &-text {
235
235
  &-inner {
236
- border-radius: var(--border-radius) var(--border-radius) var(--border-radius) calc(var(--border-radius-sm) / 2);
236
+ border-radius: var(--border-radius) var(--border-radius) var(--border-radius)
237
+ calc(var(--border-radius-sm) / 2);
237
238
  }
238
239
  }
239
240
 
240
241
  &--me {
241
242
  .str-chat__message-text {
242
243
  &-inner {
243
- border-radius: var(--border-radius) var(--border-radius) calc(var(--border-radius-sm) / 2) var(--border-radius);
244
+ border-radius: var(--border-radius) var(--border-radius)
245
+ calc(var(--border-radius-sm) / 2) var(--border-radius);
244
246
  }
245
247
  }
246
248
  }
@@ -251,10 +253,12 @@
251
253
  .str-chat__message {
252
254
  &-text {
253
255
  &-inner {
254
- border-radius: var(--border-radius) var(--border-radius) var(--border-radius) calc(var(--border-radius-sm) / 2);
256
+ border-radius: var(--border-radius) var(--border-radius) var(--border-radius)
257
+ calc(var(--border-radius-sm) / 2);
255
258
 
256
259
  &--has-attachment {
257
- border-radius: calc(var(--border-radius-sm) / 2) var(--border-radius) var(--border-radius) calc(var(--border-radius-sm) / 2);
260
+ border-radius: calc(var(--border-radius-sm) / 2) var(--border-radius)
261
+ var(--border-radius) calc(var(--border-radius-sm) / 2);
258
262
  }
259
263
  }
260
264
  }
@@ -262,10 +266,12 @@
262
266
  &--me {
263
267
  .str-chat__message-text {
264
268
  &-inner {
265
- border-radius: var(--border-radius) var(--border-radius) calc(var(--border-radius-sm) / 2) var(--border-radius);
269
+ border-radius: var(--border-radius) var(--border-radius)
270
+ calc(var(--border-radius-sm) / 2) var(--border-radius);
266
271
 
267
272
  &--has-attachment {
268
- border-radius: var(--border-radius) calc(var(--border-radius-sm) / 2) calc(var(--border-radius-sm) / 2) var(--border-radius);
273
+ border-radius: var(--border-radius) calc(var(--border-radius-sm) / 2)
274
+ calc(var(--border-radius-sm) / 2) var(--border-radius);
269
275
  }
270
276
  }
271
277
  }
@@ -278,14 +284,16 @@
278
284
  .str-chat__message {
279
285
  &-text {
280
286
  &-inner {
281
- border-radius: calc(var(--border-radius-sm) / 2) var(--border-radius) var(--border-radius) calc(var(--border-radius-sm) / 2);
287
+ border-radius: calc(var(--border-radius-sm) / 2) var(--border-radius) var(--border-radius)
288
+ calc(var(--border-radius-sm) / 2);
282
289
  }
283
290
  }
284
291
 
285
292
  &--me {
286
293
  .str-chat__message-text {
287
294
  &-inner {
288
- border-radius: var(--border-radius) calc(var(--border-radius-sm) / 2) calc(var(--border-radius-sm) / 2) var(--border-radius);
295
+ border-radius: var(--border-radius) calc(var(--border-radius-sm) / 2)
296
+ calc(var(--border-radius-sm) / 2) var(--border-radius);
289
297
 
290
298
  &--has-attachment {
291
299
  margin: 0;
@@ -296,7 +304,8 @@
296
304
  .str-chat__message-attachment-card {
297
305
  margin: 0;
298
306
  padding: 0;
299
- border-radius: var(--border-radius) calc(var(--border-radius-sm) / 2) calc(var(--border-radius-sm) / 2) var(--border-radius);
307
+ border-radius: var(--border-radius) calc(var(--border-radius-sm) / 2)
308
+ calc(var(--border-radius-sm) / 2) var(--border-radius);
300
309
  }
301
310
  }
302
311
  }
@@ -741,11 +750,6 @@
741
750
  padding: 3px 0;
742
751
  }
743
752
  }
744
-
745
- &--options.str-chat-angular__message-simple__actions__action--options--editing {
746
- position: relative;
747
- display: flex;
748
- }
749
753
  }
750
754
  }
751
755
 
@@ -135,12 +135,3 @@
135
135
  }
136
136
  }
137
137
  }
138
-
139
- // Used by Angular SDK to display edit message modal
140
- .str-chat__message-edit-in-progress {
141
- .ngxp__container {
142
- transform: initial !important;
143
- will-change: initial !important;
144
- z-index: 2;
145
- }
146
- }
@@ -31,12 +31,19 @@
31
31
  bottom: 0;
32
32
  opacity: 0;
33
33
 
34
- &[aria-hidden="true"] {
34
+ &[aria-hidden='true'] {
35
35
  visibility: hidden;
36
36
  }
37
37
  }
38
38
  }
39
39
  }
40
+
41
+ // New features are not implemented in theme-v1, corresponding HTML code is hidden
42
+ .str-chat__unread-messages-notification,
43
+ .str-chat__unread-messages-separator-wrapper,
44
+ .str-chat__message-bounce-prompt {
45
+ display: none;
46
+ }
40
47
  }
41
48
 
42
49
  .clearfix {
@@ -341,6 +341,71 @@
341
341
  }
342
342
  }
343
343
 
344
+ .str-chat__message-attachment__voice-recording-widget {
345
+ display: grid;
346
+ grid-template-columns: 36px auto 55px;
347
+ align-items: center;
348
+ justify-content: center;
349
+ gap: calc(var(--str-chat__spacing-px) * 14);
350
+ padding: var(--str-chat__spacing-2);
351
+ margin: var(--str-chat__attachment-margin);
352
+
353
+ .str-chat__message-attachment__voice-recording-widget__metadata {
354
+ flex: 1;
355
+ min-width: 0;
356
+ display: flex;
357
+ flex-direction: column;
358
+ gap: var(--str-chat__spacing-2);
359
+
360
+ .str-chat__message-attachment__voice-recording-widget__audio-state {
361
+ display: flex;
362
+ align-items: center;
363
+ justify-content: space-between;
364
+ gap: var(--str-chat__spacing-1_5);
365
+ height: 100%;
366
+ }
367
+ }
368
+
369
+ .str-chat__message-attachment__voice-recording-widget__right-section {
370
+ justify-self: center;
371
+ }
372
+
373
+ .str-chat__message-attachment__voice-recording-widget__timer {
374
+ min-width: calc(var(--str-chat__spacing-px) * 45);
375
+ width: calc(var(--str-chat__spacing-px) * 45);
376
+ }
377
+
378
+ .str-chat__wave-progress-bar__track {
379
+ $min_amplitude_height: 2px;
380
+ position: relative;
381
+ flex: 1;
382
+ width: 120px;
383
+ height: calc(var(--str-chat__spacing-px) * 25);
384
+ display: flex;
385
+ align-items: center;
386
+ gap: var(--str-chat__spacing-px);
387
+
388
+ .str-chat__wave-progress-bar__amplitude-bar {
389
+ width: 2px;
390
+ min-width: 2px;
391
+ height: calc(var(--str-chat__wave-progress-bar__amplitude-bar-height) + $min_amplitude_height); // variable set dynamically on element
392
+ }
393
+
394
+ .str-chat__wave-progress-bar__progress-indicator {
395
+ position: absolute;
396
+ left: 0;
397
+ height: calc(100% + $min_amplitude_height + 2px);
398
+ width: calc(var(--str-chat__spacing-px) * 6);
399
+ }
400
+ }
401
+ }
402
+
403
+ .str-chat__message_attachment__playback-rate-button {
404
+ @include utils.flex-row-center;
405
+ @include utils.button-reset;
406
+ padding: var(--str-chat__spacing-1_5) var(--str-chat__spacing-2_5);
407
+ }
408
+
344
409
  .str-chat__message-attachment-card {
345
410
  min-width: 0;
346
411
  max-width: var(--str-chat__attachment-max-width);
@@ -396,6 +461,12 @@
396
461
  }
397
462
  }
398
463
  }
464
+
465
+ /* Angular has different UI here, the download icon is too small to use on mobile */
466
+ .str-chat-angular__message-attachment-file-single {
467
+ cursor: pointer;
468
+ text-decoration: none;
469
+ }
399
470
  }
400
471
 
401
472
  .str-chat__quoted-message-preview {
@@ -413,6 +484,19 @@
413
484
  }
414
485
  }
415
486
 
487
+ .str-chat__message-attachment__voice-recording-widget {
488
+ display: flex;
489
+ justify-content: space-between;
490
+
491
+ .str-chat__wave-progress-bar__track {
492
+ display: none;
493
+ }
494
+
495
+ .str-chat__message-attachment-audio-widget--play-button {
496
+ display: none;
497
+ }
498
+ }
499
+
416
500
  .str-chat__message-attachment-file--item-download {
417
501
  display: none;
418
502
  }