@tencentcloud/chat-uikit-react 0.0.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/dist/cjs/_virtual/_rollupPluginBabelHelpers.js +1 -0
- package/dist/cjs/components/Checkbox/index.d.ts +16 -0
- package/dist/cjs/components/ConversationCreate/ConversationCreatGroupDetail.js +1 -1
- package/dist/cjs/components/ConversationCreate/ConversationCreate.js +1 -1
- package/dist/cjs/components/ConversationCreate/ConversationCreateUserSelectList.js +1 -1
- package/dist/cjs/components/ConversationCreate/hooks/useConversationCreate.js +1 -1
- package/dist/cjs/components/ConversationPreview/ConversationPreview.js +1 -1
- package/dist/cjs/components/ConversationPreview/ConversationPreviewContent.js +1 -1
- package/dist/cjs/components/ConversationPreview/utils.js +1 -1
- package/dist/cjs/components/ConversationSearch/ConversationSearchResult.js +1 -1
- package/dist/cjs/components/DivWithEdit/DivWithEdit.d.ts +16 -0
- package/dist/cjs/components/EmptyStateIndicator/EmptyStateIndicator.d.ts +5 -1
- package/dist/cjs/components/Icon/Icon.d.ts +14 -0
- package/dist/cjs/components/Icon/config.js +1 -1
- package/dist/cjs/components/Icon/images/like.png.js +1 -0
- package/dist/cjs/components/Icon/images/liked.png.js +1 -0
- package/dist/cjs/components/Icon/images/living.png.js +1 -0
- package/dist/cjs/components/Icon/images/member.png.js +1 -0
- package/dist/cjs/components/Icon/images/owner.png.js +1 -0
- package/dist/cjs/components/Icon/images/send.png.js +1 -0
- package/dist/cjs/components/Icon/images/union.png.js +1 -0
- package/dist/cjs/components/Icon/images/unlike.png.js +1 -0
- package/dist/cjs/components/Icon/images/unliked.png.js +1 -0
- package/dist/cjs/components/Icon/images/ununion.png.js +1 -0
- package/dist/cjs/components/Icon/images/unvector.png.js +1 -0
- package/dist/cjs/components/Icon/images/vector.png.js +1 -0
- package/dist/cjs/components/Icon/images/voice.png.js +1 -0
- package/dist/cjs/components/Icon/type.d.ts +47 -0
- package/dist/cjs/components/Icon/type.js +1 -1
- package/dist/cjs/components/Input/Input.d.ts +7 -1
- package/dist/cjs/components/Model/index.d.ts +9 -0
- package/dist/cjs/components/Plugins/index.d.ts +17 -0
- package/dist/cjs/components/Plugins/index.js +1 -1
- package/dist/cjs/components/Popup/index.d.ts +12 -0
- package/dist/cjs/components/Switch/Switch.d.ts +16 -0
- package/dist/cjs/components/TUIChat/TUIChat.d.ts +8 -2
- package/dist/cjs/components/TUIChat/TUIChat.js +1 -1
- package/dist/cjs/components/TUIChat/TUIChatState.js +1 -1
- package/dist/cjs/components/TUIChat/hooks/useCreateMessage.d.ts +29 -1
- package/dist/cjs/components/TUIChat/hooks/useCreateMessage.js +1 -1
- package/dist/cjs/components/TUIChat/hooks/useCreateTUIChatStateContext.js +1 -1
- package/dist/cjs/components/TUIChat/hooks/useHandleMessage.js +1 -1
- package/dist/cjs/components/TUIChat/hooks/useHandleMessageList.js +1 -1
- package/dist/cjs/components/TUIChat/hooks/useMessageReceviedListener.js +1 -1
- package/dist/cjs/components/TUIChat/unitls.js +1 -1
- package/dist/cjs/components/TUIChatHeader/TUIChatHeader.d.ts +2 -0
- package/dist/cjs/components/TUIChatHeader/TUIChatHeader.js +1 -1
- package/dist/cjs/components/TUIChatHeader/TUIChatHeaderDefault.d.ts +7 -3
- package/dist/cjs/components/TUIChatHeader/TUIChatHeaderDefault.js +1 -1
- package/dist/cjs/components/TUIConversationList/TUIConversationList.js +1 -1
- package/dist/cjs/components/TUIConversationList/hooks/useConversationUpdate.js +1 -1
- package/dist/cjs/components/TUIKit/TUIKit.d.ts +2 -1
- package/dist/cjs/components/TUIKit/TUIKit.js +1 -1
- package/dist/cjs/components/TUIKit/hooks/useTUIKit.d.ts +2 -1
- package/dist/cjs/components/TUIKit/hooks/useTUIKit.js +1 -1
- package/dist/cjs/components/TUILive/TUILive.d.ts +29 -0
- package/dist/cjs/components/TUILive/TUILive.js +1 -0
- package/dist/cjs/components/TUILive/TUILiveContent.d.ts +13 -0
- package/dist/cjs/components/TUILive/TUILiveContent.js +1 -0
- package/dist/cjs/components/TUILive/TUILiveFooter.d.ts +29 -0
- package/dist/cjs/components/TUILive/TUILiveFooter.js +1 -0
- package/dist/cjs/components/TUILive/TUILiveHeader.d.ts +20 -0
- package/dist/cjs/components/TUILive/TUILiveHeader.js +1 -0
- package/dist/cjs/components/TUILive/TUILiveMemberList.d.ts +11 -0
- package/dist/cjs/components/TUILive/TUILiveMemberList.js +1 -0
- package/dist/cjs/components/TUILive/hooks/useLiveAtiveElements.js +1 -0
- package/dist/cjs/components/TUILive/hooks/useLivePlayer.js +1 -0
- package/dist/cjs/components/TUILive/hooks/useLiveState.js +1 -0
- package/dist/cjs/components/TUILive/untils.js +1 -0
- package/dist/cjs/components/TUIManage/TUIManage.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageAudio.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageAvatar.js +1 -0
- package/dist/cjs/components/TUIMessage/MessageBubble.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageContext.d.ts +3 -1
- package/dist/cjs/components/TUIMessage/MessageCustom.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageFile.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageImage.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageMerger.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageName.js +1 -0
- package/dist/cjs/components/TUIMessage/MessagePlugins.d.ts +24 -0
- package/dist/cjs/components/TUIMessage/MessagePlugins.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageProgress.js +1 -0
- package/dist/cjs/components/TUIMessage/MessageRevoke.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageStatus.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageSystem.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageText.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageTip.js +1 -1
- package/dist/cjs/components/TUIMessage/TUIMessage.d.ts +23 -3
- package/dist/cjs/components/TUIMessage/TUIMessage.js +1 -1
- package/dist/cjs/components/TUIMessage/TUIMessageDefault.js +1 -1
- package/dist/cjs/components/TUIMessage/hooks/useMessageHandler.js +1 -1
- package/dist/cjs/components/TUIMessage/hooks/useMessagePluginElement.js +1 -1
- package/dist/cjs/components/TUIMessage/hooks/useMessageReply.js +1 -1
- package/dist/cjs/components/TUIMessage/utils/emojiMap.js +1 -1
- package/dist/cjs/components/TUIMessage/utils/index.js +1 -1
- package/dist/cjs/components/TUIMessageInput/EmojiPicker.js +1 -1
- package/dist/cjs/components/TUIMessageInput/InputPluginsDefalut.js +1 -1
- package/dist/cjs/components/TUIMessageInput/InputQuoteDefalut.js +1 -1
- package/dist/cjs/components/TUIMessageInput/TUIForward.js +1 -1
- package/dist/cjs/components/TUIMessageInput/TUIMessageInput.d.ts +18 -7
- package/dist/cjs/components/TUIMessageInput/TUIMessageInput.js +1 -1
- package/dist/cjs/components/TUIMessageInput/TUIMessageInputDefault.js +1 -1
- package/dist/cjs/components/TUIMessageInput/Transmitter.js +1 -0
- package/dist/cjs/components/TUIMessageInput/hooks/useCreateMessageInputContext.js +1 -1
- package/dist/cjs/components/TUIMessageInput/hooks/useEmojiPicker.js +1 -1
- package/dist/cjs/components/TUIMessageInput/hooks/useHandleForwardMessage.js +1 -1
- package/dist/cjs/components/TUIMessageInput/hooks/useHandleQuoteMessage.js +1 -1
- package/dist/cjs/components/TUIMessageInput/hooks/useMessageInputState.js +1 -1
- package/dist/cjs/components/TUIMessageInput/hooks/useMessageInputText.js +1 -1
- package/dist/cjs/components/TUIMessageInput/hooks/useUploadPicker.js +1 -1
- package/dist/cjs/components/TUIMessageList/TUIMessageList.d.ts +3 -1
- package/dist/cjs/components/TUIMessageList/TUIMessageList.js +1 -1
- package/dist/cjs/components/TUIMessageList/hooks/useMessageListElement.js +1 -1
- package/dist/cjs/components/TUIProfile/TUIProfile.js +1 -1
- package/dist/cjs/components/TUIProfile/TUIProfileDefault.js +1 -1
- package/dist/cjs/components/TUIProfile/hooks/useMyProfile.js +1 -1
- package/dist/cjs/components/Toast/index.d.ts +11 -0
- package/dist/cjs/constants.js +1 -1
- package/dist/cjs/context/ComponentContext.d.ts +1 -1
- package/dist/cjs/context/TUIChatActionContext.d.ts +11 -2
- package/dist/cjs/context/TUIChatStateContext.d.ts +10 -0
- package/dist/cjs/context/TUIConversationContext.js +1 -1
- package/dist/cjs/context/TUILiveContext.d.ts +51 -0
- package/dist/cjs/context/TUILiveContext.js +1 -0
- package/dist/cjs/context/TUIMessageContext.d.ts +22 -1
- package/dist/cjs/context/TUIMessageContext.js +1 -1
- package/dist/cjs/context/TUIMessageInputContext.d.ts +4 -5
- package/dist/cjs/index.css +1 -1
- package/dist/cjs/index.d.css +547 -7
- package/dist/cjs/index.d.ts +18 -4
- package/dist/cjs/index.js +1 -1
- package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +1 -0
- package/dist/esm/components/Checkbox/index.d.ts +16 -0
- package/dist/esm/components/ConversationCreate/ConversationCreatGroupDetail.js +1 -1
- package/dist/esm/components/ConversationCreate/ConversationCreate.js +1 -1
- package/dist/esm/components/ConversationCreate/ConversationCreateUserSelectList.js +1 -1
- package/dist/esm/components/ConversationCreate/hooks/useConversationCreate.js +1 -1
- package/dist/esm/components/ConversationPreview/ConversationPreview.js +1 -1
- package/dist/esm/components/ConversationPreview/ConversationPreviewContent.js +1 -1
- package/dist/esm/components/ConversationPreview/utils.js +1 -1
- package/dist/esm/components/ConversationSearch/ConversationSearchResult.js +1 -1
- package/dist/esm/components/DivWithEdit/DivWithEdit.d.ts +16 -0
- package/dist/esm/components/EmptyStateIndicator/EmptyStateIndicator.d.ts +5 -1
- package/dist/esm/components/Icon/Icon.d.ts +14 -0
- package/dist/esm/components/Icon/config.js +1 -1
- package/dist/esm/components/Icon/images/like.png.js +1 -0
- package/dist/esm/components/Icon/images/liked.png.js +1 -0
- package/dist/esm/components/Icon/images/living.png.js +1 -0
- package/dist/esm/components/Icon/images/member.png.js +1 -0
- package/dist/esm/components/Icon/images/owner.png.js +1 -0
- package/dist/esm/components/Icon/images/send.png.js +1 -0
- package/dist/esm/components/Icon/images/union.png.js +1 -0
- package/dist/esm/components/Icon/images/unlike.png.js +1 -0
- package/dist/esm/components/Icon/images/unliked.png.js +1 -0
- package/dist/esm/components/Icon/images/ununion.png.js +1 -0
- package/dist/esm/components/Icon/images/unvector.png.js +1 -0
- package/dist/esm/components/Icon/images/vector.png.js +1 -0
- package/dist/esm/components/Icon/images/voice.png.js +1 -0
- package/dist/esm/components/Icon/type.d.ts +47 -0
- package/dist/esm/components/Icon/type.js +1 -1
- package/dist/esm/components/Input/Input.d.ts +7 -1
- package/dist/esm/components/Model/index.d.ts +9 -0
- package/dist/esm/components/Plugins/index.d.ts +17 -0
- package/dist/esm/components/Plugins/index.js +1 -1
- package/dist/esm/components/Popup/index.d.ts +12 -0
- package/dist/esm/components/Switch/Switch.d.ts +16 -0
- package/dist/esm/components/TUIChat/TUIChat.d.ts +8 -2
- package/dist/esm/components/TUIChat/TUIChat.js +1 -1
- package/dist/esm/components/TUIChat/TUIChatState.js +1 -1
- package/dist/esm/components/TUIChat/hooks/useCreateMessage.d.ts +29 -1
- package/dist/esm/components/TUIChat/hooks/useCreateMessage.js +1 -1
- package/dist/esm/components/TUIChat/hooks/useCreateTUIChatStateContext.js +1 -1
- package/dist/esm/components/TUIChat/hooks/useHandleMessage.js +1 -1
- package/dist/esm/components/TUIChat/hooks/useHandleMessageList.js +1 -1
- package/dist/esm/components/TUIChat/hooks/useMessageReceviedListener.js +1 -1
- package/dist/esm/components/TUIChat/unitls.js +1 -1
- package/dist/esm/components/TUIChatHeader/TUIChatHeader.d.ts +2 -0
- package/dist/esm/components/TUIChatHeader/TUIChatHeader.js +1 -1
- package/dist/esm/components/TUIChatHeader/TUIChatHeaderDefault.d.ts +7 -3
- package/dist/esm/components/TUIChatHeader/TUIChatHeaderDefault.js +1 -1
- package/dist/esm/components/TUIConversationList/TUIConversationList.js +1 -1
- package/dist/esm/components/TUIConversationList/hooks/useConversationUpdate.js +1 -1
- package/dist/esm/components/TUIKit/TUIKit.d.ts +2 -1
- package/dist/esm/components/TUIKit/TUIKit.js +1 -1
- package/dist/esm/components/TUIKit/hooks/useTUIKit.d.ts +2 -1
- package/dist/esm/components/TUIKit/hooks/useTUIKit.js +1 -1
- package/dist/esm/components/TUILive/TUILive.d.ts +29 -0
- package/dist/esm/components/TUILive/TUILive.js +1 -0
- package/dist/esm/components/TUILive/TUILiveContent.d.ts +13 -0
- package/dist/esm/components/TUILive/TUILiveContent.js +1 -0
- package/dist/esm/components/TUILive/TUILiveFooter.d.ts +29 -0
- package/dist/esm/components/TUILive/TUILiveFooter.js +1 -0
- package/dist/esm/components/TUILive/TUILiveHeader.d.ts +20 -0
- package/dist/esm/components/TUILive/TUILiveHeader.js +1 -0
- package/dist/esm/components/TUILive/TUILiveMemberList.d.ts +11 -0
- package/dist/esm/components/TUILive/TUILiveMemberList.js +1 -0
- package/dist/esm/components/TUILive/hooks/useLiveAtiveElements.js +1 -0
- package/dist/esm/components/TUILive/hooks/useLivePlayer.js +1 -0
- package/dist/esm/components/TUILive/hooks/useLiveState.js +1 -0
- package/dist/esm/components/TUILive/untils.js +1 -0
- package/dist/esm/components/TUIManage/TUIManage.js +1 -1
- package/dist/esm/components/TUIMessage/MessageAudio.js +1 -1
- package/dist/esm/components/TUIMessage/MessageAvatar.js +1 -0
- package/dist/esm/components/TUIMessage/MessageBubble.js +1 -1
- package/dist/esm/components/TUIMessage/MessageContext.d.ts +3 -1
- package/dist/esm/components/TUIMessage/MessageCustom.js +1 -1
- package/dist/esm/components/TUIMessage/MessageFile.js +1 -1
- package/dist/esm/components/TUIMessage/MessageImage.js +1 -1
- package/dist/esm/components/TUIMessage/MessageMerger.js +1 -1
- package/dist/esm/components/TUIMessage/MessageName.js +1 -0
- package/dist/esm/components/TUIMessage/MessagePlugins.d.ts +24 -0
- package/dist/esm/components/TUIMessage/MessagePlugins.js +1 -1
- package/dist/esm/components/TUIMessage/MessageProgress.js +1 -0
- package/dist/esm/components/TUIMessage/MessageRevoke.js +1 -1
- package/dist/esm/components/TUIMessage/MessageStatus.js +1 -1
- package/dist/esm/components/TUIMessage/MessageSystem.js +1 -1
- package/dist/esm/components/TUIMessage/MessageText.js +1 -1
- package/dist/esm/components/TUIMessage/MessageTip.js +1 -1
- package/dist/esm/components/TUIMessage/TUIMessage.d.ts +23 -3
- package/dist/esm/components/TUIMessage/TUIMessage.js +1 -1
- package/dist/esm/components/TUIMessage/TUIMessageDefault.js +1 -1
- package/dist/esm/components/TUIMessage/hooks/useMessageHandler.js +1 -1
- package/dist/esm/components/TUIMessage/hooks/useMessagePluginElement.js +1 -1
- package/dist/esm/components/TUIMessage/hooks/useMessageReply.js +1 -1
- package/dist/esm/components/TUIMessage/utils/emojiMap.js +1 -1
- package/dist/esm/components/TUIMessage/utils/index.js +1 -1
- package/dist/esm/components/TUIMessageInput/EmojiPicker.js +1 -1
- package/dist/esm/components/TUIMessageInput/InputPluginsDefalut.js +1 -1
- package/dist/esm/components/TUIMessageInput/InputQuoteDefalut.js +1 -1
- package/dist/esm/components/TUIMessageInput/TUIForward.js +1 -1
- package/dist/esm/components/TUIMessageInput/TUIMessageInput.d.ts +18 -7
- package/dist/esm/components/TUIMessageInput/TUIMessageInput.js +1 -1
- package/dist/esm/components/TUIMessageInput/TUIMessageInputDefault.js +1 -1
- package/dist/esm/components/TUIMessageInput/Transmitter.js +1 -0
- package/dist/esm/components/TUIMessageInput/hooks/useCreateMessageInputContext.js +1 -1
- package/dist/esm/components/TUIMessageInput/hooks/useEmojiPicker.js +1 -1
- package/dist/esm/components/TUIMessageInput/hooks/useHandleForwardMessage.js +1 -1
- package/dist/esm/components/TUIMessageInput/hooks/useHandleQuoteMessage.js +1 -1
- package/dist/esm/components/TUIMessageInput/hooks/useMessageInputState.js +1 -1
- package/dist/esm/components/TUIMessageInput/hooks/useMessageInputText.js +1 -1
- package/dist/esm/components/TUIMessageInput/hooks/useUploadPicker.js +1 -1
- package/dist/esm/components/TUIMessageList/TUIMessageList.d.ts +3 -1
- package/dist/esm/components/TUIMessageList/TUIMessageList.js +1 -1
- package/dist/esm/components/TUIMessageList/hooks/useMessageListElement.js +1 -1
- package/dist/esm/components/TUIProfile/TUIProfile.js +1 -1
- package/dist/esm/components/TUIProfile/TUIProfileDefault.js +1 -1
- package/dist/esm/components/TUIProfile/hooks/useMyProfile.js +1 -1
- package/dist/esm/components/Toast/index.d.ts +11 -0
- package/dist/esm/constants.js +1 -1
- package/dist/esm/context/ComponentContext.d.ts +1 -1
- package/dist/esm/context/TUIChatActionContext.d.ts +11 -2
- package/dist/esm/context/TUIChatStateContext.d.ts +10 -0
- package/dist/esm/context/TUIConversationContext.js +1 -1
- package/dist/esm/context/TUILiveContext.d.ts +51 -0
- package/dist/esm/context/TUILiveContext.js +1 -0
- package/dist/esm/context/TUIMessageContext.d.ts +22 -1
- package/dist/esm/context/TUIMessageContext.js +1 -1
- package/dist/esm/context/TUIMessageInputContext.d.ts +4 -5
- package/dist/esm/index.css +1 -1
- package/dist/esm/index.d.css +547 -7
- package/dist/esm/index.d.ts +18 -4
- package/dist/esm/index.js +1 -1
- package/package.json +5 -2
- package/src/components/ConversationPreview/utils.tsx +2 -1
- package/src/components/Icon/config.ts +65 -0
- package/src/components/Icon/images/like.png +0 -0
- package/src/components/Icon/images/liked.png +0 -0
- package/src/components/Icon/images/living.png +0 -0
- package/src/components/Icon/images/member.png +0 -0
- package/src/components/Icon/images/owner.png +0 -0
- package/src/components/Icon/images/send.png +0 -0
- package/src/components/Icon/images/union.png +0 -0
- package/src/components/Icon/images/unlike.png +0 -0
- package/src/components/Icon/images/unliked.png +0 -0
- package/src/components/Icon/images/ununion.png +0 -0
- package/src/components/Icon/images/unvector.png +0 -0
- package/src/components/Icon/images/vector.png +0 -0
- package/src/components/Icon/images/voice.png +0 -0
- package/src/components/Icon/type.ts +13 -0
- package/src/components/Plugins/index.tsx +13 -11
- package/src/components/Plugins/styles/layout.scss +2 -1
- package/src/components/TUIChat/TUIChat.tsx +47 -8
- package/src/components/TUIChat/TUIChatState.tsx +27 -0
- package/src/components/TUIChat/hooks/useCreateMessage.tsx +85 -4
- package/src/components/TUIChat/hooks/useCreateTUIChatStateContext.tsx +12 -0
- package/src/components/TUIChat/hooks/useHandleMessage.tsx +24 -0
- package/src/components/TUIChat/hooks/useHandleMessageList.tsx +8 -0
- package/src/components/TUIChat/unitls.ts +13 -0
- package/src/components/TUIChatHeader/TUIChatHeader.tsx +6 -0
- package/src/components/TUIChatHeader/TUIChatHeaderDefault.tsx +36 -16
- package/src/components/TUIChatHeader/styles/color.scss +0 -3
- package/src/components/TUIChatHeader/styles/layout.scss +8 -4
- package/src/components/TUIKit/TUIKit.tsx +8 -5
- package/src/components/TUIKit/hooks/useTUIKit.tsx +7 -3
- package/src/components/TUIKit/styles/reset.scss +4 -0
- package/src/components/TUIMessage/MessageAudio.tsx +61 -2
- package/src/components/TUIMessage/MessageAvatar.tsx +38 -0
- package/src/components/TUIMessage/MessageBubble.tsx +24 -6
- package/src/components/TUIMessage/MessageContext.tsx +5 -2
- package/src/components/TUIMessage/MessageCustom.tsx +2 -1
- package/src/components/TUIMessage/MessageFile.tsx +9 -3
- package/src/components/TUIMessage/MessageImage.tsx +2 -1
- package/src/components/TUIMessage/MessageMerger.tsx +2 -1
- package/src/components/TUIMessage/MessageName.tsx +41 -0
- package/src/components/TUIMessage/MessagePlugins.tsx +81 -14
- package/src/components/TUIMessage/MessageProgress.tsx +88 -0
- package/src/components/TUIMessage/MessageRevoke.tsx +1 -1
- package/src/components/TUIMessage/MessageStatus.tsx +6 -1
- package/src/components/TUIMessage/MessageText.tsx +3 -3
- package/src/components/TUIMessage/TUIMessage.tsx +68 -16
- package/src/components/TUIMessage/TUIMessageDefault.tsx +25 -15
- package/src/components/TUIMessage/hooks/useMessagePluginElement.tsx +15 -1
- package/src/components/TUIMessage/styles/layout.scss +87 -2
- package/src/components/TUIMessage/utils/emojiMap.ts +181 -0
- package/src/components/TUIMessage/utils/index.ts +14 -14
- package/src/components/TUIMessageInput/EmojiPicker.tsx +9 -2
- package/src/components/TUIMessageInput/InputPluginsDefalut.tsx +76 -8
- package/src/components/TUIMessageInput/InputQuoteDefalut.tsx +2 -1
- package/src/components/TUIMessageInput/TUIMessageInput.tsx +42 -22
- package/src/components/TUIMessageInput/TUIMessageInputDefault.tsx +2 -1
- package/src/components/TUIMessageInput/Transmitter.tsx +15 -0
- package/src/components/TUIMessageInput/hooks/useCreateMessageInputContext.ts +3 -9
- package/src/components/TUIMessageInput/hooks/useEmojiPicker.tsx +2 -1
- package/src/components/TUIMessageInput/hooks/useMessageInputState.tsx +8 -7
- package/src/components/TUIMessageInput/hooks/useMessageInputText.tsx +30 -31
- package/src/components/TUIMessageInput/hooks/useUploadPicker.tsx +2 -0
- package/src/components/TUIMessageInput/styles/layout.scss +16 -0
- package/src/components/TUIMessageList/TUIMessageList.tsx +32 -10
- package/src/components/TUIMessageList/hooks/useMessageListElement.tsx +26 -6
- package/src/components/TUIMessageList/styles/layout.scss +13 -1
- package/src/components/index.ts +11 -0
- package/src/constants.ts +3 -0
- package/src/context/ComponentContext.tsx +1 -1
- package/src/context/TUIChatActionContext.tsx +14 -1
- package/src/context/TUIChatStateContext.tsx +8 -0
- package/src/context/TUIMessageContext.tsx +20 -0
- package/src/context/TUIMessageInputContext.tsx +2 -3
|
@@ -11,6 +11,8 @@ interface TUIChatHeaderProps {
|
|
|
11
11
|
title?: string,
|
|
12
12
|
TUIChatHeader?: React.ComponentType<TUIChatHeaderDefaultProps>,
|
|
13
13
|
conversation?: Conversation,
|
|
14
|
+
avatar?: React.ReactElement | string,
|
|
15
|
+
headerOpateIcon?: React.ReactElement | string,
|
|
14
16
|
}
|
|
15
17
|
|
|
16
18
|
function UnMemoizedTUIChatHeader<T extends TUIChatHeaderProps>(
|
|
@@ -20,6 +22,8 @@ function UnMemoizedTUIChatHeader<T extends TUIChatHeaderProps>(
|
|
|
20
22
|
title,
|
|
21
23
|
conversation: propsConversation,
|
|
22
24
|
TUIChatHeader: propTUIChatHeader,
|
|
25
|
+
avatar,
|
|
26
|
+
headerOpateIcon,
|
|
23
27
|
} = props;
|
|
24
28
|
|
|
25
29
|
const { conversation: contextConversation } = useTUIChatStateContext('TUIChatHeader');
|
|
@@ -33,6 +37,8 @@ function UnMemoizedTUIChatHeader<T extends TUIChatHeaderProps>(
|
|
|
33
37
|
<TUIChatHeaderUIComponent
|
|
34
38
|
title={title}
|
|
35
39
|
conversation={conversation}
|
|
40
|
+
avatar={avatar}
|
|
41
|
+
opateIcon={headerOpateIcon}
|
|
36
42
|
/>
|
|
37
43
|
);
|
|
38
44
|
}
|
|
@@ -9,13 +9,19 @@ import { useTUIKitContext } from '../../context';
|
|
|
9
9
|
|
|
10
10
|
export interface TUIChatHeaderDefaultProps {
|
|
11
11
|
title?: string,
|
|
12
|
-
avatar?: string,
|
|
12
|
+
avatar?: React.ReactElement | string,
|
|
13
13
|
isOnline?: boolean,
|
|
14
14
|
conversation?: Conversation,
|
|
15
15
|
pluginComponentList?: Array<React.ComponentType>,
|
|
16
|
+
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface TUIChatHeaderBasicProps extends TUIChatHeaderDefaultProps {
|
|
20
|
+
isLive?: boolean,
|
|
21
|
+
opateIcon?: React.ReactElement | string,
|
|
16
22
|
}
|
|
17
23
|
|
|
18
|
-
function TUIChatHeaderDefaultWithContext <T extends
|
|
24
|
+
function TUIChatHeaderDefaultWithContext <T extends TUIChatHeaderBasicProps>(
|
|
19
25
|
props: PropsWithChildren<T>,
|
|
20
26
|
):React.ReactElement {
|
|
21
27
|
const {
|
|
@@ -23,14 +29,18 @@ function TUIChatHeaderDefaultWithContext <T extends TUIChatHeaderDefaultProps>(
|
|
|
23
29
|
avatar: propAvatar,
|
|
24
30
|
isOnline,
|
|
25
31
|
conversation,
|
|
32
|
+
isLive,
|
|
33
|
+
opateIcon,
|
|
26
34
|
} = props;
|
|
27
35
|
|
|
28
36
|
const [title, setTitle] = useState('');
|
|
29
|
-
const [avatar, setAvatar] = useState('');
|
|
37
|
+
const [avatar, setAvatar] = useState<React.ReactElement | string>('');
|
|
30
38
|
|
|
31
39
|
useEffect(() => {
|
|
32
40
|
setTitle(propTitle);
|
|
33
|
-
|
|
41
|
+
if (propAvatar) {
|
|
42
|
+
setAvatar(propAvatar);
|
|
43
|
+
}
|
|
34
44
|
switch (conversation?.type) {
|
|
35
45
|
case TIM.TYPES.CONV_C2C:
|
|
36
46
|
handleC2C(conversation.userProfile);
|
|
@@ -51,8 +61,8 @@ function TUIChatHeaderDefaultWithContext <T extends TUIChatHeaderDefaultProps>(
|
|
|
51
61
|
if (!title) {
|
|
52
62
|
setTitle(userProfile?.nick || userProfile?.userID);
|
|
53
63
|
}
|
|
54
|
-
if (!
|
|
55
|
-
setAvatar(handleDisplayAvatar(userProfile.avatar));
|
|
64
|
+
if (!propAvatar) {
|
|
65
|
+
setAvatar(<Avatar size={32} image={handleDisplayAvatar(userProfile.avatar)} />);
|
|
56
66
|
}
|
|
57
67
|
};
|
|
58
68
|
|
|
@@ -60,8 +70,11 @@ function TUIChatHeaderDefaultWithContext <T extends TUIChatHeaderDefaultProps>(
|
|
|
60
70
|
if (!title) {
|
|
61
71
|
setTitle(groupProfile?.name || groupProfile?.groupID);
|
|
62
72
|
}
|
|
63
|
-
if (!
|
|
64
|
-
setAvatar(
|
|
73
|
+
if (!propAvatar) {
|
|
74
|
+
setAvatar(<Avatar
|
|
75
|
+
size={32}
|
|
76
|
+
image={handleDisplayAvatar(groupProfile.avatar, TIM.TYPES.CONV_GROUP)}
|
|
77
|
+
/>);
|
|
65
78
|
}
|
|
66
79
|
};
|
|
67
80
|
const { setTUIManageShow } = useTUIKitContext();
|
|
@@ -70,16 +83,23 @@ function TUIChatHeaderDefaultWithContext <T extends TUIChatHeaderDefaultProps>(
|
|
|
70
83
|
};
|
|
71
84
|
|
|
72
85
|
return (
|
|
73
|
-
<header
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
86
|
+
<header
|
|
87
|
+
className={`tui-chat-header ${isLive ? 'tui-chat-live-header' : ''}`}
|
|
88
|
+
key={conversation?.conversationID}
|
|
89
|
+
>
|
|
90
|
+
<div
|
|
91
|
+
className={`tui-chat-header-left ${conversation?.type === TIM.TYPES.CONV_SYSTEM ? 'system' : ''}`}
|
|
92
|
+
>
|
|
93
|
+
{conversation?.type !== TIM.TYPES.CONV_SYSTEM && avatar}
|
|
94
|
+
</div>
|
|
95
|
+
<div className="header-content">
|
|
96
|
+
<h3 className="title">{title}</h3>
|
|
79
97
|
</div>
|
|
80
98
|
<div className="tui-chat-header-right">
|
|
81
99
|
<div className="header-handle">
|
|
82
|
-
|
|
100
|
+
{
|
|
101
|
+
opateIcon || <Icon className="header-handle-more" onClick={openTUIManage} type={IconTypes.ELLIPSE} width={18} height={5} />
|
|
102
|
+
}
|
|
83
103
|
</div>
|
|
84
104
|
</div>
|
|
85
105
|
|
|
@@ -90,7 +110,7 @@ function TUIChatHeaderDefaultWithContext <T extends TUIChatHeaderDefaultProps>(
|
|
|
90
110
|
const MemoizedTUIChatHeaderDefault = React.memo(TUIChatHeaderDefaultWithContext) as
|
|
91
111
|
typeof TUIChatHeaderDefaultWithContext;
|
|
92
112
|
|
|
93
|
-
export function TUIChatHeaderDefault(props:
|
|
113
|
+
export function TUIChatHeaderDefault(props: TUIChatHeaderBasicProps)
|
|
94
114
|
:React.ReactElement {
|
|
95
115
|
const options = { ...props };
|
|
96
116
|
return <MemoizedTUIChatHeaderDefault {...options} />;
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
&-left {
|
|
8
8
|
display: flex;
|
|
9
9
|
align-items: center;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
}
|
|
11
|
+
.header-content {
|
|
12
|
+
flex: 1;
|
|
13
|
+
padding: 0 8px;
|
|
14
14
|
}
|
|
15
15
|
&-right {
|
|
16
16
|
.header-handle {
|
|
@@ -30,3 +30,7 @@
|
|
|
30
30
|
height: 32px;
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
+
|
|
34
|
+
.tui-chat-live-header {
|
|
35
|
+
|
|
36
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from 'react';
|
|
2
|
-
import { ChatSDK } from 'tim-js-sdk';
|
|
2
|
+
import { ChatSDK, Conversation } from 'tim-js-sdk';
|
|
3
3
|
import { useTUIKit } from './hooks/useTUIKit';
|
|
4
4
|
import { useCreateTUIKitContext } from './hooks/useCreateTUIKitContext';
|
|
5
5
|
import { TUIKitProvider } from '../../context/TUIKitContext';
|
|
@@ -9,15 +9,18 @@ import { TUIChat } from '../TUIChat';
|
|
|
9
9
|
import { TUIManage } from '../TUIManage';
|
|
10
10
|
|
|
11
11
|
export interface ChatProps {
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
tim?: ChatSDK | null,
|
|
13
|
+
customClasses?: unknown,
|
|
14
|
+
activeConversation?: Conversation,
|
|
14
15
|
}
|
|
15
16
|
export function TUIKit<
|
|
16
17
|
T extends ChatProps
|
|
17
18
|
>(
|
|
18
19
|
props:PropsWithChildren<T>,
|
|
19
20
|
):React.ReactElement {
|
|
20
|
-
const {
|
|
21
|
+
const {
|
|
22
|
+
children, tim, customClasses, activeConversation,
|
|
23
|
+
} = props;
|
|
21
24
|
(window as any).tencent_cloud_im_csig_react_uikit_23F_xa = true;
|
|
22
25
|
const {
|
|
23
26
|
conversation,
|
|
@@ -27,7 +30,7 @@ export function TUIKit<
|
|
|
27
30
|
setTUIManageShow,
|
|
28
31
|
TUIProfileShow,
|
|
29
32
|
setTUIProfileShow,
|
|
30
|
-
} = useTUIKit({ tim });
|
|
33
|
+
} = useTUIKit({ tim, activeConversation });
|
|
31
34
|
const chatContextValue = useCreateTUIKitContext({
|
|
32
35
|
tim,
|
|
33
36
|
conversation,
|
|
@@ -2,10 +2,11 @@ import React, { useState, useCallback, useEffect } from 'react';
|
|
|
2
2
|
import { ChatSDK, Conversation, Profile } from 'tim-js-sdk';
|
|
3
3
|
|
|
4
4
|
export interface UseChatParams{
|
|
5
|
-
tim: ChatSDK
|
|
5
|
+
tim: ChatSDK,
|
|
6
|
+
activeConversation?: Conversation,
|
|
6
7
|
}
|
|
7
|
-
export const useTUIKit = ({ tim }:UseChatParams) => {
|
|
8
|
-
const [conversation, setConversation] = useState<Conversation>();
|
|
8
|
+
export const useTUIKit = ({ tim, activeConversation: paramsActiveConversation }:UseChatParams) => {
|
|
9
|
+
const [conversation, setConversation] = useState<Conversation>(paramsActiveConversation);
|
|
9
10
|
const [myProfile, setMyProfile] = useState<Profile>();
|
|
10
11
|
const [TUIManageShow, setTUIManageShow] = useState<boolean>(false);
|
|
11
12
|
const [TUIProfileShow, setTUIProfileShow] = useState<boolean>(false);
|
|
@@ -28,6 +29,9 @@ export const useTUIKit = ({ tim }:UseChatParams) => {
|
|
|
28
29
|
},
|
|
29
30
|
[tim],
|
|
30
31
|
);
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
setConversation(paramsActiveConversation);
|
|
34
|
+
}, [paramsActiveConversation]);
|
|
31
35
|
return {
|
|
32
36
|
conversation,
|
|
33
37
|
setActiveConversation,
|
|
@@ -18,6 +18,10 @@ time, mark, audio, video {
|
|
|
18
18
|
font: inherit;
|
|
19
19
|
vertical-align: baseline;
|
|
20
20
|
}
|
|
21
|
+
a,a:link,a:visited,a:hover,a:active{
|
|
22
|
+
text-decoration: none;
|
|
23
|
+
color:inherit;
|
|
24
|
+
}
|
|
21
25
|
/* HTML5 display-role reset for older browsers */
|
|
22
26
|
article, aside, details, figcaption, figure,
|
|
23
27
|
footer, header, hgroup, menu, nav, section {
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import React, {
|
|
1
|
+
import React, {
|
|
2
|
+
PropsWithChildren, useCallback, useEffect, useRef, useState,
|
|
3
|
+
} from 'react';
|
|
4
|
+
import { useTUIChatActionContext, useTUIChatStateContext } from '../../context';
|
|
5
|
+
import { Icon, IconTypes } from '../Icon';
|
|
2
6
|
import type { MessageContextProps } from './MessageText';
|
|
3
7
|
|
|
4
8
|
function MessageAudioWithContext <T extends MessageContextProps>(
|
|
@@ -10,9 +14,64 @@ function MessageAudioWithContext <T extends MessageContextProps>(
|
|
|
10
14
|
children,
|
|
11
15
|
} = props;
|
|
12
16
|
|
|
17
|
+
const { setAudioSource } = useTUIChatActionContext('MessageAudioWithContext');
|
|
18
|
+
const { audioSource } = useTUIChatStateContext('MessageAudioWithContext');
|
|
19
|
+
const [currentTime, setCurrentTime] = useState(0);
|
|
20
|
+
const audioRef = useRef<HTMLAudioElement>(null);
|
|
21
|
+
const [playClassName, setPlayClassName] = useState(false);
|
|
22
|
+
|
|
23
|
+
const play = useCallback(() => {
|
|
24
|
+
if (audioSource && audioSource !== audioRef?.current) {
|
|
25
|
+
audioSource.pause();
|
|
26
|
+
audioSource.currentTime = 0;
|
|
27
|
+
setAudioSource(null);
|
|
28
|
+
}
|
|
29
|
+
if (audioRef?.current) {
|
|
30
|
+
if (!audioRef.current.paused) {
|
|
31
|
+
audioRef.current.pause();
|
|
32
|
+
endFunction();
|
|
33
|
+
} else {
|
|
34
|
+
audioRef.current.play();
|
|
35
|
+
setPlayClassName(true);
|
|
36
|
+
setAudioSource(audioRef.current);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}, [audioRef, audioSource]);
|
|
40
|
+
|
|
41
|
+
const pauseFunction = () => {
|
|
42
|
+
setPlayClassName(false);
|
|
43
|
+
};
|
|
44
|
+
const endFunction = () => {
|
|
45
|
+
setAudioSource(null);
|
|
46
|
+
audioRef.current.currentTime = 0;
|
|
47
|
+
pauseFunction();
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
if (audioRef?.current) {
|
|
52
|
+
audioRef.current.addEventListener('pause', pauseFunction);
|
|
53
|
+
audioRef.current.addEventListener('ended', endFunction);
|
|
54
|
+
audioRef.current.addEventListener('canplay', () => {
|
|
55
|
+
setCurrentTime(parseInt(`${audioRef.current.duration}`, 10));
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return () => {
|
|
59
|
+
if (audioRef?.current) {
|
|
60
|
+
audioRef.current.removeEventListener('pause', pauseFunction);
|
|
61
|
+
audioRef.current.removeEventListener('ended', endFunction);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
}, [audioRef]);
|
|
65
|
+
|
|
13
66
|
return (
|
|
14
67
|
<div className="message-audio">
|
|
15
|
-
<
|
|
68
|
+
<div className={`message-audio-content message-audio-${message.flow}`}>
|
|
69
|
+
<Icon className={`${message?.flow} ${playClassName ? 'playing' : ''}`} type={IconTypes.VOICE} width={16} height={16} onClick={play} />
|
|
70
|
+
<span>{`${currentTime}s`}</span>
|
|
71
|
+
</div>
|
|
72
|
+
<audio src={context?.url} ref={audioRef} controls className="message-audio-none">
|
|
73
|
+
<track kind="captions" />
|
|
74
|
+
</audio>
|
|
16
75
|
{children}
|
|
17
76
|
</div>
|
|
18
77
|
);
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import React, {
|
|
2
|
+
PropsWithChildren,
|
|
3
|
+
} from 'react';
|
|
4
|
+
import TIM, { Message } from 'tim-js-sdk';
|
|
5
|
+
import { MESSAGE_FLOW } from '../../constants';
|
|
6
|
+
import { messageShowType } from '../../context';
|
|
7
|
+
import { Avatar } from '../Avatar';
|
|
8
|
+
import { handleDisplayAvatar } from '../untils';
|
|
9
|
+
|
|
10
|
+
export interface MessageAvatarProps {
|
|
11
|
+
CustomAvatar?: React.ReactElement,
|
|
12
|
+
className?: string,
|
|
13
|
+
message?: Message,
|
|
14
|
+
showType?: messageShowType,
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function MessageAvatar <T extends MessageAvatarProps>(
|
|
18
|
+
props: PropsWithChildren<T>,
|
|
19
|
+
):React.ReactElement {
|
|
20
|
+
const {
|
|
21
|
+
className,
|
|
22
|
+
CustomAvatar,
|
|
23
|
+
message,
|
|
24
|
+
showType,
|
|
25
|
+
} = props;
|
|
26
|
+
|
|
27
|
+
const show = showType === messageShowType.ALL || message?.flow === showType;
|
|
28
|
+
|
|
29
|
+
if (!show || showType === messageShowType.NONE) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (CustomAvatar) {
|
|
34
|
+
return CustomAvatar;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return (<Avatar size={32} image={handleDisplayAvatar(message?.avatar)} />);
|
|
38
|
+
}
|
|
@@ -5,15 +5,17 @@ import React, {
|
|
|
5
5
|
} from 'react';
|
|
6
6
|
import TIM, { Message } from 'tim-js-sdk';
|
|
7
7
|
import { MESSAGE_STATUS } from '../../constants';
|
|
8
|
+
import { useTUIChatActionContext } from '../../context';
|
|
8
9
|
import { Icon, IconTypes } from '../Icon';
|
|
9
10
|
import { useMessageReply } from './hooks/useMessageReply';
|
|
11
|
+
import { MessageProgress } from './MessageProgress';
|
|
10
12
|
|
|
11
13
|
export interface MessageBubbleProps {
|
|
12
14
|
message?: Message,
|
|
13
15
|
className?: string,
|
|
14
16
|
children?: ReactNode,
|
|
15
17
|
Context?: React.ComponentType<any>,
|
|
16
|
-
Plugins?: React.ComponentType<any
|
|
18
|
+
Plugins?: React.ComponentType<any> | undefined,
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
function MessageBubbleWithContext <T extends MessageBubbleProps>(
|
|
@@ -34,6 +36,8 @@ function MessageBubbleWithContext <T extends MessageBubbleProps>(
|
|
|
34
36
|
sender,
|
|
35
37
|
} = useMessageReply({ message });
|
|
36
38
|
|
|
39
|
+
const { setHighlightedMessageId } = useTUIChatActionContext('MessageBubbleWithContext');
|
|
40
|
+
|
|
37
41
|
const handleLoading = () => !!((
|
|
38
42
|
message?.type === TIM.TYPES.MSG_IMAGE
|
|
39
43
|
|| message?.type === TIM.TYPES.MSG_VIDEO
|
|
@@ -47,6 +51,10 @@ function MessageBubbleWithContext <T extends MessageBubbleProps>(
|
|
|
47
51
|
setPluginsShow(false);
|
|
48
52
|
};
|
|
49
53
|
|
|
54
|
+
const handleReplyMessage = () => {
|
|
55
|
+
setHighlightedMessageId(replyMessage?.ID);
|
|
56
|
+
};
|
|
57
|
+
|
|
50
58
|
return (
|
|
51
59
|
<div className="meesage-bubble">
|
|
52
60
|
<div
|
|
@@ -63,17 +71,27 @@ function MessageBubbleWithContext <T extends MessageBubbleProps>(
|
|
|
63
71
|
>
|
|
64
72
|
{
|
|
65
73
|
messageReply && (
|
|
66
|
-
<
|
|
74
|
+
<div
|
|
75
|
+
className="meesage-bubble-reply-main"
|
|
76
|
+
role="menuitem"
|
|
77
|
+
tabIndex={0}
|
|
78
|
+
onClick={handleReplyMessage}
|
|
79
|
+
>
|
|
67
80
|
<header className="title">{sender}</header>
|
|
68
81
|
{Context && <Context message={replyMessage} />}
|
|
69
|
-
</
|
|
82
|
+
</div>
|
|
70
83
|
)
|
|
71
84
|
}
|
|
72
85
|
{children}
|
|
86
|
+
<MessageProgress message={message} />
|
|
73
87
|
</div>
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
88
|
+
{
|
|
89
|
+
Plugins && (
|
|
90
|
+
<div className="message-plugin">
|
|
91
|
+
{PluginsShow && <Plugins />}
|
|
92
|
+
</div>
|
|
93
|
+
)
|
|
94
|
+
}
|
|
77
95
|
</div>
|
|
78
96
|
<div className="message-bubble-status icon">
|
|
79
97
|
{
|
|
@@ -64,9 +64,12 @@ function MessageContextWithContext <T extends MessageContextProps>(
|
|
|
64
64
|
};
|
|
65
65
|
|
|
66
66
|
const Elements = CustemComponents[message?.type] || components[message?.type];
|
|
67
|
-
|
|
68
67
|
return Elements
|
|
69
|
-
&&
|
|
68
|
+
&& (
|
|
69
|
+
<Elements context={context} message={message}>
|
|
70
|
+
<MessageStatus message={message} />
|
|
71
|
+
</Elements>
|
|
72
|
+
);
|
|
70
73
|
}
|
|
71
74
|
|
|
72
75
|
const MemoizedMessageContext = React.memo(MessageContextWithContext) as
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from 'react';
|
|
2
|
+
import TIM from 'tim-js-sdk';
|
|
2
3
|
import { JSONStringToParse } from '../untils';
|
|
3
4
|
import type { MessageContextProps } from './MessageText';
|
|
4
5
|
|
|
@@ -23,7 +24,7 @@ function MessageCustomWithContext <T extends MessageContextProps>(
|
|
|
23
24
|
};
|
|
24
25
|
|
|
25
26
|
return (
|
|
26
|
-
<div className={`bubble message-custom bubble-${message.flow}`}>
|
|
27
|
+
<div className={`bubble message-custom bubble-${message.flow} ${message?.conversationType === TIM.TYPES.CONV_GROUP ? 'group' : ''}`}>
|
|
27
28
|
{handleContext(context?.custom)}
|
|
28
29
|
{children}
|
|
29
30
|
</div>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from 'react';
|
|
2
|
+
import TIM from 'tim-js-sdk';
|
|
2
3
|
import { Icon, IconTypes } from '../Icon';
|
|
3
4
|
import type { MessageContextProps } from './MessageText';
|
|
4
5
|
|
|
@@ -10,9 +11,14 @@ function MessageFileWithContext <T extends MessageContextProps>(
|
|
|
10
11
|
message,
|
|
11
12
|
children,
|
|
12
13
|
} = props;
|
|
13
|
-
|
|
14
14
|
return (
|
|
15
|
-
<
|
|
15
|
+
<a
|
|
16
|
+
href={context.url}
|
|
17
|
+
download={context.name}
|
|
18
|
+
target="_parent"
|
|
19
|
+
className={`bubble message-file bubble-${message.flow} ${message?.conversationType === TIM.TYPES.CONV_GROUP ? 'group' : ''}`}
|
|
20
|
+
rel="noreferrer"
|
|
21
|
+
>
|
|
16
22
|
<main className="message-file-main">
|
|
17
23
|
<Icon className="icon" width={15} height={20} type={IconTypes.FILE} />
|
|
18
24
|
<label htmlFor="message-file">{ context.name }</label>
|
|
@@ -21,7 +27,7 @@ function MessageFileWithContext <T extends MessageContextProps>(
|
|
|
21
27
|
<span className="message-file-size">{ context.size }</span>
|
|
22
28
|
{children}
|
|
23
29
|
</div>
|
|
24
|
-
</
|
|
30
|
+
</a>
|
|
25
31
|
);
|
|
26
32
|
}
|
|
27
33
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React, { PropsWithChildren, useState } from 'react';
|
|
2
|
+
import TIM from 'tim-js-sdk';
|
|
2
3
|
import { Model } from '../Model';
|
|
3
4
|
import type { MessageContextProps } from './MessageText';
|
|
4
5
|
|
|
@@ -18,7 +19,7 @@ function MessageImageWithContext <T extends MessageContextProps>(
|
|
|
18
19
|
return (
|
|
19
20
|
<div className="message-image">
|
|
20
21
|
<div role="button" tabIndex={0} onClick={() => { setShow(true); }}>
|
|
21
|
-
<img className={`img bubble-${message.flow}`} src={context.url} alt="" />
|
|
22
|
+
<img className={`img bubble-${message.flow} ${message?.conversationType === TIM.TYPES.CONV_GROUP ? 'group' : ''}`} src={context.url} alt="" />
|
|
22
23
|
</div>
|
|
23
24
|
{children}
|
|
24
25
|
{
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from 'react';
|
|
2
|
+
import TIM from 'tim-js-sdk';
|
|
2
3
|
import type { MessageContextProps } from './MessageText';
|
|
3
4
|
|
|
4
5
|
function MessageMergerWithContext <T extends MessageContextProps>(
|
|
@@ -11,7 +12,7 @@ function MessageMergerWithContext <T extends MessageContextProps>(
|
|
|
11
12
|
} = props;
|
|
12
13
|
|
|
13
14
|
return (
|
|
14
|
-
<div className={`bubble message-merger bubble-${message.flow}`}>
|
|
15
|
+
<div className={`bubble message-merger bubble-${message.flow} ${message?.conversationType === TIM.TYPES.CONV_GROUP ? 'group' : ''}`}>
|
|
15
16
|
<h3>{context.title}</h3>
|
|
16
17
|
<ul className="message-merger-list">
|
|
17
18
|
{
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React, {
|
|
2
|
+
PropsWithChildren,
|
|
3
|
+
} from 'react';
|
|
4
|
+
import TIM, { Message } from 'tim-js-sdk';
|
|
5
|
+
import { MESSAGE_FLOW } from '../../constants';
|
|
6
|
+
import { messageShowType } from '../../context';
|
|
7
|
+
|
|
8
|
+
export interface MessageNameProps {
|
|
9
|
+
CustomName?: React.ReactElement,
|
|
10
|
+
className?: string,
|
|
11
|
+
message?: Message,
|
|
12
|
+
showType?: messageShowType,
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function MessageName <T extends MessageNameProps>(
|
|
16
|
+
props: PropsWithChildren<T>,
|
|
17
|
+
):React.ReactElement {
|
|
18
|
+
const {
|
|
19
|
+
className,
|
|
20
|
+
CustomName,
|
|
21
|
+
message,
|
|
22
|
+
showType,
|
|
23
|
+
} = props;
|
|
24
|
+
|
|
25
|
+
const show = (showType === messageShowType.ALL || message?.flow === showType)
|
|
26
|
+
&& message?.conversationType === TIM.TYPES.CONV_GROUP;
|
|
27
|
+
|
|
28
|
+
if (!show || showType === messageShowType.NONE) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (CustomName) {
|
|
33
|
+
return CustomName;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return (
|
|
37
|
+
<label htmlFor="content" className="name">
|
|
38
|
+
{message?.nick || message?.from}
|
|
39
|
+
</label>
|
|
40
|
+
);
|
|
41
|
+
}
|