stream-chat-react 12.15.0 → 13.0.0-rc.2

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 (473) hide show
  1. package/dist/components/AIStateIndicator/AIStateIndicator.d.ts +4 -5
  2. package/dist/components/AIStateIndicator/hooks/useAIState.d.ts +2 -3
  3. package/dist/components/Attachment/Attachment.d.ts +8 -9
  4. package/dist/components/Attachment/Attachment.js +6 -5
  5. package/dist/components/Attachment/AttachmentActions.d.ts +2 -3
  6. package/dist/components/Attachment/AttachmentContainer.d.ts +15 -15
  7. package/dist/components/Attachment/AttachmentContainer.js +2 -2
  8. package/dist/components/Attachment/Audio.d.ts +3 -4
  9. package/dist/components/Attachment/Card.d.ts +1 -1
  10. package/dist/components/Attachment/FileAttachment.d.ts +3 -4
  11. package/dist/components/Attachment/FileAttachment.js +1 -1
  12. package/dist/components/Attachment/UnsupportedAttachment.d.ts +3 -4
  13. package/dist/components/Attachment/UnsupportedAttachment.js +1 -1
  14. package/dist/components/Attachment/VoiceRecording.d.ts +4 -5
  15. package/dist/components/Attachment/components/FileSizeIndicator.d.ts +1 -1
  16. package/dist/components/Attachment/components/FileSizeIndicator.js +4 -2
  17. package/dist/components/Attachment/utils.d.ts +8 -22
  18. package/dist/components/Attachment/utils.js +3 -18
  19. package/dist/components/Avatar/Avatar.d.ts +3 -4
  20. package/dist/components/Avatar/ChannelAvatar.d.ts +3 -4
  21. package/dist/components/Avatar/ChannelAvatar.js +1 -1
  22. package/dist/components/Avatar/GroupAvatar.d.ts +2 -2
  23. package/dist/components/Channel/Channel.d.ts +18 -43
  24. package/dist/components/Channel/Channel.js +25 -88
  25. package/dist/components/Channel/channelState.d.ts +17 -18
  26. package/dist/components/Channel/hooks/useChannelContainerClasses.d.ts +2 -3
  27. package/dist/components/Channel/hooks/useCreateChannelStateContext.d.ts +2 -3
  28. package/dist/components/Channel/hooks/useCreateChannelStateContext.js +1 -15
  29. package/dist/components/Channel/hooks/useCreateTypingContext.d.ts +1 -2
  30. package/dist/components/Channel/hooks/useEditMessageHandler.d.ts +3 -4
  31. package/dist/components/Channel/hooks/useMentionsHandlers.d.ts +3 -4
  32. package/dist/components/Channel/utils.d.ts +8 -6
  33. package/dist/components/Channel/utils.js +1 -0
  34. package/dist/components/ChannelHeader/ChannelHeader.d.ts +2 -3
  35. package/dist/components/ChannelList/ChannelList.d.ts +31 -30
  36. package/dist/components/ChannelList/ChannelList.js +8 -10
  37. package/dist/components/ChannelList/ChannelListMessenger.d.ts +6 -6
  38. package/dist/components/ChannelList/hooks/useChannelDeletedListener.d.ts +1 -2
  39. package/dist/components/ChannelList/hooks/useChannelHiddenListener.d.ts +1 -2
  40. package/dist/components/ChannelList/hooks/useChannelListShape.d.ts +44 -44
  41. package/dist/components/ChannelList/hooks/useChannelListShape.js +0 -2
  42. package/dist/components/ChannelList/hooks/useChannelMembershipState.d.ts +3 -3
  43. package/dist/components/ChannelList/hooks/useChannelTruncatedListener.d.ts +1 -2
  44. package/dist/components/ChannelList/hooks/useChannelUpdatedListener.d.ts +1 -2
  45. package/dist/components/ChannelList/hooks/useChannelVisibleListener.d.ts +1 -2
  46. package/dist/components/ChannelList/hooks/useConnectionRecoveredListener.d.ts +1 -2
  47. package/dist/components/ChannelList/hooks/useMessageNewListener.d.ts +1 -2
  48. package/dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.d.ts +1 -2
  49. package/dist/components/ChannelList/hooks/useNotificationMessageNewListener.d.ts +1 -2
  50. package/dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.d.ts +1 -2
  51. package/dist/components/ChannelList/hooks/usePaginatedChannels.d.ts +7 -8
  52. package/dist/components/ChannelList/hooks/usePaginatedChannels.js +3 -3
  53. package/dist/components/ChannelList/hooks/useSelectedChannelState.d.ts +7 -7
  54. package/dist/components/ChannelList/hooks/useUserPresenceChangedListener.d.ts +1 -2
  55. package/dist/components/ChannelList/utils.d.ts +20 -21
  56. package/dist/components/ChannelList/utils.js +2 -2
  57. package/dist/components/ChannelPreview/ChannelPreview.d.ts +15 -16
  58. package/dist/components/ChannelPreview/ChannelPreview.js +1 -1
  59. package/dist/components/ChannelPreview/ChannelPreviewActionButtons.d.ts +4 -4
  60. package/dist/components/ChannelPreview/ChannelPreviewMessenger.d.ts +1 -2
  61. package/dist/components/ChannelPreview/hooks/useChannelPreviewInfo.d.ts +3 -4
  62. package/dist/components/ChannelPreview/hooks/useIsChannelMuted.d.ts +1 -2
  63. package/dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.d.ts +5 -7
  64. package/dist/components/ChannelPreview/icons.d.ts +1 -1
  65. package/dist/components/ChannelPreview/utils.d.ts +7 -7
  66. package/dist/components/ChannelSearch/ChannelSearch.d.ts +5 -6
  67. package/dist/components/ChannelSearch/ChannelSearch.js +2 -2
  68. package/dist/components/ChannelSearch/SearchBar.d.ts +1 -1
  69. package/dist/components/ChannelSearch/SearchBar.js +1 -1
  70. package/dist/components/ChannelSearch/SearchResults.d.ts +13 -14
  71. package/dist/components/ChannelSearch/SearchResults.js +1 -1
  72. package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts +17 -18
  73. package/dist/components/ChannelSearch/hooks/useChannelSearch.js +2 -6
  74. package/dist/components/ChannelSearch/utils.d.ts +2 -3
  75. package/dist/components/Chat/Chat.d.ts +9 -9
  76. package/dist/components/Chat/hooks/useChannelsQueryState.d.ts +1 -1
  77. package/dist/components/Chat/hooks/useChat.d.ts +10 -10
  78. package/dist/components/Chat/hooks/useChat.js +3 -3
  79. package/dist/components/Chat/hooks/useCreateChatClient.d.ts +4 -4
  80. package/dist/components/Chat/hooks/useCreateChatContext.d.ts +1 -2
  81. package/dist/components/Dialog/DialogAnchor.d.ts +4 -3
  82. package/dist/components/Dialog/DialogAnchor.js +2 -2
  83. package/dist/components/Dialog/DialogMenu.d.ts +2 -1
  84. package/dist/components/Dialog/DialogPortal.d.ts +2 -1
  85. package/dist/components/Dialog/FormDialog.d.ts +2 -1
  86. package/dist/components/Dialog/FormDialog.js +1 -1
  87. package/dist/components/Dialog/PromptDialog.d.ts +2 -1
  88. package/dist/components/DragAndDrop/DragAndDropContainer.d.ts +2 -1
  89. package/dist/components/EventComponent/EventComponent.d.ts +7 -6
  90. package/dist/components/Form/FieldError.d.ts +2 -1
  91. package/dist/components/Form/SwitchField.d.ts +2 -1
  92. package/dist/components/Form/SwitchField.js +1 -1
  93. package/dist/components/Gallery/Gallery.d.ts +5 -5
  94. package/dist/components/Gallery/Image.d.ts +6 -5
  95. package/dist/components/Gallery/ModalGallery.d.ts +3 -4
  96. package/dist/components/InfiniteScrollPaginator/InfiniteScroll.d.ts +2 -1
  97. package/dist/components/InfiniteScrollPaginator/InfiniteScrollPaginator.d.ts +2 -1
  98. package/dist/components/LoadMore/LoadMoreButton.d.ts +2 -1
  99. package/dist/components/LoadMore/LoadMorePaginator.d.ts +3 -2
  100. package/dist/components/LoadMore/LoadMorePaginator.js +1 -1
  101. package/dist/components/MediaRecorder/AudioRecorder/AudioRecorder.js +3 -2
  102. package/dist/components/MediaRecorder/AudioRecorder/AudioRecordingInProgress.js +1 -1
  103. package/dist/components/MediaRecorder/RecordingPermissionDeniedNotification.d.ts +1 -1
  104. package/dist/components/MediaRecorder/classes/MediaRecorderController.d.ts +11 -23
  105. package/dist/components/MediaRecorder/hooks/useMediaRecorder.d.ts +8 -8
  106. package/dist/components/MediaRecorder/hooks/useMediaRecorder.js +6 -4
  107. package/dist/components/MediaRecorder/observable/BehaviorSubject.d.ts +2 -2
  108. package/dist/components/MediaRecorder/observable/Observable.d.ts +1 -1
  109. package/dist/components/MediaRecorder/observable/Subject.d.ts +3 -2
  110. package/dist/components/Message/FixedHeightMessage.d.ts +4 -5
  111. package/dist/components/Message/Message.d.ts +1 -2
  112. package/dist/components/Message/MessageDeleted.d.ts +4 -5
  113. package/dist/components/Message/MessageEditedTimestamp.d.ts +2 -3
  114. package/dist/components/Message/MessageErrorText.d.ts +4 -5
  115. package/dist/components/Message/MessageErrorText.js +2 -2
  116. package/dist/components/Message/MessageOptions.d.ts +3 -3
  117. package/dist/components/Message/MessageRepliesCountButton.d.ts +2 -1
  118. package/dist/components/Message/MessageSimple.d.ts +1 -2
  119. package/dist/components/Message/MessageSimple.js +8 -10
  120. package/dist/components/Message/MessageStatus.d.ts +3 -4
  121. package/dist/components/Message/MessageText.d.ts +6 -6
  122. package/dist/components/Message/MessageTimestamp.d.ts +4 -5
  123. package/dist/components/Message/QuotedMessage.d.ts +2 -3
  124. package/dist/components/Message/QuotedMessage.js +1 -1
  125. package/dist/components/Message/StreamedMessageText.d.ts +3 -4
  126. package/dist/components/Message/hooks/useActionHandler.d.ts +2 -3
  127. package/dist/components/Message/hooks/useActionHandler.js +1 -1
  128. package/dist/components/Message/hooks/useDeleteHandler.d.ts +4 -5
  129. package/dist/components/Message/hooks/useFlagHandler.d.ts +5 -6
  130. package/dist/components/Message/hooks/useMarkUnreadHandler.d.ts +5 -6
  131. package/dist/components/Message/hooks/useMentionsHandler.d.ts +6 -8
  132. package/dist/components/Message/hooks/useMessageTextStreaming.d.ts +2 -3
  133. package/dist/components/Message/hooks/useMuteHandler.d.ts +5 -7
  134. package/dist/components/Message/hooks/useMuteHandler.js +1 -1
  135. package/dist/components/Message/hooks/useOpenThreadHandler.d.ts +2 -3
  136. package/dist/components/Message/hooks/usePinHandler.d.ts +4 -5
  137. package/dist/components/Message/hooks/usePinHandler.js +1 -1
  138. package/dist/components/Message/hooks/useReactionHandler.d.ts +3 -4
  139. package/dist/components/Message/hooks/useReactionHandler.js +2 -4
  140. package/dist/components/Message/hooks/useReactionsFetcher.d.ts +5 -7
  141. package/dist/components/Message/hooks/useRetryHandler.d.ts +2 -3
  142. package/dist/components/Message/hooks/useRetryHandler.js +1 -1
  143. package/dist/components/Message/hooks/useUserHandler.d.ts +5 -6
  144. package/dist/components/Message/hooks/useUserRole.d.ts +2 -3
  145. package/dist/components/Message/hooks/useUserRole.js +1 -1
  146. package/dist/components/Message/icons.d.ts +2 -2
  147. package/dist/components/Message/icons.js +1 -1
  148. package/dist/components/Message/renderText/componentRenderers/Anchor.d.ts +2 -1
  149. package/dist/components/Message/renderText/componentRenderers/Emoji.d.ts +1 -1
  150. package/dist/components/Message/renderText/componentRenderers/Mention.d.ts +5 -5
  151. package/dist/components/Message/renderText/componentRenderers/Mention.js +1 -1
  152. package/dist/components/Message/renderText/rehypePlugins/mentionsMarkdownPlugin.d.ts +1 -2
  153. package/dist/components/Message/renderText/renderText.d.ts +6 -6
  154. package/dist/components/Message/renderText/types.d.ts +1 -1
  155. package/dist/components/Message/types.d.ts +27 -28
  156. package/dist/components/Message/utils.d.ts +21 -22
  157. package/dist/components/Message/utils.js +5 -4
  158. package/dist/components/MessageActions/CustomMessageActionsList.d.ts +6 -7
  159. package/dist/components/MessageActions/MessageActions.d.ts +6 -5
  160. package/dist/components/MessageActions/MessageActions.js +1 -1
  161. package/dist/components/MessageActions/MessageActionsBox.d.ts +5 -5
  162. package/dist/components/MessageActions/MessageActionsBox.js +4 -3
  163. package/dist/components/MessageActions/hooks/useMessageActionsBoxPopper.d.ts +1 -1
  164. package/dist/components/MessageBounce/MessageBounceModal.d.ts +4 -3
  165. package/dist/components/MessageBounce/MessageBouncePrompt.d.ts +1 -2
  166. package/dist/components/MessageInput/AttachmentPreviewList/AttachmentPreviewList.d.ts +11 -11
  167. package/dist/components/MessageInput/AttachmentPreviewList/AttachmentPreviewList.js +17 -14
  168. package/dist/components/MessageInput/AttachmentPreviewList/FileAttachmentPreview.d.ts +4 -12
  169. package/dist/components/MessageInput/AttachmentPreviewList/FileAttachmentPreview.js +8 -5
  170. package/dist/components/MessageInput/AttachmentPreviewList/ImageAttachmentPreview.d.ts +4 -5
  171. package/dist/components/MessageInput/AttachmentPreviewList/ImageAttachmentPreview.js +2 -2
  172. package/dist/components/MessageInput/AttachmentPreviewList/UnsupportedAttachmentPreview.d.ts +7 -5
  173. package/dist/components/MessageInput/AttachmentPreviewList/UnsupportedAttachmentPreview.js +5 -2
  174. package/dist/components/MessageInput/AttachmentPreviewList/VoiceRecordingPreview.d.ts +4 -5
  175. package/dist/components/MessageInput/AttachmentPreviewList/VoiceRecordingPreview.js +5 -2
  176. package/dist/components/MessageInput/AttachmentPreviewList/index.d.ts +1 -1
  177. package/dist/components/MessageInput/AttachmentPreviewList/types.d.ts +3 -4
  178. package/dist/components/MessageInput/AttachmentSelector.d.ts +1 -2
  179. package/dist/components/MessageInput/AttachmentSelector.js +5 -3
  180. package/dist/components/MessageInput/EditMessageForm.d.ts +3 -2
  181. package/dist/components/MessageInput/EditMessageForm.js +30 -6
  182. package/dist/components/MessageInput/LinkPreviewList.d.ts +6 -4
  183. package/dist/components/MessageInput/LinkPreviewList.js +24 -10
  184. package/dist/components/MessageInput/MessageInput.d.ts +23 -45
  185. package/dist/components/MessageInput/MessageInput.js +24 -17
  186. package/dist/components/MessageInput/MessageInputFlat.d.ts +1 -2
  187. package/dist/components/MessageInput/MessageInputFlat.js +14 -39
  188. package/dist/components/MessageInput/QuotedMessagePreview.d.ts +4 -7
  189. package/dist/components/MessageInput/QuotedMessagePreview.js +22 -16
  190. package/dist/components/MessageInput/SendButton.d.ts +4 -5
  191. package/dist/components/MessageInput/SendButton.js +6 -2
  192. package/dist/components/MessageInput/WithDragAndDropUpload.d.ts +4 -3
  193. package/dist/components/MessageInput/WithDragAndDropUpload.js +20 -9
  194. package/dist/components/MessageInput/hooks/index.d.ts +5 -1
  195. package/dist/components/MessageInput/hooks/index.js +5 -1
  196. package/dist/components/MessageInput/hooks/useAttachmentManagerState.d.ts +10 -0
  197. package/dist/components/MessageInput/hooks/useAttachmentManagerState.js +19 -0
  198. package/dist/components/MessageInput/hooks/useCanCreatePoll.d.ts +1 -0
  199. package/dist/components/MessageInput/hooks/useCanCreatePoll.js +10 -0
  200. package/dist/components/MessageInput/hooks/useCooldownTimer.d.ts +2 -3
  201. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts +1 -2
  202. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +1 -55
  203. package/dist/components/MessageInput/hooks/useMessageComposer.d.ts +2 -0
  204. package/dist/components/MessageInput/hooks/useMessageComposer.js +80 -0
  205. package/dist/components/MessageInput/hooks/useMessageComposerHasSendableData.d.ts +1 -0
  206. package/dist/components/MessageInput/hooks/useMessageComposerHasSendableData.js +8 -0
  207. package/dist/components/MessageInput/hooks/useMessageInputControls.d.ts +12 -0
  208. package/dist/components/MessageInput/hooks/useMessageInputControls.js +23 -0
  209. package/dist/components/MessageInput/hooks/useMessageInputText.d.ts +1 -5
  210. package/dist/components/MessageInput/hooks/useMessageInputText.js +19 -53
  211. package/dist/components/MessageInput/hooks/usePasteHandler.d.ts +1 -3
  212. package/dist/components/MessageInput/hooks/usePasteHandler.js +6 -8
  213. package/dist/components/MessageInput/hooks/useSubmitHandler.d.ts +2 -6
  214. package/dist/components/MessageInput/hooks/useSubmitHandler.js +30 -98
  215. package/dist/components/MessageInput/hooks/utils.d.ts +0 -27
  216. package/dist/components/MessageInput/hooks/utils.js +0 -124
  217. package/dist/components/MessageInput/index.d.ts +0 -2
  218. package/dist/components/MessageInput/index.js +0 -2
  219. package/dist/components/MessageList/ConnectionStatus.d.ts +1 -2
  220. package/dist/components/MessageList/ConnectionStatus.js +1 -1
  221. package/dist/components/MessageList/CustomNotification.d.ts +2 -1
  222. package/dist/components/MessageList/GiphyPreviewMessage.d.ts +4 -5
  223. package/dist/components/MessageList/MessageList.d.ts +11 -12
  224. package/dist/components/MessageList/MessageList.js +4 -4
  225. package/dist/components/MessageList/MessageNotification.d.ts +2 -1
  226. package/dist/components/MessageList/VirtualizedMessageList.d.ts +22 -21
  227. package/dist/components/MessageList/VirtualizedMessageList.js +6 -6
  228. package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts +10 -10
  229. package/dist/components/MessageList/VirtualizedMessageListComponents.js +7 -7
  230. package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.d.ts +8 -10
  231. package/dist/components/MessageList/hooks/MessageList/useEnrichedMessages.js +1 -1
  232. package/dist/components/MessageList/hooks/MessageList/useMessageListElements.d.ts +11 -12
  233. package/dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.d.ts +4 -5
  234. package/dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.d.ts +5 -6
  235. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.d.ts +4 -5
  236. package/dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.js +3 -2
  237. package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.d.ts +4 -5
  238. package/dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.js +1 -1
  239. package/dist/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.d.ts +2 -3
  240. package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.d.ts +2 -3
  241. package/dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.js +6 -2
  242. package/dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.d.ts +4 -5
  243. package/dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.d.ts +2 -3
  244. package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.d.ts +3 -4
  245. package/dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.js +5 -6
  246. package/dist/components/MessageList/hooks/useLastReadData.d.ts +5 -6
  247. package/dist/components/MessageList/hooks/useLastReadData.js +5 -1
  248. package/dist/components/MessageList/hooks/useMarkRead.d.ts +1 -2
  249. package/dist/components/MessageList/renderMessages.d.ts +14 -14
  250. package/dist/components/MessageList/renderMessages.js +8 -7
  251. package/dist/components/MessageList/utils.d.ts +34 -28
  252. package/dist/components/MessageList/utils.js +26 -21
  253. package/dist/components/Modal/Modal.d.ts +2 -1
  254. package/dist/components/Poll/Poll.d.ts +2 -3
  255. package/dist/components/Poll/Poll.js +1 -1
  256. package/dist/components/Poll/PollActions/AddCommentForm.d.ts +1 -2
  257. package/dist/components/Poll/PollActions/AddCommentForm.js +4 -2
  258. package/dist/components/Poll/PollActions/EndPollDialog.d.ts +1 -2
  259. package/dist/components/Poll/PollActions/EndPollDialog.js +1 -1
  260. package/dist/components/Poll/PollActions/PollAction.d.ts +2 -1
  261. package/dist/components/Poll/PollActions/PollActions.d.ts +7 -8
  262. package/dist/components/Poll/PollActions/PollActions.js +5 -5
  263. package/dist/components/Poll/PollActions/PollAnswerList.d.ts +1 -2
  264. package/dist/components/Poll/PollActions/PollOptionsFullList.d.ts +1 -2
  265. package/dist/components/Poll/PollActions/PollOptionsFullList.js +4 -2
  266. package/dist/components/Poll/PollActions/PollResults/PollOptionVotesList.d.ts +3 -4
  267. package/dist/components/Poll/PollActions/PollResults/PollOptionVotesList.js +1 -1
  268. package/dist/components/Poll/PollActions/PollResults/PollOptionWithLatestVotes.d.ts +3 -4
  269. package/dist/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.d.ts +4 -5
  270. package/dist/components/Poll/PollActions/PollResults/PollOptionWithVotesHeader.js +1 -1
  271. package/dist/components/Poll/PollActions/PollResults/PollResults.d.ts +1 -2
  272. package/dist/components/Poll/PollActions/PollResults/PollResults.js +1 -1
  273. package/dist/components/Poll/PollActions/SuggestPollOptionForm.d.ts +1 -2
  274. package/dist/components/Poll/PollActions/SuggestPollOptionForm.js +3 -1
  275. package/dist/components/Poll/PollContent.d.ts +1 -2
  276. package/dist/components/Poll/PollCreationDialog/MultipleAnswersField.d.ts +2 -0
  277. package/dist/components/Poll/PollCreationDialog/MultipleAnswersField.js +35 -0
  278. package/dist/components/Poll/PollCreationDialog/NameField.d.ts +2 -0
  279. package/dist/components/Poll/PollCreationDialog/NameField.js +26 -0
  280. package/dist/components/Poll/PollCreationDialog/OptionFieldSet.d.ts +1 -8
  281. package/dist/components/Poll/PollCreationDialog/OptionFieldSet.js +33 -65
  282. package/dist/components/Poll/PollCreationDialog/PollCreationDialog.js +31 -85
  283. package/dist/components/Poll/PollCreationDialog/PollCreationDialogControls.d.ts +1 -4
  284. package/dist/components/Poll/PollCreationDialog/PollCreationDialogControls.js +15 -41
  285. package/dist/components/Poll/PollCreationDialog/types.d.ts +0 -14
  286. package/dist/components/Poll/PollHeader.d.ts +1 -2
  287. package/dist/components/Poll/PollOptionList.d.ts +1 -2
  288. package/dist/components/Poll/PollOptionList.js +4 -2
  289. package/dist/components/Poll/PollOptionSelector.d.ts +3 -4
  290. package/dist/components/Poll/PollVote.d.ts +6 -7
  291. package/dist/components/Poll/PollVote.js +3 -3
  292. package/dist/components/Poll/QuotedPoll.d.ts +1 -2
  293. package/dist/components/Poll/constants.d.ts +0 -1
  294. package/dist/components/Poll/constants.js +0 -1
  295. package/dist/components/Poll/hooks/useManagePollVotesRealtime.d.ts +2 -3
  296. package/dist/components/Poll/hooks/usePollAnswerPagination.d.ts +2 -3
  297. package/dist/components/Poll/hooks/usePollAnswerPagination.js +2 -2
  298. package/dist/components/Poll/hooks/usePollOptionVotesPagination.d.ts +2 -3
  299. package/dist/components/Poll/hooks/usePollOptionVotesPagination.js +1 -1
  300. package/dist/components/Portal/Portal.d.ts +1 -1
  301. package/dist/components/ReactFileUtilities/FileIcon/FileIcon.d.ts +1 -1
  302. package/dist/components/ReactFileUtilities/FileIcon/FileIconSet.d.ts +2 -1
  303. package/dist/components/ReactFileUtilities/FileIcon/iconMap.d.ts +1 -1
  304. package/dist/components/ReactFileUtilities/UploadButton.d.ts +3 -2
  305. package/dist/components/ReactFileUtilities/UploadButton.js +16 -6
  306. package/dist/components/ReactFileUtilities/index.d.ts +0 -1
  307. package/dist/components/ReactFileUtilities/index.js +0 -1
  308. package/dist/components/ReactFileUtilities/utils.d.ts +2 -2
  309. package/dist/components/Reactions/ReactionSelector.d.ts +4 -5
  310. package/dist/components/Reactions/ReactionSelectorWithButton.d.ts +1 -2
  311. package/dist/components/Reactions/ReactionsList.d.ts +6 -7
  312. package/dist/components/Reactions/ReactionsList.js +2 -2
  313. package/dist/components/Reactions/ReactionsListModal.d.ts +9 -10
  314. package/dist/components/Reactions/SimpleReactionsList.d.ts +5 -6
  315. package/dist/components/Reactions/StreamEmoji.d.ts +1 -1
  316. package/dist/components/Reactions/hooks/useFetchReactions.d.ts +9 -10
  317. package/dist/components/Reactions/hooks/useProcessReactions.d.ts +1 -2
  318. package/dist/components/Reactions/types.d.ts +3 -4
  319. package/dist/components/Reactions/utils/utils.d.ts +1 -1
  320. package/dist/components/SafeAnchor/SafeAnchor.d.ts +2 -1
  321. package/dist/components/TextareaComposer/SuggestionList/CommandItem.d.ts +7 -0
  322. package/dist/components/{CommandItem → TextareaComposer/SuggestionList}/CommandItem.js +1 -2
  323. package/dist/components/{EmoticonItem → TextareaComposer/SuggestionList}/EmoticonItem.d.ts +7 -7
  324. package/dist/components/TextareaComposer/SuggestionList/EmoticonItem.js +12 -0
  325. package/dist/components/TextareaComposer/SuggestionList/SuggestionList.d.ts +14 -0
  326. package/dist/components/TextareaComposer/SuggestionList/SuggestionList.js +50 -0
  327. package/dist/components/TextareaComposer/SuggestionList/SuggestionListItem.d.ts +18 -0
  328. package/dist/components/TextareaComposer/SuggestionList/SuggestionListItem.js +24 -0
  329. package/dist/components/{UserItem → TextareaComposer/SuggestionList}/UserItem.d.ts +7 -4
  330. package/dist/components/TextareaComposer/SuggestionList/UserItem.js +24 -0
  331. package/dist/components/TextareaComposer/SuggestionList/index.d.ts +5 -0
  332. package/dist/components/TextareaComposer/SuggestionList/index.js +5 -0
  333. package/dist/components/TextareaComposer/TextareaComposer.d.ts +13 -0
  334. package/dist/components/TextareaComposer/TextareaComposer.js +155 -0
  335. package/dist/components/TextareaComposer/index.d.ts +2 -0
  336. package/dist/components/TextareaComposer/index.js +2 -0
  337. package/dist/components/Thread/Thread.d.ts +13 -10
  338. package/dist/components/Thread/Thread.js +23 -12
  339. package/dist/components/Thread/ThreadHead.d.ts +2 -3
  340. package/dist/components/Thread/ThreadHeader.d.ts +5 -6
  341. package/dist/components/Thread/ThreadHeader.js +1 -1
  342. package/dist/components/Threads/ThreadContext.d.ts +2 -2
  343. package/dist/components/Threads/ThreadContext.js +1 -4
  344. package/dist/components/Threads/ThreadList/ThreadList.d.ts +1 -1
  345. package/dist/components/Threads/ThreadList/ThreadListItem.d.ts +1 -1
  346. package/dist/components/Threads/hooks/useThreadManagerState.d.ts +1 -1
  347. package/dist/components/Threads/hooks/useThreadState.d.ts +1 -1
  348. package/dist/components/Threads/icons.d.ts +1 -1
  349. package/dist/components/Tooltip/Tooltip.d.ts +3 -2
  350. package/dist/components/Tooltip/hooks/useEnterLeaveHandlers.d.ts +1 -1
  351. package/dist/components/TypingIndicator/TypingIndicator.d.ts +1 -2
  352. package/dist/components/Window/Window.d.ts +6 -6
  353. package/dist/components/index.d.ts +1 -5
  354. package/dist/components/index.js +1 -5
  355. package/dist/context/AttachmentSelectorContext.d.ts +2 -1
  356. package/dist/context/ChannelActionContext.d.ts +26 -35
  357. package/dist/context/ChannelListContext.d.ts +9 -9
  358. package/dist/context/ChannelListContext.js +1 -1
  359. package/dist/context/ChannelStateContext.d.ts +24 -34
  360. package/dist/context/ChatContext.d.ts +18 -17
  361. package/dist/context/ComponentContext.d.ts +39 -37
  362. package/dist/context/DialogManagerContext.d.ts +2 -1
  363. package/dist/context/MessageBounceContext.d.ts +8 -7
  364. package/dist/context/MessageBounceContext.js +1 -1
  365. package/dist/context/MessageContext.d.ts +23 -23
  366. package/dist/context/MessageInputContext.d.ts +8 -26
  367. package/dist/context/MessageListContext.d.ts +2 -1
  368. package/dist/context/PollContext.d.ts +8 -8
  369. package/dist/context/TranslationContext.d.ts +2 -1
  370. package/dist/context/TypingContext.d.ts +11 -10
  371. package/dist/context/VirtualizedMessageListContext.d.ts +2 -1
  372. package/dist/context/WithComponents.d.ts +3 -2
  373. package/dist/css/v2/index.css +1 -1
  374. package/dist/css/v2/index.layout.css +1 -1
  375. package/dist/experimental/MessageActions/MessageActions.d.ts +1 -1
  376. package/dist/experimental/MessageActions/MessageActions.js +1 -1
  377. package/dist/experimental/MessageActions/defaults.js +4 -3
  378. package/dist/experimental/Search/Search.d.ts +1 -2
  379. package/dist/experimental/Search/SearchContext.d.ts +8 -8
  380. package/dist/experimental/Search/SearchResults/SearchResultItem.d.ts +11 -11
  381. package/dist/experimental/Search/SearchResults/SearchResultItem.js +3 -3
  382. package/dist/experimental/Search/SearchResults/SearchResults.d.ts +1 -2
  383. package/dist/experimental/Search/SearchResults/SearchResultsHeader.d.ts +1 -2
  384. package/dist/experimental/Search/SearchResults/SearchResultsHeader.js +1 -1
  385. package/dist/experimental/Search/SearchResults/SearchSourceResultList.d.ts +2 -3
  386. package/dist/experimental/Search/SearchResults/SearchSourceResultListFooter.d.ts +1 -2
  387. package/dist/experimental/Search/SearchResults/SearchSourceResults.d.ts +1 -2
  388. package/dist/experimental/Search/SearchResults/SearchSourceResults.js +1 -1
  389. package/dist/experimental/Search/SearchSourceResultsContext.d.ts +2 -1
  390. package/dist/experimental/Search/hooks/useSearchFocusedMessage.d.ts +1 -2
  391. package/dist/experimental/Search/hooks/useSearchFocusedMessage.js +3 -1
  392. package/dist/experimental/Search/hooks/useSearchQueriesInProgress.d.ts +3 -4
  393. package/dist/experimental/index.browser.cjs +1139 -1075
  394. package/dist/experimental/index.browser.cjs.map +4 -4
  395. package/dist/experimental/index.node.cjs +1139 -1075
  396. package/dist/experimental/index.node.cjs.map +4 -4
  397. package/dist/i18n/Streami18n.d.ts +1 -1
  398. package/dist/i18n/types.d.ts +2 -2
  399. package/dist/i18n/utils.d.ts +1 -1
  400. package/dist/i18n/utils.js +3 -1
  401. package/dist/index.browser.cjs +28513 -30641
  402. package/dist/index.browser.cjs.map +4 -4
  403. package/dist/index.node.cjs +30740 -32877
  404. package/dist/index.node.cjs.map +4 -4
  405. package/dist/plugins/Emojis/index.browser.cjs +133 -2
  406. package/dist/plugins/Emojis/index.browser.cjs.map +4 -4
  407. package/dist/plugins/Emojis/index.d.ts +1 -0
  408. package/dist/plugins/Emojis/index.js +1 -0
  409. package/dist/plugins/Emojis/index.node.cjs +135 -3
  410. package/dist/plugins/Emojis/index.node.cjs.map +4 -4
  411. package/dist/plugins/Emojis/middleware/index.d.ts +1 -0
  412. package/dist/plugins/Emojis/middleware/index.js +1 -0
  413. package/dist/plugins/Emojis/middleware/textComposerEmojiMiddleware.d.ts +66 -0
  414. package/dist/plugins/Emojis/middleware/textComposerEmojiMiddleware.js +143 -0
  415. package/dist/plugins/encoders/mp3.browser.cjs.map +2 -2
  416. package/dist/plugins/encoders/mp3.node.cjs.map +2 -2
  417. package/dist/scss/v2/Autocomplete/Autocomplete-layout.scss +14 -0
  418. package/dist/scss/v2/Autocomplete/Autocomplete-theme.scss +11 -0
  419. package/dist/scss/v2/LinkPreview/LinkPreview-layout.scss +18 -0
  420. package/dist/scss/v2/LinkPreview/LinkPreview-theme.scss +15 -0
  421. package/dist/types/defaultDataInterfaces.d.ts +25 -0
  422. package/dist/types/index.d.ts +2 -1
  423. package/dist/types/types.d.ts +2 -62
  424. package/dist/utils/getChannel.d.ts +5 -6
  425. package/dist/utils/mergeDeep.d.ts +2 -3
  426. package/package.json +5 -5
  427. package/dist/components/AutoCompleteTextarea/Item.d.ts +0 -2
  428. package/dist/components/AutoCompleteTextarea/Item.js +0 -10
  429. package/dist/components/AutoCompleteTextarea/List.d.ts +0 -17
  430. package/dist/components/AutoCompleteTextarea/List.js +0 -89
  431. package/dist/components/AutoCompleteTextarea/Textarea.d.ts +0 -114
  432. package/dist/components/AutoCompleteTextarea/Textarea.js +0 -593
  433. package/dist/components/AutoCompleteTextarea/index.d.ts +0 -4
  434. package/dist/components/AutoCompleteTextarea/index.js +0 -4
  435. package/dist/components/AutoCompleteTextarea/types.d.ts +0 -15
  436. package/dist/components/AutoCompleteTextarea/utils.d.ts +0 -6
  437. package/dist/components/AutoCompleteTextarea/utils.js +0 -40
  438. package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts +0 -78
  439. package/dist/components/ChatAutoComplete/ChatAutoComplete.js +0 -33
  440. package/dist/components/ChatAutoComplete/index.d.ts +0 -1
  441. package/dist/components/ChatAutoComplete/index.js +0 -1
  442. package/dist/components/CommandItem/CommandItem.d.ts +0 -12
  443. package/dist/components/CommandItem/index.d.ts +0 -1
  444. package/dist/components/CommandItem/index.js +0 -1
  445. package/dist/components/EmoticonItem/EmoticonItem.js +0 -16
  446. package/dist/components/EmoticonItem/index.d.ts +0 -1
  447. package/dist/components/EmoticonItem/index.js +0 -1
  448. package/dist/components/MessageInput/DefaultTriggerProvider.d.ts +0 -35
  449. package/dist/components/MessageInput/DefaultTriggerProvider.js +0 -24
  450. package/dist/components/MessageInput/DropzoneProvider.d.ts +0 -4
  451. package/dist/components/MessageInput/DropzoneProvider.js +0 -23
  452. package/dist/components/MessageInput/hooks/useAttachments.d.ts +0 -14
  453. package/dist/components/MessageInput/hooks/useAttachments.js +0 -209
  454. package/dist/components/MessageInput/hooks/useCommandTrigger.d.ts +0 -3
  455. package/dist/components/MessageInput/hooks/useCommandTrigger.js +0 -62
  456. package/dist/components/MessageInput/hooks/useEmojiTrigger.d.ts +0 -3
  457. package/dist/components/MessageInput/hooks/useEmojiTrigger.js +0 -29
  458. package/dist/components/MessageInput/hooks/useLinkPreviews.d.ts +0 -30
  459. package/dist/components/MessageInput/hooks/useLinkPreviews.js +0 -109
  460. package/dist/components/MessageInput/hooks/useMessageInputState.d.ts +0 -71
  461. package/dist/components/MessageInput/hooks/useMessageInputState.js +0 -200
  462. package/dist/components/MessageInput/hooks/useUserTrigger.d.ts +0 -12
  463. package/dist/components/MessageInput/hooks/useUserTrigger.js +0 -130
  464. package/dist/components/MessageInput/types.d.ts +0 -87
  465. package/dist/components/MessageInput/types.js +0 -19
  466. package/dist/components/ReactFileUtilities/ImageDropzone.d.ts +0 -16
  467. package/dist/components/ReactFileUtilities/ImageDropzone.js +0 -42
  468. package/dist/components/UserItem/UserItem.js +0 -26
  469. package/dist/components/UserItem/index.d.ts +0 -1
  470. package/dist/components/UserItem/index.js +0 -1
  471. /package/dist/components/{MessageInput → MediaRecorder/AudioRecorder}/hooks/useTimeElapsed.d.ts +0 -0
  472. /package/dist/components/{MessageInput → MediaRecorder/AudioRecorder}/hooks/useTimeElapsed.js +0 -0
  473. /package/dist/{components/AutoCompleteTextarea/types.js → types/defaultDataInterfaces.js} +0 -0
@@ -1,593 +0,0 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import Textarea from 'react-textarea-autosize';
4
- import getCaretCoordinates from 'textarea-caret';
5
- import clsx from 'clsx';
6
- import { List as DefaultSuggestionList } from './List';
7
- import { DEFAULT_CARET_POSITION, defaultScrollToItem, errorMessage, triggerPropsCheck, } from './utils';
8
- import { CommandItem } from '../CommandItem';
9
- import { UserItem } from '../UserItem';
10
- import { isSafari } from '../../utils/browsers';
11
- export class ReactTextareaAutocomplete extends React.Component {
12
- constructor(props) {
13
- super(props);
14
- // FIXME: unused method
15
- this.getSelectionPosition = () => {
16
- if (!this.textareaRef)
17
- return null;
18
- return {
19
- selectionEnd: this.textareaRef.selectionEnd,
20
- selectionStart: this.textareaRef.selectionStart,
21
- };
22
- };
23
- // FIXME: unused method
24
- this.getSelectedText = () => {
25
- if (!this.textareaRef)
26
- return null;
27
- const { selectionEnd, selectionStart } = this.textareaRef;
28
- if (selectionStart === selectionEnd)
29
- return null;
30
- return this.state.value.substr(selectionStart, selectionEnd - selectionStart);
31
- };
32
- this.setCaretPosition = (position = 0) => {
33
- if (!this.textareaRef)
34
- return;
35
- this.textareaRef.focus();
36
- this.textareaRef.setSelectionRange(position, position);
37
- };
38
- this.getCaretPosition = () => {
39
- if (!this.textareaRef)
40
- return 0;
41
- return this.textareaRef.selectionEnd;
42
- };
43
- /**
44
- * isComposing prevents double submissions in Korean and other languages.
45
- * starting point for a read:
46
- * https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/isComposing
47
- * In the long term, the fix should happen by handling keypress, but changing this has unknown implications.
48
- * @param event React.KeyboardEvent
49
- */
50
- this._defaultShouldSubmit = (event) => event.key === 'Enter' && !event.shiftKey && !event.nativeEvent.isComposing;
51
- this._handleKeyDown = (event) => {
52
- const { shouldSubmit = this._defaultShouldSubmit } = this.props;
53
- // prevent default behaviour when the selection list is rendered
54
- if ((event.key === 'ArrowUp' || event.key === 'ArrowDown') && this.dropdownRef)
55
- event.preventDefault();
56
- if (shouldSubmit?.(event))
57
- return this._onEnter(event);
58
- if (event.key === ' ')
59
- return this._onSpace(event);
60
- if (event.key === 'Escape')
61
- return this._closeAutocomplete();
62
- };
63
- this._onEnter = async (event) => {
64
- if (!this.textareaRef)
65
- return;
66
- const trigger = this.state.currentTrigger;
67
- if (!trigger || !this.state.data) {
68
- // https://legacy.reactjs.org/docs/legacy-event-pooling.html
69
- event.persist();
70
- // trigger a submit
71
- await this._replaceWord();
72
- if (this.textareaRef) {
73
- this.textareaRef.selectionEnd = 0;
74
- }
75
- this.props.handleSubmit(event);
76
- this._closeAutocomplete();
77
- }
78
- };
79
- this._onSpace = () => {
80
- if (!this.props.replaceWord || !this.textareaRef)
81
- return;
82
- // don't change characters if the element doesn't have focus
83
- const hasFocus = this.textareaRef.matches(':focus');
84
- if (!hasFocus)
85
- return;
86
- this._replaceWord();
87
- };
88
- this._replaceWord = async () => {
89
- const { value } = this.state;
90
- const lastWordRegex = /([^\s]+)(\s*)$/;
91
- const match = lastWordRegex.exec(value.slice(0, this.getCaretPosition()));
92
- const lastWord = match && match[1];
93
- if (!lastWord)
94
- return;
95
- const spaces = match[2];
96
- const newWord = await this.props.replaceWord(lastWord);
97
- if (newWord == null)
98
- return;
99
- const textBeforeWord = value.slice(0, this.getCaretPosition() - match[0].length);
100
- const textAfterCaret = value.slice(this.getCaretPosition(), -1);
101
- const newText = textBeforeWord + newWord + spaces + textAfterCaret;
102
- this.setState({
103
- value: newText,
104
- }, () => {
105
- // fire onChange event after successful selection
106
- const e = new CustomEvent('change', { bubbles: true });
107
- this.textareaRef.dispatchEvent(e);
108
- if (this.props.onChange)
109
- this.props.onChange(e);
110
- });
111
- };
112
- this._onSelect = (newToken) => {
113
- const { closeCommandsList, closeMentionsList, onChange, showCommandsList, showMentionsList, } = this.props;
114
- const { currentTrigger: stateTrigger, selectionEnd, value: textareaValue, } = this.state;
115
- const currentTrigger = showCommandsList ? '/' : showMentionsList ? '@' : stateTrigger;
116
- if (!currentTrigger)
117
- return;
118
- const computeCaretPosition = (position, token, startToken) => {
119
- switch (position) {
120
- case 'start':
121
- return startToken;
122
- case 'next':
123
- case 'end':
124
- return startToken + token.length;
125
- default:
126
- if (!Number.isInteger(position)) {
127
- throw new Error('RTA: caretPosition should be "start", "next", "end" or number.');
128
- }
129
- return position;
130
- }
131
- };
132
- const textToModify = showCommandsList
133
- ? '/'
134
- : showMentionsList
135
- ? '@'
136
- : textareaValue.slice(0, selectionEnd);
137
- const startOfTokenPosition = textToModify.lastIndexOf(currentTrigger);
138
- // we add space after emoji is selected if a caret position is next
139
- const newTokenString = newToken.caretPosition === 'next' ? `${newToken.text} ` : newToken.text;
140
- const newCaretPosition = computeCaretPosition(newToken.caretPosition, newTokenString, startOfTokenPosition);
141
- const modifiedText = textToModify.substring(0, startOfTokenPosition) + newTokenString;
142
- const valueToReplace = textareaValue.replace(textToModify, modifiedText);
143
- // set the new textarea value and after that set the caret back to its position
144
- this.setState({
145
- dataLoading: false,
146
- value: valueToReplace,
147
- }, () => {
148
- // fire onChange event after successful selection
149
- const e = new CustomEvent('change', { bubbles: true });
150
- this.textareaRef.dispatchEvent(e);
151
- if (onChange)
152
- onChange(e);
153
- this.setCaretPosition(newCaretPosition);
154
- });
155
- this._closeAutocomplete();
156
- if (showCommandsList)
157
- closeCommandsList();
158
- if (showMentionsList)
159
- closeMentionsList();
160
- };
161
- this._getItemOnSelect = (paramTrigger) => {
162
- const { currentTrigger: stateTrigger } = this.state;
163
- const triggerSettings = this._getCurrentTriggerSettings(paramTrigger);
164
- const currentTrigger = paramTrigger || stateTrigger;
165
- if (!currentTrigger || !triggerSettings)
166
- return null;
167
- const { callback } = triggerSettings;
168
- if (!callback)
169
- return null;
170
- return (item) => {
171
- if (typeof callback !== 'function') {
172
- throw new Error('Output functor is not defined! You have to define "output" function. https://github.com/webscopeio/react-textarea-autocomplete#trigger-type');
173
- }
174
- if (callback) {
175
- return callback(item, currentTrigger);
176
- }
177
- return null;
178
- };
179
- };
180
- this._getTextToReplace = (paramTrigger) => {
181
- const { actualToken, currentTrigger: stateTrigger } = this.state;
182
- const triggerSettings = this._getCurrentTriggerSettings(paramTrigger);
183
- const currentTrigger = paramTrigger || stateTrigger;
184
- if (!currentTrigger || !triggerSettings)
185
- return null;
186
- const { output } = triggerSettings;
187
- return (item) => {
188
- if (typeof item === 'object' && (!output || typeof output !== 'function')) {
189
- 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');
190
- }
191
- if (output) {
192
- const textToReplace = output(item, currentTrigger);
193
- if (!textToReplace || typeof textToReplace === 'number') {
194
- throw new Error(`Output functor should return string or object in shape {text: string, caretPosition: string | number}.\nGot "${String(textToReplace)}". Check the implementation for trigger "${currentTrigger}" and its token "${actualToken}"\n\nSee https://github.com/webscopeio/react-textarea-autocomplete#trigger-type for more informations.\n`);
195
- }
196
- if (typeof textToReplace === 'string') {
197
- return {
198
- caretPosition: DEFAULT_CARET_POSITION,
199
- text: textToReplace,
200
- };
201
- }
202
- if (!textToReplace.text && currentTrigger !== ':') {
203
- throw new Error(`Output "text" is not defined! Object should has shape {text: string, caretPosition: string | number}. Check the implementation for trigger "${currentTrigger}" and its token "${actualToken}"\n`);
204
- }
205
- if (!textToReplace.caretPosition) {
206
- throw new Error(`Output "caretPosition" is not defined! Object should has shape {text: string, caretPosition: string | number}. Check the implementation for trigger "${currentTrigger}" and its token "${actualToken}"\n`);
207
- }
208
- return textToReplace;
209
- }
210
- if (typeof item !== 'string') {
211
- throw new Error('Output item should be string\n');
212
- }
213
- return {
214
- caretPosition: DEFAULT_CARET_POSITION,
215
- text: `${currentTrigger}${item}${currentTrigger}`,
216
- };
217
- };
218
- };
219
- this._getCurrentTriggerSettings = (paramTrigger) => {
220
- const { currentTrigger: stateTrigger } = this.state;
221
- const currentTrigger = paramTrigger || stateTrigger;
222
- if (!currentTrigger)
223
- return null;
224
- return this.props.trigger[currentTrigger];
225
- };
226
- this._getValuesFromProvider = () => {
227
- const { actualToken, currentTrigger } = this.state;
228
- const triggerSettings = this._getCurrentTriggerSettings();
229
- if (!currentTrigger || !triggerSettings)
230
- return;
231
- const { component, dataProvider } = triggerSettings;
232
- if (typeof dataProvider !== 'function') {
233
- throw new Error('Trigger provider has to be a function!');
234
- }
235
- this.setState({ dataLoading: true });
236
- // Modified: send the full text to support / style commands
237
- dataProvider(actualToken, this.state.value, (data, token) => {
238
- // Make sure that the result is still relevant for current query
239
- if (token !== this.state.actualToken)
240
- return;
241
- if (!Array.isArray(data)) {
242
- throw new Error('Trigger provider has to provide an array!');
243
- }
244
- // throw away if we resolved old trigger
245
- if (currentTrigger !== this.state.currentTrigger)
246
- return;
247
- // if we haven't resolved any data let's close the autocomplete
248
- if (!data.length) {
249
- this._closeAutocomplete();
250
- return;
251
- }
252
- this.setState({
253
- component,
254
- data,
255
- dataLoading: false,
256
- });
257
- });
258
- };
259
- this._getSuggestions = (paramTrigger) => {
260
- const { currentTrigger: stateTrigger, data } = this.state;
261
- const currentTrigger = paramTrigger || stateTrigger;
262
- if (!currentTrigger || !data || (data && !data.length))
263
- return null;
264
- return data;
265
- };
266
- /**
267
- * Close autocomplete, also clean up trigger (to avoid slow promises)
268
- */
269
- this._closeAutocomplete = () => {
270
- this.setState({
271
- currentTrigger: null,
272
- data: null,
273
- dataLoading: false,
274
- left: null,
275
- top: null,
276
- });
277
- };
278
- this._cleanUpProps = () => {
279
- const props = { ...this.props };
280
- const notSafe = [
281
- 'additionalTextareaProps',
282
- 'className',
283
- 'closeCommandsList',
284
- 'closeMentionsList',
285
- 'closeOnClickOutside',
286
- 'containerClassName',
287
- 'containerStyle',
288
- 'disableMentions',
289
- 'dropdownClassName',
290
- 'dropdownStyle',
291
- 'grow',
292
- 'handleSubmit',
293
- 'innerRef',
294
- 'itemClassName',
295
- 'itemStyle',
296
- 'listClassName',
297
- 'listStyle',
298
- 'loaderClassName',
299
- 'loaderStyle',
300
- 'loadingComponent',
301
- 'minChar',
302
- 'movePopupAsYouType',
303
- 'onCaretPositionChange',
304
- 'onChange',
305
- 'ref',
306
- 'replaceWord',
307
- 'scrollToItem',
308
- 'shouldSubmit',
309
- 'showCommandsList',
310
- 'showMentionsList',
311
- 'SuggestionItem',
312
- 'SuggestionList',
313
- 'trigger',
314
- 'value',
315
- ];
316
- for (const prop in props) {
317
- if (notSafe.includes(prop))
318
- delete props[prop];
319
- }
320
- return props;
321
- };
322
- this._isCommand = (text) => {
323
- if (text[0] !== '/')
324
- return false;
325
- const tokens = text.split(' ');
326
- return tokens.length <= 1;
327
- };
328
- this._changeHandler = (e) => {
329
- const { minChar, movePopupAsYouType, onCaretPositionChange, onChange, trigger } = this.props;
330
- const { left, top } = this.state;
331
- const textarea = e.target;
332
- const { selectionEnd, selectionStart, value } = textarea;
333
- if (onChange) {
334
- e.persist();
335
- onChange(e);
336
- }
337
- if (onCaretPositionChange)
338
- onCaretPositionChange(this.getCaretPosition());
339
- this.setState({ value });
340
- let currentTrigger;
341
- let lastToken;
342
- if (this._isCommand(value)) {
343
- currentTrigger = '/';
344
- lastToken = value;
345
- }
346
- else {
347
- const triggerTokens = Object.keys(trigger).join().replace('/', '');
348
- const triggerNorWhitespace = `[^\\s${triggerTokens}]*`;
349
- const regex = new RegExp(`(?!^|\\W)?[${triggerTokens}]${triggerNorWhitespace}\\s?${triggerNorWhitespace}$`, 'g');
350
- const tokenMatch = value.slice(0, selectionEnd).match(regex);
351
- lastToken = tokenMatch && tokenMatch[tokenMatch.length - 1].trim();
352
- currentTrigger =
353
- (lastToken && Object.keys(trigger).find((a) => a === lastToken[0])) || null;
354
- }
355
- /*
356
- if we lost the trigger token or there is no following character we want to close
357
- the autocomplete
358
- */
359
- if (!lastToken || lastToken.length <= minChar) {
360
- this._closeAutocomplete();
361
- return;
362
- }
363
- const actualToken = lastToken.slice(1);
364
- // if trigger is not configured step out from the function, otherwise proceed
365
- if (!currentTrigger)
366
- return;
367
- if (movePopupAsYouType ||
368
- (top === null && left === null) ||
369
- // if we have single char - trigger it means we want to re-position the autocomplete
370
- lastToken.length === 1) {
371
- const { left: newLeft, top: newTop } = getCaretCoordinates(textarea, selectionEnd);
372
- this.setState({
373
- // make position relative to textarea
374
- left: newLeft,
375
- top: newTop - this.textareaRef.scrollTop || 0,
376
- });
377
- }
378
- this.setState({
379
- actualToken,
380
- currentTrigger,
381
- selectionEnd,
382
- selectionStart,
383
- }, () => {
384
- try {
385
- this._getValuesFromProvider();
386
- }
387
- catch (err) {
388
- errorMessage(err.message);
389
- }
390
- });
391
- };
392
- this._selectHandler = (e) => {
393
- const { onCaretPositionChange, onSelect } = this.props;
394
- if (onCaretPositionChange)
395
- onCaretPositionChange(this.getCaretPosition());
396
- if (onSelect) {
397
- e.persist();
398
- onSelect(e);
399
- }
400
- };
401
- // The textarea itself is outside the auto-select dropdown.
402
- this._onClickAndBlurHandler = (e) => {
403
- const { closeOnClickOutside, onBlur } = this.props;
404
- // If this is a click: e.target is the textarea, and e.relatedTarget is the thing
405
- // that was actually clicked. If we clicked inside the auto-select dropdown, then
406
- // that's not a blur, from the auto-select point of view, so then do nothing.
407
- const el = e.relatedTarget;
408
- // If this is a blur event in Safari, then relatedTarget is never a dropdown item, but a common parent
409
- // of textarea and dropdown container. That means that dropdownRef will not contain its parent and the
410
- // autocomplete will be closed before onclick handler can be invoked selecting an item.
411
- // It seems that Safari has different implementation determining the relatedTarget node than Chrome and Firefox.
412
- // Therefore, if focused away in Safari, the dropdown will be kept rendered until pressing Esc or selecting and item from it.
413
- const focusedAwayInSafari = isSafari() && e.type === 'blur';
414
- if ((this.dropdownRef && el instanceof Node && this.dropdownRef.contains(el)) ||
415
- focusedAwayInSafari) {
416
- return;
417
- }
418
- if (closeOnClickOutside)
419
- this._closeAutocomplete();
420
- if (onBlur) {
421
- e.persist();
422
- onBlur(e);
423
- }
424
- };
425
- this._onScrollHandler = () => this._closeAutocomplete();
426
- this._dropdownScroll = (item) => {
427
- const { scrollToItem } = this.props;
428
- if (!scrollToItem)
429
- return;
430
- if (scrollToItem === true) {
431
- defaultScrollToItem(this.dropdownRef, item);
432
- return;
433
- }
434
- if (typeof scrollToItem !== 'function' || scrollToItem.length !== 2) {
435
- throw new Error('`scrollToItem` has to be boolean (true for default implementation) or function with two parameters: container, item.');
436
- }
437
- scrollToItem(this.dropdownRef, item);
438
- };
439
- this.getTriggerProps = () => {
440
- const { showCommandsList, showMentionsList, trigger } = this.props;
441
- const { component, currentTrigger, selectionEnd, value } = this.state;
442
- const selectedItem = this._getItemOnSelect();
443
- const suggestionData = this._getSuggestions();
444
- const textToReplace = this._getTextToReplace();
445
- const triggerProps = {
446
- component,
447
- currentTrigger,
448
- getSelectedItem: selectedItem,
449
- getTextToReplace: textToReplace,
450
- selectionEnd,
451
- value,
452
- values: suggestionData,
453
- };
454
- if ((showCommandsList && trigger['/']) || (showMentionsList && trigger['@'])) {
455
- let currentCommands;
456
- const getCommands = trigger[showCommandsList ? '/' : '@'].dataProvider;
457
- getCommands?.('', showCommandsList ? '/' : '@', (data) => {
458
- currentCommands = data;
459
- });
460
- triggerProps.component = showCommandsList ? CommandItem : UserItem;
461
- triggerProps.currentTrigger = showCommandsList ? '/' : '@';
462
- triggerProps.getTextToReplace = this._getTextToReplace(showCommandsList ? '/' : '@');
463
- triggerProps.getSelectedItem = this._getItemOnSelect(showCommandsList ? '/' : '@');
464
- triggerProps.selectionEnd = 1;
465
- triggerProps.value = showCommandsList ? '/' : '@';
466
- triggerProps.values = currentCommands;
467
- }
468
- return triggerProps;
469
- };
470
- this.setDropdownRef = (element) => {
471
- this.dropdownRef = element;
472
- };
473
- const { loadingComponent, trigger, value } = this.props;
474
- // TODO: it would be better to have the parent control state...
475
- // if (value) this.state.value = value;
476
- if (!loadingComponent) {
477
- throw new Error('RTA: loadingComponent is not defined');
478
- }
479
- if (!trigger) {
480
- throw new Error('RTA: trigger is not defined');
481
- }
482
- this.state = {
483
- actualToken: '',
484
- component: null,
485
- currentTrigger: null,
486
- data: null,
487
- dataLoading: false,
488
- isComposing: false,
489
- left: null,
490
- selectionEnd: 0,
491
- selectionStart: 0,
492
- top: null,
493
- value: value || '',
494
- };
495
- }
496
- /**
497
- * setup to emulate the UNSAFE_componentWillReceiveProps
498
- */
499
- static getDerivedStateFromProps(props, state) {
500
- if (props.value !== state.propsValue || !state.value) {
501
- return { propsValue: props.value, value: props.value };
502
- }
503
- else {
504
- return null;
505
- }
506
- }
507
- renderSuggestionListContainer() {
508
- const { disableMentions, dropdownClassName, dropdownStyle, itemClassName, itemStyle, listClassName, SuggestionItem, SuggestionList = DefaultSuggestionList, } = this.props;
509
- const { isComposing } = this.state;
510
- const triggerProps = this.getTriggerProps();
511
- if (isComposing ||
512
- !triggerProps.values ||
513
- !triggerProps.currentTrigger ||
514
- (disableMentions && triggerProps.currentTrigger === '@'))
515
- return null;
516
- return (React.createElement("div", { className: clsx('str-chat__suggestion-list-container', dropdownClassName), ref: this.setDropdownRef, style: dropdownStyle },
517
- React.createElement(SuggestionList, { className: listClassName, dropdownScroll: this._dropdownScroll, itemClassName: clsx('str-chat__suggestion-list-item', itemClassName), itemStyle: itemStyle, onSelect: this._onSelect, SuggestionItem: SuggestionItem, ...triggerProps })));
518
- }
519
- render() {
520
- const { className, containerClassName, containerStyle, style } = this.props;
521
- const { onBlur, onChange, onClick, onFocus, onKeyDown, onScroll, onSelect, ...restAdditionalTextareaProps } = this.props.additionalTextareaProps || {};
522
- let { maxRows } = this.props;
523
- const { dataLoading, value } = this.state;
524
- if (!this.props.grow)
525
- maxRows = 1;
526
- // By setting defaultValue to undefined, avoid error:
527
- // ForwardRef(TextareaAutosize) contains a textarea with both value and defaultValue props.
528
- // Textarea elements must be either controlled or uncontrolled
529
- return (React.createElement("div", { className: clsx('rta', containerClassName, {
530
- ['rta--loading']: dataLoading,
531
- }), style: containerStyle },
532
- this.renderSuggestionListContainer(),
533
- React.createElement(Textarea, { "data-testid": 'message-input', ...this._cleanUpProps(), className: clsx('rta__textarea', className), maxRows: maxRows, onBlur: (e) => {
534
- this._onClickAndBlurHandler(e);
535
- onBlur?.(e);
536
- }, onChange: (e) => {
537
- this._changeHandler(e);
538
- onChange?.(e);
539
- }, onClick: (e) => {
540
- this._onClickAndBlurHandler(e);
541
- onClick?.(e);
542
- }, onCompositionEnd: () => this.setState((pv) => ({ ...pv, isComposing: false })), onCompositionStart: () => this.setState((pv) => ({ ...pv, isComposing: true })), onFocus: (e) => {
543
- this.props.onFocus?.(e);
544
- onFocus?.(e);
545
- }, onKeyDown: (e) => {
546
- this._handleKeyDown(e);
547
- onKeyDown?.(e);
548
- }, onScroll: (e) => {
549
- this._onScrollHandler(e);
550
- onScroll?.(e);
551
- }, onSelect: (e) => {
552
- this._selectHandler(e);
553
- onSelect?.(e);
554
- }, ref: (ref) => {
555
- this.props?.innerRef(ref);
556
- this.textareaRef = ref;
557
- }, style: style, value: value, ...restAdditionalTextareaProps, defaultValue: undefined })));
558
- }
559
- }
560
- ReactTextareaAutocomplete.defaultProps = {
561
- closeOnClickOutside: true,
562
- maxRows: 10,
563
- minChar: 1,
564
- movePopupAsYouType: false,
565
- scrollToItem: true,
566
- value: '',
567
- };
568
- ReactTextareaAutocomplete.propTypes = {
569
- className: PropTypes.string,
570
- closeOnClickOutside: PropTypes.bool,
571
- containerClassName: PropTypes.string,
572
- containerStyle: PropTypes.object,
573
- disableMentions: PropTypes.bool,
574
- dropdownClassName: PropTypes.string,
575
- dropdownStyle: PropTypes.object,
576
- itemClassName: PropTypes.string,
577
- itemStyle: PropTypes.object,
578
- listClassName: PropTypes.string,
579
- listStyle: PropTypes.object,
580
- loaderClassName: PropTypes.string,
581
- loaderStyle: PropTypes.object,
582
- loadingComponent: PropTypes.elementType,
583
- minChar: PropTypes.number,
584
- onBlur: PropTypes.func,
585
- onCaretPositionChange: PropTypes.func,
586
- onChange: PropTypes.func,
587
- onSelect: PropTypes.func,
588
- shouldSubmit: PropTypes.func,
589
- style: PropTypes.object,
590
- SuggestionList: PropTypes.elementType,
591
- trigger: triggerPropsCheck,
592
- value: PropTypes.string,
593
- };
@@ -1,4 +0,0 @@
1
- export { Item as DefaultSuggestionListItem } from './Item';
2
- export { List as DefaultSuggestionList } from './List';
3
- export { ReactTextareaAutocomplete as AutoCompleteTextarea } from './Textarea';
4
- export { defaultScrollToItem } from './utils';
@@ -1,4 +0,0 @@
1
- export { Item as DefaultSuggestionListItem } from './Item';
2
- export { List as DefaultSuggestionList } from './List';
3
- export { ReactTextareaAutocomplete as AutoCompleteTextarea } from './Textarea';
4
- export { defaultScrollToItem } from './utils';
@@ -1,15 +0,0 @@
1
- import type React from 'react';
2
- export interface TriggerMap {
3
- [triggerChar: string]: {
4
- component: React.ComponentType<unknown>;
5
- dataProvider: (q: string, text: string, onReady: (data: unknown[], token: string) => void) => Promise<void> | Array<Record<string, unknown> | string>;
6
- callback?: (item: Record<string, unknown>) => void;
7
- output?: (item: {
8
- [key: string]: unknown;
9
- }, trigger?: string) => {
10
- caretPosition: 'start' | 'end' | 'next' | number;
11
- text: string;
12
- key?: string;
13
- } | string | null;
14
- };
15
- }
@@ -1,6 +0,0 @@
1
- export function defaultScrollToItem(container: any, item: any): void;
2
- export const DEFAULT_CARET_POSITION: "next";
3
- export function errorMessage(message: any): void;
4
- export function triggerPropsCheck({ trigger }: {
5
- trigger: any;
6
- }): Error | null;
@@ -1,40 +0,0 @@
1
- export const DEFAULT_CARET_POSITION = 'next';
2
- export function defaultScrollToItem(container, item) {
3
- if (!item)
4
- return;
5
- const itemHeight = parseInt(getComputedStyle(item).getPropertyValue('height'), 10);
6
- const containerHight = parseInt(getComputedStyle(container).getPropertyValue('height'), 10) - itemHeight;
7
- const actualScrollTop = container.scrollTop;
8
- const itemOffsetTop = item.offsetTop;
9
- if (itemOffsetTop < actualScrollTop + containerHight &&
10
- actualScrollTop < itemOffsetTop) {
11
- return;
12
- }
13
- container.scrollTop = itemOffsetTop;
14
- }
15
- export const errorMessage = (message) => console.error(`RTA: dataProvider fails: ${message}
16
- \nCheck the documentation or create issue if you think it's bug. https://github.com/webscopeio/react-textarea-autocomplete/issues`);
17
- export const triggerPropsCheck = ({ trigger }) => {
18
- if (!trigger)
19
- return Error('Invalid prop trigger. Prop missing.');
20
- const triggers = Object.entries(trigger);
21
- for (let i = 0; i < triggers.length; i += 1) {
22
- const [triggerChar, settings] = triggers[i];
23
- if (typeof triggerChar !== 'string' || triggerChar.length !== 1) {
24
- return Error('Invalid prop trigger. Keys of the object has to be string / one character.');
25
- }
26
- // $FlowFixMe
27
- const triggerSetting = settings;
28
- const { callback, dataProvider, output } = triggerSetting;
29
- if (!dataProvider || typeof dataProvider !== 'function') {
30
- return Error('Invalid prop trigger: dataProvider should be defined.');
31
- }
32
- if (output && typeof output !== 'function') {
33
- return Error('Invalid prop trigger: output should be a function.');
34
- }
35
- if (callback && typeof callback !== 'function') {
36
- return Error('Invalid prop trigger: callback should be a function.');
37
- }
38
- }
39
- return null;
40
- };