stream-chat-react 11.0.0 → 11.1.1

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 (348) hide show
  1. package/README.md +1 -1
  2. package/dist/browser.full-bundle.js +1106 -1937
  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 +1 -1
  7. package/dist/components/Attachment/Attachment.d.ts.map +1 -1
  8. package/dist/components/Attachment/AttachmentActions.d.ts +1 -1
  9. package/dist/components/Attachment/AttachmentActions.d.ts.map +1 -1
  10. package/dist/components/Attachment/Audio.d.ts +3 -3
  11. package/dist/components/Attachment/Audio.d.ts.map +1 -1
  12. package/dist/components/Attachment/Audio.js +1 -1
  13. package/dist/components/Attachment/Card.d.ts +1 -1
  14. package/dist/components/Attachment/Card.d.ts.map +1 -1
  15. package/dist/components/Attachment/DownloadButton.d.ts +1 -1
  16. package/dist/components/Attachment/DownloadButton.d.ts.map +1 -1
  17. package/dist/components/Attachment/FileAttachment.d.ts +1 -1
  18. package/dist/components/Attachment/FileAttachment.d.ts.map +1 -1
  19. package/dist/components/Attachment/FileSizeIndicator.d.ts +1 -1
  20. package/dist/components/Attachment/FileSizeIndicator.d.ts.map +1 -1
  21. package/dist/components/Attachment/UnsupportedAttachment.d.ts +1 -1
  22. package/dist/components/Attachment/UnsupportedAttachment.d.ts.map +1 -1
  23. package/dist/components/Attachment/utils.d.ts +6 -6
  24. package/dist/components/Attachment/utils.d.ts.map +1 -1
  25. package/dist/components/AutoCompleteTextarea/Header.d.ts +2 -2
  26. package/dist/components/AutoCompleteTextarea/Header.d.ts.map +1 -1
  27. package/dist/components/Avatar/Avatar.d.ts +1 -1
  28. package/dist/components/Avatar/Avatar.d.ts.map +1 -1
  29. package/dist/components/Channel/Channel.d.ts +5 -3
  30. package/dist/components/Channel/Channel.d.ts.map +1 -1
  31. package/dist/components/Channel/Channel.js +1 -0
  32. package/dist/components/Channel/channelState.d.ts +2 -2
  33. package/dist/components/Channel/channelState.d.ts.map +1 -1
  34. package/dist/components/Channel/hooks/useEditMessageHandler.d.ts +1 -1
  35. package/dist/components/Channel/hooks/useEditMessageHandler.d.ts.map +1 -1
  36. package/dist/components/Channel/hooks/useMentionsHandlers.d.ts +1 -1
  37. package/dist/components/Channel/hooks/useMentionsHandlers.d.ts.map +1 -1
  38. package/dist/components/ChannelHeader/ChannelHeader.d.ts +1 -1
  39. package/dist/components/ChannelHeader/ChannelHeader.d.ts.map +1 -1
  40. package/dist/components/ChannelList/ChannelList.d.ts +1 -1
  41. package/dist/components/ChannelList/ChannelList.d.ts.map +1 -1
  42. package/dist/components/ChannelList/ChannelList.js +2 -1
  43. package/dist/components/ChannelList/ChannelListMessenger.d.ts +1 -1
  44. package/dist/components/ChannelList/ChannelListMessenger.d.ts.map +1 -1
  45. package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
  46. package/dist/components/ChannelList/hooks/usePaginatedChannels.js +2 -2
  47. package/dist/components/ChannelList/utils.d.ts +1 -1
  48. package/dist/components/ChannelList/utils.d.ts.map +1 -1
  49. package/dist/components/ChannelPreview/ChannelPreview.d.ts +2 -2
  50. package/dist/components/ChannelPreview/ChannelPreview.d.ts.map +1 -1
  51. package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.d.ts +1 -1
  52. package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.d.ts.map +1 -1
  53. package/dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.d.ts +1 -1
  54. package/dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.d.ts.map +1 -1
  55. package/dist/components/ChannelSearch/ChannelSearch.d.ts +2 -2
  56. package/dist/components/ChannelSearch/ChannelSearch.d.ts.map +1 -1
  57. package/dist/components/ChannelSearch/SearchBar.d.ts +4 -4
  58. package/dist/components/ChannelSearch/SearchBar.d.ts.map +1 -1
  59. package/dist/components/ChannelSearch/SearchInput.d.ts +3 -3
  60. package/dist/components/ChannelSearch/SearchInput.d.ts.map +1 -1
  61. package/dist/components/ChannelSearch/SearchResults.d.ts +6 -6
  62. package/dist/components/ChannelSearch/SearchResults.d.ts.map +1 -1
  63. package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts +5 -5
  64. package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts.map +1 -1
  65. package/dist/components/ChannelSearch/utils.d.ts +1 -1
  66. package/dist/components/ChannelSearch/utils.d.ts.map +1 -1
  67. package/dist/components/Chat/Chat.d.ts +2 -2
  68. package/dist/components/Chat/Chat.d.ts.map +1 -1
  69. package/dist/components/Chat/Chat.js +1 -3
  70. package/dist/components/Chat/hooks/useChannelsQueryState.d.ts +1 -1
  71. package/dist/components/Chat/hooks/useChannelsQueryState.d.ts.map +1 -1
  72. package/dist/components/Chat/hooks/useChat.d.ts +1 -3
  73. package/dist/components/Chat/hooks/useChat.d.ts.map +1 -1
  74. package/dist/components/Chat/hooks/useChat.js +4 -7
  75. package/dist/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
  76. package/dist/components/Chat/hooks/useCreateChatContext.js +1 -5
  77. package/dist/components/Chat/hooks/useCustomStyles.d.ts +2 -2
  78. package/dist/components/Chat/hooks/useCustomStyles.d.ts.map +1 -1
  79. package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts +6 -6
  80. package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts.map +1 -1
  81. package/dist/components/ChatDown/ChatDown.d.ts +1 -1
  82. package/dist/components/ChatDown/ChatDown.d.ts.map +1 -1
  83. package/dist/components/CommandItem/CommandItem.d.ts +1 -1
  84. package/dist/components/CommandItem/CommandItem.d.ts.map +1 -1
  85. package/dist/components/DateSeparator/DateSeparator.d.ts +1 -1
  86. package/dist/components/DateSeparator/DateSeparator.d.ts.map +1 -1
  87. package/dist/components/Emojis/EmojiPicker.d.ts +1 -1
  88. package/dist/components/Emojis/EmojiPicker.d.ts.map +1 -1
  89. package/dist/components/Emojis/index.cjs.js +1 -1
  90. package/dist/components/EmoticonItem/EmoticonItem.d.ts +1 -1
  91. package/dist/components/EmoticonItem/EmoticonItem.d.ts.map +1 -1
  92. package/dist/components/EmptyStateIndicator/EmptyStateIndicator.d.ts +1 -1
  93. package/dist/components/EmptyStateIndicator/EmptyStateIndicator.d.ts.map +1 -1
  94. package/dist/components/EventComponent/EventComponent.d.ts +1 -1
  95. package/dist/components/EventComponent/EventComponent.d.ts.map +1 -1
  96. package/dist/components/Gallery/BaseImage.d.ts +6 -0
  97. package/dist/components/Gallery/BaseImage.d.ts.map +1 -0
  98. package/dist/components/Gallery/BaseImage.js +20 -0
  99. package/dist/components/Gallery/Gallery.d.ts +1 -1
  100. package/dist/components/Gallery/Gallery.d.ts.map +1 -1
  101. package/dist/components/Gallery/Gallery.js +4 -2
  102. package/dist/components/Gallery/Image.d.ts +1 -1
  103. package/dist/components/Gallery/Image.d.ts.map +1 -1
  104. package/dist/components/Gallery/Image.js +3 -2
  105. package/dist/components/Gallery/ModalGallery.d.ts +1 -1
  106. package/dist/components/Gallery/ModalGallery.d.ts.map +1 -1
  107. package/dist/components/Gallery/ModalGallery.js +3 -1
  108. package/dist/components/Gallery/index.d.ts +1 -0
  109. package/dist/components/Gallery/index.d.ts.map +1 -1
  110. package/dist/components/Gallery/index.js +1 -0
  111. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts +1 -1
  112. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts.map +1 -1
  113. package/dist/components/LoadMore/LoadMoreButton.d.ts +1 -1
  114. package/dist/components/LoadMore/LoadMoreButton.d.ts.map +1 -1
  115. package/dist/components/LoadMore/LoadMorePaginator.d.ts +1 -1
  116. package/dist/components/LoadMore/LoadMorePaginator.d.ts.map +1 -1
  117. package/dist/components/Loading/LoadingErrorIndicator.d.ts +1 -1
  118. package/dist/components/Loading/LoadingErrorIndicator.d.ts.map +1 -1
  119. package/dist/components/Loading/LoadingIndicator.d.ts +1 -1
  120. package/dist/components/Loading/LoadingIndicator.d.ts.map +1 -1
  121. package/dist/components/MML/MML.d.ts +1 -1
  122. package/dist/components/MML/MML.d.ts.map +1 -1
  123. package/dist/components/Message/FixedHeightMessage.d.ts +1 -1
  124. package/dist/components/Message/FixedHeightMessage.d.ts.map +1 -1
  125. package/dist/components/Message/MessageDeleted.d.ts +1 -1
  126. package/dist/components/Message/MessageDeleted.d.ts.map +1 -1
  127. package/dist/components/Message/MessageOptions.d.ts +1 -1
  128. package/dist/components/Message/MessageOptions.d.ts.map +1 -1
  129. package/dist/components/Message/MessageRepliesCountButton.d.ts +1 -1
  130. package/dist/components/Message/MessageRepliesCountButton.d.ts.map +1 -1
  131. package/dist/components/Message/MessageStatus.d.ts +1 -1
  132. package/dist/components/Message/MessageStatus.d.ts.map +1 -1
  133. package/dist/components/Message/MessageText.d.ts +1 -1
  134. package/dist/components/Message/MessageText.d.ts.map +1 -1
  135. package/dist/components/Message/MessageTimestamp.d.ts +1 -1
  136. package/dist/components/Message/MessageTimestamp.d.ts.map +1 -1
  137. package/dist/components/Message/hooks/useActionHandler.d.ts +2 -2
  138. package/dist/components/Message/hooks/useActionHandler.d.ts.map +1 -1
  139. package/dist/components/Message/hooks/useDeleteHandler.d.ts +1 -1
  140. package/dist/components/Message/hooks/useDeleteHandler.d.ts.map +1 -1
  141. package/dist/components/Message/hooks/useEditHandler.d.ts +1 -1
  142. package/dist/components/Message/hooks/useEditHandler.d.ts.map +1 -1
  143. package/dist/components/Message/hooks/useFlagHandler.d.ts +1 -1
  144. package/dist/components/Message/hooks/useFlagHandler.d.ts.map +1 -1
  145. package/dist/components/Message/hooks/useMentionsHandler.d.ts +2 -2
  146. package/dist/components/Message/hooks/useMentionsHandler.d.ts.map +1 -1
  147. package/dist/components/Message/hooks/useMuteHandler.d.ts +1 -1
  148. package/dist/components/Message/hooks/useMuteHandler.d.ts.map +1 -1
  149. package/dist/components/Message/hooks/usePinHandler.d.ts +3 -3
  150. package/dist/components/Message/hooks/usePinHandler.d.ts.map +1 -1
  151. package/dist/components/Message/hooks/useUserHandler.d.ts +1 -1
  152. package/dist/components/Message/hooks/useUserHandler.d.ts.map +1 -1
  153. package/dist/components/Message/renderText/componentRenderers/Mention.d.ts +1 -1
  154. package/dist/components/Message/renderText/componentRenderers/Mention.d.ts.map +1 -1
  155. package/dist/components/Message/renderText/regex.d.ts +1 -1
  156. package/dist/components/Message/renderText/regex.d.ts.map +1 -1
  157. package/dist/components/Message/renderText/renderText.d.ts +2 -2
  158. package/dist/components/Message/renderText/renderText.d.ts.map +1 -1
  159. package/dist/components/Message/renderText/types.d.ts +1 -1
  160. package/dist/components/Message/renderText/types.d.ts.map +1 -1
  161. package/dist/components/Message/types.d.ts +4 -4
  162. package/dist/components/Message/types.d.ts.map +1 -1
  163. package/dist/components/Message/utils.d.ts +2 -2
  164. package/dist/components/Message/utils.d.ts.map +1 -1
  165. package/dist/components/MessageActions/MessageActions.d.ts +3 -3
  166. package/dist/components/MessageActions/MessageActions.d.ts.map +1 -1
  167. package/dist/components/MessageActions/MessageActionsBox.d.ts +3 -3
  168. package/dist/components/MessageActions/MessageActionsBox.d.ts.map +1 -1
  169. package/dist/components/MessageInput/AttachmentPreviewList.d.ts +5 -0
  170. package/dist/components/MessageInput/AttachmentPreviewList.d.ts.map +1 -1
  171. package/dist/components/MessageInput/AttachmentPreviewList.js +16 -10
  172. package/dist/components/MessageInput/CooldownTimer.d.ts +1 -1
  173. package/dist/components/MessageInput/CooldownTimer.d.ts.map +1 -1
  174. package/dist/components/MessageInput/DefaultTriggerProvider.d.ts +6 -6
  175. package/dist/components/MessageInput/DefaultTriggerProvider.d.ts.map +1 -1
  176. package/dist/components/MessageInput/LinkPreviewList.d.ts +1 -1
  177. package/dist/components/MessageInput/LinkPreviewList.d.ts.map +1 -1
  178. package/dist/components/MessageInput/MessageInput.d.ts +2 -2
  179. package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
  180. package/dist/components/MessageInput/QuotedMessagePreview.d.ts +1 -1
  181. package/dist/components/MessageInput/QuotedMessagePreview.d.ts.map +1 -1
  182. package/dist/components/MessageInput/hooks/useCooldownTimer.d.ts +1 -1
  183. package/dist/components/MessageInput/hooks/useCooldownTimer.d.ts.map +1 -1
  184. package/dist/components/MessageInput/hooks/useLinkPreviews.d.ts +3 -3
  185. package/dist/components/MessageInput/hooks/useLinkPreviews.d.ts.map +1 -1
  186. package/dist/components/MessageInput/hooks/useMessageInputState.d.ts +13 -13
  187. package/dist/components/MessageInput/hooks/useMessageInputState.d.ts.map +1 -1
  188. package/dist/components/MessageInput/hooks/useUserTrigger.d.ts +1 -1
  189. package/dist/components/MessageInput/hooks/useUserTrigger.d.ts.map +1 -1
  190. package/dist/components/MessageInput/hooks/utils.d.ts +2 -2
  191. package/dist/components/MessageInput/hooks/utils.d.ts.map +1 -1
  192. package/dist/components/MessageInput/icons.d.ts +1 -1
  193. package/dist/components/MessageInput/icons.d.ts.map +1 -1
  194. package/dist/components/MessageInput/index.d.ts +1 -1
  195. package/dist/components/MessageInput/index.d.ts.map +1 -1
  196. package/dist/components/MessageInput/index.js +1 -1
  197. package/dist/components/MessageInput/types.d.ts +6 -6
  198. package/dist/components/MessageInput/types.d.ts.map +1 -1
  199. package/dist/components/MessageList/CustomNotification.d.ts +1 -1
  200. package/dist/components/MessageList/CustomNotification.d.ts.map +1 -1
  201. package/dist/components/MessageList/GiphyPreviewMessage.d.ts +1 -1
  202. package/dist/components/MessageList/GiphyPreviewMessage.d.ts.map +1 -1
  203. package/dist/components/MessageList/MessageList.d.ts +2 -2
  204. package/dist/components/MessageList/MessageList.d.ts.map +1 -1
  205. package/dist/components/MessageList/MessageListNotifications.d.ts +1 -1
  206. package/dist/components/MessageList/MessageListNotifications.d.ts.map +1 -1
  207. package/dist/components/MessageList/MessageNotification.d.ts +1 -1
  208. package/dist/components/MessageList/MessageNotification.d.ts.map +1 -1
  209. package/dist/components/MessageList/VirtualizedMessageList.d.ts +4 -4
  210. package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
  211. package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts +1 -1
  212. package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -1
  213. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts +2 -2
  214. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts.map +1 -1
  215. package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.d.ts +2 -2
  216. package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.d.ts.map +1 -1
  217. package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts +1 -1
  218. package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts.map +1 -1
  219. package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.d.ts +1 -1
  220. package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.d.ts.map +1 -1
  221. package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.d.ts.map +1 -1
  222. package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.js +31 -32
  223. package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts +1 -1
  224. package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts.map +1 -1
  225. package/dist/components/MessageList/hooks/useLastReadData.d.ts +1 -1
  226. package/dist/components/MessageList/hooks/useLastReadData.d.ts.map +1 -1
  227. package/dist/components/MessageList/utils.d.ts +2 -2
  228. package/dist/components/MessageList/utils.d.ts.map +1 -1
  229. package/dist/components/Modal/Modal.d.ts +1 -1
  230. package/dist/components/Modal/Modal.d.ts.map +1 -1
  231. package/dist/components/ReactFileUtilities/FileIcon/FileIcon.d.ts +1 -1
  232. package/dist/components/ReactFileUtilities/FileIcon/FileIcon.d.ts.map +1 -1
  233. package/dist/components/ReactFileUtilities/FileIcon/FileIconSet/v1.d.ts +1 -1
  234. package/dist/components/ReactFileUtilities/FileIcon/FileIconSet/v1.d.ts.map +1 -1
  235. package/dist/components/ReactFileUtilities/FileIcon/FileIconSet/v2.d.ts +2 -2
  236. package/dist/components/ReactFileUtilities/FileIcon/FileIconSet/v2.d.ts.map +1 -1
  237. package/dist/components/ReactFileUtilities/FileIcon/iconMap.d.ts +4 -4
  238. package/dist/components/ReactFileUtilities/FileIcon/iconMap.d.ts.map +1 -1
  239. package/dist/components/ReactFileUtilities/FileIcon/mimeTypes.d.ts +2 -2
  240. package/dist/components/ReactFileUtilities/FileIcon/mimeTypes.d.ts.map +1 -1
  241. package/dist/components/ReactFileUtilities/FilePreviewer.d.ts +1 -1
  242. package/dist/components/ReactFileUtilities/FilePreviewer.d.ts.map +1 -1
  243. package/dist/components/ReactFileUtilities/FileUploadButton.d.ts +1 -1
  244. package/dist/components/ReactFileUtilities/FileUploadButton.d.ts.map +1 -1
  245. package/dist/components/ReactFileUtilities/IconButton.d.ts +1 -1
  246. package/dist/components/ReactFileUtilities/IconButton.d.ts.map +1 -1
  247. package/dist/components/ReactFileUtilities/ImageDropzone.d.ts +1 -1
  248. package/dist/components/ReactFileUtilities/ImageDropzone.d.ts.map +1 -1
  249. package/dist/components/ReactFileUtilities/ImagePreviewer.d.ts +2 -2
  250. package/dist/components/ReactFileUtilities/ImagePreviewer.d.ts.map +1 -1
  251. package/dist/components/ReactFileUtilities/ImageUploadButton.d.ts +1 -1
  252. package/dist/components/ReactFileUtilities/ImageUploadButton.d.ts.map +1 -1
  253. package/dist/components/ReactFileUtilities/LoadingIndicator.d.ts +1 -1
  254. package/dist/components/ReactFileUtilities/LoadingIndicator.d.ts.map +1 -1
  255. package/dist/components/ReactFileUtilities/Thumbnail.d.ts +1 -1
  256. package/dist/components/ReactFileUtilities/Thumbnail.d.ts.map +1 -1
  257. package/dist/components/ReactFileUtilities/ThumbnailPlaceholder.d.ts +1 -1
  258. package/dist/components/ReactFileUtilities/ThumbnailPlaceholder.d.ts.map +1 -1
  259. package/dist/components/ReactFileUtilities/UploadButton.d.ts +1 -1
  260. package/dist/components/ReactFileUtilities/UploadButton.d.ts.map +1 -1
  261. package/dist/components/ReactFileUtilities/types.d.ts +5 -5
  262. package/dist/components/ReactFileUtilities/types.d.ts.map +1 -1
  263. package/dist/components/Reactions/ReactionSelector.d.ts +1 -1
  264. package/dist/components/Reactions/ReactionSelector.d.ts.map +1 -1
  265. package/dist/components/Reactions/ReactionsList.d.ts +1 -1
  266. package/dist/components/Reactions/ReactionsList.d.ts.map +1 -1
  267. package/dist/components/Reactions/SimpleReactionsList.d.ts +1 -1
  268. package/dist/components/Reactions/SimpleReactionsList.d.ts.map +1 -1
  269. package/dist/components/Reactions/SpriteImage.d.ts +1 -1
  270. package/dist/components/Reactions/SpriteImage.d.ts.map +1 -1
  271. package/dist/components/Reactions/StreamEmoji.d.ts +1 -1
  272. package/dist/components/Reactions/StreamEmoji.d.ts.map +1 -1
  273. package/dist/components/Reactions/hooks/useProcessReactions.d.ts +2 -2
  274. package/dist/components/Reactions/hooks/useProcessReactions.d.ts.map +1 -1
  275. package/dist/components/Reactions/reactionOptions.d.ts +1 -1
  276. package/dist/components/Reactions/reactionOptions.d.ts.map +1 -1
  277. package/dist/components/SafeAnchor/SafeAnchor.d.ts +1 -1
  278. package/dist/components/SafeAnchor/SafeAnchor.d.ts.map +1 -1
  279. package/dist/components/Thread/Thread.d.ts +1 -1
  280. package/dist/components/Thread/Thread.d.ts.map +1 -1
  281. package/dist/components/Thread/ThreadHeader.d.ts +1 -1
  282. package/dist/components/Thread/ThreadHeader.d.ts.map +1 -1
  283. package/dist/components/Tooltip/Tooltip.d.ts +1 -1
  284. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  285. package/dist/components/TypingIndicator/TypingIndicator.d.ts +1 -1
  286. package/dist/components/TypingIndicator/TypingIndicator.d.ts.map +1 -1
  287. package/dist/components/UserItem/UserItem.d.ts +1 -1
  288. package/dist/components/UserItem/UserItem.d.ts.map +1 -1
  289. package/dist/components/Window/Window.d.ts +1 -1
  290. package/dist/components/Window/Window.d.ts.map +1 -1
  291. package/dist/context/ChannelActionContext.d.ts +4 -4
  292. package/dist/context/ChannelActionContext.d.ts.map +1 -1
  293. package/dist/context/ChannelListContext.d.ts +23 -0
  294. package/dist/context/ChannelListContext.d.ts.map +1 -0
  295. package/dist/context/ChannelListContext.js +17 -0
  296. package/dist/context/ChannelStateContext.d.ts +5 -5
  297. package/dist/context/ChannelStateContext.d.ts.map +1 -1
  298. package/dist/context/ChatContext.d.ts +7 -16
  299. package/dist/context/ChatContext.d.ts.map +1 -1
  300. package/dist/context/ComponentContext.d.ts +3 -2
  301. package/dist/context/ComponentContext.d.ts.map +1 -1
  302. package/dist/context/MessageContext.d.ts +2 -2
  303. package/dist/context/MessageContext.d.ts.map +1 -1
  304. package/dist/context/MessageInputContext.d.ts +1 -1
  305. package/dist/context/MessageInputContext.d.ts.map +1 -1
  306. package/dist/context/MessageListContext.d.ts +1 -1
  307. package/dist/context/MessageListContext.d.ts.map +1 -1
  308. package/dist/context/TranslationContext.d.ts +5 -5
  309. package/dist/context/TranslationContext.d.ts.map +1 -1
  310. package/dist/context/TypingContext.d.ts +1 -1
  311. package/dist/context/TypingContext.d.ts.map +1 -1
  312. package/dist/context/index.d.ts +1 -0
  313. package/dist/context/index.d.ts.map +1 -1
  314. package/dist/context/index.js +1 -0
  315. package/dist/css/v2/index.css +1 -1
  316. package/dist/css/v2/index.layout.css +1 -1
  317. package/dist/i18n/Streami18n.d.ts +4 -3
  318. package/dist/i18n/Streami18n.d.ts.map +1 -1
  319. package/dist/i18n/de.json +1 -0
  320. package/dist/i18n/en.json +1 -0
  321. package/dist/i18n/es.json +1 -0
  322. package/dist/i18n/fr.json +1 -0
  323. package/dist/i18n/hi.json +1 -0
  324. package/dist/i18n/it.json +1 -0
  325. package/dist/i18n/ja.json +1 -0
  326. package/dist/i18n/ko.json +1 -0
  327. package/dist/i18n/nl.json +1 -0
  328. package/dist/i18n/pt.json +1 -0
  329. package/dist/i18n/ru.json +1 -0
  330. package/dist/i18n/tr.json +1 -0
  331. package/dist/{icons-427fd8d5.js → icons-a35a8ee7.js} +32 -12
  332. package/dist/index.cjs.js +602 -617
  333. package/dist/scss/v2/AttachmentList/AttachmentList-theme.scss +3 -3
  334. package/dist/scss/v2/AttachmentPreviewList/AttachmentPreviewList-layout.scss +4 -0
  335. package/dist/scss/v2/BaseImage/BaseImage-layout.scss +21 -0
  336. package/dist/scss/v2/BaseImage/BaseImage-theme.scss +35 -0
  337. package/dist/scss/v2/BaseImage/index.scss +2 -0
  338. package/dist/scss/v2/_icons.scss +3 -0
  339. package/dist/scss/v2/_utils.scss +12 -0
  340. package/dist/scss/v2/index.layout.scss +2 -0
  341. package/dist/scss/v2/index.scss +1 -0
  342. package/dist/types/types.d.ts +20 -20
  343. package/dist/types/types.d.ts.map +1 -1
  344. package/dist/utils/getChannel.d.ts +1 -1
  345. package/dist/utils/getChannel.d.ts.map +1 -1
  346. package/dist/version.d.ts +1 -1
  347. package/dist/version.js +1 -1
  348. package/package.json +7 -13
package/dist/index.cjs.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var icons = require('./icons-427fd8d5.js');
5
+ var icons = require('./icons-a35a8ee7.js');
6
6
  var React = require('react');
7
7
  var ReactPlayer = require('react-player');
8
8
  var prettybytes = require('pretty-bytes');
@@ -10,21 +10,10 @@ var sanitizeUrl = require('@braintree/sanitize-url');
10
10
  var ImageGallery = require('react-image-gallery');
11
11
  var PropTypes = require('prop-types');
12
12
  var linkify = require('linkifyjs');
13
- var _defineProperty$2 = require('@babel/runtime/helpers/defineProperty');
14
- var _slicedToArray$2 = require('@babel/runtime/helpers/slicedToArray');
15
13
  var emojiRegex = require('emoji-regex');
16
14
  var uniqBy = require('lodash.uniqby');
17
- var _objectWithoutProperties$1 = require('@babel/runtime/helpers/objectWithoutProperties');
18
15
  var _extends = require('@babel/runtime/helpers/extends');
19
- var _typeof = require('@babel/runtime/helpers/typeof');
20
- var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
21
- var _classCallCheck = require('@babel/runtime/helpers/classCallCheck');
22
- var _createClass = require('@babel/runtime/helpers/createClass');
23
- var _assertThisInitialized = require('@babel/runtime/helpers/assertThisInitialized');
24
- var _inherits = require('@babel/runtime/helpers/inherits');
25
- var _possibleConstructorReturn = require('@babel/runtime/helpers/possibleConstructorReturn');
26
- var _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');
27
- var _regeneratorRuntime = require('@babel/runtime/regenerator');
16
+ var _defineProperty$2 = require('@babel/runtime/helpers/defineProperty');
28
17
  var Textarea = require('react-textarea-autosize');
29
18
  var getCaretCoordinates = require('textarea-caret');
30
19
  var reactIs = require('react-is');
@@ -84,21 +73,10 @@ var prettybytes__default = /*#__PURE__*/_interopDefaultLegacy(prettybytes);
84
73
  var ImageGallery__default = /*#__PURE__*/_interopDefaultLegacy(ImageGallery);
85
74
  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
86
75
  var linkify__namespace = /*#__PURE__*/_interopNamespace(linkify);
87
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty$2);
88
- var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray$2);
89
76
  var emojiRegex__default = /*#__PURE__*/_interopDefaultLegacy(emojiRegex);
90
77
  var uniqBy__default = /*#__PURE__*/_interopDefaultLegacy(uniqBy);
91
- var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties$1);
92
78
  var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
93
- var _typeof__default = /*#__PURE__*/_interopDefaultLegacy(_typeof);
94
- var _asyncToGenerator__default = /*#__PURE__*/_interopDefaultLegacy(_asyncToGenerator);
95
- var _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);
96
- var _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);
97
- var _assertThisInitialized__default = /*#__PURE__*/_interopDefaultLegacy(_assertThisInitialized);
98
- var _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);
99
- var _possibleConstructorReturn__default = /*#__PURE__*/_interopDefaultLegacy(_possibleConstructorReturn);
100
- var _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeOf);
101
- var _regeneratorRuntime__default = /*#__PURE__*/_interopDefaultLegacy(_regeneratorRuntime);
79
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty$2);
102
80
  var Textarea__default = /*#__PURE__*/_interopDefaultLegacy(Textarea);
103
81
  var getCaretCoordinates__default = /*#__PURE__*/_interopDefaultLegacy(getCaretCoordinates);
104
82
  var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
@@ -227,7 +205,7 @@ var PlayButton = function (_a) {
227
205
  var ProgressBar = function (_a) {
228
206
  var onClick = _a.onClick, progress = _a.progress;
229
207
  return (React__default["default"].createElement("div", { className: 'str-chat__message-attachment-audio-widget--progress-track', "data-progress": progress, "data-testid": 'audio-progress', onClick: onClick, role: 'progressbar', style: {
230
- background: "linear-gradient(\n\t\t to right, \n\t\t var(--str-chat__primary-color),\n\t\t var(--str-chat__primary-color) ".concat(progress, "%,\n\t\t var(--str-chat__disabled-color) ").concat(progress, "%,\n\t\t var(--str-chat__disabled-color)\n\t )"),
208
+ background: "linear-gradient(\n\t\t to right,\n\t\t var(--str-chat__primary-color),\n\t\t var(--str-chat__primary-color) ".concat(progress, "%,\n\t\t var(--str-chat__disabled-color) ").concat(progress, "%,\n\t\t var(--str-chat__disabled-color)\n\t )"),
231
209
  } },
232
210
  React__default["default"].createElement("div", { className: 'str-chat__message-attachment-audio-widget--progress-slider', style: { left: "".concat(progress, "px") } })));
233
211
  };
@@ -261,6 +239,23 @@ var UnMemoizedAudio = function (props) {
261
239
  */
262
240
  var Audio = React__default["default"].memo(UnMemoizedAudio);
263
241
 
242
+ var BaseImage = React.forwardRef(function BaseImage(_a, ref) {
243
+ var props = icons.__rest(_a, []);
244
+ var propsClassName = props.className, propsOnError = props.onError;
245
+ var _b = React.useState(false), error = _b[0], setError = _b[1];
246
+ React.useEffect(function () { return function () {
247
+ setError(false);
248
+ }; }, [props.src]);
249
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
250
+ React__default["default"].createElement("img", icons.__assign({ "data-testid": 'str-chat__base-image' }, props, { className: clsx(propsClassName, 'str-chat__base-image', {
251
+ 'str-chat__base-image--load-failed': error,
252
+ }), onError: function (e) {
253
+ setError(true);
254
+ propsOnError === null || propsOnError === void 0 ? void 0 : propsOnError(e);
255
+ }, ref: ref })),
256
+ error && React__default["default"].createElement(DownloadButton, { assetUrl: props.src })));
257
+ });
258
+
264
259
  var CloseIconRound = function () { return (React__default["default"].createElement("svg", { "data-testid": 'close-icon-round', fill: 'none', height: '28', viewBox: '0 0 28 28', width: '28', xmlns: 'http://www.w3.org/2000/svg' },
265
260
  React__default["default"].createElement("rect", { fill: '#72767E', height: '28', rx: '14', width: '28' }),
266
261
  React__default["default"].createElement("circle", { cx: '14', cy: '14', fill: '#72767E', r: '12' }),
@@ -303,12 +298,13 @@ var Modal = function (_a) {
303
298
 
304
299
  var ModalGallery = function (props) {
305
300
  var images = props.images, index = props.index;
301
+ var t = icons.useTranslationContext('ModalGallery').t;
306
302
  var formattedArray = React.useMemo(function () {
307
303
  return images.map(function (image) {
308
304
  var imageSrc = image.image_url || image.thumb_url || '';
309
305
  return {
310
306
  original: imageSrc,
311
- originalAlt: 'User uploaded content',
307
+ originalAlt: t('User uploaded content'),
312
308
  source: imageSrc,
313
309
  };
314
310
  });
@@ -320,8 +316,9 @@ var UnMemoizedGallery = function (props) {
320
316
  var images = props.images, innerRefs = props.innerRefs;
321
317
  var _a = React.useState(0), index = _a[0], setIndex = _a[1];
322
318
  var _b = React.useState(false), modalOpen = _b[0], setModalOpen = _b[1];
323
- var _c = icons.useComponentContext('Gallery').ModalGallery, ModalGallery$1 = _c === void 0 ? ModalGallery : _c;
319
+ var _c = icons.useComponentContext('Gallery'), _d = _c.BaseImage, BaseImage$1 = _d === void 0 ? BaseImage : _d, _e = _c.ModalGallery, ModalGallery$1 = _e === void 0 ? ModalGallery : _e;
324
320
  var t = icons.useTranslationContext('Gallery').t;
321
+ var imageFallbackTitle = t('User uploaded content');
325
322
  var countImagesDisplayedInPreview = 4;
326
323
  var lastImageIndexInPreview = countImagesDisplayedInPreview - 1;
327
324
  var toggleModal = function (selectedIndex) {
@@ -340,7 +337,7 @@ var UnMemoizedGallery = function (props) {
340
337
  React__default["default"].createElement("p", null, t('{{ imageCount }} more', {
341
338
  imageCount: images.length - countImagesDisplayedInPreview,
342
339
  })))) : (React__default["default"].createElement("button", { className: 'str-chat__gallery-image', "data-testid": 'gallery-image', key: "gallery-image-".concat(i), onClick: function () { return toggleModal(i); } },
343
- React__default["default"].createElement("img", icons.__assign({ alt: 'User uploaded content', src: sanitizeUrl.sanitizeUrl(image.previewUrl || image.image_url || image.thumb_url), style: image.style }, ((innerRefs === null || innerRefs === void 0 ? void 0 : innerRefs.current) && { ref: function (r) { return (innerRefs.current[i] = r); } })))));
340
+ React__default["default"].createElement(BaseImage$1, icons.__assign({ alt: (image === null || image === void 0 ? void 0 : image.fallback) || imageFallbackTitle, src: sanitizeUrl.sanitizeUrl(image.previewUrl || image.image_url || image.thumb_url), style: image.style, title: (image === null || image === void 0 ? void 0 : image.fallback) || imageFallbackTitle }, ((innerRefs === null || innerRefs === void 0 ? void 0 : innerRefs.current) && { ref: function (r) { return (innerRefs.current[i] = r); } })))));
344
341
  });
345
342
  var className = clsx('str-chat__gallery', {
346
343
  'str-chat__gallery--square': images.length > lastImageIndexInPreview,
@@ -362,11 +359,11 @@ var Gallery = React__default["default"].memo(UnMemoizedGallery);
362
359
  var ImageComponent = function (props) {
363
360
  var _a = props.dimensions, dimensions = _a === void 0 ? {} : _a, fallback = props.fallback, image_url = props.image_url, thumb_url = props.thumb_url, innerRef = props.innerRef, previewUrl = props.previewUrl, style = props.style;
364
361
  var _b = React.useState(false), modalIsOpen = _b[0], setModalIsOpen = _b[1];
365
- var _c = icons.useComponentContext('ImageComponent').ModalGallery, ModalGallery$1 = _c === void 0 ? ModalGallery : _c;
362
+ var _c = icons.useComponentContext('ImageComponent'), _d = _c.BaseImage, BaseImage$1 = _d === void 0 ? BaseImage : _d, _e = _c.ModalGallery, ModalGallery$1 = _e === void 0 ? ModalGallery : _e;
366
363
  var imageSrc = sanitizeUrl.sanitizeUrl(previewUrl || image_url || thumb_url);
367
364
  var toggleModal = function () { return setModalIsOpen(function (modalIsOpen) { return !modalIsOpen; }); };
368
365
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
369
- React__default["default"].createElement("img", icons.__assign({ alt: fallback, className: 'str-chat__message-attachment--img', "data-testid": 'image-test', onClick: toggleModal, src: imageSrc, style: style, tabIndex: 0 }, dimensions, (innerRef && { ref: innerRef }))),
366
+ React__default["default"].createElement(BaseImage$1, icons.__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 }))),
370
367
  React__default["default"].createElement(Modal, { onClose: toggleModal, open: modalIsOpen },
371
368
  React__default["default"].createElement(ModalGallery$1, { images: [props], index: 0 }))));
372
369
  };
@@ -1524,9 +1521,9 @@ function _iterableToArray$1(iter) { if (typeof Symbol !== "undefined" && iter[Sy
1524
1521
 
1525
1522
  function _arrayWithoutHoles$1(arr) { if (Array.isArray(arr)) return _arrayLikeToArray$1(arr); }
1526
1523
 
1527
- function ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1524
+ function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1528
1525
 
1529
- function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1526
+ function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty$1(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1530
1527
 
1531
1528
  function _defineProperty$1(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1532
1529
 
@@ -1743,7 +1740,7 @@ function pickerOptionsFromAccept(accept) {
1743
1740
  mimeType = _ref5[0],
1744
1741
  ext = _ref5[1];
1745
1742
 
1746
- return _objectSpread$3(_objectSpread$3({}, agg), {}, _defineProperty$1({}, mimeType, ext));
1743
+ return _objectSpread$1(_objectSpread$1({}, agg), {}, _defineProperty$1({}, mimeType, ext));
1747
1744
  }, {});
1748
1745
  return [{
1749
1746
  // description is required due to https://crbug.com/1264708
@@ -1831,7 +1828,7 @@ function isExt(v) {
1831
1828
  * @typedef {"file-invalid-type"|"file-too-large"|"file-too-small"|"too-many-files"} ErrorCode
1832
1829
  */
1833
1830
 
1834
- var _excluded$1 = ["children"],
1831
+ var _excluded = ["children"],
1835
1832
  _excluded2 = ["open"],
1836
1833
  _excluded3 = ["refKey", "role", "onKeyDown", "onFocus", "onBlur", "onClick", "onDragEnter", "onDragOver", "onDragLeave", "onDrop"],
1837
1834
  _excluded4 = ["refKey", "onChange", "onClick"];
@@ -1856,9 +1853,9 @@ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Sy
1856
1853
 
1857
1854
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
1858
1855
 
1859
- function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1856
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
1860
1857
 
1861
- function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1858
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
1862
1859
 
1863
1860
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
1864
1861
 
@@ -1882,7 +1879,7 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
1882
1879
 
1883
1880
  var Dropzone = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
1884
1881
  var children = _ref.children,
1885
- params = _objectWithoutProperties(_ref, _excluded$1);
1882
+ params = _objectWithoutProperties(_ref, _excluded);
1886
1883
 
1887
1884
  var _useDropzone = useDropzone(params),
1888
1885
  open = _useDropzone.open,
@@ -1894,7 +1891,7 @@ var Dropzone = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
1894
1891
  };
1895
1892
  }, [open]); // TODO: Figure out why react-styleguidist cannot create docs if we don't return a jsx element
1896
1893
 
1897
- return /*#__PURE__*/React__default["default"].createElement(React.Fragment, null, children(_objectSpread$2(_objectSpread$2({}, props), {}, {
1894
+ return /*#__PURE__*/React__default["default"].createElement(React.Fragment, null, children(_objectSpread(_objectSpread({}, props), {}, {
1898
1895
  open: open
1899
1896
  })));
1900
1897
  });
@@ -2267,7 +2264,7 @@ var initialState$1 = {
2267
2264
  function useDropzone() {
2268
2265
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
2269
2266
 
2270
- var _defaultProps$props = _objectSpread$2(_objectSpread$2({}, defaultProps), props),
2267
+ var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),
2271
2268
  accept = _defaultProps$props.accept,
2272
2269
  disabled = _defaultProps$props.disabled,
2273
2270
  getFilesFromEvent = _defaultProps$props.getFilesFromEvent,
@@ -2692,7 +2689,7 @@ function useDropzone() {
2692
2689
  onDrop = _ref2.onDrop,
2693
2690
  rest = _objectWithoutProperties(_ref2, _excluded3);
2694
2691
 
2695
- return _objectSpread$2(_objectSpread$2(_defineProperty({
2692
+ return _objectSpread(_objectSpread(_defineProperty({
2696
2693
  onKeyDown: composeKeyboardHandler(composeEventHandlers(onKeyDown, onKeyDownCb)),
2697
2694
  onFocus: composeKeyboardHandler(composeEventHandlers(onFocus, onFocusCb)),
2698
2695
  onBlur: composeKeyboardHandler(composeEventHandlers(onBlur, onBlurCb)),
@@ -2731,10 +2728,10 @@ function useDropzone() {
2731
2728
  tabIndex: -1
2732
2729
  }, refKey, inputRef);
2733
2730
 
2734
- return _objectSpread$2(_objectSpread$2({}, inputProps), rest);
2731
+ return _objectSpread(_objectSpread({}, inputProps), rest);
2735
2732
  };
2736
2733
  }, [inputRef, accept, multiple, onDropCb, disabled]);
2737
- return _objectSpread$2(_objectSpread$2({}, state), {}, {
2734
+ return _objectSpread(_objectSpread({}, state), {}, {
2738
2735
  isFocused: isFocused && !disabled,
2739
2736
  getRootProps: getRootProps,
2740
2737
  getInputProps: getInputProps,
@@ -2753,40 +2750,40 @@ function reducer(state, action) {
2753
2750
  /* istanbul ignore next */
2754
2751
  switch (action.type) {
2755
2752
  case "focus":
2756
- return _objectSpread$2(_objectSpread$2({}, state), {}, {
2753
+ return _objectSpread(_objectSpread({}, state), {}, {
2757
2754
  isFocused: true
2758
2755
  });
2759
2756
 
2760
2757
  case "blur":
2761
- return _objectSpread$2(_objectSpread$2({}, state), {}, {
2758
+ return _objectSpread(_objectSpread({}, state), {}, {
2762
2759
  isFocused: false
2763
2760
  });
2764
2761
 
2765
2762
  case "openDialog":
2766
- return _objectSpread$2(_objectSpread$2({}, initialState$1), {}, {
2763
+ return _objectSpread(_objectSpread({}, initialState$1), {}, {
2767
2764
  isFileDialogActive: true
2768
2765
  });
2769
2766
 
2770
2767
  case "closeDialog":
2771
- return _objectSpread$2(_objectSpread$2({}, state), {}, {
2768
+ return _objectSpread(_objectSpread({}, state), {}, {
2772
2769
  isFileDialogActive: false
2773
2770
  });
2774
2771
 
2775
2772
  case "setDraggedFiles":
2776
- return _objectSpread$2(_objectSpread$2({}, state), {}, {
2773
+ return _objectSpread(_objectSpread({}, state), {}, {
2777
2774
  isDragActive: action.isDragActive,
2778
2775
  isDragAccept: action.isDragAccept,
2779
2776
  isDragReject: action.isDragReject
2780
2777
  });
2781
2778
 
2782
2779
  case "setFiles":
2783
- return _objectSpread$2(_objectSpread$2({}, state), {}, {
2780
+ return _objectSpread(_objectSpread({}, state), {}, {
2784
2781
  acceptedFiles: action.acceptedFiles,
2785
2782
  fileRejections: action.fileRejections
2786
2783
  });
2787
2784
 
2788
2785
  case "reset":
2789
- return _objectSpread$2({}, initialState$1);
2786
+ return _objectSpread({}, initialState$1);
2790
2787
 
2791
2788
  default:
2792
2789
  return state;
@@ -3313,22 +3310,21 @@ var getAttachmentType = function (attachment) {
3313
3310
  return 'unsupported';
3314
3311
  };
3315
3312
 
3316
- var Item$1 = /*#__PURE__*/React__default["default"].forwardRef(function Item(props, innerRef) {
3317
- var className = props.className,
3318
- Component = props.component,
3319
- item = props.item,
3320
- onClickHandler = props.onClickHandler,
3321
- onSelectHandler = props.onSelectHandler,
3322
- selected = props.selected,
3323
- style = props.style;
3324
- var _useChatContext = icons.useChatContext('SuggestionItem'),
3325
- themeVersion = _useChatContext.themeVersion;
3326
- var handleSelect = React.useCallback(function () {
3327
- return onSelectHandler(item);
3328
- }, [item, onSelectHandler]);
3329
- var handleClick = React.useCallback(function (event) {
3330
- return onClickHandler(event, item);
3331
- }, [item, onClickHandler]);
3313
+ const Item$1 = /*#__PURE__*/React__default["default"].forwardRef(function Item(props, innerRef) {
3314
+ const {
3315
+ className,
3316
+ component: Component,
3317
+ item,
3318
+ onClickHandler,
3319
+ onSelectHandler,
3320
+ selected,
3321
+ style
3322
+ } = props;
3323
+ const {
3324
+ themeVersion
3325
+ } = icons.useChatContext('SuggestionItem');
3326
+ const handleSelect = React.useCallback(() => onSelectHandler(item), [item, onSelectHandler]);
3327
+ const handleClick = React.useCallback(event => onClickHandler(event, item), [item, onClickHandler]);
3332
3328
  if (themeVersion === '2') return /*#__PURE__*/React__default["default"].createElement("li", {
3333
3329
  className: clsx(className, {
3334
3330
  'str-chat__suggestion-item--selected': selected
@@ -30531,43 +30527,38 @@ var renderText = function (text, mentionedUsers, _a) {
30531
30527
  return (React__default["default"].createElement(Markdown, { allowedElements: allowedTagNames, components: icons.__assign(icons.__assign({}, markDownRenderers), customMarkDownRenderers), rehypePlugins: getRehypePlugins(rehypePlugins), remarkPlugins: getRemarkPlugins(remarkPlugins), skipHtml: true, unwrapDisallowed: true, urlTransform: urlTransform }, newText));
30532
30528
  };
30533
30529
 
30534
- function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
30535
- function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
30536
- var List = function List(_ref) {
30537
- var className = _ref.className,
30538
- component = _ref.component,
30539
- currentTrigger = _ref.currentTrigger,
30540
- dropdownScroll = _ref.dropdownScroll,
30541
- getSelectedItem = _ref.getSelectedItem,
30542
- getTextToReplace = _ref.getTextToReplace,
30543
- PropHeader = _ref.Header,
30544
- itemClassName = _ref.itemClassName,
30545
- itemStyle = _ref.itemStyle,
30546
- onSelect = _ref.onSelect,
30547
- selectionEnd = _ref.selectionEnd,
30548
- style = _ref.style,
30549
- PropSuggestionItem = _ref.SuggestionItem,
30550
- propValue = _ref.value,
30551
- values = _ref.values;
30552
- var _useComponentContext = icons.useComponentContext('SuggestionList'),
30553
- AutocompleteSuggestionHeader = _useComponentContext.AutocompleteSuggestionHeader,
30554
- AutocompleteSuggestionItem = _useComponentContext.AutocompleteSuggestionItem;
30555
- var _useChatContext = icons.useChatContext('SuggestionList'),
30556
- themeVersion = _useChatContext.themeVersion;
30557
- var SuggestionItem = PropSuggestionItem || AutocompleteSuggestionItem || Item$1;
30558
- var SuggestionHeader = PropHeader || AutocompleteSuggestionHeader || DefaultSuggestionListHeader;
30559
- var _useState = React.useState(undefined),
30560
- _useState2 = _slicedToArray__default["default"](_useState, 2),
30561
- selectedItemIndex = _useState2[0],
30562
- setSelectedItemIndex = _useState2[1];
30563
- var itemsRef = [];
30564
- var isSelected = function isSelected(item) {
30565
- return selectedItemIndex === values.findIndex(function (value) {
30566
- return getId(value) === getId(item);
30567
- });
30568
- };
30569
- var getId = function getId(item) {
30570
- var textToReplace = getTextToReplace(item);
30530
+ const List = _ref => {
30531
+ let {
30532
+ className,
30533
+ component,
30534
+ currentTrigger,
30535
+ dropdownScroll,
30536
+ getSelectedItem,
30537
+ getTextToReplace,
30538
+ Header: PropHeader,
30539
+ itemClassName,
30540
+ itemStyle,
30541
+ onSelect,
30542
+ selectionEnd,
30543
+ style,
30544
+ SuggestionItem: PropSuggestionItem,
30545
+ value: propValue,
30546
+ values
30547
+ } = _ref;
30548
+ const {
30549
+ AutocompleteSuggestionHeader,
30550
+ AutocompleteSuggestionItem
30551
+ } = icons.useComponentContext('SuggestionList');
30552
+ const {
30553
+ themeVersion
30554
+ } = icons.useChatContext('SuggestionList');
30555
+ const SuggestionItem = PropSuggestionItem || AutocompleteSuggestionItem || Item$1;
30556
+ const SuggestionHeader = PropHeader || AutocompleteSuggestionHeader || DefaultSuggestionListHeader;
30557
+ const [selectedItemIndex, setSelectedItemIndex] = React.useState(undefined);
30558
+ const itemsRef = [];
30559
+ const isSelected = item => selectedItemIndex === values.findIndex(value => getId(value) === getId(item));
30560
+ const getId = item => {
30561
+ const textToReplace = getTextToReplace(item);
30571
30562
  if (textToReplace.key) {
30572
30563
  return textToReplace.key;
30573
30564
  }
@@ -30576,38 +30567,34 @@ var List = function List(_ref) {
30576
30567
  }
30577
30568
  return item.key;
30578
30569
  };
30579
- var findItemIndex = React.useCallback(function (item) {
30580
- return values.findIndex(function (value) {
30581
- return value.id ? value.id === item.id : value.name === item.name;
30582
- });
30583
- }, [values]);
30584
- var modifyText = function modifyText(value) {
30570
+ const findItemIndex = React.useCallback(item => values.findIndex(value => value.id ? value.id === item.id : value.name === item.name), [values]);
30571
+ const modifyText = value => {
30585
30572
  if (!value) return;
30586
30573
  onSelect(getTextToReplace(value));
30587
30574
  if (getSelectedItem) getSelectedItem(value);
30588
30575
  };
30589
- var handleClick = React.useCallback(function (e, item) {
30576
+ const handleClick = React.useCallback((e, item) => {
30590
30577
  e === null || e === void 0 ? void 0 : e.preventDefault();
30591
- var index = findItemIndex(item);
30578
+ const index = findItemIndex(item);
30592
30579
  modifyText(values[index]);
30593
30580
  }, [modifyText, findItemIndex]);
30594
- var selectItem = React.useCallback(function (item) {
30595
- var index = findItemIndex(item);
30581
+ const selectItem = React.useCallback(item => {
30582
+ const index = findItemIndex(item);
30596
30583
  setSelectedItemIndex(index);
30597
30584
  }, [findItemIndex]);
30598
- var handleKeyDown = React.useCallback(function (event) {
30585
+ const handleKeyDown = React.useCallback(event => {
30599
30586
  if (event.key === 'ArrowUp') {
30600
- setSelectedItemIndex(function (prevSelected) {
30587
+ setSelectedItemIndex(prevSelected => {
30601
30588
  if (prevSelected === undefined) return 0;
30602
- var newIndex = prevSelected === 0 ? values.length - 1 : prevSelected - 1;
30589
+ const newIndex = prevSelected === 0 ? values.length - 1 : prevSelected - 1;
30603
30590
  dropdownScroll(itemsRef[newIndex]);
30604
30591
  return newIndex;
30605
30592
  });
30606
30593
  }
30607
30594
  if (event.key === 'ArrowDown') {
30608
- setSelectedItemIndex(function (prevSelected) {
30595
+ setSelectedItemIndex(prevSelected => {
30609
30596
  if (prevSelected === undefined) return 0;
30610
- var newIndex = prevSelected === values.length - 1 ? 0 : prevSelected + 1;
30597
+ const newIndex = prevSelected === values.length - 1 ? 0 : prevSelected + 1;
30611
30598
  dropdownScroll(itemsRef[newIndex]);
30612
30599
  return newIndex;
30613
30600
  });
@@ -30617,33 +30604,30 @@ var List = function List(_ref) {
30617
30604
  }
30618
30605
  return null;
30619
30606
  }, [selectedItemIndex, values]);
30620
- React.useEffect(function () {
30607
+ React.useEffect(() => {
30621
30608
  document.addEventListener('keydown', handleKeyDown, false);
30622
- return function () {
30623
- return document.removeEventListener('keydown', handleKeyDown);
30624
- };
30609
+ return () => document.removeEventListener('keydown', handleKeyDown);
30625
30610
  }, [handleKeyDown]);
30626
- React.useEffect(function () {
30611
+ React.useEffect(() => {
30627
30612
  if (values !== null && values !== void 0 && values.length) selectItem(values[0]);
30628
30613
  }, [values]); // eslint-disable-line
30629
30614
 
30630
- var restructureItem = React.useCallback(function (item) {
30631
- var matched = item.name || item.id;
30632
- var textBeforeCursor = propValue.slice(0, selectionEnd);
30633
- var triggerIndex = textBeforeCursor.lastIndexOf(currentTrigger);
30634
- var editedPropValue = escapeRegExp(textBeforeCursor.slice(triggerIndex + 1));
30635
- var parts = matched.split(new RegExp("(".concat(editedPropValue, ")"), 'gi'));
30636
- var itemNameParts = {
30615
+ const restructureItem = React.useCallback(item => {
30616
+ const matched = item.name || item.id;
30617
+ const textBeforeCursor = propValue.slice(0, selectionEnd);
30618
+ const triggerIndex = textBeforeCursor.lastIndexOf(currentTrigger);
30619
+ const editedPropValue = escapeRegExp(textBeforeCursor.slice(triggerIndex + 1));
30620
+ const parts = matched.split(new RegExp("(".concat(editedPropValue, ")"), 'gi'));
30621
+ const itemNameParts = {
30637
30622
  match: editedPropValue,
30638
- parts: parts
30623
+ parts
30624
+ };
30625
+ return {
30626
+ ...item,
30627
+ itemNameParts
30639
30628
  };
30640
- return _objectSpread$1(_objectSpread$1({}, item), {}, {
30641
- itemNameParts: itemNameParts
30642
- });
30643
30629
  }, [propValue, selectionEnd, currentTrigger]);
30644
- var restructuredValues = React.useMemo(function () {
30645
- return values.map(restructureItem);
30646
- }, [values, restructureItem]);
30630
+ const restructuredValues = React.useMemo(() => values.map(restructureItem), [values, restructureItem]);
30647
30631
  return /*#__PURE__*/React__default["default"].createElement("ul", {
30648
30632
  className: clsx('rta__list', className),
30649
30633
  style: style
@@ -30652,31 +30636,29 @@ var List = function List(_ref) {
30652
30636
  }, /*#__PURE__*/React__default["default"].createElement(SuggestionHeader, {
30653
30637
  currentTrigger: currentTrigger,
30654
30638
  value: propValue
30655
- })), restructuredValues.map(function (item, i) {
30656
- return /*#__PURE__*/React__default["default"].createElement(SuggestionItem, {
30657
- className: itemClassName,
30658
- component: component,
30659
- item: item,
30660
- key: getId(item),
30661
- onClickHandler: handleClick,
30662
- onSelectHandler: selectItem,
30663
- ref: function ref(_ref2) {
30664
- itemsRef[i] = _ref2;
30665
- },
30666
- selected: isSelected(item),
30667
- style: itemStyle,
30668
- value: propValue
30669
- });
30670
- }));
30639
+ })), restructuredValues.map((item, i) => /*#__PURE__*/React__default["default"].createElement(SuggestionItem, {
30640
+ className: itemClassName,
30641
+ component: component,
30642
+ item: item,
30643
+ key: getId(item),
30644
+ onClickHandler: handleClick,
30645
+ onSelectHandler: selectItem,
30646
+ ref: ref => {
30647
+ itemsRef[i] = ref;
30648
+ },
30649
+ selected: isSelected(item),
30650
+ style: itemStyle,
30651
+ value: propValue
30652
+ })));
30671
30653
  };
30672
30654
 
30673
- var DEFAULT_CARET_POSITION = 'next';
30655
+ const DEFAULT_CARET_POSITION = 'next';
30674
30656
  function defaultScrollToItem(container, item) {
30675
30657
  if (!item) return;
30676
- var itemHeight = parseInt(getComputedStyle(item).getPropertyValue('height'), 10);
30677
- var containerHight = parseInt(getComputedStyle(container).getPropertyValue('height'), 10) - itemHeight;
30678
- var actualScrollTop = container.scrollTop;
30679
- var itemOffsetTop = item.offsetTop;
30658
+ const itemHeight = parseInt(getComputedStyle(item).getPropertyValue('height'), 10);
30659
+ const containerHight = parseInt(getComputedStyle(container).getPropertyValue('height'), 10) - itemHeight;
30660
+ const actualScrollTop = container.scrollTop;
30661
+ const itemOffsetTop = item.offsetTop;
30680
30662
  if (itemOffsetTop < actualScrollTop + containerHight && actualScrollTop < itemOffsetTop) {
30681
30663
  return;
30682
30664
  }
@@ -30684,27 +30666,27 @@ function defaultScrollToItem(container, item) {
30684
30666
  // eslint-disable-next-line
30685
30667
  container.scrollTop = itemOffsetTop;
30686
30668
  }
30687
- var errorMessage = function errorMessage(message) {
30688
- return console.error("RTA: dataProvider fails: ".concat(message, "\n \nCheck the documentation or create issue if you think it's bug. https://github.com/webscopeio/react-textarea-autocomplete/issues"));
30689
- };
30690
- var triggerPropsCheck = function triggerPropsCheck(_ref) {
30691
- var trigger = _ref.trigger;
30669
+ const errorMessage = message => console.error("RTA: dataProvider fails: ".concat(message, "\n \nCheck the documentation or create issue if you think it's bug. https://github.com/webscopeio/react-textarea-autocomplete/issues"));
30670
+ const triggerPropsCheck = _ref => {
30671
+ let {
30672
+ trigger
30673
+ } = _ref;
30692
30674
  if (!trigger) return Error('Invalid prop trigger. Prop missing.');
30693
- var triggers = Object.entries(trigger);
30694
- for (var i = 0; i < triggers.length; i += 1) {
30695
- var _triggers$i = _slicedToArray__default["default"](triggers[i], 2),
30696
- triggerChar = _triggers$i[0],
30697
- settings = _triggers$i[1];
30675
+ const triggers = Object.entries(trigger);
30676
+ for (let i = 0; i < triggers.length; i += 1) {
30677
+ const [triggerChar, settings] = triggers[i];
30698
30678
  if (typeof triggerChar !== 'string' || triggerChar.length !== 1) {
30699
30679
  return Error('Invalid prop trigger. Keys of the object has to be string / one character.');
30700
30680
  }
30701
30681
 
30702
30682
  // $FlowFixMe
30703
- var triggerSetting = settings;
30704
- var callback = triggerSetting.callback,
30705
- component = triggerSetting.component,
30706
- dataProvider = triggerSetting.dataProvider,
30707
- output = triggerSetting.output;
30683
+ const triggerSetting = settings;
30684
+ const {
30685
+ callback,
30686
+ component,
30687
+ dataProvider,
30688
+ output
30689
+ } = triggerSetting;
30708
30690
  if (!reactIs.isValidElementType(component)) {
30709
30691
  return Error('Invalid prop trigger: component should be defined.');
30710
30692
  }
@@ -30819,138 +30801,111 @@ var isSafari = function () {
30819
30801
  return /^((?!chrome|android).)*safari/i.test(navigator.userAgent || '');
30820
30802
  };
30821
30803
 
30822
- var _excluded = ["onBlur", "onChange", "onClick", "onFocus", "onKeyDown", "onScroll", "onSelect"];
30823
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
30824
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
30825
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf__default["default"](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default["default"](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default["default"](this, result); }; }
30826
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
30827
- var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
30828
- _inherits__default["default"](ReactTextareaAutocomplete, _React$Component);
30829
- var _super = _createSuper(ReactTextareaAutocomplete);
30830
- function ReactTextareaAutocomplete(_props) {
30804
+ class ReactTextareaAutocomplete extends React__default["default"].Component {
30805
+ constructor(_props) {
30831
30806
  var _this;
30832
- _classCallCheck__default["default"](this, ReactTextareaAutocomplete);
30833
- _this = _super.call(this, _props);
30834
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "getSelectionPosition", function () {
30835
- if (!_this.textareaRef) return null;
30807
+ super(_props);
30808
+ _this = this;
30809
+ _defineProperty__default["default"](this, "getSelectionPosition", () => {
30810
+ if (!this.textareaRef) return null;
30836
30811
  return {
30837
- selectionEnd: _this.textareaRef.selectionEnd,
30838
- selectionStart: _this.textareaRef.selectionStart
30812
+ selectionEnd: this.textareaRef.selectionEnd,
30813
+ selectionStart: this.textareaRef.selectionStart
30839
30814
  };
30840
30815
  });
30841
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "getSelectedText", function () {
30842
- if (!_this.textareaRef) return null;
30843
- var _this$textareaRef = _this.textareaRef,
30844
- selectionEnd = _this$textareaRef.selectionEnd,
30845
- selectionStart = _this$textareaRef.selectionStart;
30816
+ _defineProperty__default["default"](this, "getSelectedText", () => {
30817
+ if (!this.textareaRef) return null;
30818
+ const {
30819
+ selectionEnd,
30820
+ selectionStart
30821
+ } = this.textareaRef;
30846
30822
  if (selectionStart === selectionEnd) return null;
30847
- return _this.state.value.substr(selectionStart, selectionEnd - selectionStart);
30823
+ return this.state.value.substr(selectionStart, selectionEnd - selectionStart);
30848
30824
  });
30849
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "setCaretPosition", function () {
30850
- var position = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
30825
+ _defineProperty__default["default"](this, "setCaretPosition", function () {
30826
+ let position = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
30851
30827
  if (!_this.textareaRef) return;
30852
30828
  _this.textareaRef.focus();
30853
30829
  _this.textareaRef.setSelectionRange(position, position);
30854
30830
  });
30855
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "getCaretPosition", function () {
30856
- if (!_this.textareaRef) return 0;
30857
- return _this.textareaRef.selectionEnd;
30831
+ _defineProperty__default["default"](this, "getCaretPosition", () => {
30832
+ if (!this.textareaRef) return 0;
30833
+ return this.textareaRef.selectionEnd;
30858
30834
  });
30859
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "_defaultShouldSubmit", function (event) {
30860
- return event.key === 'Enter' && !event.shiftKey && !event.nativeEvent.isComposing;
30861
- });
30862
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "_handleKeyDown", function (event) {
30863
- var _this$props$shouldSub = _this.props.shouldSubmit,
30864
- shouldSubmit = _this$props$shouldSub === void 0 ? _this._defaultShouldSubmit : _this$props$shouldSub;
30835
+ _defineProperty__default["default"](this, "_defaultShouldSubmit", event => event.key === 'Enter' && !event.shiftKey && !event.nativeEvent.isComposing);
30836
+ _defineProperty__default["default"](this, "_handleKeyDown", event => {
30837
+ const {
30838
+ shouldSubmit = this._defaultShouldSubmit
30839
+ } = this.props;
30865
30840
 
30866
30841
  // prevent default behaviour when the selection list is rendered
30867
- if ((event.key === 'ArrowUp' || event.key === 'ArrowDown') && _this.dropdownRef) event.preventDefault();
30868
- if (shouldSubmit !== null && shouldSubmit !== void 0 && shouldSubmit(event)) return _this._onEnter(event);
30869
- if (event.key === ' ') return _this._onSpace(event);
30870
- if (event.key === 'Escape') return _this._closeAutocomplete();
30842
+ if ((event.key === 'ArrowUp' || event.key === 'ArrowDown') && this.dropdownRef) event.preventDefault();
30843
+ if (shouldSubmit !== null && shouldSubmit !== void 0 && shouldSubmit(event)) return this._onEnter(event);
30844
+ if (event.key === ' ') return this._onSpace(event);
30845
+ if (event.key === 'Escape') return this._closeAutocomplete();
30871
30846
  });
30872
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "_onEnter", function (event) {
30873
- if (!_this.textareaRef) return;
30874
- var trigger = _this.state.currentTrigger;
30875
- if (!trigger || !_this.state.data) {
30847
+ _defineProperty__default["default"](this, "_onEnter", event => {
30848
+ if (!this.textareaRef) return;
30849
+ const trigger = this.state.currentTrigger;
30850
+ if (!trigger || !this.state.data) {
30876
30851
  // trigger a submit
30877
- _this._replaceWord();
30878
- if (_this.textareaRef) {
30879
- _this.textareaRef.selectionEnd = 0;
30852
+ this._replaceWord();
30853
+ if (this.textareaRef) {
30854
+ this.textareaRef.selectionEnd = 0;
30880
30855
  }
30881
- _this.props.handleSubmit(event);
30882
- _this._closeAutocomplete();
30856
+ this.props.handleSubmit(event);
30857
+ this._closeAutocomplete();
30883
30858
  }
30884
30859
  });
30885
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "_onSpace", function () {
30886
- if (!_this.props.replaceWord || !_this.textareaRef) return;
30860
+ _defineProperty__default["default"](this, "_onSpace", () => {
30861
+ if (!this.props.replaceWord || !this.textareaRef) return;
30887
30862
 
30888
30863
  // don't change characters if the element doesn't have focus
30889
- var hasFocus = _this.textareaRef.matches(':focus');
30864
+ const hasFocus = this.textareaRef.matches(':focus');
30890
30865
  if (!hasFocus) return;
30891
- _this._replaceWord();
30866
+ this._replaceWord();
30892
30867
  });
30893
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "_replaceWord", /*#__PURE__*/_asyncToGenerator__default["default"]( /*#__PURE__*/_regeneratorRuntime__default["default"].mark(function _callee() {
30894
- var value, lastWordRegex, match, lastWord, spaces, newWord, textBeforeWord, textAfterCaret, newText;
30895
- return _regeneratorRuntime__default["default"].wrap(function _callee$(_context) {
30896
- while (1) {
30897
- switch (_context.prev = _context.next) {
30898
- case 0:
30899
- value = _this.state.value;
30900
- lastWordRegex = /([^\s]+)(\s*)$/;
30901
- match = lastWordRegex.exec(value.slice(0, _this.getCaretPosition()));
30902
- lastWord = match && match[1];
30903
- if (lastWord) {
30904
- _context.next = 6;
30905
- break;
30906
- }
30907
- return _context.abrupt("return");
30908
- case 6:
30909
- spaces = match[2];
30910
- _context.next = 9;
30911
- return _this.props.replaceWord(lastWord);
30912
- case 9:
30913
- newWord = _context.sent;
30914
- if (!(newWord == null)) {
30915
- _context.next = 12;
30916
- break;
30917
- }
30918
- return _context.abrupt("return");
30919
- case 12:
30920
- textBeforeWord = value.slice(0, _this.getCaretPosition() - match[0].length);
30921
- textAfterCaret = value.slice(_this.getCaretPosition(), -1);
30922
- newText = textBeforeWord + newWord + spaces + textAfterCaret;
30923
- _this.setState({
30924
- value: newText
30925
- }, function () {
30926
- // fire onChange event after successful selection
30927
- var e = new CustomEvent('change', {
30928
- bubbles: true
30929
- });
30930
- _this.textareaRef.dispatchEvent(e);
30931
- if (_this.props.onChange) _this.props.onChange(e);
30932
- });
30933
- case 16:
30934
- case "end":
30935
- return _context.stop();
30936
- }
30937
- }
30938
- }, _callee);
30939
- })));
30940
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "_onSelect", function (newToken) {
30941
- var _this$props = _this.props,
30942
- closeCommandsList = _this$props.closeCommandsList,
30943
- closeMentionsList = _this$props.closeMentionsList,
30944
- onChange = _this$props.onChange,
30945
- showCommandsList = _this$props.showCommandsList,
30946
- showMentionsList = _this$props.showMentionsList;
30947
- var _this$state = _this.state,
30948
- stateTrigger = _this$state.currentTrigger,
30949
- selectionEnd = _this$state.selectionEnd,
30950
- textareaValue = _this$state.value;
30951
- var currentTrigger = showCommandsList ? '/' : showMentionsList ? '@' : stateTrigger;
30868
+ _defineProperty__default["default"](this, "_replaceWord", async () => {
30869
+ const {
30870
+ value
30871
+ } = this.state;
30872
+ const lastWordRegex = /([^\s]+)(\s*)$/;
30873
+ const match = lastWordRegex.exec(value.slice(0, this.getCaretPosition()));
30874
+ const lastWord = match && match[1];
30875
+ if (!lastWord) return;
30876
+ const spaces = match[2];
30877
+ const newWord = await this.props.replaceWord(lastWord);
30878
+ if (newWord == null) return;
30879
+ const textBeforeWord = value.slice(0, this.getCaretPosition() - match[0].length);
30880
+ const textAfterCaret = value.slice(this.getCaretPosition(), -1);
30881
+ const newText = textBeforeWord + newWord + spaces + textAfterCaret;
30882
+ this.setState({
30883
+ value: newText
30884
+ }, () => {
30885
+ // fire onChange event after successful selection
30886
+ const e = new CustomEvent('change', {
30887
+ bubbles: true
30888
+ });
30889
+ this.textareaRef.dispatchEvent(e);
30890
+ if (this.props.onChange) this.props.onChange(e);
30891
+ });
30892
+ });
30893
+ _defineProperty__default["default"](this, "_onSelect", newToken => {
30894
+ const {
30895
+ closeCommandsList,
30896
+ closeMentionsList,
30897
+ onChange,
30898
+ showCommandsList,
30899
+ showMentionsList
30900
+ } = this.props;
30901
+ const {
30902
+ currentTrigger: stateTrigger,
30903
+ selectionEnd,
30904
+ value: textareaValue
30905
+ } = this.state;
30906
+ const currentTrigger = showCommandsList ? '/' : showMentionsList ? '@' : stateTrigger;
30952
30907
  if (!currentTrigger) return;
30953
- var computeCaretPosition = function computeCaretPosition(position, token, startToken) {
30908
+ const computeCaretPosition = (position, token, startToken) => {
30954
30909
  switch (position) {
30955
30910
  case 'start':
30956
30911
  return startToken;
@@ -30964,40 +30919,44 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
30964
30919
  return position;
30965
30920
  }
30966
30921
  };
30967
- var textToModify = showCommandsList ? '/' : showMentionsList ? '@' : textareaValue.slice(0, selectionEnd);
30968
- var startOfTokenPosition = textToModify.lastIndexOf(currentTrigger);
30922
+ const textToModify = showCommandsList ? '/' : showMentionsList ? '@' : textareaValue.slice(0, selectionEnd);
30923
+ const startOfTokenPosition = textToModify.lastIndexOf(currentTrigger);
30969
30924
 
30970
30925
  // we add space after emoji is selected if a caret position is next
30971
- var newTokenString = newToken.caretPosition === 'next' ? "".concat(newToken.text, " ") : newToken.text;
30972
- var newCaretPosition = computeCaretPosition(newToken.caretPosition, newTokenString, startOfTokenPosition);
30973
- var modifiedText = textToModify.substring(0, startOfTokenPosition) + newTokenString;
30974
- var valueToReplace = textareaValue.replace(textToModify, modifiedText);
30926
+ const newTokenString = newToken.caretPosition === 'next' ? "".concat(newToken.text, " ") : newToken.text;
30927
+ const newCaretPosition = computeCaretPosition(newToken.caretPosition, newTokenString, startOfTokenPosition);
30928
+ const modifiedText = textToModify.substring(0, startOfTokenPosition) + newTokenString;
30929
+ const valueToReplace = textareaValue.replace(textToModify, modifiedText);
30975
30930
 
30976
30931
  // set the new textarea value and after that set the caret back to its position
30977
- _this.setState({
30932
+ this.setState({
30978
30933
  dataLoading: false,
30979
30934
  value: valueToReplace
30980
- }, function () {
30935
+ }, () => {
30981
30936
  // fire onChange event after successful selection
30982
- var e = new CustomEvent('change', {
30937
+ const e = new CustomEvent('change', {
30983
30938
  bubbles: true
30984
30939
  });
30985
- _this.textareaRef.dispatchEvent(e);
30940
+ this.textareaRef.dispatchEvent(e);
30986
30941
  if (onChange) onChange(e);
30987
- _this.setCaretPosition(newCaretPosition);
30942
+ this.setCaretPosition(newCaretPosition);
30988
30943
  });
30989
- _this._closeAutocomplete();
30944
+ this._closeAutocomplete();
30990
30945
  if (showCommandsList) closeCommandsList();
30991
30946
  if (showMentionsList) closeMentionsList();
30992
30947
  });
30993
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "_getItemOnSelect", function (paramTrigger) {
30994
- var stateTrigger = _this.state.currentTrigger;
30995
- var triggerSettings = _this._getCurrentTriggerSettings(paramTrigger);
30996
- var currentTrigger = paramTrigger || stateTrigger;
30948
+ _defineProperty__default["default"](this, "_getItemOnSelect", paramTrigger => {
30949
+ const {
30950
+ currentTrigger: stateTrigger
30951
+ } = this.state;
30952
+ const triggerSettings = this._getCurrentTriggerSettings(paramTrigger);
30953
+ const currentTrigger = paramTrigger || stateTrigger;
30997
30954
  if (!currentTrigger || !triggerSettings) return null;
30998
- var callback = triggerSettings.callback;
30955
+ const {
30956
+ callback
30957
+ } = triggerSettings;
30999
30958
  if (!callback) return null;
31000
- return function (item) {
30959
+ return item => {
31001
30960
  if (typeof callback !== 'function') {
31002
30961
  throw new Error('Output functor is not defined! You have to define "output" function. https://github.com/webscopeio/react-textarea-autocomplete#trigger-type');
31003
30962
  }
@@ -31007,20 +30966,23 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
31007
30966
  return null;
31008
30967
  };
31009
30968
  });
31010
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "_getTextToReplace", function (paramTrigger) {
31011
- var _this$state2 = _this.state,
31012
- actualToken = _this$state2.actualToken,
31013
- stateTrigger = _this$state2.currentTrigger;
31014
- var triggerSettings = _this._getCurrentTriggerSettings(paramTrigger);
31015
- var currentTrigger = paramTrigger || stateTrigger;
30969
+ _defineProperty__default["default"](this, "_getTextToReplace", paramTrigger => {
30970
+ const {
30971
+ actualToken,
30972
+ currentTrigger: stateTrigger
30973
+ } = this.state;
30974
+ const triggerSettings = this._getCurrentTriggerSettings(paramTrigger);
30975
+ const currentTrigger = paramTrigger || stateTrigger;
31016
30976
  if (!currentTrigger || !triggerSettings) return null;
31017
- var output = triggerSettings.output;
31018
- return function (item) {
31019
- if (_typeof__default["default"](item) === 'object' && (!output || typeof output !== 'function')) {
30977
+ const {
30978
+ output
30979
+ } = triggerSettings;
30980
+ return item => {
30981
+ if (typeof item === 'object' && (!output || typeof output !== 'function')) {
31020
30982
  throw new Error('Output functor is not defined! If you are using items as object you have to define "output" function. https://github.com/webscopeio/react-textarea-autocomplete#trigger-type');
31021
30983
  }
31022
30984
  if (output) {
31023
- var textToReplace = output(item, currentTrigger);
30985
+ const textToReplace = output(item, currentTrigger);
31024
30986
  if (!textToReplace || typeof textToReplace === 'number') {
31025
30987
  throw new Error("Output functor should return string or object in shape {text: string, caretPosition: string | number}.\nGot \"".concat(String(textToReplace), "\". Check the implementation for trigger \"").concat(currentTrigger, "\" and its token \"").concat(actualToken, "\"\n\nSee https://github.com/webscopeio/react-textarea-autocomplete#trigger-type for more informations.\n"));
31026
30988
  }
@@ -31047,31 +31009,36 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
31047
31009
  };
31048
31010
  };
31049
31011
  });
31050
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "_getCurrentTriggerSettings", function (paramTrigger) {
31051
- var stateTrigger = _this.state.currentTrigger;
31052
- var currentTrigger = paramTrigger || stateTrigger;
31012
+ _defineProperty__default["default"](this, "_getCurrentTriggerSettings", paramTrigger => {
31013
+ const {
31014
+ currentTrigger: stateTrigger
31015
+ } = this.state;
31016
+ const currentTrigger = paramTrigger || stateTrigger;
31053
31017
  if (!currentTrigger) return null;
31054
- return _this.props.trigger[currentTrigger];
31018
+ return this.props.trigger[currentTrigger];
31055
31019
  });
31056
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "_getValuesFromProvider", function () {
31057
- var _this$state3 = _this.state,
31058
- actualToken = _this$state3.actualToken,
31059
- currentTrigger = _this$state3.currentTrigger;
31060
- var triggerSettings = _this._getCurrentTriggerSettings();
31020
+ _defineProperty__default["default"](this, "_getValuesFromProvider", () => {
31021
+ const {
31022
+ actualToken,
31023
+ currentTrigger
31024
+ } = this.state;
31025
+ const triggerSettings = this._getCurrentTriggerSettings();
31061
31026
  if (!currentTrigger || !triggerSettings) return;
31062
- var component = triggerSettings.component,
31063
- dataProvider = triggerSettings.dataProvider;
31027
+ const {
31028
+ component,
31029
+ dataProvider
31030
+ } = triggerSettings;
31064
31031
  if (typeof dataProvider !== 'function') {
31065
31032
  throw new Error('Trigger provider has to be a function!');
31066
31033
  }
31067
- _this.setState({
31034
+ this.setState({
31068
31035
  dataLoading: true
31069
31036
  });
31070
31037
 
31071
31038
  // Modified: send the full text to support / style commands
31072
- dataProvider(actualToken, _this.state.value, function (data, token) {
31039
+ dataProvider(actualToken, this.state.value, (data, token) => {
31073
31040
  // Make sure that the result is still relevant for current query
31074
- if (token !== _this.state.actualToken) return;
31041
+ if (token !== this.state.actualToken) return;
31075
31042
  if (!Array.isArray(data)) {
31076
31043
  throw new Error('Trigger provider has to provide an array!');
31077
31044
  }
@@ -31080,30 +31047,31 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
31080
31047
  }
31081
31048
 
31082
31049
  // throw away if we resolved old trigger
31083
- if (currentTrigger !== _this.state.currentTrigger) return;
31050
+ if (currentTrigger !== this.state.currentTrigger) return;
31084
31051
 
31085
31052
  // if we haven't resolved any data let's close the autocomplete
31086
31053
  if (!data.length) {
31087
- _this._closeAutocomplete();
31054
+ this._closeAutocomplete();
31088
31055
  return;
31089
31056
  }
31090
- _this.setState({
31091
- component: component,
31092
- data: data,
31057
+ this.setState({
31058
+ component,
31059
+ data,
31093
31060
  dataLoading: false
31094
31061
  });
31095
31062
  });
31096
31063
  });
31097
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "_getSuggestions", function (paramTrigger) {
31098
- var _this$state4 = _this.state,
31099
- stateTrigger = _this$state4.currentTrigger,
31100
- data = _this$state4.data;
31101
- var currentTrigger = paramTrigger || stateTrigger;
31064
+ _defineProperty__default["default"](this, "_getSuggestions", paramTrigger => {
31065
+ const {
31066
+ currentTrigger: stateTrigger,
31067
+ data
31068
+ } = this.state;
31069
+ const currentTrigger = paramTrigger || stateTrigger;
31102
31070
  if (!currentTrigger || !data || data && !data.length) return null;
31103
31071
  return data;
31104
31072
  });
31105
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "_closeAutocomplete", function () {
31106
- _this.setState({
31073
+ _defineProperty__default["default"](this, "_closeAutocomplete", () => {
31074
+ this.setState({
31107
31075
  currentTrigger: null,
31108
31076
  data: null,
31109
31077
  dataLoading: false,
@@ -31111,57 +31079,61 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
31111
31079
  top: null
31112
31080
  });
31113
31081
  });
31114
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "_cleanUpProps", function () {
31115
- var props = _objectSpread({}, _this.props);
31116
- var notSafe = ['additionalTextareaProps', 'className', 'closeCommandsList', 'closeMentionsList', 'closeOnClickOutside', 'containerClassName', 'containerStyle', 'disableMentions', 'dropdownClassName', 'dropdownStyle', 'grow', 'handleSubmit', 'innerRef', 'itemClassName', 'itemStyle', 'listClassName', 'listStyle', 'loaderClassName', 'loaderStyle', 'loadingComponent', 'minChar', 'movePopupAsYouType', 'onCaretPositionChange', 'onChange', 'ref', 'replaceWord', 'scrollToItem', 'shouldSubmit', 'showCommandsList', 'showMentionsList', 'SuggestionItem', 'SuggestionList', 'trigger', 'value'];
31082
+ _defineProperty__default["default"](this, "_cleanUpProps", () => {
31083
+ const props = {
31084
+ ...this.props
31085
+ };
31086
+ const notSafe = ['additionalTextareaProps', 'className', 'closeCommandsList', 'closeMentionsList', 'closeOnClickOutside', 'containerClassName', 'containerStyle', 'disableMentions', 'dropdownClassName', 'dropdownStyle', 'grow', 'handleSubmit', 'innerRef', 'itemClassName', 'itemStyle', 'listClassName', 'listStyle', 'loaderClassName', 'loaderStyle', 'loadingComponent', 'minChar', 'movePopupAsYouType', 'onCaretPositionChange', 'onChange', 'ref', 'replaceWord', 'scrollToItem', 'shouldSubmit', 'showCommandsList', 'showMentionsList', 'SuggestionItem', 'SuggestionList', 'trigger', 'value'];
31117
31087
 
31118
31088
  // eslint-disable-next-line
31119
- for (var prop in props) {
31089
+ for (const prop in props) {
31120
31090
  if (notSafe.includes(prop)) delete props[prop];
31121
31091
  }
31122
31092
  return props;
31123
31093
  });
31124
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "_isCommand", function (text) {
31094
+ _defineProperty__default["default"](this, "_isCommand", text => {
31125
31095
  if (text[0] !== '/') return false;
31126
- var tokens = text.split(' ');
31096
+ const tokens = text.split(' ');
31127
31097
  return tokens.length <= 1;
31128
31098
  });
31129
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "_changeHandler", function (e) {
31130
- var _this$props2 = _this.props,
31131
- minChar = _this$props2.minChar,
31132
- movePopupAsYouType = _this$props2.movePopupAsYouType,
31133
- onCaretPositionChange = _this$props2.onCaretPositionChange,
31134
- onChange = _this$props2.onChange,
31135
- trigger = _this$props2.trigger;
31136
- var _this$state5 = _this.state,
31137
- left = _this$state5.left,
31138
- top = _this$state5.top;
31139
- var textarea = e.target;
31140
- var selectionEnd = textarea.selectionEnd,
31141
- selectionStart = textarea.selectionStart,
31142
- value = textarea.value;
31099
+ _defineProperty__default["default"](this, "_changeHandler", e => {
31100
+ const {
31101
+ minChar,
31102
+ movePopupAsYouType,
31103
+ onCaretPositionChange,
31104
+ onChange,
31105
+ trigger
31106
+ } = this.props;
31107
+ const {
31108
+ left,
31109
+ top
31110
+ } = this.state;
31111
+ const textarea = e.target;
31112
+ const {
31113
+ selectionEnd,
31114
+ selectionStart,
31115
+ value
31116
+ } = textarea;
31143
31117
  if (onChange) {
31144
31118
  e.persist();
31145
31119
  onChange(e);
31146
31120
  }
31147
- if (onCaretPositionChange) onCaretPositionChange(_this.getCaretPosition());
31148
- _this.setState({
31149
- value: value
31121
+ if (onCaretPositionChange) onCaretPositionChange(this.getCaretPosition());
31122
+ this.setState({
31123
+ value
31150
31124
  });
31151
- var currentTrigger;
31152
- var lastToken;
31153
- if (_this._isCommand(value)) {
31125
+ let currentTrigger;
31126
+ let lastToken;
31127
+ if (this._isCommand(value)) {
31154
31128
  currentTrigger = '/';
31155
31129
  lastToken = value;
31156
31130
  } else {
31157
- var triggerTokens = Object.keys(trigger).join().replace('/', '');
31158
- var triggerNorWhitespace = "[^\\s".concat(triggerTokens, "]*");
31159
- var regex = new RegExp("(?!^|\\W)?[".concat(triggerTokens, "]").concat(triggerNorWhitespace, "\\s?").concat(triggerNorWhitespace, "$"), 'g');
31160
- var tokenMatch = value.slice(0, selectionEnd).match(regex);
31131
+ const triggerTokens = Object.keys(trigger).join().replace('/', '');
31132
+ const triggerNorWhitespace = "[^\\s".concat(triggerTokens, "]*");
31133
+ const regex = new RegExp("(?!^|\\W)?[".concat(triggerTokens, "]").concat(triggerNorWhitespace, "\\s?").concat(triggerNorWhitespace, "$"), 'g');
31134
+ const tokenMatch = value.slice(0, selectionEnd).match(regex);
31161
31135
  lastToken = tokenMatch && tokenMatch[tokenMatch.length - 1].trim();
31162
- currentTrigger = lastToken && Object.keys(trigger).find(function (a) {
31163
- return a === lastToken[0];
31164
- }) || null;
31136
+ currentTrigger = lastToken && Object.keys(trigger).find(a => a === lastToken[0]) || null;
31165
31137
  }
31166
31138
 
31167
31139
  /*
@@ -31169,132 +31141,138 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
31169
31141
  the autocomplete
31170
31142
  */
31171
31143
  if (!lastToken || lastToken.length <= minChar) {
31172
- _this._closeAutocomplete();
31144
+ this._closeAutocomplete();
31173
31145
  return;
31174
31146
  }
31175
- var actualToken = lastToken.slice(1);
31147
+ const actualToken = lastToken.slice(1);
31176
31148
 
31177
31149
  // if trigger is not configured step out from the function, otherwise proceed
31178
31150
  if (!currentTrigger) return;
31179
31151
  if (movePopupAsYouType || top === null && left === null ||
31180
31152
  // if we have single char - trigger it means we want to re-position the autocomplete
31181
31153
  lastToken.length === 1) {
31182
- var _getCaretCoordinates = getCaretCoordinates__default["default"](textarea, selectionEnd),
31183
- newLeft = _getCaretCoordinates.left,
31184
- newTop = _getCaretCoordinates.top;
31185
- _this.setState({
31154
+ const {
31155
+ left: newLeft,
31156
+ top: newTop
31157
+ } = getCaretCoordinates__default["default"](textarea, selectionEnd);
31158
+ this.setState({
31186
31159
  // make position relative to textarea
31187
31160
  left: newLeft,
31188
- top: newTop - _this.textareaRef.scrollTop || 0
31161
+ top: newTop - this.textareaRef.scrollTop || 0
31189
31162
  });
31190
31163
  }
31191
- _this.setState({
31192
- actualToken: actualToken,
31193
- currentTrigger: currentTrigger,
31194
- selectionEnd: selectionEnd,
31195
- selectionStart: selectionStart
31196
- }, function () {
31164
+ this.setState({
31165
+ actualToken,
31166
+ currentTrigger,
31167
+ selectionEnd,
31168
+ selectionStart
31169
+ }, () => {
31197
31170
  try {
31198
- _this._getValuesFromProvider();
31171
+ this._getValuesFromProvider();
31199
31172
  } catch (err) {
31200
31173
  errorMessage(err.message);
31201
31174
  }
31202
31175
  });
31203
31176
  });
31204
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "_selectHandler", function (e) {
31205
- var _this$props3 = _this.props,
31206
- onCaretPositionChange = _this$props3.onCaretPositionChange,
31207
- onSelect = _this$props3.onSelect;
31208
- if (onCaretPositionChange) onCaretPositionChange(_this.getCaretPosition());
31177
+ _defineProperty__default["default"](this, "_selectHandler", e => {
31178
+ const {
31179
+ onCaretPositionChange,
31180
+ onSelect
31181
+ } = this.props;
31182
+ if (onCaretPositionChange) onCaretPositionChange(this.getCaretPosition());
31209
31183
  if (onSelect) {
31210
31184
  e.persist();
31211
31185
  onSelect(e);
31212
31186
  }
31213
31187
  });
31214
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "_onClickAndBlurHandler", function (e) {
31215
- var _this$props4 = _this.props,
31216
- closeOnClickOutside = _this$props4.closeOnClickOutside,
31217
- onBlur = _this$props4.onBlur;
31188
+ _defineProperty__default["default"](this, "_onClickAndBlurHandler", e => {
31189
+ const {
31190
+ closeOnClickOutside,
31191
+ onBlur
31192
+ } = this.props;
31218
31193
 
31219
31194
  // If this is a click: e.target is the textarea, and e.relatedTarget is the thing
31220
31195
  // that was actually clicked. If we clicked inside the auto-select dropdown, then
31221
31196
  // that's not a blur, from the auto-select point of view, so then do nothing.
31222
- var el = e.relatedTarget;
31197
+ const el = e.relatedTarget;
31223
31198
  // If this is a blur event in Safari, then relatedTarget is never a dropdown item, but a common parent
31224
31199
  // of textarea and dropdown container. That means that dropdownRef will not contain its parent and the
31225
31200
  // autocomplete will be closed before onclick handler can be invoked selecting an item.
31226
31201
  // It seems that Safari has different implementation determining the relatedTarget node than Chrome and Firefox.
31227
31202
  // Therefore, if focused away in Safari, the dropdown will be kept rendered until pressing Esc or selecting and item from it.
31228
- var focusedAwayInSafari = isSafari() && e.type === 'blur';
31229
- if (_this.dropdownRef && el instanceof Node && _this.dropdownRef.contains(el) || focusedAwayInSafari) {
31203
+ const focusedAwayInSafari = isSafari() && e.type === 'blur';
31204
+ if (this.dropdownRef && el instanceof Node && this.dropdownRef.contains(el) || focusedAwayInSafari) {
31230
31205
  return;
31231
31206
  }
31232
- if (closeOnClickOutside) _this._closeAutocomplete();
31207
+ if (closeOnClickOutside) this._closeAutocomplete();
31233
31208
  if (onBlur) {
31234
31209
  e.persist();
31235
31210
  onBlur(e);
31236
31211
  }
31237
31212
  });
31238
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "_onScrollHandler", function () {
31239
- return _this._closeAutocomplete();
31240
- });
31241
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "_dropdownScroll", function (item) {
31242
- var scrollToItem = _this.props.scrollToItem;
31213
+ _defineProperty__default["default"](this, "_onScrollHandler", () => this._closeAutocomplete());
31214
+ _defineProperty__default["default"](this, "_dropdownScroll", item => {
31215
+ const {
31216
+ scrollToItem
31217
+ } = this.props;
31243
31218
  if (!scrollToItem) return;
31244
31219
  if (scrollToItem === true) {
31245
- defaultScrollToItem(_this.dropdownRef, item);
31220
+ defaultScrollToItem(this.dropdownRef, item);
31246
31221
  return;
31247
31222
  }
31248
31223
  if (typeof scrollToItem !== 'function' || scrollToItem.length !== 2) {
31249
31224
  throw new Error('`scrollToItem` has to be boolean (true for default implementation) or function with two parameters: container, item.');
31250
31225
  }
31251
- scrollToItem(_this.dropdownRef, item);
31226
+ scrollToItem(this.dropdownRef, item);
31252
31227
  });
31253
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "getTriggerProps", function () {
31254
- var _this$props5 = _this.props,
31255
- showCommandsList = _this$props5.showCommandsList,
31256
- showMentionsList = _this$props5.showMentionsList,
31257
- trigger = _this$props5.trigger;
31258
- var _this$state6 = _this.state,
31259
- component = _this$state6.component,
31260
- currentTrigger = _this$state6.currentTrigger,
31261
- selectionEnd = _this$state6.selectionEnd,
31262
- value = _this$state6.value;
31263
- var selectedItem = _this._getItemOnSelect();
31264
- var suggestionData = _this._getSuggestions();
31265
- var textToReplace = _this._getTextToReplace();
31266
- var triggerProps = {
31267
- component: component,
31268
- currentTrigger: currentTrigger,
31228
+ _defineProperty__default["default"](this, "getTriggerProps", () => {
31229
+ const {
31230
+ showCommandsList,
31231
+ showMentionsList,
31232
+ trigger
31233
+ } = this.props;
31234
+ const {
31235
+ component,
31236
+ currentTrigger,
31237
+ selectionEnd,
31238
+ value
31239
+ } = this.state;
31240
+ const selectedItem = this._getItemOnSelect();
31241
+ const suggestionData = this._getSuggestions();
31242
+ const textToReplace = this._getTextToReplace();
31243
+ const triggerProps = {
31244
+ component,
31245
+ currentTrigger,
31269
31246
  getSelectedItem: selectedItem,
31270
31247
  getTextToReplace: textToReplace,
31271
- selectionEnd: selectionEnd,
31272
- value: value,
31248
+ selectionEnd,
31249
+ value,
31273
31250
  values: suggestionData
31274
31251
  };
31275
31252
  if (showCommandsList && trigger['/'] || showMentionsList && trigger['@']) {
31276
- var currentCommands;
31277
- var getCommands = trigger[showCommandsList ? '/' : '@'].dataProvider;
31278
- getCommands === null || getCommands === void 0 ? void 0 : getCommands('', showCommandsList ? '/' : '@', function (data) {
31253
+ let currentCommands;
31254
+ const getCommands = trigger[showCommandsList ? '/' : '@'].dataProvider;
31255
+ getCommands === null || getCommands === void 0 ? void 0 : getCommands('', showCommandsList ? '/' : '@', data => {
31279
31256
  currentCommands = data;
31280
31257
  });
31281
31258
  triggerProps.component = showCommandsList ? CommandItem : UserItem;
31282
31259
  triggerProps.currentTrigger = showCommandsList ? '/' : '@';
31283
- triggerProps.getTextToReplace = _this._getTextToReplace(showCommandsList ? '/' : '@');
31284
- triggerProps.getSelectedItem = _this._getItemOnSelect(showCommandsList ? '/' : '@');
31260
+ triggerProps.getTextToReplace = this._getTextToReplace(showCommandsList ? '/' : '@');
31261
+ triggerProps.getSelectedItem = this._getItemOnSelect(showCommandsList ? '/' : '@');
31285
31262
  triggerProps.selectionEnd = 1;
31286
31263
  triggerProps.value = showCommandsList ? '/' : '@';
31287
31264
  triggerProps.values = currentCommands;
31288
31265
  }
31289
31266
  return triggerProps;
31290
31267
  });
31291
- _defineProperty__default["default"](_assertThisInitialized__default["default"](_this), "setDropdownRef", function (element) {
31292
- _this.dropdownRef = element;
31268
+ _defineProperty__default["default"](this, "setDropdownRef", element => {
31269
+ this.dropdownRef = element;
31293
31270
  });
31294
- var _this$props6 = _this.props,
31295
- loadingComponent = _this$props6.loadingComponent,
31296
- _trigger = _this$props6.trigger,
31297
- _value = _this$props6.value;
31271
+ const {
31272
+ loadingComponent,
31273
+ trigger: _trigger,
31274
+ value: _value
31275
+ } = this.props;
31298
31276
 
31299
31277
  // TODO: it would be better to have the parent control state...
31300
31278
  // if (value) this.state.value = value;
@@ -31305,7 +31283,7 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
31305
31283
  if (!_trigger) {
31306
31284
  throw new Error('RTA: trigger is not defined');
31307
31285
  }
31308
- _this.state = {
31286
+ this.state = {
31309
31287
  actualToken: '',
31310
31288
  component: null,
31311
31289
  currentTrigger: null,
@@ -31317,140 +31295,148 @@ var ReactTextareaAutocomplete = /*#__PURE__*/function (_React$Component) {
31317
31295
  top: null,
31318
31296
  value: _value || ''
31319
31297
  };
31320
- return _this;
31321
31298
  }
31322
31299
 
31323
31300
  // FIXME: unused method
31324
- _createClass__default["default"](ReactTextareaAutocomplete, [{
31325
- key: "renderSuggestionListContainer",
31326
- value: function renderSuggestionListContainer() {
31327
- var _this$props7 = this.props,
31328
- disableMentions = _this$props7.disableMentions,
31329
- dropdownClassName = _this$props7.dropdownClassName,
31330
- dropdownStyle = _this$props7.dropdownStyle,
31331
- itemClassName = _this$props7.itemClassName,
31332
- itemStyle = _this$props7.itemStyle,
31333
- listClassName = _this$props7.listClassName,
31334
- SuggestionItem = _this$props7.SuggestionItem,
31335
- _this$props7$Suggesti = _this$props7.SuggestionList,
31336
- SuggestionList = _this$props7$Suggesti === void 0 ? List : _this$props7$Suggesti;
31337
- var triggerProps = this.getTriggerProps();
31338
- if (triggerProps.values && triggerProps.currentTrigger && !(disableMentions && triggerProps.currentTrigger === '@')) {
31339
- return /*#__PURE__*/React__default["default"].createElement("div", {
31340
- className: clsx('rta__autocomplete', 'str-chat__suggestion-list-container', dropdownClassName),
31341
- ref: this.setDropdownRef,
31342
- style: dropdownStyle
31343
- }, /*#__PURE__*/React__default["default"].createElement(SuggestionList, _extends__default["default"]({
31344
- className: clsx('str-chat__suggestion-list', listClassName),
31345
- dropdownScroll: this._dropdownScroll,
31346
- itemClassName: clsx('str-chat__suggestion-list-item', itemClassName),
31347
- itemStyle: itemStyle,
31348
- onSelect: this._onSelect,
31349
- SuggestionItem: SuggestionItem
31350
- }, triggerProps)));
31351
- }
31301
+
31302
+ // FIXME: unused method
31303
+
31304
+ /**
31305
+ * isComposing prevents double submissions in Korean and other languages.
31306
+ * starting point for a read:
31307
+ * https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/isComposing
31308
+ * In the long term, the fix should happen by handling keypress, but changing this has unknown implications.
31309
+ * @param event React.KeyboardEvent
31310
+ */
31311
+
31312
+ /**
31313
+ * setup to emulate the UNSAFE_componentWillReceiveProps
31314
+ */
31315
+ static getDerivedStateFromProps(props, state) {
31316
+ if (props.value !== state.propsValue || !state.value) {
31317
+ return {
31318
+ propsValue: props.value,
31319
+ value: props.value
31320
+ };
31321
+ } else {
31352
31322
  return null;
31353
31323
  }
31354
- }, {
31355
- key: "render",
31356
- value: function render() {
31357
- var _this2 = this;
31358
- var _this$props8 = this.props,
31359
- className = _this$props8.className,
31360
- containerClassName = _this$props8.containerClassName,
31361
- containerStyle = _this$props8.containerStyle,
31362
- style = _this$props8.style;
31363
- var _ref2 = this.props.additionalTextareaProps || {},
31364
- _onBlur = _ref2.onBlur,
31365
- _onChange = _ref2.onChange,
31366
- _onClick = _ref2.onClick,
31367
- _onFocus = _ref2.onFocus,
31368
- _onKeyDown = _ref2.onKeyDown,
31369
- _onScroll = _ref2.onScroll,
31370
- _onSelect = _ref2.onSelect,
31371
- restAdditionalTextareaProps = _objectWithoutProperties__default["default"](_ref2, _excluded);
31372
- var maxRows = this.props.maxRows;
31373
- var _this$state7 = this.state,
31374
- dataLoading = _this$state7.dataLoading,
31375
- value = _this$state7.value;
31376
- if (!this.props.grow) maxRows = 1;
31377
-
31378
- // By setting defaultValue to undefined, avoid error:
31379
- // ForwardRef(TextareaAutosize) contains a textarea with both value and defaultValue props.
31380
- // Textarea elements must be either controlled or uncontrolled
31324
+ }
31325
+ /**
31326
+ * Close autocomplete, also clean up trigger (to avoid slow promises)
31327
+ */
31381
31328
 
31329
+ // The textarea itself is outside the auto-select dropdown.
31330
+
31331
+ renderSuggestionListContainer() {
31332
+ const {
31333
+ disableMentions,
31334
+ dropdownClassName,
31335
+ dropdownStyle,
31336
+ itemClassName,
31337
+ itemStyle,
31338
+ listClassName,
31339
+ SuggestionItem,
31340
+ SuggestionList = List
31341
+ } = this.props;
31342
+ const triggerProps = this.getTriggerProps();
31343
+ if (triggerProps.values && triggerProps.currentTrigger && !(disableMentions && triggerProps.currentTrigger === '@')) {
31382
31344
  return /*#__PURE__*/React__default["default"].createElement("div", {
31383
- className: clsx('rta', containerClassName, {
31384
- 'rta--loading': dataLoading
31385
- }),
31386
- style: containerStyle
31387
- }, this.renderSuggestionListContainer(), /*#__PURE__*/React__default["default"].createElement(Textarea__default["default"], _extends__default["default"]({
31388
- "data-testid": "message-input"
31389
- }, this._cleanUpProps(), {
31390
- className: clsx('rta__textarea', className),
31391
- maxRows: maxRows,
31392
- onBlur: function onBlur(e) {
31393
- _this2._onClickAndBlurHandler(e);
31394
- _onBlur === null || _onBlur === void 0 ? void 0 : _onBlur(e);
31395
- },
31396
- onChange: function onChange(e) {
31397
- _this2._changeHandler(e);
31398
- _onChange === null || _onChange === void 0 ? void 0 : _onChange(e);
31399
- },
31400
- onClick: function onClick(e) {
31401
- _this2._onClickAndBlurHandler(e);
31402
- _onClick === null || _onClick === void 0 ? void 0 : _onClick(e);
31403
- },
31404
- onFocus: function onFocus(e) {
31405
- var _this2$props$onFocus, _this2$props;
31406
- (_this2$props$onFocus = (_this2$props = _this2.props).onFocus) === null || _this2$props$onFocus === void 0 ? void 0 : _this2$props$onFocus.call(_this2$props, e);
31407
- _onFocus === null || _onFocus === void 0 ? void 0 : _onFocus(e);
31408
- },
31409
- onKeyDown: function onKeyDown(e) {
31410
- _this2._handleKeyDown(e);
31411
- _onKeyDown === null || _onKeyDown === void 0 ? void 0 : _onKeyDown(e);
31412
- },
31413
- onScroll: function onScroll(e) {
31414
- _this2._onScrollHandler(e);
31415
- _onScroll === null || _onScroll === void 0 ? void 0 : _onScroll(e);
31416
- },
31417
- onSelect: function onSelect(e) {
31418
- _this2._selectHandler(e);
31419
- _onSelect === null || _onSelect === void 0 ? void 0 : _onSelect(e);
31420
- },
31421
- ref: function ref(_ref3) {
31422
- var _this2$props2;
31423
- (_this2$props2 = _this2.props) === null || _this2$props2 === void 0 ? void 0 : _this2$props2.innerRef(_ref3);
31424
- _this2.textareaRef = _ref3;
31425
- },
31426
- style: style,
31427
- value: value
31428
- }, restAdditionalTextareaProps, {
31429
- defaultValue: undefined
31430
- })));
31431
- }
31432
- }], [{
31433
- key: "getDerivedStateFromProps",
31434
- value:
31435
- /**
31436
- * setup to emulate the UNSAFE_componentWillReceiveProps
31437
- */
31438
- function getDerivedStateFromProps(props, state) {
31439
- if (props.value !== state.propsValue || !state.value) {
31440
- return {
31441
- propsValue: props.value,
31442
- value: props.value
31443
- };
31444
- } else {
31445
- return null;
31446
- }
31345
+ className: clsx('rta__autocomplete', 'str-chat__suggestion-list-container', dropdownClassName),
31346
+ ref: this.setDropdownRef,
31347
+ style: dropdownStyle
31348
+ }, /*#__PURE__*/React__default["default"].createElement(SuggestionList, _extends__default["default"]({
31349
+ className: clsx('str-chat__suggestion-list', listClassName),
31350
+ dropdownScroll: this._dropdownScroll,
31351
+ itemClassName: clsx('str-chat__suggestion-list-item', itemClassName),
31352
+ itemStyle: itemStyle,
31353
+ onSelect: this._onSelect,
31354
+ SuggestionItem: SuggestionItem
31355
+ }, triggerProps)));
31447
31356
  }
31448
- /**
31449
- * Close autocomplete, also clean up trigger (to avoid slow promises)
31450
- */
31451
- }]);
31452
- return ReactTextareaAutocomplete;
31453
- }(React__default["default"].Component);
31357
+ return null;
31358
+ }
31359
+ render() {
31360
+ const {
31361
+ className,
31362
+ containerClassName,
31363
+ containerStyle,
31364
+ style
31365
+ } = this.props;
31366
+ const {
31367
+ onBlur,
31368
+ onChange,
31369
+ onClick,
31370
+ onFocus,
31371
+ onKeyDown,
31372
+ onScroll,
31373
+ onSelect,
31374
+ ...restAdditionalTextareaProps
31375
+ } = this.props.additionalTextareaProps || {};
31376
+ let {
31377
+ maxRows
31378
+ } = this.props;
31379
+ const {
31380
+ dataLoading,
31381
+ value
31382
+ } = this.state;
31383
+ if (!this.props.grow) maxRows = 1;
31384
+
31385
+ // By setting defaultValue to undefined, avoid error:
31386
+ // ForwardRef(TextareaAutosize) contains a textarea with both value and defaultValue props.
31387
+ // Textarea elements must be either controlled or uncontrolled
31388
+
31389
+ return /*#__PURE__*/React__default["default"].createElement("div", {
31390
+ className: clsx('rta', containerClassName, {
31391
+ 'rta--loading': dataLoading
31392
+ }),
31393
+ style: containerStyle
31394
+ }, this.renderSuggestionListContainer(), /*#__PURE__*/React__default["default"].createElement(Textarea__default["default"], _extends__default["default"]({
31395
+ "data-testid": "message-input"
31396
+ }, this._cleanUpProps(), {
31397
+ className: clsx('rta__textarea', className),
31398
+ maxRows: maxRows,
31399
+ onBlur: e => {
31400
+ this._onClickAndBlurHandler(e);
31401
+ onBlur === null || onBlur === void 0 ? void 0 : onBlur(e);
31402
+ },
31403
+ onChange: e => {
31404
+ this._changeHandler(e);
31405
+ onChange === null || onChange === void 0 ? void 0 : onChange(e);
31406
+ },
31407
+ onClick: e => {
31408
+ this._onClickAndBlurHandler(e);
31409
+ onClick === null || onClick === void 0 ? void 0 : onClick(e);
31410
+ },
31411
+ onFocus: e => {
31412
+ var _this$props$onFocus, _this$props;
31413
+ (_this$props$onFocus = (_this$props = this.props).onFocus) === null || _this$props$onFocus === void 0 ? void 0 : _this$props$onFocus.call(_this$props, e);
31414
+ onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);
31415
+ },
31416
+ onKeyDown: e => {
31417
+ this._handleKeyDown(e);
31418
+ onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(e);
31419
+ },
31420
+ onScroll: e => {
31421
+ this._onScrollHandler(e);
31422
+ onScroll === null || onScroll === void 0 ? void 0 : onScroll(e);
31423
+ },
31424
+ onSelect: e => {
31425
+ this._selectHandler(e);
31426
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(e);
31427
+ },
31428
+ ref: ref => {
31429
+ var _this$props2;
31430
+ (_this$props2 = this.props) === null || _this$props2 === void 0 ? void 0 : _this$props2.innerRef(ref);
31431
+ this.textareaRef = ref;
31432
+ },
31433
+ style: style,
31434
+ value: value
31435
+ }, restAdditionalTextareaProps, {
31436
+ defaultValue: undefined
31437
+ })));
31438
+ }
31439
+ }
31454
31440
  _defineProperty__default["default"](ReactTextareaAutocomplete, "defaultProps", {
31455
31441
  closeOnClickOutside: true,
31456
31442
  maxRows: 10,
@@ -32574,25 +32560,29 @@ var AttachmentPreviewList = function () {
32574
32560
  var ImagePreviewItem = function (_a) {
32575
32561
  var _b;
32576
32562
  var id = _a.id;
32577
- var _c = icons.useMessageInputContext('ImagePreviewItem'), imageUploads = _c.imageUploads, removeImage = _c.removeImage, uploadImage = _c.uploadImage;
32563
+ var _c = icons.useComponentContext('ImagePreviewItem').BaseImage, BaseImage$1 = _c === void 0 ? BaseImage : _c;
32564
+ var _d = icons.useMessageInputContext('ImagePreviewItem'), imageUploads = _d.imageUploads, removeImage = _d.removeImage, uploadImage = _d.uploadImage;
32565
+ var _e = React.useState(false), previewError = _e[0], setPreviewError = _e[1];
32578
32566
  var handleRemove = React.useCallback(function (e) {
32579
32567
  e.stopPropagation();
32580
32568
  removeImage(id);
32581
32569
  }, [removeImage, id]);
32582
32570
  var handleRetry = React.useCallback(function () { return uploadImage(id); }, [uploadImage, id]);
32571
+ var handleLoadError = React.useCallback(function () { return setPreviewError(true); }, []);
32583
32572
  var image = imageUploads[id];
32584
- var state = useFileState(image);
32585
32573
  // do not display scraped attachments
32586
32574
  if (!image || image.og_scrape_url)
32587
32575
  return null;
32588
- return (React__default["default"].createElement("div", { className: 'str-chat__attachment-preview-image', "data-testid": 'attachment-preview-image' },
32589
- React__default["default"].createElement("button", { className: 'str-chat__attachment-preview-delete', "data-testid": 'image-preview-item-delete-button', disabled: state.uploading, onClick: handleRemove },
32576
+ return (React__default["default"].createElement("div", { className: clsx('str-chat__attachment-preview-image', {
32577
+ 'str-chat__attachment-preview-image--error': previewError,
32578
+ }), "data-testid": 'attachment-preview-image' },
32579
+ React__default["default"].createElement("button", { className: 'str-chat__attachment-preview-delete', "data-testid": 'image-preview-item-delete-button', disabled: image.state === 'uploading', onClick: handleRemove },
32590
32580
  React__default["default"].createElement(icons.CloseIcon, null)),
32591
- state.failed && (React__default["default"].createElement("button", { className: 'str-chat__attachment-preview-error str-chat__attachment-preview-error-image', "data-testid": 'image-preview-item-retry-button', onClick: handleRetry },
32581
+ image.state === 'failed' && (React__default["default"].createElement("button", { className: 'str-chat__attachment-preview-error str-chat__attachment-preview-error-image', "data-testid": 'image-preview-item-retry-button', onClick: handleRetry },
32592
32582
  React__default["default"].createElement(icons.RetryIcon, null))),
32593
- state.uploading && (React__default["default"].createElement("div", { className: 'str-chat__attachment-preview-image-loading' },
32583
+ image.state === 'uploading' && (React__default["default"].createElement("div", { className: 'str-chat__attachment-preview-image-loading' },
32594
32584
  React__default["default"].createElement(icons.LoadingIndicatorIcon, { size: 17 }))),
32595
- (image.previewUri || image.url) && (React__default["default"].createElement("img", { alt: image.file.name, className: 'str-chat__attachment-preview-thumbnail', src: (_b = image.previewUri) !== null && _b !== void 0 ? _b : image.url }))));
32585
+ (image.previewUri || image.url) && (React__default["default"].createElement(BaseImage$1, { alt: image.file.name, className: 'str-chat__attachment-preview-thumbnail', onError: handleLoadError, src: (_b = image.previewUri) !== null && _b !== void 0 ? _b : image.url, title: image.file.name }))));
32596
32586
  };
32597
32587
  var FilePreviewItem = function (_a) {
32598
32588
  var id = _a.id;
@@ -35834,6 +35824,7 @@ var ChannelInner = function (props) {
35834
35824
  AutocompleteSuggestionItem: props.AutocompleteSuggestionItem,
35835
35825
  AutocompleteSuggestionList: props.AutocompleteSuggestionList,
35836
35826
  Avatar: props.Avatar,
35827
+ BaseImage: props.BaseImage,
35837
35828
  CooldownTimer: props.CooldownTimer,
35838
35829
  DateSeparator: props.DateSeparator,
35839
35830
  EditMessageInput: props.EditMessageInput,
@@ -36360,7 +36351,8 @@ var RECOVER_LOADED_CHANNELS_THROTTLE_INTERVAL_IN_MS = 5000;
36360
36351
  var MIN_RECOVER_LOADED_CHANNELS_THROTTLE_INTERVAL_IN_MS = 2000;
36361
36352
  var usePaginatedChannels = function (client, filters, sort, options, activeChannelHandler, recoveryThrottleIntervalMs) {
36362
36353
  if (recoveryThrottleIntervalMs === void 0) { recoveryThrottleIntervalMs = RECOVER_LOADED_CHANNELS_THROTTLE_INTERVAL_IN_MS; }
36363
- var _a = icons.useChatContext('usePaginatedChannels'), channels = _a.channels, _b = _a.channelsQueryState, error = _b.error, setError = _b.setError, setQueryInProgress = _b.setQueryInProgress, setChannels = _a.setChannels;
36354
+ var _a = icons.useChatContext('usePaginatedChannels').channelsQueryState, error = _a.error, setError = _a.setError, setQueryInProgress = _a.setQueryInProgress;
36355
+ var _b = React.useState([]), channels = _b[0], setChannels = _b[1];
36364
36356
  var _c = React.useState(true), hasNextPage = _c[0], setHasNextPage = _c[1];
36365
36357
  var lastRecoveryTimestamp = React.useRef();
36366
36358
  var recoveryThrottleInterval = recoveryThrottleIntervalMs < MIN_RECOVER_LOADED_CHANNELS_THROTTLE_INTERVAL_IN_MS
@@ -36440,7 +36432,6 @@ var usePaginatedChannels = function (client, filters, sort, options, activeChann
36440
36432
  React.useEffect(function () {
36441
36433
  queryChannels('reload');
36442
36434
  }, [filterString, sortString]);
36443
- // FIXME: state refactor (breaking change) is needed - do not forward `channels` and `setChannel`
36444
36435
  return {
36445
36436
  channels: channels,
36446
36437
  hasNextPage: hasNextPage,
@@ -37182,7 +37173,7 @@ var UnMemoizedChannelList = function (props) {
37182
37173
  'str-chat-channel-list--open': navOpen,
37183
37174
  });
37184
37175
  var showChannelList = !searchActive || (additionalChannelSearchProps === null || additionalChannelSearchProps === void 0 ? void 0 : additionalChannelSearchProps.popupResults);
37185
- return (React__default["default"].createElement(React__default["default"].Fragment, null,
37176
+ return (React__default["default"].createElement(icons.ChannelListContextProvider, { value: { channels: channels, setChannels: setChannels } },
37186
37177
  React__default["default"].createElement("div", { className: className, ref: channelListRef },
37187
37178
  showChannelSearch && (React__default["default"].createElement(ChannelSearch$1, icons.__assign({ onSearch: onSearch, onSearchExit: onSearchExit, setChannels: setChannels }, additionalChannelSearchProps))),
37188
37179
  showChannelList && (React__default["default"].createElement(List, { error: channelsQueryState.error, loadedChannels: sendChannelsToList ? loadedChannels : undefined, loading: !!channelsQueryState.queryInProgress &&
@@ -37195,7 +37186,7 @@ var UnMemoizedChannelList = function (props) {
37195
37186
  */
37196
37187
  var ChannelList = React__default["default"].memo(UnMemoizedChannelList);
37197
37188
 
37198
- var version = '11.0.0';
37189
+ var version = '11.1.1';
37199
37190
 
37200
37191
  var useChat = function (_a) {
37201
37192
  var _b, _c;
@@ -37205,11 +37196,10 @@ var useChat = function (_a) {
37205
37196
  tDateTimeParser: icons.defaultDateTimeParser,
37206
37197
  userLanguage: 'en',
37207
37198
  }), translators = _e[0], setTranslators = _e[1];
37208
- var _f = React.useState([]), channels = _f[0], setChannels = _f[1];
37209
- var _g = React.useState(), channel = _g[0], setChannel = _g[1];
37210
- var _h = React.useState([]), mutes = _h[0], setMutes = _h[1];
37211
- var _j = React.useState(initialNavOpen), navOpen = _j[0], setNavOpen = _j[1];
37212
- var _k = React.useState({}), latestMessageDatesByChannels = _k[0], setLatestMessageDatesByChannels = _k[1];
37199
+ var _f = React.useState(), channel = _f[0], setChannel = _f[1];
37200
+ var _g = React.useState([]), mutes = _g[0], setMutes = _g[1];
37201
+ var _h = React.useState(initialNavOpen), navOpen = _h[0], setNavOpen = _h[1];
37202
+ var _j = React.useState({}), latestMessageDatesByChannels = _j[0], setLatestMessageDatesByChannels = _j[1];
37213
37203
  var clientMutes = ((_b = client.user) === null || _b === void 0 ? void 0 : _b.mutes) || [];
37214
37204
  var closeMobileNav = function () { return setNavOpen(false); };
37215
37205
  var openMobileNav = function () { return setTimeout(function () { return setNavOpen(true); }, 100); };
@@ -37280,7 +37270,6 @@ var useChat = function (_a) {
37280
37270
  }, [(_c = client.user) === null || _c === void 0 ? void 0 : _c.id]);
37281
37271
  return {
37282
37272
  channel: channel,
37283
- channels: channels,
37284
37273
  closeMobileNav: closeMobileNav,
37285
37274
  getAppSettings: getAppSettings,
37286
37275
  latestMessageDatesByChannels: latestMessageDatesByChannels,
@@ -37288,14 +37277,13 @@ var useChat = function (_a) {
37288
37277
  navOpen: navOpen,
37289
37278
  openMobileNav: openMobileNav,
37290
37279
  setActiveChannel: setActiveChannel,
37291
- setChannels: setChannels,
37292
37280
  translators: translators,
37293
37281
  };
37294
37282
  };
37295
37283
 
37296
37284
  var useCreateChatContext = function (value) {
37297
37285
  var _a;
37298
- var channel = value.channel, channels = value.channels, channelsQueryState = value.channelsQueryState, client = value.client, closeMobileNav = value.closeMobileNav, customClasses = value.customClasses, getAppSettings = value.getAppSettings, latestMessageDatesByChannels = value.latestMessageDatesByChannels, mutes = value.mutes, navOpen = value.navOpen, openMobileNav = value.openMobileNav, setActiveChannel = value.setActiveChannel, setChannels = value.setChannels, theme = value.theme, themeVersion = value.themeVersion, useImageFlagEmojisOnWindows = value.useImageFlagEmojisOnWindows;
37286
+ var channel = value.channel, channelsQueryState = value.channelsQueryState, client = value.client, closeMobileNav = value.closeMobileNav, customClasses = value.customClasses, getAppSettings = value.getAppSettings, latestMessageDatesByChannels = value.latestMessageDatesByChannels, mutes = value.mutes, navOpen = value.navOpen, openMobileNav = value.openMobileNav, setActiveChannel = value.setActiveChannel, theme = value.theme, themeVersion = value.themeVersion, useImageFlagEmojisOnWindows = value.useImageFlagEmojisOnWindows;
37299
37287
  var channelCid = channel === null || channel === void 0 ? void 0 : channel.cid;
37300
37288
  var channelsQueryError = channelsQueryState.error;
37301
37289
  var channelsQueryInProgress = channelsQueryState.queryInProgress;
@@ -37303,7 +37291,6 @@ var useCreateChatContext = function (value) {
37303
37291
  var mutedUsersLength = mutes.length;
37304
37292
  var chatContext = React.useMemo(function () { return ({
37305
37293
  channel: channel,
37306
- channels: channels,
37307
37294
  channelsQueryState: channelsQueryState,
37308
37295
  client: client,
37309
37296
  closeMobileNav: closeMobileNav,
@@ -37314,7 +37301,6 @@ var useCreateChatContext = function (value) {
37314
37301
  navOpen: navOpen,
37315
37302
  openMobileNav: openMobileNav,
37316
37303
  setActiveChannel: setActiveChannel,
37317
- setChannels: setChannels,
37318
37304
  theme: theme,
37319
37305
  themeVersion: themeVersion,
37320
37306
  useImageFlagEmojisOnWindows: useImageFlagEmojisOnWindows,
@@ -37322,12 +37308,10 @@ var useCreateChatContext = function (value) {
37322
37308
  channelCid,
37323
37309
  channelsQueryError,
37324
37310
  channelsQueryInProgress,
37325
- channels,
37326
37311
  clientValues,
37327
37312
  getAppSettings,
37328
37313
  mutedUsersLength,
37329
37314
  navOpen,
37330
- setChannels,
37331
37315
  ]);
37332
37316
  return chatContext;
37333
37317
  };
@@ -37386,7 +37370,7 @@ var useCustomStyles = function (customStyles) {
37386
37370
  */
37387
37371
  var Chat = function (props) {
37388
37372
  var children = props.children, client = props.client, customClasses = props.customClasses, customStyles = props.customStyles, _a = props.darkMode, darkMode = _a === void 0 ? false : _a, defaultLanguage = props.defaultLanguage, i18nInstance = props.i18nInstance, _b = props.initialNavOpen, initialNavOpen = _b === void 0 ? true : _b, _c = props.theme, theme = _c === void 0 ? 'messaging light' : _c, _d = props.useImageFlagEmojisOnWindows, useImageFlagEmojisOnWindows = _d === void 0 ? false : _d;
37389
- var _e = useChat({ client: client, defaultLanguage: defaultLanguage, i18nInstance: i18nInstance, initialNavOpen: initialNavOpen }), channel = _e.channel, channels = _e.channels, closeMobileNav = _e.closeMobileNav, getAppSettings = _e.getAppSettings, latestMessageDatesByChannels = _e.latestMessageDatesByChannels, mutes = _e.mutes, navOpen = _e.navOpen, openMobileNav = _e.openMobileNav, setActiveChannel = _e.setActiveChannel, setChannels = _e.setChannels, translators = _e.translators;
37373
+ var _e = useChat({ client: client, defaultLanguage: defaultLanguage, i18nInstance: i18nInstance, initialNavOpen: initialNavOpen }), channel = _e.channel, closeMobileNav = _e.closeMobileNav, getAppSettings = _e.getAppSettings, latestMessageDatesByChannels = _e.latestMessageDatesByChannels, mutes = _e.mutes, navOpen = _e.navOpen, openMobileNav = _e.openMobileNav, setActiveChannel = _e.setActiveChannel, translators = _e.translators;
37390
37374
  var channelsQueryState = useChannelsQueryState();
37391
37375
  var themeVersion = typeof window !== 'undefined'
37392
37376
  ? (window
@@ -37397,7 +37381,6 @@ var Chat = function (props) {
37397
37381
  useCustomStyles(darkMode ? darkModeTheme : customStyles);
37398
37382
  var chatContextValue = useCreateChatContext({
37399
37383
  channel: channel,
37400
- channels: channels,
37401
37384
  channelsQueryState: channelsQueryState,
37402
37385
  client: client,
37403
37386
  closeMobileNav: closeMobileNav,
@@ -37408,7 +37391,6 @@ var Chat = function (props) {
37408
37391
  navOpen: navOpen,
37409
37392
  openMobileNav: openMobileNav,
37410
37393
  setActiveChannel: setActiveChannel,
37411
- setChannels: setChannels,
37412
37394
  theme: theme,
37413
37395
  themeVersion: themeVersion,
37414
37396
  useImageFlagEmojisOnWindows: useImageFlagEmojisOnWindows,
@@ -38774,11 +38756,14 @@ function useNewMessageNotification(messages, currentUserId, hasMoreNewer) {
38774
38756
  };
38775
38757
  }
38776
38758
 
38777
- var STATUSES_EXCLUDED_FROM_PREPEND = ['sending', 'failed'];
38759
+ var STATUSES_EXCLUDED_FROM_PREPEND = {
38760
+ failed: true,
38761
+ sending: true,
38762
+ };
38778
38763
  function usePrependedMessagesCount(messages, hasDateSeparator) {
38779
38764
  var firstRealMessageIndex = hasDateSeparator ? 1 : 0;
38780
- var firstMessageId = React.useRef();
38781
- var earliestMessageId = React.useRef();
38765
+ var firstMessageOnFirstLoadedPage = React.useRef();
38766
+ var previousFirstMessageOnFirstLoadedPage = React.useRef();
38782
38767
  var previousNumItemsPrepended = React.useRef(0);
38783
38768
  var numItemsPrepended = React.useMemo(function () {
38784
38769
  var _a, _b;
@@ -38786,47 +38771,43 @@ function usePrependedMessagesCount(messages, hasDateSeparator) {
38786
38771
  previousNumItemsPrepended.current = 0;
38787
38772
  return 0;
38788
38773
  }
38789
- var currentFirstMessageId = (_a = messages === null || messages === void 0 ? void 0 : messages[firstRealMessageIndex]) === null || _a === void 0 ? void 0 : _a.id;
38790
- // if no new messages were prepended, return early (same amount as before)
38791
- if (currentFirstMessageId === earliestMessageId.current) {
38774
+ var currentFirstMessage = messages === null || messages === void 0 ? void 0 : messages[firstRealMessageIndex];
38775
+ var noNewMessages = (currentFirstMessage === null || currentFirstMessage === void 0 ? void 0 : currentFirstMessage.id) === ((_a = previousFirstMessageOnFirstLoadedPage.current) === null || _a === void 0 ? void 0 : _a.id);
38776
+ // This is possible only, when sending messages very quickly (basically single char messages submitted like a crazy) in empty channel (first page)
38777
+ // Optimistic UI update, when sending messages, can lead to a situation, when
38778
+ // the order of the messages changes for a moment. This can happen, when a user
38779
+ // sends multiple messages withing few milliseconds. E.g. we send a message A
38780
+ // then message B. At first we have message array with both messages of status "sending"
38781
+ // then response for message A is received with a new - later - created_at timestamp
38782
+ // this leads to rearrangement of 1.B ("sending"), 2.A ("received"). Still firstMessageOnFirstLoadedPage.current
38783
+ // points to message A, but now this message has index 1 => previousNumItemsPrepended.current === 1
38784
+ // That in turn leads to incorrect index calculation in VirtualizedMessageList trying to access a message
38785
+ // at non-existent index. Therefore, we ignore messages of status "sending" / "failed" in order they are
38786
+ // not considered as prepended messages.
38787
+ var firstMsgMovedAfterMessagesInExcludedStatus = (currentFirstMessage === null || currentFirstMessage === void 0 ? void 0 : currentFirstMessage.status) && STATUSES_EXCLUDED_FROM_PREPEND[currentFirstMessage.status];
38788
+ if (noNewMessages || firstMsgMovedAfterMessagesInExcludedStatus) {
38792
38789
  return previousNumItemsPrepended.current;
38793
38790
  }
38794
- if (!firstMessageId.current) {
38795
- firstMessageId.current = currentFirstMessageId;
38791
+ if (!firstMessageOnFirstLoadedPage.current) {
38792
+ firstMessageOnFirstLoadedPage.current = currentFirstMessage;
38796
38793
  }
38797
- earliestMessageId.current = currentFirstMessageId;
38794
+ previousFirstMessageOnFirstLoadedPage.current = currentFirstMessage;
38798
38795
  // if new messages were prepended, find out how many
38799
38796
  // start with this number because there cannot be fewer prepended items than before
38800
- var adjustPrependedMessageCount = 0;
38801
- for (var i = previousNumItemsPrepended.current; i < messages.length; i += 1) {
38802
- // Optimistic UI update, when sending messages, can lead to a situation, when
38803
- // the order of the messages changes for a moment. This can happen, when a user
38804
- // sends multiple messages withing few milliseconds. E.g. we send a message A
38805
- // then message B. At first we have message array with both messages of status "sending"
38806
- // then response for message A is received with a new - later - created_at timestamp
38807
- // this leads to rearrangement of 1.B ("sending"), 2.A ("received"). Still firstMessageId.current
38808
- // points to message A, but now this message has index 1 => previousNumItemsPrepended.current === 1
38809
- // That in turn leads to incorrect index calculation in VirtualizedMessageList trying to access a message
38810
- // at non-existent index. Therefore, we ignore messages of status "sending" / "failed" in order they are
38811
- // not considered as prepended messages.
38812
- if (((_b = messages[i]) === null || _b === void 0 ? void 0 : _b.status) &&
38813
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
38814
- STATUSES_EXCLUDED_FROM_PREPEND.includes(messages[i].status) &&
38815
- messages[i].id !== firstMessageId.current) {
38816
- adjustPrependedMessageCount++;
38817
- }
38818
- if (messages[i].id === firstMessageId.current) {
38819
- previousNumItemsPrepended.current = i - adjustPrependedMessageCount;
38820
- return previousNumItemsPrepended.current;
38797
+ for (var prependedMessageCount = previousNumItemsPrepended.current; prependedMessageCount < messages.length; prependedMessageCount += 1) {
38798
+ var messageIsFirstOnFirstLoadedPage = messages[prependedMessageCount].id === ((_b = firstMessageOnFirstLoadedPage.current) === null || _b === void 0 ? void 0 : _b.id);
38799
+ if (messageIsFirstOnFirstLoadedPage) {
38800
+ previousNumItemsPrepended.current = prependedMessageCount;
38801
+ return prependedMessageCount;
38821
38802
  }
38822
38803
  }
38823
38804
  // if no match has found, we have jumped - reset the prepended item count.
38824
- firstMessageId.current = currentFirstMessageId;
38805
+ firstMessageOnFirstLoadedPage.current = currentFirstMessage;
38825
38806
  previousNumItemsPrepended.current = 0;
38826
38807
  return 0;
38827
38808
  // TODO: there's a bug here, the messages prop is the same array instance (something mutates it)
38828
38809
  // that's why the second dependency is necessary
38829
- }, [messages, messages === null || messages === void 0 ? void 0 : messages.length]);
38810
+ }, [firstRealMessageIndex, messages, messages === null || messages === void 0 ? void 0 : messages.length]);
38830
38811
  return numItemsPrepended;
38831
38812
  }
38832
38813
 
@@ -39288,6 +39269,8 @@ var generateRandomId = icons.nanoid;
39288
39269
 
39289
39270
  exports.ChannelActionContext = icons.ChannelActionContext;
39290
39271
  exports.ChannelActionProvider = icons.ChannelActionProvider;
39272
+ exports.ChannelListContext = icons.ChannelListContext;
39273
+ exports.ChannelListContextProvider = icons.ChannelListContextProvider;
39291
39274
  exports.ChannelStateContext = icons.ChannelStateContext;
39292
39275
  exports.ChannelStateProvider = icons.ChannelStateProvider;
39293
39276
  exports.ChatContext = icons.ChatContext;
@@ -39340,6 +39323,7 @@ exports.ptTranslations = icons.ptTranslations;
39340
39323
  exports.ruTranslations = icons.ruTranslations;
39341
39324
  exports.trTranslations = icons.trTranslations;
39342
39325
  exports.useChannelActionContext = icons.useChannelActionContext;
39326
+ exports.useChannelListContext = icons.useChannelListContext;
39343
39327
  exports.useChannelStateContext = icons.useChannelStateContext;
39344
39328
  exports.useChatContext = icons.useChatContext;
39345
39329
  exports.useComponentContext = icons.useComponentContext;
@@ -39366,6 +39350,7 @@ exports.Audio = Audio;
39366
39350
  exports.AudioContainer = AudioContainer;
39367
39351
  exports.AutoCompleteTextarea = ReactTextareaAutocomplete;
39368
39352
  exports.Avatar = Avatar;
39353
+ exports.BaseImage = BaseImage;
39369
39354
  exports.Card = Card;
39370
39355
  exports.CardAudio = CardAudio;
39371
39356
  exports.CardContainer = CardContainer;