@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
|
@@ -8,19 +8,39 @@ import { useTUIChatStateContext, useTUIMessageContext } from '../../context';
|
|
|
8
8
|
import { useMessagePluginElement, useMessageHandler } from './hooks';
|
|
9
9
|
import { MESSAGE_FLOW, MESSAGE_STATUS } from '../../constants';
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
enum PluginsNameEnum {
|
|
12
|
+
quote = 'quote',
|
|
13
|
+
forward = 'forward',
|
|
14
|
+
copy = 'copy',
|
|
15
|
+
delete = 'delete',
|
|
16
|
+
resend = 'resend',
|
|
17
|
+
revoke = 'revoke',
|
|
18
|
+
}
|
|
19
|
+
export type MessagePluginConfigProps = {
|
|
20
|
+
[propsName in PluginsNameEnum]?: {
|
|
21
|
+
isShow?: boolean;
|
|
22
|
+
relateMessageType?: TIM.TYPES[],
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export interface MessagePluginsProps extends PluginsProps {
|
|
27
|
+
config?: MessagePluginConfigProps
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function MessagePlugins <T extends MessagePluginsProps>(
|
|
12
31
|
props:PropsWithChildren<T>,
|
|
13
32
|
):React.ReactElement {
|
|
14
33
|
const {
|
|
15
34
|
plugins: propsPlugins,
|
|
16
|
-
showNumber
|
|
35
|
+
showNumber: propsShowNumber,
|
|
17
36
|
MoreIcon: propsMoreIcon,
|
|
37
|
+
config: propsPluginConfig,
|
|
18
38
|
} = props;
|
|
19
39
|
|
|
20
40
|
const [className, setClassName] = useState('');
|
|
21
41
|
const pluginsRef = useRef(null);
|
|
22
42
|
|
|
23
|
-
const { message } = useTUIMessageContext('MessagePlugins');
|
|
43
|
+
const { message, plugin: contextPlugin } = useTUIMessageContext('MessagePlugins');
|
|
24
44
|
const { messageListRef } = useTUIChatStateContext('MessageBubbleWithContext');
|
|
25
45
|
const {
|
|
26
46
|
handleDelMessage,
|
|
@@ -31,6 +51,40 @@ export function MessagePlugins <T extends PluginsProps>(
|
|
|
31
51
|
handleForWardMessage,
|
|
32
52
|
} = useMessageHandler({ message });
|
|
33
53
|
|
|
54
|
+
const pluginConfig = {
|
|
55
|
+
quote: {
|
|
56
|
+
isShow: true,
|
|
57
|
+
...propsPluginConfig?.quote,
|
|
58
|
+
...contextPlugin?.config?.quote,
|
|
59
|
+
},
|
|
60
|
+
forward: {
|
|
61
|
+
isShow: true,
|
|
62
|
+
...propsPluginConfig?.forward,
|
|
63
|
+
...contextPlugin?.config?.forward,
|
|
64
|
+
},
|
|
65
|
+
copy: {
|
|
66
|
+
isShow: true,
|
|
67
|
+
relateMessageType: [TIM.TYPES.MSG_TEXT],
|
|
68
|
+
...propsPluginConfig?.copy,
|
|
69
|
+
...contextPlugin?.config?.copy,
|
|
70
|
+
},
|
|
71
|
+
delete: {
|
|
72
|
+
isShow: true,
|
|
73
|
+
...propsPluginConfig?.delete,
|
|
74
|
+
...contextPlugin?.config?.delete,
|
|
75
|
+
},
|
|
76
|
+
revoke: {
|
|
77
|
+
isShow: true,
|
|
78
|
+
...propsPluginConfig?.revoke,
|
|
79
|
+
...contextPlugin?.config?.revoke,
|
|
80
|
+
},
|
|
81
|
+
resend: {
|
|
82
|
+
isShow: true,
|
|
83
|
+
...propsPluginConfig?.resend,
|
|
84
|
+
...contextPlugin?.config?.resend,
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
|
|
34
88
|
const handleVisible = (data) => {
|
|
35
89
|
setClassName(`${!data.top && 'message-plugin-top'} ${!data.left && 'message-plugin-left'}`);
|
|
36
90
|
};
|
|
@@ -47,6 +101,9 @@ export function MessagePlugins <T extends PluginsProps>(
|
|
|
47
101
|
handleRevokeMessage(e);
|
|
48
102
|
},
|
|
49
103
|
message,
|
|
104
|
+
isShow: pluginConfig.revoke.isShow
|
|
105
|
+
&& (message?.status === MESSAGE_STATUS.SUCCESS && message.flow === MESSAGE_FLOW.OUT),
|
|
106
|
+
relateMessageType: pluginConfig.revoke.relateMessageType,
|
|
50
107
|
});
|
|
51
108
|
|
|
52
109
|
const DeleteElement = useMessagePluginElement({
|
|
@@ -61,6 +118,8 @@ export function MessagePlugins <T extends PluginsProps>(
|
|
|
61
118
|
handleDelMessage(e);
|
|
62
119
|
},
|
|
63
120
|
message,
|
|
121
|
+
isShow: pluginConfig.delete.isShow && message?.status === MESSAGE_STATUS.SUCCESS,
|
|
122
|
+
relateMessageType: pluginConfig.delete.relateMessageType,
|
|
64
123
|
});
|
|
65
124
|
|
|
66
125
|
const ReplyElement = useMessagePluginElement({
|
|
@@ -75,6 +134,8 @@ export function MessagePlugins <T extends PluginsProps>(
|
|
|
75
134
|
handleReplyMessage(e);
|
|
76
135
|
},
|
|
77
136
|
message,
|
|
137
|
+
isShow: pluginConfig.quote.isShow && message?.status === MESSAGE_STATUS.SUCCESS,
|
|
138
|
+
relateMessageType: pluginConfig.quote.relateMessageType,
|
|
78
139
|
});
|
|
79
140
|
|
|
80
141
|
const CopyElement = useMessagePluginElement({
|
|
@@ -89,6 +150,8 @@ export function MessagePlugins <T extends PluginsProps>(
|
|
|
89
150
|
handleCopyMessage(e);
|
|
90
151
|
},
|
|
91
152
|
message,
|
|
153
|
+
isShow: pluginConfig.copy.isShow && message?.status === MESSAGE_STATUS.SUCCESS,
|
|
154
|
+
relateMessageType: pluginConfig.copy.relateMessageType,
|
|
92
155
|
});
|
|
93
156
|
|
|
94
157
|
const ResendElement = useMessagePluginElement({
|
|
@@ -103,6 +166,8 @@ export function MessagePlugins <T extends PluginsProps>(
|
|
|
103
166
|
handleResendMessage(e);
|
|
104
167
|
},
|
|
105
168
|
message,
|
|
169
|
+
isShow: pluginConfig.resend.isShow && message?.status !== MESSAGE_STATUS.SUCCESS,
|
|
170
|
+
relateMessageType: pluginConfig.resend.relateMessageType,
|
|
106
171
|
});
|
|
107
172
|
|
|
108
173
|
const ForWardElement = useMessagePluginElement({
|
|
@@ -117,22 +182,24 @@ export function MessagePlugins <T extends PluginsProps>(
|
|
|
117
182
|
handleForWardMessage(e);
|
|
118
183
|
},
|
|
119
184
|
message,
|
|
185
|
+
isShow: pluginConfig.forward.isShow && message?.status === MESSAGE_STATUS.SUCCESS,
|
|
186
|
+
relateMessageType: pluginConfig.forward.relateMessageType,
|
|
120
187
|
});
|
|
121
188
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
189
|
+
const defaultPlugins = [
|
|
190
|
+
RevokeElement,
|
|
191
|
+
ReplyElement,
|
|
192
|
+
ForWardElement,
|
|
193
|
+
DeleteElement,
|
|
194
|
+
ResendElement,
|
|
195
|
+
CopyElement,
|
|
196
|
+
];
|
|
128
197
|
|
|
129
|
-
|
|
130
|
-
defaultPlugins.splice(-1, 0, CopyElement);
|
|
131
|
-
}
|
|
198
|
+
const plugins = (propsPlugins || contextPlugin?.plugins || defaultPlugins).filter((item) => item);
|
|
132
199
|
|
|
133
|
-
const
|
|
200
|
+
const MoreIcon = propsMoreIcon || contextPlugin?.MoreIcon || <Icon className="icon-more" width={16} height={16} type={IconTypes.MORE} />;
|
|
134
201
|
|
|
135
|
-
const
|
|
202
|
+
const showNumber = propsShowNumber || contextPlugin?.showNumber || 0;
|
|
136
203
|
|
|
137
204
|
return message?.status !== MESSAGE_STATUS.UNSEND && (
|
|
138
205
|
<Plugins
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import React, {
|
|
2
|
+
PropsWithChildren,
|
|
3
|
+
useEffect,
|
|
4
|
+
useState,
|
|
5
|
+
} from 'react';
|
|
6
|
+
import TIM, { Message } from 'tim-js-sdk';
|
|
7
|
+
import { MESSAGE_STATUS } from '../../constants';
|
|
8
|
+
import { useTUIChatStateContext, useTUIMessageContext } from '../../context';
|
|
9
|
+
|
|
10
|
+
export interface MessageProgressProps {
|
|
11
|
+
message?: Message,
|
|
12
|
+
className?: string,
|
|
13
|
+
Progress?: React.ComponentType<{message: Message}>,
|
|
14
|
+
isShow?: boolean,
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
interface MessageProgressItem extends Message {
|
|
18
|
+
progress?: number,
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function MessageProgressWithContext <T extends MessageProgressProps>(
|
|
22
|
+
props: PropsWithChildren<T>,
|
|
23
|
+
):React.ReactElement {
|
|
24
|
+
const {
|
|
25
|
+
message,
|
|
26
|
+
children,
|
|
27
|
+
Progress: propsProgress,
|
|
28
|
+
isShow: propsIsShow = false,
|
|
29
|
+
} = props;
|
|
30
|
+
|
|
31
|
+
const [progressMessage, setProgressMessage] = useState<Message>();
|
|
32
|
+
const [progress, setProgress] = useState<number>(0);
|
|
33
|
+
|
|
34
|
+
const { uploadPenddingMessageList } = useTUIChatStateContext('MessageProgressWithContext');
|
|
35
|
+
const { isShowProgress: contextIsShow = false, Progress: contextProgress } = useTUIMessageContext('MessageProgressWithContext');
|
|
36
|
+
|
|
37
|
+
const Progress = propsProgress || contextProgress;
|
|
38
|
+
const isShow = propsIsShow || contextIsShow;
|
|
39
|
+
|
|
40
|
+
const handleLoading = () => !!((
|
|
41
|
+
message?.type === TIM.TYPES.MSG_IMAGE
|
|
42
|
+
|| message?.type === TIM.TYPES.MSG_VIDEO
|
|
43
|
+
|| message?.type === TIM.TYPES.MSG_FILE
|
|
44
|
+
) && message?.status === MESSAGE_STATUS.UNSEND);
|
|
45
|
+
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
if (uploadPenddingMessageList && uploadPenddingMessageList.length > 0) {
|
|
48
|
+
uploadPenddingMessageList.map((item:MessageProgressItem) => {
|
|
49
|
+
if (item?.ID === message?.ID) {
|
|
50
|
+
setProgressMessage(item);
|
|
51
|
+
setProgress(item?.progress);
|
|
52
|
+
}
|
|
53
|
+
return item;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}, [uploadPenddingMessageList]);
|
|
57
|
+
|
|
58
|
+
if (!isShow) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (Progress) {
|
|
63
|
+
return <Progress message={progressMessage} />;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return handleLoading() && (
|
|
67
|
+
<div className="progress-box">
|
|
68
|
+
<span
|
|
69
|
+
className="progress"
|
|
70
|
+
style={
|
|
71
|
+
{
|
|
72
|
+
width: `${progress * 100}%`,
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/>
|
|
76
|
+
{children}
|
|
77
|
+
</div>
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const MemoizedMessageProgress = React.memo(MessageProgressWithContext) as
|
|
82
|
+
typeof MessageProgressWithContext;
|
|
83
|
+
|
|
84
|
+
export function MessageProgress(props:MessageProgressProps):React.ReactElement {
|
|
85
|
+
return (
|
|
86
|
+
<MemoizedMessageProgress {...props} />
|
|
87
|
+
);
|
|
88
|
+
}
|
|
@@ -27,7 +27,7 @@ function MessageRevokeWithContext <T extends MessageContextProps>(
|
|
|
27
27
|
{
|
|
28
28
|
message?.flow !== MESSAGE_FLOW.IN && <span>you </span>
|
|
29
29
|
}
|
|
30
|
-
<span>recalled a message</span>
|
|
30
|
+
<span> recalled a message</span>
|
|
31
31
|
{
|
|
32
32
|
message?.flow === MESSAGE_FLOW.OUT
|
|
33
33
|
&& message?.type === TIM.TYPES.MSG_TEXT
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from 'react';
|
|
2
2
|
import { Message } from 'tim-js-sdk';
|
|
3
|
+
import { useTUIMessageContext } from '../../context';
|
|
3
4
|
import { getTimeStamp } from '../untils';
|
|
4
5
|
|
|
5
6
|
export interface MessageContextProps {
|
|
@@ -13,7 +14,11 @@ function MessageStatustWithContext <T extends MessageContextProps>(
|
|
|
13
14
|
message,
|
|
14
15
|
} = props;
|
|
15
16
|
|
|
16
|
-
const
|
|
17
|
+
const {
|
|
18
|
+
isShowTime,
|
|
19
|
+
} = useTUIMessageContext('MessageStatustWithContext');
|
|
20
|
+
|
|
21
|
+
const timeElement = (typeof isShowTime === 'undefined' || isShowTime) && <div className="time">{message?.time ? getTimeStamp(message.time * 1000) : 0}</div>;
|
|
17
22
|
|
|
18
23
|
return (
|
|
19
24
|
<div className="message-status">
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from 'react';
|
|
2
|
-
import { Message } from 'tim-js-sdk';
|
|
2
|
+
import TIM, { Message } from 'tim-js-sdk';
|
|
3
3
|
import { UnknowPorps } from '../../context';
|
|
4
4
|
|
|
5
5
|
export interface MessageContextProps {
|
|
@@ -18,12 +18,12 @@ function MessageTextWithContext <T extends MessageContextProps>(
|
|
|
18
18
|
} = props;
|
|
19
19
|
|
|
20
20
|
return (
|
|
21
|
-
<div className={`bubble message-text bubble-${message.flow}`}>
|
|
21
|
+
<div className={`bubble message-text bubble-${message.flow} ${message?.conversationType === TIM.TYPES.CONV_GROUP ? 'group' : ''}`}>
|
|
22
22
|
<div className="message-text-content">
|
|
23
23
|
{context.text.map((item, index) => {
|
|
24
24
|
const key = message.ID + index;
|
|
25
25
|
if (item.name === 'text') {
|
|
26
|
-
return item.text
|
|
26
|
+
return <p className="message-text-content-p" key={item.src + key}>{item.text}</p>;
|
|
27
27
|
}
|
|
28
28
|
return <img className="text-img" key={item.src + key} src={item.src} alt="" />;
|
|
29
29
|
})}
|
|
@@ -1,18 +1,34 @@
|
|
|
1
1
|
import React, { PropsWithChildren, ReactEventHandler } from 'react';
|
|
2
2
|
import { Message } from 'tim-js-sdk';
|
|
3
3
|
|
|
4
|
-
import { UnknowPorps, useComponentContext } from '../../context';
|
|
4
|
+
import { UnknowPorps, useComponentContext, useTUIChatStateContext } from '../../context';
|
|
5
5
|
|
|
6
|
-
import { TUIMessageContextProvider } from '../../context/TUIMessageContext';
|
|
6
|
+
import { messageShowType, TUIMessageContextProvider } from '../../context/TUIMessageContext';
|
|
7
7
|
import { useMessageHandler } from './hooks';
|
|
8
8
|
|
|
9
9
|
import './styles/index.scss';
|
|
10
10
|
import { TUIMessageDefault } from './TUIMessageDefault';
|
|
11
|
-
import { MessagePlugins as MessagePluginsDefault } from './MessagePlugins';
|
|
11
|
+
import { MessagePlugins as MessagePluginsDefault, MessagePluginsProps } from './MessagePlugins';
|
|
12
12
|
import { MessageContext as MessageContextDefault } from './MessageContext';
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
interface TUIMessageBasicProps {
|
|
15
|
+
className?: string,
|
|
16
|
+
filter?: (data:Message) => void,
|
|
17
|
+
isShowTime?: boolean,
|
|
18
|
+
isShowRead?: boolean,
|
|
19
|
+
plugin?: MessagePluginsProps,
|
|
20
|
+
prefix?: React.ReactElement | string,
|
|
21
|
+
suffix?: React.ReactElement | string,
|
|
22
|
+
customName?: React.ReactElement,
|
|
23
|
+
showAvatar?: messageShowType,
|
|
24
|
+
showName?: messageShowType,
|
|
25
|
+
customAvatar?: React.ReactElement,
|
|
26
|
+
isShowProgress?: boolean,
|
|
27
|
+
Progress?: React.ComponentType<{message: Message}>,
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface TUIMessageProps extends TUIMessageBasicProps {
|
|
31
|
+
message?: Message,
|
|
16
32
|
className?: string,
|
|
17
33
|
TUIMessage?: React.ComponentType,
|
|
18
34
|
MessageContext?: React.ComponentType<UnknowPorps>,
|
|
@@ -32,7 +48,7 @@ function TUIMessageWithContext <T extends TUIMessageProps>(
|
|
|
32
48
|
props: PropsWithChildren<T>,
|
|
33
49
|
):React.ReactElement {
|
|
34
50
|
const {
|
|
35
|
-
message,
|
|
51
|
+
message: propsMessage,
|
|
36
52
|
TUIMessage: propTUIMessage,
|
|
37
53
|
MessagePlugins: propMessagePlugins,
|
|
38
54
|
MessageContext: propMessageContext,
|
|
@@ -46,6 +62,19 @@ function TUIMessageWithContext <T extends TUIMessageProps>(
|
|
|
46
62
|
MergerElement,
|
|
47
63
|
LocationElement,
|
|
48
64
|
FaceElement,
|
|
65
|
+
className,
|
|
66
|
+
filter: propsFilter,
|
|
67
|
+
isShowTime,
|
|
68
|
+
isShowRead,
|
|
69
|
+
plugin,
|
|
70
|
+
prefix,
|
|
71
|
+
suffix,
|
|
72
|
+
customName,
|
|
73
|
+
showAvatar,
|
|
74
|
+
showName,
|
|
75
|
+
customAvatar,
|
|
76
|
+
isShowProgress,
|
|
77
|
+
Progress,
|
|
49
78
|
} = props;
|
|
50
79
|
|
|
51
80
|
const {
|
|
@@ -53,29 +82,52 @@ function TUIMessageWithContext <T extends TUIMessageProps>(
|
|
|
53
82
|
MessageContext: ContextMessageContext,
|
|
54
83
|
} = useComponentContext('TUIMessage');
|
|
55
84
|
|
|
85
|
+
const {
|
|
86
|
+
messageConfig,
|
|
87
|
+
} = useTUIChatStateContext('TUIMessage');
|
|
88
|
+
|
|
56
89
|
const TUIMessageUIComponent = propTUIMessage || TUIMessageDefault;
|
|
57
90
|
const MessagePlugins = propMessagePlugins || ContextMessagePlugins || MessagePluginsDefault;
|
|
58
91
|
const MessageContext = propMessageContext || ContextMessageContext || MessageContextDefault;
|
|
59
92
|
|
|
93
|
+
const filter = propsFilter || messageConfig?.filter;
|
|
94
|
+
const message = propsMessage || messageConfig?.message;
|
|
95
|
+
if (filter) {
|
|
96
|
+
filter(message);
|
|
97
|
+
}
|
|
98
|
+
|
|
60
99
|
const messageContextValue = {
|
|
61
100
|
message,
|
|
62
|
-
handleDelete,
|
|
63
|
-
CustemElement,
|
|
64
|
-
TextElement,
|
|
65
|
-
ImageElement,
|
|
66
|
-
VideoElement,
|
|
67
|
-
AudioElement,
|
|
68
|
-
FileElement,
|
|
69
|
-
MergerElement,
|
|
70
|
-
LocationElement,
|
|
71
|
-
FaceElement,
|
|
101
|
+
handleDelete: handleDelete || messageConfig?.handleDelete,
|
|
102
|
+
CustemElement: CustemElement || messageConfig?.CustemElement,
|
|
103
|
+
TextElement: TextElement || messageConfig?.TextElement,
|
|
104
|
+
ImageElement: ImageElement || messageConfig?.ImageElement,
|
|
105
|
+
VideoElement: VideoElement || messageConfig?.VideoElement,
|
|
106
|
+
AudioElement: AudioElement || messageConfig?.AudioElement,
|
|
107
|
+
FileElement: FileElement || messageConfig?.FileElement,
|
|
108
|
+
MergerElement: MergerElement || messageConfig?.MergerElement,
|
|
109
|
+
LocationElement: LocationElement || messageConfig?.LocationElement,
|
|
110
|
+
FaceElement: FaceElement || messageConfig?.FaceElement,
|
|
111
|
+
isShowTime: isShowTime || messageConfig?.isShowTime,
|
|
112
|
+
isShowRead: isShowRead || messageConfig?.isShowRead,
|
|
113
|
+
plugin: plugin || messageConfig?.plugin,
|
|
114
|
+
prefix: prefix || messageConfig?.prefix,
|
|
115
|
+
suffix: suffix || messageConfig?.suffix,
|
|
116
|
+
customName: customName || messageConfig?.customName,
|
|
117
|
+
showAvatar: showAvatar || messageConfig?.showAvatar,
|
|
118
|
+
showName: showName || messageConfig?.showName,
|
|
119
|
+
customAvatar: customAvatar || messageConfig?.customAvatar,
|
|
120
|
+
isShowProgress: isShowProgress || messageConfig?.isShowProgress,
|
|
121
|
+
Progress: Progress || messageConfig?.Progress,
|
|
72
122
|
};
|
|
123
|
+
|
|
73
124
|
return (
|
|
74
125
|
<TUIMessageContextProvider value={messageContextValue}>
|
|
75
126
|
<TUIMessageUIComponent
|
|
76
127
|
message={message}
|
|
77
128
|
MessageContext={MessageContext}
|
|
78
129
|
MessagePlugins={MessagePlugins}
|
|
130
|
+
className={className || messageConfig?.className}
|
|
79
131
|
/>
|
|
80
132
|
</TUIMessageContextProvider>
|
|
81
133
|
);
|
|
@@ -6,12 +6,11 @@ import { MessageBubble } from './MessageBubble';
|
|
|
6
6
|
import { MessageTip } from './MessageTip';
|
|
7
7
|
|
|
8
8
|
import './styles/index.scss';
|
|
9
|
-
import {
|
|
10
|
-
import { useComponentContext } from '../../context';
|
|
11
|
-
import { handleDisplayAvatar } from '../untils';
|
|
9
|
+
import { messageShowType, useComponentContext, useTUIMessageContext } from '../../context';
|
|
12
10
|
import { MessageSystem } from './MessageSystem';
|
|
13
11
|
import { MessageRevoke } from './MessageRevoke';
|
|
14
|
-
import {
|
|
12
|
+
import { MessageName } from './MessageName';
|
|
13
|
+
import { MessageAvatar } from './MessageAvatar';
|
|
15
14
|
|
|
16
15
|
function TUIMessageDefaultWithContext <T extends TUIMessageProps>(
|
|
17
16
|
props: PropsWithChildren<T>,
|
|
@@ -20,6 +19,7 @@ function TUIMessageDefaultWithContext <T extends TUIMessageProps>(
|
|
|
20
19
|
message,
|
|
21
20
|
MessageContext: propsMessageContext,
|
|
22
21
|
MessagePlugins: propsMessagePlugins,
|
|
22
|
+
className,
|
|
23
23
|
} = props;
|
|
24
24
|
|
|
25
25
|
const {
|
|
@@ -27,11 +27,27 @@ function TUIMessageDefaultWithContext <T extends TUIMessageProps>(
|
|
|
27
27
|
MessagePlugins: contextMessagePlugins,
|
|
28
28
|
} = useComponentContext('TUIMessage');
|
|
29
29
|
|
|
30
|
+
const {
|
|
31
|
+
prefix,
|
|
32
|
+
suffix,
|
|
33
|
+
customName,
|
|
34
|
+
showAvatar = messageShowType.IN,
|
|
35
|
+
showName = messageShowType.IN,
|
|
36
|
+
customAvatar,
|
|
37
|
+
} = useTUIMessageContext('TUIMessage');
|
|
38
|
+
|
|
30
39
|
const MessageContextUIComponent = propsMessageContext || contextMessageContext;
|
|
31
40
|
const MessagePlugins = propsMessagePlugins || contextMessagePlugins;
|
|
32
41
|
|
|
33
42
|
return (
|
|
34
|
-
<div
|
|
43
|
+
<div
|
|
44
|
+
className={
|
|
45
|
+
`message-default
|
|
46
|
+
${(message?.type === TIM.TYPES.MSG_GRP_TIP || message?.isRevoked) ? 'tip' : message?.flow}
|
|
47
|
+
${className}
|
|
48
|
+
`
|
|
49
|
+
}
|
|
50
|
+
>
|
|
35
51
|
{
|
|
36
52
|
message?.type === TIM.TYPES.MSG_GRP_TIP
|
|
37
53
|
&& (<MessageTip message={message} />)
|
|
@@ -53,17 +69,10 @@ function TUIMessageDefaultWithContext <T extends TUIMessageProps>(
|
|
|
53
69
|
key={message?.ID}
|
|
54
70
|
data-message-id={message?.ID}
|
|
55
71
|
>
|
|
56
|
-
{
|
|
57
|
-
|
|
58
|
-
<Avatar size={32} image={handleDisplayAvatar(message?.avatar)} />
|
|
59
|
-
)}
|
|
72
|
+
{prefix}
|
|
73
|
+
<MessageAvatar message={message} CustomAvatar={customAvatar} showType={showAvatar} />
|
|
60
74
|
<main className="content">
|
|
61
|
-
{message
|
|
62
|
-
&& message?.flow === MESSAGE_FLOW.IN && (
|
|
63
|
-
<label htmlFor="content" className="name">
|
|
64
|
-
{message?.nick || message?.from}
|
|
65
|
-
</label>
|
|
66
|
-
)}
|
|
75
|
+
<MessageName message={message} CustomName={customName} showType={showName} />
|
|
67
76
|
<MessageBubble
|
|
68
77
|
message={message}
|
|
69
78
|
Context={MessageContextUIComponent}
|
|
@@ -72,6 +81,7 @@ function TUIMessageDefaultWithContext <T extends TUIMessageProps>(
|
|
|
72
81
|
<MessageContextUIComponent message={message} />
|
|
73
82
|
</MessageBubble>
|
|
74
83
|
</main>
|
|
84
|
+
{suffix}
|
|
75
85
|
</div>
|
|
76
86
|
)}
|
|
77
87
|
</div>
|
|
@@ -1,16 +1,30 @@
|
|
|
1
1
|
import React, { PropsWithChildren } from 'react';
|
|
2
|
+
import TIM, { Message } from 'tim-js-sdk';
|
|
2
3
|
|
|
3
4
|
interface MessagePluginElementProps {
|
|
4
5
|
handle?: (event?:React.SyntheticEvent<Element, Event>) => void,
|
|
5
|
-
children: React.ReactNode
|
|
6
|
+
children: React.ReactNode,
|
|
7
|
+
isShow?: boolean,
|
|
8
|
+
relateMessageType?: TIM.TYPES[],
|
|
9
|
+
message?: Message
|
|
6
10
|
}
|
|
7
11
|
export const useMessagePluginElement = <
|
|
8
12
|
T extends MessagePluginElementProps>(props:PropsWithChildren<T>) => {
|
|
9
13
|
const {
|
|
10
14
|
children,
|
|
11
15
|
handle,
|
|
16
|
+
isShow,
|
|
17
|
+
relateMessageType,
|
|
18
|
+
message,
|
|
12
19
|
} = props;
|
|
13
20
|
|
|
21
|
+
const isNotRelateMessageType = relateMessageType
|
|
22
|
+
&& !relateMessageType.some((item) => (item === message?.type));
|
|
23
|
+
|
|
24
|
+
if (!isShow || isNotRelateMessageType) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
|
|
14
28
|
return (
|
|
15
29
|
<div className="message-plugin-box" role="button" tabIndex={0} onClick={handle}>{children}</div>
|
|
16
30
|
);
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
.message-default {
|
|
2
|
+
width: 100%;
|
|
3
|
+
flex: 1;
|
|
2
4
|
display: flex;
|
|
3
5
|
align-items: center;
|
|
4
6
|
cursor: pointer;
|
|
@@ -27,6 +29,7 @@
|
|
|
27
29
|
}
|
|
28
30
|
|
|
29
31
|
.in {
|
|
32
|
+
flex: 1;
|
|
30
33
|
display: flex;
|
|
31
34
|
flex-direction: row;
|
|
32
35
|
justify-self: flex-start;
|
|
@@ -36,6 +39,7 @@
|
|
|
36
39
|
}
|
|
37
40
|
}
|
|
38
41
|
.out {
|
|
42
|
+
flex: 1;
|
|
39
43
|
display: flex;
|
|
40
44
|
flex-direction: row-reverse;
|
|
41
45
|
justify-self: flex-end;
|
|
@@ -45,13 +49,17 @@
|
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
51
|
.tip {
|
|
48
|
-
justify-self: center;
|
|
52
|
+
justify-self: center !important;
|
|
53
|
+
width: auto;
|
|
49
54
|
}
|
|
50
55
|
|
|
51
56
|
.bubble {
|
|
52
57
|
padding: 8px 16px;
|
|
53
58
|
&-in {
|
|
54
59
|
border-radius: 16px 16px 16px 0;
|
|
60
|
+
&.group {
|
|
61
|
+
border-radius: 0px 16px 16px 16px;
|
|
62
|
+
}
|
|
55
63
|
}
|
|
56
64
|
&-out {
|
|
57
65
|
border-radius: 16px 16px 0 16px;
|
|
@@ -96,6 +104,10 @@
|
|
|
96
104
|
font-weight: 500;
|
|
97
105
|
font-size: 14px;
|
|
98
106
|
line-height: 17px;
|
|
107
|
+
&-p {
|
|
108
|
+
display: inline;
|
|
109
|
+
vertical-align: middle;
|
|
110
|
+
}
|
|
99
111
|
.message-status {
|
|
100
112
|
display: inline-flex;
|
|
101
113
|
float: right;
|
|
@@ -104,7 +116,7 @@
|
|
|
104
116
|
}
|
|
105
117
|
}
|
|
106
118
|
|
|
107
|
-
.message-text,
|
|
119
|
+
.message-text,
|
|
108
120
|
.message-tip {
|
|
109
121
|
font-family: PingFangSC-Regular;
|
|
110
122
|
font-style: normal;
|
|
@@ -114,6 +126,7 @@
|
|
|
114
126
|
.text-img {
|
|
115
127
|
width: 20px;
|
|
116
128
|
height: 20px;
|
|
129
|
+
vertical-align: middle;
|
|
117
130
|
}
|
|
118
131
|
}
|
|
119
132
|
|
|
@@ -261,6 +274,7 @@
|
|
|
261
274
|
&-context {
|
|
262
275
|
display: flex;
|
|
263
276
|
align-items: center;
|
|
277
|
+
padding: 0 8px;
|
|
264
278
|
.message-context{
|
|
265
279
|
flex: 1;
|
|
266
280
|
}
|
|
@@ -391,4 +405,75 @@
|
|
|
391
405
|
|
|
392
406
|
.message-revoke {
|
|
393
407
|
color: #999999;
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
.message-audio {
|
|
411
|
+
display: flex;
|
|
412
|
+
align-items: center;
|
|
413
|
+
.out {
|
|
414
|
+
transform: rotate(180deg);
|
|
415
|
+
}
|
|
416
|
+
&-none {
|
|
417
|
+
display: none;
|
|
418
|
+
}
|
|
419
|
+
&-content {
|
|
420
|
+
display: flex;
|
|
421
|
+
align-items: center;
|
|
422
|
+
gap: 10px;
|
|
423
|
+
}
|
|
424
|
+
&-out {
|
|
425
|
+
flex-direction: row-reverse;
|
|
426
|
+
}
|
|
427
|
+
.playing {
|
|
428
|
+
animation: playingAnimation 1s ease-in-out infinite;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
@keyframes playingAnimation {
|
|
432
|
+
0% {
|
|
433
|
+
opacity: 1;
|
|
434
|
+
}
|
|
435
|
+
50% {
|
|
436
|
+
opacity: 0.3;
|
|
437
|
+
}
|
|
438
|
+
100% {
|
|
439
|
+
opacity: 1;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
.high-lighted {
|
|
445
|
+
animation: highLightedAnimation 1s ease-in-out forwards;
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
@keyframes highLightedAnimation {
|
|
449
|
+
0% {
|
|
450
|
+
opacity: 1;
|
|
451
|
+
}
|
|
452
|
+
25% {
|
|
453
|
+
opacity: 0.3;
|
|
454
|
+
}
|
|
455
|
+
50% {
|
|
456
|
+
opacity: 1;
|
|
457
|
+
}
|
|
458
|
+
75% {
|
|
459
|
+
opacity: 0.3;
|
|
460
|
+
}
|
|
461
|
+
100% {
|
|
462
|
+
opacity: 1;
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
.progress-box {
|
|
467
|
+
width: 100%;
|
|
468
|
+
height: 5px;
|
|
469
|
+
display: flex;
|
|
470
|
+
justify-content: flex-start;
|
|
471
|
+
.progress {
|
|
472
|
+
display: inline-block;
|
|
473
|
+
width: 0;
|
|
474
|
+
background: #147aff;
|
|
475
|
+
height: 5px;
|
|
476
|
+
border-radius: 2px;
|
|
477
|
+
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.25);
|
|
478
|
+
}
|
|
394
479
|
}
|