@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
|
@@ -150,6 +150,150 @@ export const emojiMap:IEmojiMap = {
|
|
|
150
150
|
'[鼓掌]': 'emoji_140@2x.png',
|
|
151
151
|
'[龇牙]': 'emoji_141@2x.png',
|
|
152
152
|
};
|
|
153
|
+
export const emojiEnKey:IEmojiMap = {
|
|
154
|
+
'[NO]': '[no]',
|
|
155
|
+
'[OK]': '[ok]',
|
|
156
|
+
'[下雨]': '[rain]',
|
|
157
|
+
'[么么哒]': '[muah]',
|
|
158
|
+
'[乒乓]': '[ping pong]',
|
|
159
|
+
'[便便]': '[poo]',
|
|
160
|
+
'[信封]': '[mail]',
|
|
161
|
+
'[偷笑]': '[snicker]',
|
|
162
|
+
'[傲慢]': '[arrogant]',
|
|
163
|
+
'[再见]': '[bye]',
|
|
164
|
+
'[冷汗]': '[sweat]',
|
|
165
|
+
'[凋谢]': '[wither]',
|
|
166
|
+
'[刀]': '[knife]',
|
|
167
|
+
'[删除]': '[delete]',
|
|
168
|
+
'[勾引]': '[hook]',
|
|
169
|
+
'[发呆]': '[daze]',
|
|
170
|
+
'[发抖]': '[shaking]',
|
|
171
|
+
'[可怜]': '[pitiful]',
|
|
172
|
+
'[可爱]': '[cute]',
|
|
173
|
+
'[右哼哼]': '[right hum]',
|
|
174
|
+
'[右太极]': '[right Tai Chi]',
|
|
175
|
+
'[右车头]': '[right head]',
|
|
176
|
+
'[吐]': '[vomit]',
|
|
177
|
+
'[吓]': '[scare]',
|
|
178
|
+
'[咒骂]': '[curse]',
|
|
179
|
+
'[咖啡]': '[cafe]',
|
|
180
|
+
'[啤酒]': '[beer]',
|
|
181
|
+
'[嘘]': '[hiss]',
|
|
182
|
+
'[回头]': '[look back]',
|
|
183
|
+
'[困]': '[sleepy]',
|
|
184
|
+
'[坏笑]': '[bad laugh]',
|
|
185
|
+
'[多云]': '[cloud]',
|
|
186
|
+
'[大兵]': '[soldiers]',
|
|
187
|
+
'[大哭]': '[cry]',
|
|
188
|
+
'[太阳]': '[sun]',
|
|
189
|
+
'[奋斗]': '[struggle]',
|
|
190
|
+
'[奶瓶]': '[feeding bottle]',
|
|
191
|
+
'[委屈]': '[wronged]',
|
|
192
|
+
'[害羞]': '[shy]',
|
|
193
|
+
'[尴尬]': '[awkward]',
|
|
194
|
+
'[左哼哼]': '[left hem]',
|
|
195
|
+
'[左太极]': '[left Tai Chi]',
|
|
196
|
+
'[左车头]': '[left head]',
|
|
197
|
+
'[差劲]': '[poor]',
|
|
198
|
+
'[弱]': '[weak]',
|
|
199
|
+
'[强]': '[stong]',
|
|
200
|
+
'[彩带]': '[ribbon]',
|
|
201
|
+
'[彩球]': '[ball]',
|
|
202
|
+
'[得意]': '[proud]',
|
|
203
|
+
'[微笑]': '[smile]',
|
|
204
|
+
'[心碎了]': '[heartbroken]',
|
|
205
|
+
'[快哭了]': '[almost cry]',
|
|
206
|
+
'[怄火]': '[ire]',
|
|
207
|
+
'[怒]': '[anger]',
|
|
208
|
+
'[惊恐]': '[terrify]',
|
|
209
|
+
'[惊讶]': '[flummox]',
|
|
210
|
+
'[憨笑]': '[smirk]',
|
|
211
|
+
'[手枪]': '[gun]',
|
|
212
|
+
'[打哈欠]': '[yawn]',
|
|
213
|
+
'[抓狂]': '[crazy]',
|
|
214
|
+
'[折磨]': '[torment]',
|
|
215
|
+
'[抠鼻]': '[nose picking]',
|
|
216
|
+
'[抱抱]': '[hug]',
|
|
217
|
+
'[抱拳]': '[hug fist]',
|
|
218
|
+
'[拳头]': '[fist]',
|
|
219
|
+
'[挥手]': '[waving hands]',
|
|
220
|
+
'[握手]': '[shake hands]',
|
|
221
|
+
'[撇嘴]': '[pouted]',
|
|
222
|
+
'[擦汗]': '[wipe sweat]',
|
|
223
|
+
'[敲打]': '[knock on the head]',
|
|
224
|
+
'[晕]': '[faint]',
|
|
225
|
+
'[月亮]': '[moon]',
|
|
226
|
+
'[棒棒糖]': '[lollipop]',
|
|
227
|
+
'[汽车]': '[car]',
|
|
228
|
+
'[沙发]': '[sofa]',
|
|
229
|
+
'[流汗]': '[sweat]',
|
|
230
|
+
'[流泪]': '[tears]',
|
|
231
|
+
'[激动]': '[excitement]',
|
|
232
|
+
'[灯泡]': '[light]',
|
|
233
|
+
'[炸弹]': '[bomb]',
|
|
234
|
+
'[熊猫]': '[panda]',
|
|
235
|
+
'[爆筋]': '[exploding muscle]',
|
|
236
|
+
'[爱你]': '[love you]',
|
|
237
|
+
'[爱心]': '[love heart]',
|
|
238
|
+
'[爱情]': '[love]',
|
|
239
|
+
'[猪头]': '[pig]',
|
|
240
|
+
'[猫咪]': '[cat]',
|
|
241
|
+
'[献吻]': '[kiss]',
|
|
242
|
+
'[玫瑰]': '[rose]',
|
|
243
|
+
'[瓢虫]': '[ladybird]',
|
|
244
|
+
'[疑问]': '[what]',
|
|
245
|
+
'[白眼]': '[rolling eyes]',
|
|
246
|
+
'[皮球]': '[rubber ball]',
|
|
247
|
+
'[睡觉]': '[sleep]',
|
|
248
|
+
'[磕头]': '[kowtow]',
|
|
249
|
+
'[示爱]': '[show love]',
|
|
250
|
+
'[礼品袋]': '[gift bag]',
|
|
251
|
+
'[礼物]': '[gift]',
|
|
252
|
+
'[篮球]': '[basketball]',
|
|
253
|
+
'[米饭]': '[rice]',
|
|
254
|
+
'[糗大了]': '[shame]',
|
|
255
|
+
'[红双喜]': '[happiness]',
|
|
256
|
+
'[红灯笼]': '[lantern]',
|
|
257
|
+
'[纸巾]': '[tissue]',
|
|
258
|
+
'[胜利]': '[victory]',
|
|
259
|
+
'[色]': '[lecherous]',
|
|
260
|
+
'[药]': '[medicine]',
|
|
261
|
+
'[菜刀]': '[kitchen knife]',
|
|
262
|
+
'[蛋糕]': '[coke]',
|
|
263
|
+
'[蜡烛]': '[candle]',
|
|
264
|
+
'[街舞]': '[hip hop]',
|
|
265
|
+
'[衰]': '[decline]',
|
|
266
|
+
'[西瓜]': '[lemon]',
|
|
267
|
+
'[调皮]': '[naughty]',
|
|
268
|
+
'[象棋]': '[chess]',
|
|
269
|
+
'[跳绳]': '[jump rope]',
|
|
270
|
+
'[跳跳]': '[jump]',
|
|
271
|
+
'[车厢]': '[compartment]',
|
|
272
|
+
'[转圈]': '[turn in circles]',
|
|
273
|
+
'[鄙视]': '[contempt]',
|
|
274
|
+
'[酷]': '[cool]',
|
|
275
|
+
'[钞票]': '[money]',
|
|
276
|
+
'[钻戒]': '[diamond]',
|
|
277
|
+
'[闪电]': '[lightning]',
|
|
278
|
+
'[闭嘴]': '[shut up]',
|
|
279
|
+
'[闹钟]': '[clock]',
|
|
280
|
+
'[阴险]': '[sinister]',
|
|
281
|
+
'[难过]': '[sad]',
|
|
282
|
+
'[雨伞]': '[umbrella]',
|
|
283
|
+
'[青蛙]': '[frog]',
|
|
284
|
+
'[面条]': '[noodles]',
|
|
285
|
+
'[鞭炮]': '[firecracker]',
|
|
286
|
+
'[风车]': '[windmill]',
|
|
287
|
+
'[飞吻]': '[blow kisses]',
|
|
288
|
+
'[飞机]': '[air]',
|
|
289
|
+
'[饥饿]': '[hunger]',
|
|
290
|
+
'[香蕉]': '[banana]',
|
|
291
|
+
'[骷髅]': '[skull]',
|
|
292
|
+
'[麦克风]': '[mic]',
|
|
293
|
+
'[麻将]': '[mahjong]',
|
|
294
|
+
'[鼓掌]': '[handclap]',
|
|
295
|
+
'[龇牙]': '[happy]',
|
|
296
|
+
};
|
|
153
297
|
export const emojiName:Array<string> = [
|
|
154
298
|
'[龇牙]',
|
|
155
299
|
'[调皮]',
|
|
@@ -309,3 +453,40 @@ export const bigEmojiList:Array<IBigEmojiListItem> = [
|
|
|
309
453
|
'gcs08', 'gcs09', 'gcs10', 'gcs11', 'gcs12', 'gcs13', 'gcs14', 'gcs15', 'gcs16'],
|
|
310
454
|
},
|
|
311
455
|
];
|
|
456
|
+
|
|
457
|
+
/**
|
|
458
|
+
* Convert to expression key
|
|
459
|
+
* @param { string } data text
|
|
460
|
+
* @param { number } type 0:Convert to Chinese expression key 1: Convert to English expression key
|
|
461
|
+
* @returns { string } the converted text
|
|
462
|
+
*/
|
|
463
|
+
export function formatEmojiString(data: string, type = 0) {
|
|
464
|
+
let text = data;
|
|
465
|
+
const replace = {
|
|
466
|
+
key: type === 0 ? 1 : 0,
|
|
467
|
+
value: type,
|
|
468
|
+
};
|
|
469
|
+
Object.entries(emojiEnKey).map((item) => {
|
|
470
|
+
if (text.includes(item[replace.key])) {
|
|
471
|
+
text = transText(text, item[replace.key], item[replace.value]);
|
|
472
|
+
}
|
|
473
|
+
return item;
|
|
474
|
+
});
|
|
475
|
+
return text;
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
/**
|
|
479
|
+
* recursive replacement text
|
|
480
|
+
* @param { string } data text
|
|
481
|
+
* @param { string } replaceVal the value to replace
|
|
482
|
+
* @param { string } value replace Value
|
|
483
|
+
* @returns { string } the replaced value
|
|
484
|
+
*/
|
|
485
|
+
function transText(data: string, replaceVal:string, value: string) {
|
|
486
|
+
let text = data;
|
|
487
|
+
text = text.replace(replaceVal, value);
|
|
488
|
+
if (text.includes(replaceVal)) {
|
|
489
|
+
text = transText(text, replaceVal, value);
|
|
490
|
+
}
|
|
491
|
+
return text;
|
|
492
|
+
}
|
|
@@ -118,21 +118,21 @@ export function handleTipMessageShowContext(message: Message) {
|
|
|
118
118
|
}
|
|
119
119
|
switch (message.payload.operationType) {
|
|
120
120
|
case TIM.TYPES.GRP_TIP_MBR_JOIN:
|
|
121
|
-
options.text = `${userName} ${t('message.tip
|
|
121
|
+
options.text = `${userName} ${t('message.tip.Join in group')}`;
|
|
122
122
|
break;
|
|
123
123
|
case TIM.TYPES.GRP_TIP_MBR_QUIT:
|
|
124
|
-
options.text = `${t('message.tip
|
|
124
|
+
options.text = `${t('message.tip.member')}:${userName} ${t('message.tip.quit group')}`;
|
|
125
125
|
break;
|
|
126
126
|
case TIM.TYPES.GRP_TIP_MBR_KICKED_OUT:
|
|
127
|
-
options.text = `${t('message.tip
|
|
128
|
-
'message.tip
|
|
127
|
+
options.text = `${t('message.tip.member')}:${userName} ${t('message.tip.by')}${message.payload.operatorID}${t(
|
|
128
|
+
'message.tip.kicked out of group',
|
|
129
129
|
)}`;
|
|
130
130
|
break;
|
|
131
131
|
case TIM.TYPES.GRP_TIP_MBR_SET_ADMIN:
|
|
132
|
-
options.text = `${t('message.tip
|
|
132
|
+
options.text = `${t('message.tip.member')}:${userName} ${t('message.tip.become admin')}`;
|
|
133
133
|
break;
|
|
134
134
|
case TIM.TYPES.GRP_TIP_MBR_CANCELED_ADMIN:
|
|
135
|
-
options.text = `${t('message.tip
|
|
135
|
+
options.text = `${t('message.tip.member')}:${userName} ${t('message.tip.by revoked administrator')}`;
|
|
136
136
|
break;
|
|
137
137
|
case TIM.TYPES.GRP_TIP_GRP_PROFILE_UPDATED:
|
|
138
138
|
// options.text = `${userName} 修改群组资料`;
|
|
@@ -141,15 +141,15 @@ export function handleTipMessageShowContext(message: Message) {
|
|
|
141
141
|
case TIM.TYPES.GRP_TIP_MBR_PROFILE_UPDATED:
|
|
142
142
|
message.payload.memberList.map((member:any) => {
|
|
143
143
|
if (member.muteTime > 0) {
|
|
144
|
-
options.text = `${t('message.tip
|
|
144
|
+
options.text = `${t('message.tip.member')}:${member.userID}${t('message.tip.muted')}`;
|
|
145
145
|
} else {
|
|
146
|
-
options.text = `${t('message.tip
|
|
146
|
+
options.text = `${t('message.tip.member')}:${member.userID}${t('message.tip.unmuted')}`;
|
|
147
147
|
}
|
|
148
148
|
return member;
|
|
149
149
|
});
|
|
150
150
|
break;
|
|
151
151
|
default:
|
|
152
|
-
options.text = `[${t('message.tip
|
|
152
|
+
options.text = `[${t('message.tip.reminder message')}]`;
|
|
153
153
|
break;
|
|
154
154
|
}
|
|
155
155
|
return options;
|
|
@@ -164,19 +164,19 @@ function handleTipGrpUpdated(message: Message) {
|
|
|
164
164
|
switch (name) {
|
|
165
165
|
case 'muteAllMembers':
|
|
166
166
|
if (newGroupProfile[name]) {
|
|
167
|
-
text = `${t('message.tip
|
|
167
|
+
text = `${t('message.tip.admin')} ${operatorID} ${t('message.tip.enable all staff mute')}`;
|
|
168
168
|
} else {
|
|
169
|
-
text = `${t('message.tip
|
|
169
|
+
text = `${t('message.tip.admin')} ${operatorID} ${t('message.tip.unmute everyone')}`;
|
|
170
170
|
}
|
|
171
171
|
break;
|
|
172
172
|
case 'ownerID':
|
|
173
|
-
text = `${newGroupProfile[name]} ${t('message.tip
|
|
173
|
+
text = `${newGroupProfile[name]} ${t('message.tip.become the new owner')}`;
|
|
174
174
|
break;
|
|
175
175
|
case 'groupName':
|
|
176
|
-
text = `${operatorID} ${t('message.tip
|
|
176
|
+
text = `${operatorID} ${t('message.tip.modify group name')} ${newGroupProfile[name]}`;
|
|
177
177
|
break;
|
|
178
178
|
case 'notification':
|
|
179
|
-
text = `${operatorID} ${t('message.tip
|
|
179
|
+
text = `${operatorID} ${t('message.tip.post a new announcement')}`;
|
|
180
180
|
break;
|
|
181
181
|
default:
|
|
182
182
|
break;
|
|
@@ -3,7 +3,8 @@ import { useTUIMessageInputContext } from '../../context/TUIMessageInputContext'
|
|
|
3
3
|
import { Icon, IconTypes } from '../Icon';
|
|
4
4
|
import { Popup } from '../Popup';
|
|
5
5
|
import {
|
|
6
|
-
emojiUrl, emojiName, emojiMap,
|
|
6
|
+
emojiUrl, emojiName, emojiMap,
|
|
7
|
+
// bigEmojiList, faceUrl, IBigEmojiListItem,
|
|
7
8
|
} from '../TUIMessage/utils/emojiMap';
|
|
8
9
|
|
|
9
10
|
import type { EmojiData } from './hooks';
|
|
@@ -11,6 +12,7 @@ import type { EmojiData } from './hooks';
|
|
|
11
12
|
export function EmojiPicker():React.ReactElement {
|
|
12
13
|
const [show, setShow] = useState(false);
|
|
13
14
|
const [index, setIndex] = useState(0);
|
|
15
|
+
const [className, setClassName] = useState('');
|
|
14
16
|
|
|
15
17
|
const handleShow = () => {
|
|
16
18
|
setShow(!show);
|
|
@@ -36,13 +38,18 @@ export function EmojiPicker():React.ReactElement {
|
|
|
36
38
|
}
|
|
37
39
|
};
|
|
38
40
|
|
|
41
|
+
const handleVisible = (data) => {
|
|
42
|
+
setClassName(`${!data.top && 'emoji-plugin-top'} ${!data.left && 'emoji-plugin-right'}`);
|
|
43
|
+
};
|
|
44
|
+
|
|
39
45
|
return (
|
|
40
46
|
<div className="emoji-picker input-plugin-popup">
|
|
41
47
|
<Icon width={20} height={20} type={IconTypes.EMOJI} onClick={handleShow} />
|
|
42
48
|
<Popup
|
|
43
|
-
className=
|
|
49
|
+
className={`input-plugin-popup-box ${className}`}
|
|
44
50
|
show={show}
|
|
45
51
|
close={handleShow}
|
|
52
|
+
handleVisible={handleVisible}
|
|
46
53
|
>
|
|
47
54
|
<ul className="face-list">
|
|
48
55
|
{
|
|
@@ -7,18 +7,85 @@ import { useUploadElement } from './hooks/useUploadElement';
|
|
|
7
7
|
import { MESSAGE_TYPE_NAME } from '../../constants';
|
|
8
8
|
import { useTUIMessageInputContext } from '../../context/TUIMessageInputContext';
|
|
9
9
|
import { Icon, IconTypes } from '../Icon';
|
|
10
|
+
import { useTUIChatStateContext } from '../../context';
|
|
10
11
|
|
|
11
12
|
export function InputPluginsDefalut():React.ReactElement {
|
|
12
13
|
const {
|
|
13
14
|
sendUploadMessage,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
// pluginConfig: {
|
|
16
|
+
// plugins: propsPlugins,
|
|
17
|
+
// showNumber: propsShowNumber,
|
|
18
|
+
// MoreIcon: propsMoreIcon,
|
|
19
|
+
// isEmojiPicker: porpsIsEmojiPicker,
|
|
20
|
+
// isImagePicker: porpsIsImagePicker,
|
|
21
|
+
// isVideoPicker: porpsIsVideoPicker,
|
|
22
|
+
// isFilePicker: porpsIsFilePicker,
|
|
23
|
+
// },
|
|
24
|
+
pluginConfig: propsPluginConfig,
|
|
17
25
|
} = useTUIMessageInputContext('TUIMessageInputDefault');
|
|
18
26
|
|
|
27
|
+
const { TUIMessageInputConfig } = useTUIChatStateContext('TUIMessageInput');
|
|
28
|
+
|
|
29
|
+
// const {
|
|
30
|
+
// pluginConfig: {
|
|
31
|
+
// plugins: contextPlugins,
|
|
32
|
+
// showNumber: contextShowNumber,
|
|
33
|
+
// MoreIcon: contextMoreIcon,
|
|
34
|
+
// isEmojiPicker: contextIsEmojiPicker,
|
|
35
|
+
// isImagePicker: contextIsImagePicker,
|
|
36
|
+
// isVideoPicker: contextIsVideoPicker,
|
|
37
|
+
// isFilePicker: contextIsFilePicker,
|
|
38
|
+
// },
|
|
39
|
+
// } = TUIMessageInputConfig;
|
|
40
|
+
|
|
41
|
+
// const propPlugins = propsPlugins || contextPlugins || [];
|
|
42
|
+
// const showNumber = propsShowNumber || contextShowNumber || 1;
|
|
43
|
+
// const MoreIcon = propsMoreIcon || contextMoreIcon;
|
|
44
|
+
|
|
45
|
+
const propPlugins = propsPluginConfig?.plugins
|
|
46
|
+
|| TUIMessageInputConfig?.pluginConfig?.plugins || [];
|
|
47
|
+
const showNumber = propsPluginConfig?.showNumber
|
|
48
|
+
|| TUIMessageInputConfig?.pluginConfig?.showNumber || 1;
|
|
49
|
+
const MoreIcon = propsPluginConfig?.MoreIcon || TUIMessageInputConfig?.pluginConfig?.MoreIcon;
|
|
50
|
+
|
|
51
|
+
const handlePluginBoolenParams = (
|
|
52
|
+
porpsVal?:boolean | undefined,
|
|
53
|
+
contextVal?:boolean | undefined,
|
|
54
|
+
defaultVal?: boolean,
|
|
55
|
+
) => {
|
|
56
|
+
if (typeof (porpsVal) === 'boolean') {
|
|
57
|
+
return porpsVal;
|
|
58
|
+
}
|
|
59
|
+
if (typeof (contextVal) === 'boolean') {
|
|
60
|
+
return contextVal;
|
|
61
|
+
}
|
|
62
|
+
return defaultVal;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const isEmojiPicker = handlePluginBoolenParams(
|
|
66
|
+
propsPluginConfig?.isEmojiPicker,
|
|
67
|
+
TUIMessageInputConfig?.pluginConfig?.isEmojiPicker,
|
|
68
|
+
true,
|
|
69
|
+
);
|
|
70
|
+
const isImagePicker = handlePluginBoolenParams(
|
|
71
|
+
propsPluginConfig?.isImagePicker,
|
|
72
|
+
TUIMessageInputConfig?.pluginConfig?.isImagePicker,
|
|
73
|
+
true,
|
|
74
|
+
);
|
|
75
|
+
const isVideoPicker = handlePluginBoolenParams(
|
|
76
|
+
propsPluginConfig?.isVideoPicker,
|
|
77
|
+
TUIMessageInputConfig?.pluginConfig?.isVideoPicker,
|
|
78
|
+
true,
|
|
79
|
+
);
|
|
80
|
+
const isFilePicker = handlePluginBoolenParams(
|
|
81
|
+
propsPluginConfig?.isFilePicker,
|
|
82
|
+
TUIMessageInputConfig?.pluginConfig?.isFilePicker,
|
|
83
|
+
true,
|
|
84
|
+
);
|
|
85
|
+
|
|
19
86
|
const pluginsRef = useRef(null);
|
|
20
87
|
|
|
21
|
-
const ImagePicker = useUploadElement({
|
|
88
|
+
const ImagePicker = isImagePicker && useUploadElement({
|
|
22
89
|
children: (
|
|
23
90
|
<div className="input-plugin-item">
|
|
24
91
|
<Icon width={20} height={20} type={IconTypes.IMAGE} />
|
|
@@ -33,7 +100,7 @@ export function InputPluginsDefalut():React.ReactElement {
|
|
|
33
100
|
},
|
|
34
101
|
});
|
|
35
102
|
|
|
36
|
-
const VideoPicker = useUploadElement({
|
|
103
|
+
const VideoPicker = isVideoPicker && useUploadElement({
|
|
37
104
|
children: (
|
|
38
105
|
<div className="input-plugin-item">
|
|
39
106
|
<Icon width={20} height={20} type={IconTypes.VIDEO} />
|
|
@@ -48,7 +115,7 @@ export function InputPluginsDefalut():React.ReactElement {
|
|
|
48
115
|
},
|
|
49
116
|
});
|
|
50
117
|
|
|
51
|
-
const FilePicker = useUploadElement({
|
|
118
|
+
const FilePicker = isFilePicker && useUploadElement({
|
|
52
119
|
children: (
|
|
53
120
|
<div className="input-plugin-item">
|
|
54
121
|
<Icon width={20} height={20} type={IconTypes.DOCUMENT} />
|
|
@@ -62,8 +129,9 @@ export function InputPluginsDefalut():React.ReactElement {
|
|
|
62
129
|
sendUploadMessage({ file }, MESSAGE_TYPE_NAME.FILE);
|
|
63
130
|
},
|
|
64
131
|
});
|
|
65
|
-
const plugins =
|
|
66
|
-
|
|
132
|
+
const plugins = [
|
|
133
|
+
isEmojiPicker && <EmojiPicker />, ImagePicker, VideoPicker, FilePicker, ...propPlugins,
|
|
134
|
+
].filter((item) => item);
|
|
67
135
|
|
|
68
136
|
return <Plugins ref={pluginsRef} plugins={plugins} showNumber={showNumber} MoreIcon={MoreIcon} />;
|
|
69
137
|
}
|
|
@@ -6,6 +6,7 @@ import { useTUIChatActionContext } from '../../context';
|
|
|
6
6
|
import { Icon, IconTypes } from '../Icon';
|
|
7
7
|
import { MESSAGE_OPERATE } from '../../constants';
|
|
8
8
|
import { useHandleQuoteMessage } from './hooks/useHandleQuoteMessage';
|
|
9
|
+
import { formatEmojiString } from '../TUIMessage/utils/emojiMap';
|
|
9
10
|
|
|
10
11
|
interface InputQuoteProps {
|
|
11
12
|
message?: Message
|
|
@@ -33,7 +34,7 @@ export function InputQuoteDefalut <T extends InputQuoteProps>(
|
|
|
33
34
|
<div className="input-quote">
|
|
34
35
|
<div className="input-quote-content">
|
|
35
36
|
<label htmlFor="input-quote-content">{message?.nick || message?.from}</label>
|
|
36
|
-
<span>{context?.messageAbstract}</span>
|
|
37
|
+
<span>{formatEmojiString(context?.messageAbstract, 1)}</span>
|
|
37
38
|
</div>
|
|
38
39
|
<Icon className="icon" width={12} height={12} type={IconTypes.CLOSE} onClick={handleClose} />
|
|
39
40
|
</div>
|
|
@@ -14,43 +14,58 @@ import { InputQuoteDefalut } from './InputQuoteDefalut';
|
|
|
14
14
|
import { TUIMessageInputDefault } from './TUIMessageInputDefault';
|
|
15
15
|
import { InputPluginsDefalut } from './InputPluginsDefalut';
|
|
16
16
|
import { TUIForward } from './TUIForward';
|
|
17
|
+
import { Transmitter } from './Transmitter';
|
|
17
18
|
|
|
18
|
-
export interface
|
|
19
|
+
export interface PluginConfigProps {
|
|
20
|
+
plugins?: Array<React.ReactElement>,
|
|
21
|
+
showNumber?: number,
|
|
22
|
+
MoreIcon?: React.ReactElement,
|
|
23
|
+
isEmojiPicker?: boolean,
|
|
24
|
+
isImagePicker?: boolean,
|
|
25
|
+
isVideoPicker?: boolean,
|
|
26
|
+
isFilePicker?: boolean,
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface TUIMessageInputBasicProps {
|
|
19
30
|
disabled?: boolean,
|
|
31
|
+
focus?: boolean,
|
|
32
|
+
textareaRef?: MutableRefObject<HTMLTextAreaElement | undefined>,
|
|
33
|
+
isTransmitter?: boolean,
|
|
34
|
+
className?: string,
|
|
35
|
+
pluginConfig?: PluginConfigProps,
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface TUIMessageInputProps extends TUIMessageInputBasicProps {
|
|
20
39
|
TUIMessageInput?: React.ComponentType,
|
|
21
40
|
InputPlugins?: React.ComponentType<UnknowPorps>,
|
|
22
41
|
InputQuote?: React.ComponentType<UnknowPorps>,
|
|
23
|
-
focus?: boolean,
|
|
24
|
-
textareaRef?: MutableRefObject<HTMLTextAreaElement | undefined>,
|
|
25
|
-
plugins?: Array<React.ReactElement>,
|
|
26
|
-
showNumber?: number,
|
|
27
|
-
MoreIcon?: React.ReactElement,
|
|
28
42
|
}
|
|
43
|
+
|
|
29
44
|
function TUIMessageInputProvider<T extends TUIMessageInputProps>(props: PropsWithChildren<T>)
|
|
30
45
|
:React.ReactElement {
|
|
31
46
|
const {
|
|
32
47
|
children,
|
|
33
48
|
disabled: propsDisabled,
|
|
34
|
-
focus
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
MoreIcon,
|
|
49
|
+
focus: propsFoces,
|
|
50
|
+
pluginConfig,
|
|
51
|
+
textareaRef: propsTextareaRef,
|
|
38
52
|
} = props;
|
|
39
53
|
const messageInputState = useMessageInputState(props);
|
|
40
|
-
const { conversation } =
|
|
41
|
-
|
|
54
|
+
const { textareaRef, conversation } = useTUIChatStateContext('TUIMessageInput');
|
|
55
|
+
|
|
56
|
+
const contextDisabled = conversation?.type === TIM.TYPES.CONV_SYSTEM;
|
|
57
|
+
|
|
58
|
+
const { TUIMessageInputConfig } = useTUIChatStateContext('TUIMessageInput');
|
|
42
59
|
|
|
43
|
-
const
|
|
60
|
+
const focus = propsFoces || TUIMessageInputConfig?.focus;
|
|
44
61
|
|
|
45
62
|
const messageInputContextValue = useCreateMessageInputContext({
|
|
46
63
|
...messageInputState,
|
|
47
64
|
...props,
|
|
48
|
-
textareaRef,
|
|
49
|
-
disabled: propsDisabled || contextDisabled,
|
|
50
|
-
focus,
|
|
51
|
-
|
|
52
|
-
showNumber,
|
|
53
|
-
MoreIcon,
|
|
65
|
+
textareaRef: propsTextareaRef || TUIMessageInputConfig?.textareaRef || textareaRef,
|
|
66
|
+
disabled: propsDisabled || TUIMessageInputConfig?.disabled || contextDisabled,
|
|
67
|
+
focus: typeof (focus) === 'boolean' ? focus : true,
|
|
68
|
+
pluginConfig,
|
|
54
69
|
});
|
|
55
70
|
|
|
56
71
|
return (
|
|
@@ -66,6 +81,8 @@ function UnMemoizedTUIMessageInput<T extends TUIMessageInputProps>(props: PropsW
|
|
|
66
81
|
TUIMessageInput: PropTUIMessageInput,
|
|
67
82
|
InputPlugins: PropInputPlugins,
|
|
68
83
|
InputQuote: PropInputQuote,
|
|
84
|
+
isTransmitter = false,
|
|
85
|
+
className,
|
|
69
86
|
} = props;
|
|
70
87
|
|
|
71
88
|
const {
|
|
@@ -78,13 +95,16 @@ function UnMemoizedTUIMessageInput<T extends TUIMessageInputProps>(props: PropsW
|
|
|
78
95
|
|| ContextInputPlugins || InputPluginsDefalut || EmptyStateIndicator;
|
|
79
96
|
const InputQuote = PropInputQuote || ContextInputQuote || InputQuoteDefalut;
|
|
80
97
|
return (
|
|
81
|
-
<div className=
|
|
98
|
+
<div className={`tui-message-input ${className}`}>
|
|
82
99
|
<TUIMessageInputProvider {...props}>
|
|
83
100
|
<TUIForward />
|
|
84
101
|
<InputQuote />
|
|
85
102
|
<div className="tui-message-input-main">
|
|
86
|
-
<
|
|
87
|
-
|
|
103
|
+
<div className="tui-message-input-box">
|
|
104
|
+
<InputPlugins />
|
|
105
|
+
<Input />
|
|
106
|
+
</div>
|
|
107
|
+
{isTransmitter && <Transmitter />}
|
|
88
108
|
</div>
|
|
89
109
|
</TUIMessageInputProvider>
|
|
90
110
|
</div>
|
|
@@ -3,6 +3,7 @@ import { MESSAGE_OPERATE } from '../../constants';
|
|
|
3
3
|
import { useTUIChatStateContext } from '../../context';
|
|
4
4
|
|
|
5
5
|
import { useTUIMessageInputContext } from '../../context/TUIMessageInputContext';
|
|
6
|
+
import { formatEmojiString } from '../TUIMessage/utils/emojiMap';
|
|
6
7
|
|
|
7
8
|
export function TUIMessageInputDefault():React.ReactElement {
|
|
8
9
|
const {
|
|
@@ -23,7 +24,7 @@ export function TUIMessageInputDefault():React.ReactElement {
|
|
|
23
24
|
// operateData
|
|
24
25
|
useEffect(() => {
|
|
25
26
|
if (operateData[MESSAGE_OPERATE.REVOKE]) {
|
|
26
|
-
setText(operateData[MESSAGE_OPERATE.REVOKE].payload.text);
|
|
27
|
+
setText(formatEmojiString(operateData[MESSAGE_OPERATE.REVOKE].payload.text, 1));
|
|
27
28
|
}
|
|
28
29
|
}, [operateData]);
|
|
29
30
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { useTUIMessageInputContext } from '../../context/TUIMessageInputContext';
|
|
3
|
+
import { Icon, IconTypes } from '../Icon';
|
|
4
|
+
|
|
5
|
+
export function Transmitter():React.ReactElement {
|
|
6
|
+
const {
|
|
7
|
+
handleSubmit,
|
|
8
|
+
} = useTUIMessageInputContext('Transmitter');
|
|
9
|
+
|
|
10
|
+
return (
|
|
11
|
+
<div className="transmitter">
|
|
12
|
+
<Icon className="icon-send" type={IconTypes.SEND} onClick={handleSubmit} />
|
|
13
|
+
</div>
|
|
14
|
+
);
|
|
15
|
+
}
|
|
@@ -11,9 +11,7 @@ export const useCreateMessageInputContext = (value:any) => {
|
|
|
11
11
|
disabled,
|
|
12
12
|
focus,
|
|
13
13
|
operateData,
|
|
14
|
-
|
|
15
|
-
showNumber,
|
|
16
|
-
MoreIcon,
|
|
14
|
+
pluginConfig,
|
|
17
15
|
} = value;
|
|
18
16
|
const messageInputContext = useMemo(
|
|
19
17
|
() => ({
|
|
@@ -26,9 +24,7 @@ export const useCreateMessageInputContext = (value:any) => {
|
|
|
26
24
|
disabled,
|
|
27
25
|
focus,
|
|
28
26
|
operateData,
|
|
29
|
-
|
|
30
|
-
showNumber,
|
|
31
|
-
MoreIcon,
|
|
27
|
+
pluginConfig,
|
|
32
28
|
...value,
|
|
33
29
|
}),
|
|
34
30
|
[
|
|
@@ -40,10 +36,8 @@ export const useCreateMessageInputContext = (value:any) => {
|
|
|
40
36
|
sendFaceMessage,
|
|
41
37
|
disabled,
|
|
42
38
|
focus,
|
|
43
|
-
plugins,
|
|
44
|
-
showNumber,
|
|
45
|
-
MoreIcon,
|
|
46
39
|
operateData,
|
|
40
|
+
pluginConfig,
|
|
47
41
|
],
|
|
48
42
|
);
|
|
49
43
|
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
useCallback,
|
|
5
5
|
} from 'react';
|
|
6
6
|
import { useTUIChatActionContext } from '../../../context';
|
|
7
|
+
import { emojiEnKey } from '../../TUIMessage/utils/emojiMap';
|
|
7
8
|
import type { IbaseStateProps } from './useMessageInputState';
|
|
8
9
|
|
|
9
10
|
export interface EmojiData {
|
|
@@ -25,7 +26,7 @@ export function useEmojiPicker<T extends useEmojiPickerProps>(props:PropsWithChi
|
|
|
25
26
|
const { sendMessage, createFaceMessage } = useTUIChatActionContext('useEmojiPicker');
|
|
26
27
|
|
|
27
28
|
const onSelectEmoji = (emoji:EmojiData) => {
|
|
28
|
-
insertText(emoji.data);
|
|
29
|
+
insertText(emojiEnKey[emoji.data]);
|
|
29
30
|
};
|
|
30
31
|
|
|
31
32
|
const sendFaceMessage = useCallback((emoji:EmojiData) => {
|
|
@@ -51,6 +51,13 @@ const reducer = (state:IinitState, action) => {
|
|
|
51
51
|
export const useMessageInputState = (props:TUIMessageInputProps) => {
|
|
52
52
|
const [state, dispatch] = useReducer(reducer, initState);
|
|
53
53
|
const { focus, textareaRef } = props;
|
|
54
|
+
|
|
55
|
+
const {
|
|
56
|
+
sendUploadMessage,
|
|
57
|
+
} = useUploadPicker({
|
|
58
|
+
state,
|
|
59
|
+
dispatch,
|
|
60
|
+
});
|
|
54
61
|
const {
|
|
55
62
|
handleChange,
|
|
56
63
|
handleSubmit,
|
|
@@ -64,6 +71,7 @@ export const useMessageInputState = (props:TUIMessageInputProps) => {
|
|
|
64
71
|
dispatch,
|
|
65
72
|
textareaRef,
|
|
66
73
|
focus,
|
|
74
|
+
sendUploadMessage,
|
|
67
75
|
});
|
|
68
76
|
|
|
69
77
|
const {
|
|
@@ -76,13 +84,6 @@ export const useMessageInputState = (props:TUIMessageInputProps) => {
|
|
|
76
84
|
insertText,
|
|
77
85
|
});
|
|
78
86
|
|
|
79
|
-
const {
|
|
80
|
-
sendUploadMessage,
|
|
81
|
-
} = useUploadPicker({
|
|
82
|
-
state,
|
|
83
|
-
dispatch,
|
|
84
|
-
});
|
|
85
|
-
|
|
86
87
|
return {
|
|
87
88
|
...state,
|
|
88
89
|
handleChange,
|