@webinex/chatify 1.0.3-rc3 → 2.0.0-build10
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/dist/css/chatify.css +137 -105
- package/dist/esm/index.js +10 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/core/api/accountApi.d.ts +5 -0
- package/dist/esm/types/core/api/api.d.ts +2380 -0
- package/dist/esm/types/core/api/baseApi.d.ts +15 -0
- package/dist/esm/types/core/api/chatApi.d.ts +16 -0
- package/dist/esm/types/core/api/chatListApi.d.ts +5 -0
- package/dist/esm/types/core/api/chatMemberApi.d.ts +6 -0
- package/dist/esm/types/core/api/chatMessageApi.d.ts +3 -0
- package/dist/esm/types/core/api/index.d.ts +1 -0
- package/dist/esm/types/core/api/threadApi.d.ts +1 -0
- package/dist/esm/types/core/api/threadMessageApi.d.ts +6 -0
- package/dist/esm/types/core/client.d.ts +56 -9
- package/dist/esm/types/core/constants.d.ts +1 -0
- package/dist/esm/types/core/debounce.d.ts +27 -0
- package/dist/esm/types/core/index.d.ts +3 -16
- package/dist/esm/types/core/types.d.ts +105 -0
- package/dist/esm/types/index.d.ts +0 -1
- package/dist/esm/types/ui/Chat/ChatContext.d.ts +10 -0
- package/dist/esm/types/ui/Chat/ChatEditableHeaderName.d.ts +2 -0
- package/dist/esm/types/ui/Chat/ChatHeaderActions.d.ts +2 -0
- package/dist/esm/types/ui/Chat/ChatPanel.d.ts +13 -0
- package/dist/esm/types/ui/Chat/ChatView.d.ts +17 -0
- package/dist/esm/types/ui/Chat/Members/ChatMembersButton.d.ts +2 -0
- package/dist/esm/types/ui/Chat/Members/ChatMembersPanel.d.ts +2 -0
- package/dist/esm/types/ui/Chat/Members/ChatMembersPreview.d.ts +2 -0
- package/dist/esm/types/ui/Chat/Members/index.d.ts +11 -0
- package/dist/esm/types/ui/Chat/index.d.ts +6 -0
- package/dist/esm/types/ui/ChatGroup/ChatGroupContext.d.ts +12 -0
- package/dist/esm/types/ui/ChatGroup/ChatGroupPanel.d.ts +15 -0
- package/dist/esm/types/ui/ChatGroup/Create/CreateChatButton.d.ts +2 -0
- package/dist/esm/types/ui/{CreateChatPanel → ChatGroup/Create}/CreateChatForm.d.ts +1 -1
- package/dist/esm/types/ui/ChatGroup/Create/CreateChatMemberInput.d.ts +5 -0
- package/dist/esm/types/ui/ChatGroup/Create/CreateChatNameInput.d.ts +5 -0
- package/dist/esm/types/ui/ChatGroup/Create/CreateChatPanel.d.ts +2 -0
- package/dist/esm/types/ui/ChatGroup/Create/index.d.ts +17 -0
- package/dist/esm/types/ui/ChatGroup/Layout/ChatGroupAside.d.ts +2 -0
- package/dist/esm/types/ui/ChatGroup/Layout/ChatGroupBody.d.ts +2 -0
- package/dist/esm/types/ui/ChatGroup/Layout/ChatGroupFooter.d.ts +2 -0
- package/dist/esm/types/ui/ChatGroup/Layout/ChatGroupHeader.d.ts +2 -0
- package/dist/esm/types/ui/ChatGroup/Layout/ChatGroupMain.d.ts +2 -0
- package/dist/esm/types/ui/ChatGroup/Layout/index.d.ts +17 -0
- package/dist/esm/types/ui/ChatGroup/List/ChatList.d.ts +2 -0
- package/dist/esm/types/ui/ChatGroup/List/ChatListItemAvatar.d.ts +3 -0
- package/dist/esm/types/ui/ChatGroup/List/ChatListItemBox.d.ts +6 -0
- package/dist/esm/types/ui/ChatGroup/List/ChatListItemLastMessage.d.ts +3 -0
- package/dist/esm/types/ui/ChatGroup/List/ChatListItemLastMessageAuthor.d.ts +3 -0
- package/dist/esm/types/ui/{ChatList → ChatGroup/List}/ChatListItemLastMessageContent.d.ts +1 -1
- package/dist/esm/types/ui/ChatGroup/List/ChatListItemLastMessageSentAt.d.ts +3 -0
- package/dist/esm/types/ui/ChatGroup/List/ChatListItemName.d.ts +3 -0
- package/dist/esm/types/ui/ChatGroup/List/ChatListItemUnreadCount.d.ts +3 -0
- package/dist/esm/types/ui/ChatGroup/List/index.d.ts +29 -0
- package/dist/esm/types/ui/ChatGroup/index.d.ts +5 -0
- package/dist/esm/types/ui/Chatify.d.ts +8 -72
- package/dist/esm/types/ui/Conversation/Conversation.d.ts +21 -0
- package/dist/esm/types/ui/Conversation/ConversationActions.d.ts +2 -0
- package/dist/esm/types/ui/Conversation/ConversationBody.d.ts +2 -0
- package/dist/esm/types/ui/Conversation/ConversationContext.d.ts +20 -0
- package/dist/esm/types/ui/Conversation/ConversationHeader.d.ts +2 -0
- package/dist/esm/types/ui/Conversation/ConversationName.d.ts +2 -0
- package/dist/esm/types/ui/Conversation/InputBox/InputBox.d.ts +2 -0
- package/dist/esm/types/ui/Conversation/InputBox/InputFilesBox.d.ts +2 -0
- package/dist/esm/types/ui/Conversation/InputBox/InputSubmitButtonBox.d.ts +5 -0
- package/dist/esm/types/ui/Conversation/InputBox/InputTextBox.d.ts +8 -0
- package/dist/esm/types/ui/Conversation/InputBox/index.d.ts +14 -0
- package/dist/esm/types/ui/Conversation/Message/MessageAuthor.d.ts +3 -0
- package/dist/esm/types/ui/Conversation/Message/MessageBox.d.ts +6 -0
- package/dist/esm/types/ui/Conversation/Message/MessageContent.d.ts +3 -0
- package/dist/esm/types/ui/Conversation/Message/MessageInfoBox.d.ts +3 -0
- package/dist/esm/types/ui/{Message → Conversation/Message}/MessageRow.d.ts +1 -1
- package/dist/esm/types/ui/Conversation/Message/MessageText.d.ts +3 -0
- package/dist/esm/types/ui/Conversation/Message/index.d.ts +20 -0
- package/dist/esm/types/ui/Conversation/NextObserver/NextMessagesObserver.d.ts +5 -0
- package/dist/esm/types/ui/Conversation/NextObserver/index.d.ts +1 -0
- package/dist/esm/types/ui/Conversation/ReadObserver/MessageReadObserver.d.ts +6 -0
- package/dist/esm/types/ui/Conversation/ReadObserver/index.d.ts +1 -0
- package/dist/esm/types/ui/Conversation/SendingMessage/SendingMessageBox.d.ts +7 -0
- package/dist/esm/types/ui/Conversation/SendingMessage/SendingMessageContent.d.ts +3 -0
- package/dist/esm/types/ui/Conversation/SendingMessage/SendingMessageInfoBox.d.ts +3 -0
- package/dist/esm/types/ui/{SendingMessage/SendingMessageInfoBox.d.ts → Conversation/SendingMessage/SendingMessageText.d.ts} +1 -1
- package/dist/esm/types/ui/Conversation/SendingMessage/index.d.ts +14 -0
- package/dist/esm/types/ui/Conversation/SystemMessage/SystemMessageBox.d.ts +6 -0
- package/dist/esm/types/ui/Conversation/SystemMessage/SystemMessageRow.d.ts +9 -0
- package/dist/esm/types/ui/Conversation/SystemMessage/index.d.ts +8 -0
- package/dist/esm/types/ui/Conversation/index.d.ts +12 -0
- package/dist/esm/types/ui/{InputBox/InputFilesBox.d.ts → Thread/ThreadActions.d.ts} +1 -1
- package/dist/esm/types/ui/Thread/ThreadContext.d.ts +8 -0
- package/dist/esm/types/ui/Thread/ThreadPanel.d.ts +14 -0
- package/dist/esm/types/ui/Thread/index.d.ts +3 -0
- package/dist/esm/types/ui/color.d.ts +6 -0
- package/dist/esm/types/ui/common/Avatar.d.ts +6 -0
- package/dist/esm/types/ui/common/Icon.d.ts +20 -0
- package/dist/esm/types/ui/common/MessageSkeleton.d.ts +5 -0
- package/dist/esm/types/ui/common/index.d.ts +11 -0
- package/dist/esm/types/ui/customize.d.ts +5 -7
- package/dist/esm/types/ui/index.d.ts +9 -9
- package/dist/esm/types/ui/localizer.d.ts +2 -6
- package/dist/index.d.ts +2800 -433
- package/package.json +16 -15
- package/src/core/api/accountApi.ts +11 -0
- package/src/core/api/api.ts +642 -0
- package/src/core/api/baseApi.ts +38 -0
- package/src/core/api/chatApi.ts +87 -0
- package/src/core/api/chatListApi.ts +134 -0
- package/src/core/api/chatMemberApi.ts +20 -0
- package/src/core/api/chatMessageApi.ts +12 -0
- package/src/core/api/index.ts +1 -0
- package/src/core/api/threadApi.ts +8 -0
- package/src/core/api/threadMessageApi.ts +20 -0
- package/src/core/client.ts +157 -31
- package/src/core/constants.ts +1 -0
- package/src/core/debounce.ts +90 -0
- package/src/core/index.ts +3 -16
- package/src/core/types.tsx +152 -0
- package/src/index.ts +0 -1
- package/src/styles/aside.scss +31 -2
- package/src/styles/chat.scss +34 -37
- package/src/styles/index.scss +7 -5
- package/src/styles/input.scss +3 -1
- package/src/styles/members.scss +13 -0
- package/src/types/core/api/accountApi.d.ts +5 -0
- package/src/types/core/api/api.d.ts +2380 -0
- package/src/types/core/api/baseApi.d.ts +15 -0
- package/src/types/core/api/chatApi.d.ts +16 -0
- package/src/types/core/api/chatListApi.d.ts +5 -0
- package/src/types/core/api/chatMemberApi.d.ts +6 -0
- package/src/types/core/api/chatMessageApi.d.ts +3 -0
- package/src/types/core/api/index.d.ts +1 -0
- package/src/types/core/api/threadApi.d.ts +1 -0
- package/src/types/core/api/threadMessageApi.d.ts +6 -0
- package/src/types/core/client.d.ts +83 -0
- package/src/types/core/constants.d.ts +1 -0
- package/src/types/core/debounce.d.ts +27 -0
- package/src/types/core/index.d.ts +4 -0
- package/src/types/core/types.d.ts +105 -0
- package/src/types/index.d.ts +2 -0
- package/src/types/ui/Chat/ChatContext.d.ts +10 -0
- package/src/types/ui/Chat/ChatEditableHeaderName.d.ts +2 -0
- package/src/types/ui/Chat/ChatHeaderActions.d.ts +2 -0
- package/src/types/ui/Chat/ChatPanel.d.ts +13 -0
- package/src/types/ui/Chat/ChatView.d.ts +17 -0
- package/src/types/ui/Chat/Members/ChatMembersButton.d.ts +2 -0
- package/src/types/ui/Chat/Members/ChatMembersPanel.d.ts +2 -0
- package/src/types/ui/Chat/Members/ChatMembersPreview.d.ts +2 -0
- package/src/types/ui/Chat/Members/index.d.ts +11 -0
- package/src/types/ui/Chat/index.d.ts +6 -0
- package/src/types/ui/ChatGroup/ChatGroupContext.d.ts +12 -0
- package/src/types/ui/ChatGroup/ChatGroupPanel.d.ts +15 -0
- package/src/types/ui/ChatGroup/Create/CreateChatButton.d.ts +2 -0
- package/src/types/ui/ChatGroup/Create/CreateChatForm.d.ts +11 -0
- package/src/types/ui/ChatGroup/Create/CreateChatMemberInput.d.ts +5 -0
- package/src/types/ui/ChatGroup/Create/CreateChatNameInput.d.ts +5 -0
- package/src/types/ui/ChatGroup/Create/CreateChatPanel.d.ts +2 -0
- package/src/types/ui/ChatGroup/Create/index.d.ts +17 -0
- package/src/types/ui/ChatGroup/Layout/ChatGroupAside.d.ts +2 -0
- package/src/types/ui/ChatGroup/Layout/ChatGroupBody.d.ts +2 -0
- package/src/types/ui/ChatGroup/Layout/ChatGroupFooter.d.ts +2 -0
- package/src/types/ui/ChatGroup/Layout/ChatGroupHeader.d.ts +2 -0
- package/src/types/ui/ChatGroup/Layout/ChatGroupMain.d.ts +2 -0
- package/src/types/ui/ChatGroup/Layout/index.d.ts +17 -0
- package/src/types/ui/ChatGroup/List/ChatList.d.ts +2 -0
- package/src/types/ui/ChatGroup/List/ChatListItemAvatar.d.ts +3 -0
- package/src/types/ui/ChatGroup/List/ChatListItemBox.d.ts +6 -0
- package/src/types/ui/ChatGroup/List/ChatListItemLastMessage.d.ts +3 -0
- package/src/types/ui/ChatGroup/List/ChatListItemLastMessageAuthor.d.ts +3 -0
- package/src/types/ui/ChatGroup/List/ChatListItemLastMessageContent.d.ts +3 -0
- package/src/types/ui/ChatGroup/List/ChatListItemLastMessageSentAt.d.ts +3 -0
- package/src/types/ui/ChatGroup/List/ChatListItemName.d.ts +3 -0
- package/src/types/ui/ChatGroup/List/ChatListItemUnreadCount.d.ts +3 -0
- package/src/types/ui/ChatGroup/List/index.d.ts +29 -0
- package/src/types/ui/ChatGroup/index.d.ts +5 -0
- package/src/types/ui/Chatify.d.ts +8 -0
- package/src/types/ui/Conversation/Conversation.d.ts +21 -0
- package/src/types/ui/Conversation/ConversationActions.d.ts +2 -0
- package/src/types/ui/Conversation/ConversationBody.d.ts +2 -0
- package/src/types/ui/Conversation/ConversationContext.d.ts +20 -0
- package/src/types/ui/Conversation/ConversationHeader.d.ts +2 -0
- package/src/types/ui/Conversation/ConversationName.d.ts +2 -0
- package/src/types/ui/Conversation/InputBox/InputBox.d.ts +2 -0
- package/src/types/ui/Conversation/InputBox/InputFilesBox.d.ts +2 -0
- package/src/types/ui/Conversation/InputBox/InputSubmitButtonBox.d.ts +5 -0
- package/src/types/ui/Conversation/InputBox/InputTextBox.d.ts +8 -0
- package/src/types/ui/Conversation/InputBox/index.d.ts +14 -0
- package/src/types/ui/Conversation/Message/MessageAuthor.d.ts +3 -0
- package/src/types/ui/Conversation/Message/MessageBox.d.ts +6 -0
- package/src/types/ui/Conversation/Message/MessageContent.d.ts +3 -0
- package/src/types/ui/Conversation/Message/MessageInfoBox.d.ts +3 -0
- package/src/types/ui/Conversation/Message/MessageRow.d.ts +6 -0
- package/src/types/ui/Conversation/Message/MessageText.d.ts +3 -0
- package/src/types/ui/Conversation/Message/index.d.ts +20 -0
- package/src/types/ui/Conversation/NextObserver/NextMessagesObserver.d.ts +5 -0
- package/src/types/ui/Conversation/NextObserver/index.d.ts +1 -0
- package/src/types/ui/Conversation/ReadObserver/MessageReadObserver.d.ts +6 -0
- package/src/types/ui/Conversation/ReadObserver/index.d.ts +1 -0
- package/src/types/ui/Conversation/SendingMessage/SendingMessageBox.d.ts +7 -0
- package/src/types/ui/Conversation/SendingMessage/SendingMessageContent.d.ts +3 -0
- package/src/types/ui/Conversation/SendingMessage/SendingMessageInfoBox.d.ts +3 -0
- package/{dist/esm/types/ui/SendingMessage/SendingMessageContent.d.ts → src/types/ui/Conversation/SendingMessage/SendingMessageText.d.ts} +1 -1
- package/src/types/ui/Conversation/SendingMessage/index.d.ts +14 -0
- package/src/types/ui/Conversation/SystemMessage/SystemMessageBox.d.ts +6 -0
- package/src/types/ui/Conversation/SystemMessage/SystemMessageRow.d.ts +9 -0
- package/src/types/ui/Conversation/SystemMessage/index.d.ts +8 -0
- package/src/types/ui/Conversation/index.d.ts +12 -0
- package/src/types/ui/Thread/ThreadActions.d.ts +2 -0
- package/src/types/ui/Thread/ThreadContext.d.ts +8 -0
- package/src/types/ui/Thread/ThreadPanel.d.ts +14 -0
- package/src/types/ui/Thread/index.d.ts +3 -0
- package/src/types/ui/color.d.ts +6 -0
- package/src/types/ui/common/Avatar.d.ts +6 -0
- package/src/types/ui/common/Icon.d.ts +20 -0
- package/src/types/ui/common/MessageSkeleton.d.ts +5 -0
- package/src/types/ui/common/index.d.ts +11 -0
- package/src/types/ui/customize.d.ts +9 -0
- package/src/types/ui/index.d.ts +11 -0
- package/src/types/ui/localizer.d.ts +35 -0
- package/src/ui/Chat/ChatContext.tsx +30 -0
- package/src/ui/{ChatPanel/ChatHeaderName.tsx → Chat/ChatEditableHeaderName.tsx} +10 -16
- package/src/ui/Chat/ChatHeaderActions.tsx +19 -0
- package/src/ui/Chat/ChatPanel.tsx +30 -0
- package/src/ui/Chat/ChatView.tsx +115 -0
- package/src/ui/Chat/Members/ChatMembersButton.tsx +9 -0
- package/src/ui/{ChatPanel → Chat/Members}/ChatMembersPanel.tsx +13 -22
- package/src/ui/Chat/Members/ChatMembersPreview.tsx +25 -0
- package/src/ui/Chat/Members/index.ts +13 -0
- package/src/ui/Chat/index.ts +6 -0
- package/src/ui/ChatGroup/ChatGroupContext.tsx +50 -0
- package/src/ui/ChatGroup/ChatGroupPanel.tsx +73 -0
- package/src/ui/ChatGroup/Create/CreateChatButton.tsx +15 -0
- package/src/ui/{CreateChatPanel → ChatGroup/Create}/CreateChatForm.tsx +2 -2
- package/src/ui/{CreateChatPanel → ChatGroup/Create}/CreateChatMemberInput.tsx +6 -7
- package/src/ui/{CreateChatPanel → ChatGroup/Create}/CreateChatNameInput.tsx +2 -2
- package/src/ui/{CreateChatPanel → ChatGroup/Create}/CreateChatPanel.tsx +14 -18
- package/src/ui/ChatGroup/Create/index.ts +19 -0
- package/src/ui/ChatGroup/Layout/ChatGroupAside.tsx +12 -0
- package/src/ui/ChatGroup/Layout/ChatGroupBody.tsx +10 -0
- package/src/ui/ChatGroup/Layout/ChatGroupFooter.tsx +3 -0
- package/src/ui/ChatGroup/Layout/ChatGroupHeader.tsx +5 -0
- package/src/ui/ChatGroup/Layout/ChatGroupMain.tsx +17 -0
- package/src/ui/ChatGroup/Layout/index.ts +19 -0
- package/src/ui/{ChatList → ChatGroup/List}/ChatList.tsx +9 -9
- package/src/ui/ChatGroup/List/ChatListItemAvatar.tsx +22 -0
- package/src/ui/{ChatList → ChatGroup/List}/ChatListItemBox.tsx +9 -5
- package/src/ui/{ChatList → ChatGroup/List}/ChatListItemLastMessage.tsx +1 -1
- package/src/ui/{ChatList → ChatGroup/List}/ChatListItemLastMessageAuthor.tsx +2 -7
- package/src/ui/{ChatList → ChatGroup/List}/ChatListItemLastMessageContent.tsx +3 -3
- package/src/ui/{ChatList → ChatGroup/List}/ChatListItemLastMessageSentAt.tsx +2 -2
- package/src/ui/ChatGroup/List/ChatListItemName.tsx +8 -0
- package/src/ui/{ChatList → ChatGroup/List}/ChatListItemUnreadCount.tsx +1 -1
- package/src/ui/ChatGroup/List/index.ts +31 -0
- package/src/ui/ChatGroup/index.ts +5 -0
- package/src/ui/Chatify.tsx +8 -153
- package/src/ui/Conversation/Conversation.tsx +76 -0
- package/src/ui/Conversation/ConversationActions.tsx +5 -0
- package/src/ui/Conversation/ConversationBody.tsx +28 -0
- package/src/ui/Conversation/ConversationContext.ts +27 -0
- package/src/ui/Conversation/ConversationHeader.tsx +23 -0
- package/src/ui/Conversation/ConversationName.tsx +7 -0
- package/src/ui/Conversation/InputBox/InputBox.tsx +40 -0
- package/src/ui/{InputBox → Conversation/InputBox}/InputFilesBox.tsx +2 -2
- package/src/ui/{InputBox → Conversation/InputBox}/InputSubmitButtonBox.tsx +2 -2
- package/src/ui/{InputBox → Conversation/InputBox}/InputTextBox.tsx +6 -4
- package/src/ui/Conversation/InputBox/index.ts +16 -0
- package/src/ui/{Message → Conversation/Message}/MessageAuthor.tsx +2 -2
- package/src/ui/{Message → Conversation/Message}/MessageBox.tsx +4 -4
- package/src/ui/{Message → Conversation/Message}/MessageContent.tsx +1 -1
- package/src/ui/{Message → Conversation/Message}/MessageInfoBox.tsx +9 -7
- package/src/ui/{Message → Conversation/Message}/MessageRow.tsx +3 -3
- package/src/ui/{Message → Conversation/Message}/MessageText.tsx +1 -1
- package/src/ui/Conversation/Message/index.ts +22 -0
- package/src/ui/{Next.tsx → Conversation/NextObserver/NextMessagesObserver.tsx} +11 -12
- package/src/ui/Conversation/NextObserver/index.ts +1 -0
- package/src/ui/{MessageReadObserver.tsx → Conversation/ReadObserver/MessageReadObserver.tsx} +17 -13
- package/src/ui/Conversation/ReadObserver/index.ts +1 -0
- package/src/ui/{SendingMessage → Conversation/SendingMessage}/SendingMessageBox.tsx +2 -2
- package/src/ui/{SendingMessage → Conversation/SendingMessage}/SendingMessageContent.tsx +1 -1
- package/src/ui/{SendingMessage → Conversation/SendingMessage}/SendingMessageInfoBox.tsx +2 -2
- package/src/ui/{SendingMessage → Conversation/SendingMessage}/SendingMessageText.tsx +1 -1
- package/src/ui/Conversation/SendingMessage/index.ts +16 -0
- package/src/ui/{SystemMessage → Conversation/SystemMessage}/SystemMessageBox.tsx +4 -4
- package/src/ui/Conversation/SystemMessage/SystemMessageRow.tsx +28 -0
- package/src/ui/Conversation/SystemMessage/index.ts +10 -0
- package/src/ui/Conversation/index.ts +13 -0
- package/src/ui/Thread/ThreadActions.tsx +22 -0
- package/src/ui/Thread/ThreadContext.ts +13 -0
- package/src/ui/Thread/ThreadPanel.tsx +127 -0
- package/src/ui/Thread/index.tsx +3 -0
- package/src/ui/color.ts +20 -0
- package/src/ui/common/Avatar.tsx +20 -0
- package/src/ui/{Icon.tsx → common/Icon.tsx} +6 -1
- package/src/ui/{MessageSkeleton.tsx → common/MessageSkeleton.tsx} +3 -2
- package/src/ui/common/index.ts +13 -0
- package/src/ui/customize.tsx +18 -10
- package/src/ui/index.ts +9 -9
- package/src/ui/localizer.tsx +7 -10
- package/dist/esm/types/ChatifyContext.d.ts +0 -11
- package/dist/esm/types/core/action.d.ts +0 -151
- package/dist/esm/types/core/models.d.ts +0 -70
- package/dist/esm/types/core/reducer.d.ts +0 -11
- package/dist/esm/types/core/state.d.ts +0 -55
- package/dist/esm/types/core/useAddChatMutation.d.ts +0 -2
- package/dist/esm/types/core/useAddMemberMutation.d.ts +0 -2
- package/dist/esm/types/core/useFetchNextMutation.d.ts +0 -3
- package/dist/esm/types/core/useGetAccountsQuery.d.ts +0 -3
- package/dist/esm/types/core/useGetChatListQuery.d.ts +0 -3
- package/dist/esm/types/core/useGetChatQuery.d.ts +0 -5
- package/dist/esm/types/core/useGetMessagesQuery.d.ts +0 -4
- package/dist/esm/types/core/useReadMonitor.d.ts +0 -1
- package/dist/esm/types/core/useRemoveMemberMutation.d.ts +0 -2
- package/dist/esm/types/core/useSendMutation.d.ts +0 -2
- package/dist/esm/types/core/useSignalRMonitor.d.ts +0 -2
- package/dist/esm/types/core/useUpdateChatNameMutation.d.ts +0 -2
- package/dist/esm/types/ui/AddChatButton.d.ts +0 -2
- package/dist/esm/types/ui/Avatar.d.ts +0 -6
- package/dist/esm/types/ui/ChatList/ChatList.d.ts +0 -2
- package/dist/esm/types/ui/ChatList/ChatListItemBox.d.ts +0 -6
- package/dist/esm/types/ui/ChatList/ChatListItemLastMessage.d.ts +0 -3
- package/dist/esm/types/ui/ChatList/ChatListItemLastMessageAuthor.d.ts +0 -3
- package/dist/esm/types/ui/ChatList/ChatListItemLastMessageSentAt.d.ts +0 -3
- package/dist/esm/types/ui/ChatList/ChatListItemName.d.ts +0 -3
- package/dist/esm/types/ui/ChatList/ChatListItemUnreadCount.d.ts +0 -3
- package/dist/esm/types/ui/ChatList/index.d.ts +0 -8
- package/dist/esm/types/ui/ChatName.d.ts +0 -5
- package/dist/esm/types/ui/ChatPanel/ChatBody.d.ts +0 -5
- package/dist/esm/types/ui/ChatPanel/ChatHeader.d.ts +0 -5
- package/dist/esm/types/ui/ChatPanel/ChatHeaderMembers.d.ts +0 -5
- package/dist/esm/types/ui/ChatPanel/ChatHeaderName.d.ts +0 -5
- package/dist/esm/types/ui/ChatPanel/ChatMembersButton.d.ts +0 -5
- package/dist/esm/types/ui/ChatPanel/ChatMembersPanel.d.ts +0 -5
- package/dist/esm/types/ui/ChatPanel/ChatPanel.d.ts +0 -5
- package/dist/esm/types/ui/ChatPanel/index.d.ts +0 -6
- package/dist/esm/types/ui/CreateChatPanel/CreateChatMemberInput.d.ts +0 -5
- package/dist/esm/types/ui/CreateChatPanel/CreateChatNameInput.d.ts +0 -5
- package/dist/esm/types/ui/CreateChatPanel/CreateChatPanel.d.ts +0 -2
- package/dist/esm/types/ui/CreateChatPanel/index.d.ts +0 -4
- package/dist/esm/types/ui/Icon.d.ts +0 -17
- package/dist/esm/types/ui/InputBox/InputBox.d.ts +0 -2
- package/dist/esm/types/ui/InputBox/InputSubmitButtonBox.d.ts +0 -5
- package/dist/esm/types/ui/InputBox/InputTextBox.d.ts +0 -7
- package/dist/esm/types/ui/InputBox/index.d.ts +0 -4
- package/dist/esm/types/ui/Layout/Aside.d.ts +0 -2
- package/dist/esm/types/ui/Layout/Body.d.ts +0 -2
- package/dist/esm/types/ui/Layout/Footer.d.ts +0 -2
- package/dist/esm/types/ui/Layout/Header.d.ts +0 -2
- package/dist/esm/types/ui/Layout/Main.d.ts +0 -2
- package/dist/esm/types/ui/Layout/index.d.ts +0 -5
- package/dist/esm/types/ui/Message/MessageAuthor.d.ts +0 -3
- package/dist/esm/types/ui/Message/MessageBox.d.ts +0 -6
- package/dist/esm/types/ui/Message/MessageContent.d.ts +0 -3
- package/dist/esm/types/ui/Message/MessageInfoBox.d.ts +0 -3
- package/dist/esm/types/ui/Message/MessageText.d.ts +0 -3
- package/dist/esm/types/ui/Message/index.d.ts +0 -6
- package/dist/esm/types/ui/MessageReadObserver.d.ts +0 -6
- package/dist/esm/types/ui/MessageSkeleton.d.ts +0 -4
- package/dist/esm/types/ui/Next.d.ts +0 -4
- package/dist/esm/types/ui/SendingMessage/SendingMessageBox.d.ts +0 -7
- package/dist/esm/types/ui/SendingMessage/SendingMessageText.d.ts +0 -3
- package/dist/esm/types/ui/SendingMessage/index.d.ts +0 -4
- package/dist/esm/types/ui/SystemMessage/SystemMessageBox.d.ts +0 -6
- package/dist/esm/types/ui/SystemMessage/SystemMessageRow.d.ts +0 -9
- package/dist/esm/types/ui/SystemMessage/index.d.ts +0 -2
- package/dist/esm/types/util/index.d.ts +0 -2
- package/dist/esm/types/util/uniqBy.d.ts +0 -1
- package/dist/esm/types/util/uniqId.d.ts +0 -1
- package/src/ChatifyContext.tsx +0 -41
- package/src/core/action.tsx +0 -431
- package/src/core/models.tsx +0 -82
- package/src/core/reducer.tsx +0 -87
- package/src/core/state.ts +0 -93
- package/src/core/useAddChatMutation.tsx +0 -28
- package/src/core/useAddMemberMutation.tsx +0 -25
- package/src/core/useFetchNextMutation.tsx +0 -28
- package/src/core/useGetAccountsQuery.tsx +0 -30
- package/src/core/useGetChatListQuery.tsx +0 -30
- package/src/core/useGetChatQuery.tsx +0 -31
- package/src/core/useGetMessagesQuery.tsx +0 -35
- package/src/core/useReadMonitor.tsx +0 -32
- package/src/core/useRemoveMemberMutation.tsx +0 -23
- package/src/core/useSendMutation.tsx +0 -24
- package/src/core/useSignalRMonitor.tsx +0 -66
- package/src/core/useUpdateChatNameMutation.tsx +0 -23
- package/src/ui/AddChatButton.tsx +0 -17
- package/src/ui/Avatar.tsx +0 -18
- package/src/ui/ChatList/ChatListItemName.tsx +0 -13
- package/src/ui/ChatList/index.ts +0 -8
- package/src/ui/ChatName.tsx +0 -10
- package/src/ui/ChatPanel/ChatBody.tsx +0 -44
- package/src/ui/ChatPanel/ChatHeader.tsx +0 -31
- package/src/ui/ChatPanel/ChatHeaderMembers.tsx +0 -28
- package/src/ui/ChatPanel/ChatMembersButton.tsx +0 -21
- package/src/ui/ChatPanel/ChatPanel.tsx +0 -27
- package/src/ui/ChatPanel/index.ts +0 -6
- package/src/ui/CreateChatPanel/index.ts +0 -4
- package/src/ui/InputBox/InputBox.tsx +0 -38
- package/src/ui/InputBox/index.ts +0 -4
- package/src/ui/Layout/Aside.tsx +0 -12
- package/src/ui/Layout/Body.tsx +0 -10
- package/src/ui/Layout/Footer.tsx +0 -3
- package/src/ui/Layout/Header.tsx +0 -5
- package/src/ui/Layout/Main.tsx +0 -15
- package/src/ui/Layout/index.ts +0 -5
- package/src/ui/Message/index.ts +0 -6
- package/src/ui/SendingMessage/index.ts +0 -4
- package/src/ui/SystemMessage/SystemMessageRow.tsx +0 -43
- package/src/ui/SystemMessage/index.ts +0 -2
- package/src/util/index.ts +0 -2
- package/src/util/uniqBy.tsx +0 -17
- package/src/util/uniqId.tsx +0 -3
package/dist/esm/index.js
CHANGED
|
@@ -1,2 +1,11 @@
|
|
|
1
|
-
import{jsx as e,Fragment as t,jsxs as a}from"react/jsx-runtime";import s,{useRef as n,useCallback as r,useContext as i,useState as c,useEffect as d,useMemo as o,memo as u}from"react";import*as h from"@microsoft/signalr";import{shallowEqual as m}from"shallow-equal";import{produce as l}from"immer";import f from"dayjs";import{Avatar as g,Menu as v,Button as y,Form as p,Input as b,List as I,Checkbox as x,Skeleton as q,Tooltip as C,Row as w,Col as _,Space as N}from"antd";import M from"@ant-design/icons/SendOutlined";import j from"@ant-design/icons/PaperClipOutlined";import O from"@ant-design/icons/UserAddOutlined";import F from"@ant-design/icons/UsergroupAddOutlined";import L from"@ant-design/icons/UserDeleteOutlined";import R from"@ant-design/icons/UsergroupDeleteOutlined";import k from"@ant-design/icons/TeamOutlined";import S from"@ant-design/icons/EditOutlined";import B from"@ant-design/icons/CloseOutlined";import A from"is-hotkey";function T(e,t,a,s){return new(a||(a=Promise))((function(n,r){function i(e){try{d(s.next(e))}catch(e){r(e)}}function c(e){try{d(s.throw(e))}catch(e){r(e)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof a?t:new a((function(e){e(t)}))).then(i,c)}d((s=s.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const U={hubUri:"/api/chatify/hub",headersFactory:()=>Promise.resolve({})},z=["chatify://new-message","chatify://chat-created","chatify://read","chatify://member-added","chatify://member-removed","chatify://chat-name-changed"];class H{constructor(e){this._connection=null,this._subscribers={},this._reconnectSubscribers=[],this.connect=()=>T(this,void 0,void 0,(function*(){const e=yield this._config.signalR.headersFactory();this._connection=(new h.HubConnectionBuilder).withUrl(this._config.signalR.hubUri,{accessTokenFactory:this._config.signalR.accessTokenFactory?this._config.signalR.accessTokenFactory:void 0,headers:e}).withAutomaticReconnect().build(),z.forEach((e=>{this._connection.on(e,((...t)=>{var a;null===(a=this._subscribers[e])||void 0===a||a.forEach((e=>e(t)))}))})),this._connection.onreconnected((()=>this._reconnectSubscribers.forEach((e=>e())))),yield this._connection.start()})),this.subscribe=(e,t)=>{var a;return this._subscribers[e]=null!==(a=this._subscribers[e])&&void 0!==a?a:[],this._subscribers[e].push(t),()=>this._subscribers[e].filter((e=>e!==t))},this.subscribeReconnect=e=>(this._reconnectSubscribers.push(e),()=>this._reconnectSubscribers.filter((t=>t!==e))),this.accounts=()=>T(this,void 0,void 0,(function*(){const{data:e}=yield this.axios.get("account");return e})),this.chats=()=>T(this,void 0,void 0,(function*(){const{data:e}=yield this.axios.get("chat");return e})),this.chat=e=>T(this,void 0,void 0,(function*(){const{data:t}=yield this.axios.get(`chat/${e}`);return t})),this.addChat=e=>T(this,void 0,void 0,(function*(){const{data:t}=yield this.axios.post("chat",e);return t})),this.messages=e=>T(this,void 0,void 0,(function*(){const{chatId:t,skip:a=0,take:s=20}=e,n=encodeURIComponent(JSON.stringify({skip:a,take:s})),{data:r}=yield this.axios.get(`chat/${t}/message?pagingRule=${n}`);return r})),this.send=e=>T(this,void 0,void 0,(function*(){const{chatId:t}=e,a=function(e,t){var a={};for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.indexOf(s)<0&&(a[s]=e[s]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(s=Object.getOwnPropertySymbols(e);n<s.length;n++)t.indexOf(s[n])<0&&Object.prototype.propertyIsEnumerable.call(e,s[n])&&(a[s[n]]=e[s[n]])}return a}(e,["chatId"]);yield this.axios.post(`chat/${t}/message`,a)})),this.read=e=>T(this,void 0,void 0,(function*(){yield this.axios.put("chat/message/read",e)})),this.removeMember=e=>T(this,void 0,void 0,(function*(){yield this.axios.delete(`chat/${e.chatId}/member`,{data:e})})),this.updateChatName=e=>T(this,void 0,void 0,(function*(){yield this.axios.put(`chat/${e.id}/name`,e)})),this.addMember=e=>T(this,void 0,void 0,(function*(){yield this.axios.post(`chat/${e.chatId}/member`,e)})),this._config=Object.assign(Object.assign({},e),{signalR:Object.assign(Object.assign({},U),e.signalR)})}get axios(){return this._config.axios}}const P={update:(e,{mutation:t})=>{t(e)},messages_fetch:(e,{chatId:t,requestId:a})=>{e.query.messages[t]=Object.assign(Object.assign({},e.query.messages[t]),{uninitialized:!1,isFetching:!0,requestId:a})},messages_fulfilled:(e,{chatId:t,messages:a,hasMore:s})=>{const n=e.query.messages[t];n.error=void 0,n.isFetching=!1,n.data=a.map((e=>Object.assign({type:"message"},e))),n.requestId=void 0,s&&n.data.push({type:"next"})},messages_rejected:(e,{chatId:t,error:a})=>{const s=e.query.messages[t];s.error=a,s.isFetching=!1,s.requestId=void 0},fetchNext_fetch:(e,{chatId:t})=>{e.mutation.fetchNext={isFetching:!0}},fetchNext_fulfilled:(e,{chatId:t,messages:a,hasMore:s})=>{e.mutation.fetchNext={isFetching:!1,error:void 0},e.query.messages[t].data=e.query.messages[t].data.filter((e=>"next"!==e.type)),e.query.messages[t].data.push(...a.map((e=>Object.assign({type:"message"},e)))),s&&e.query.messages[t].data.push({type:"next"})},fetchNext_rejected:(e,{chatId:t,error:a})=>{e.mutation.fetchNext={isFetching:!1,error:a}},chatList_fetch:(e,{requestId:t})=>{e.query.chatList.isFetching=!0,e.query.chatList.uninitialized=!1,e.query.chatList.requestId=t},chatList_fulfilled:(e,{chats:t})=>{t=t.sort(((e,t)=>-e.message.id.substring(47).localeCompare(t.message.id.substring(47)))),e.query.chatList.isFetching=!1,e.query.chatList.error=void 0,e.query.chatList.data=t,e.query.chatList.requestId=void 0,void 0===e.ui.chatId&&t.length>0&&(e.ui.view="chat",e.ui.chatId=t[0].id)},chatList_rejected:(e,{error:t})=>{e.query.chatList.isFetching=!1,e.query.chatList.error=t,e.query.chatList.requestId=void 0},removeMember_fetch:e=>{e.mutation.removeMember={isFetching:!0}},removeMember_fulfilled:e=>{e.mutation.removeMember={isFetching:!1,error:void 0}},removeMember_rejected:(e,{error:t})=>{e.mutation.removeMember={isFetching:!1,error:t}},addMember_fetch:e=>{e.mutation.addMember={isFetching:!0}},addMember_fulfilled:e=>{e.mutation.addMember={isFetching:!1,error:void 0}},addMember_rejected:(e,{error:t})=>{e.mutation.addMember={isFetching:!1,error:t}},updateChatName_fetch:e=>{e.mutation.updateChatName={isFetching:!0}},updateChatName_fulfilled:e=>{e.mutation.updateChatName={isFetching:!1,error:void 0}},updateChatName_rejected:(e,{error:t})=>{e.mutation.updateChatName={isFetching:!1,error:t}},addChat_fetch:e=>{e.mutation.addChat={isFetching:!0}},addChat_fulfilled:e=>{e.mutation.addChat={isFetching:!1,error:void 0}},addChat_rejected:(e,{error:t})=>{e.mutation.addChat={isFetching:!1,error:t}},accounts_fetch:(e,{requestId:t})=>{e.query.accounts={isFetching:!0,uninitialized:!1,requestId:t}},accounts_fulfilled:(e,{accounts:t})=>{e.query.accounts.data=t,e.query.accounts.isFetching=!1,e.query.accounts.error=void 0,e.query.accounts.requestId=void 0},accounts_rejected:(e,{error:t})=>{e.query.accounts.isFetching=!1,e.query.accounts.error=t,e.query.accounts.requestId=void 0},chat_open:(e,{chatId:t})=>{e.ui.chatId=t,e.ui.view="chat"},new_chat_open:e=>{e.ui.view="new-chat"},new_chat_close:e=>{var t,a;e.ui.chatId?e.ui.view="chat":(null===(t=e.query.chatList.data)||void 0===t?void 0:t.length)?(e.ui.view="chat",e.ui.chatId=null===(a=e.query.chatList.data[0])||void 0===a?void 0:a.id):e.ui.view=void 0},toggle_members_view:e=>{e.ui.showMembers=!e.ui.showMembers},message_received:(e,{message:t,requestId:a,me:s})=>{var n,r;const i=e.query.messages[t.chatId];(null==i?void 0:i.data)&&(i.data.unshift(Object.assign({type:"message"},t)),i.data=i.data.filter((e=>"sending"!==e.type||e.requestId!==a)));const c=null===(r=null===(n=e.query.chatList)||void 0===n?void 0:n.data)||void 0===r?void 0:r.find((e=>e.id===t.chatId));c&&(c.message=t),c&&t.sentBy.id!==s&&c.totalUnreadCount++,c&&t.sentBy.id===s&&(c.lastReadMessageId=t.id,c.totalUnreadCount=0)},chat_created:(e,{chat:t})=>{var a,s;null===(s=null===(a=e.query.chatList)||void 0===a?void 0:a.data)||void 0===s||s.unshift(t)},read:(e,{id:t,timestamp:a})=>{const s=e.queue.read.queued.filter((e=>e.substring(0,36)===t.substring(0,36)));s.some((e=>e.localeCompare(t)>=0))||(e.queue.read.queued.filter((e=>s.includes(e))),e.queue.read.queued.push(t),e.queue.read.timestamp=a)},read_send:(e,{id:t})=>{e.queue.read.queued=e.queue.read.queued.filter((e=>e!==t)),e.queue.read.processing.push(t)},read_reject:(e,{id:t,timestamp:a})=>{e.queue.read.queued.push(t),e.queue.read.processing=e.queue.read.processing.filter((e=>e!==t)),e.queue.read.timestamp=a},read_received:(e,{events:t})=>{var a;e.queue.read.processing=e.queue.read.processing.filter((e=>{const a=t.find((t=>t.chatId===e.substring(0,36)));return!a||a.newLastReadMessageId.localeCompare(e)>=0}));for(const s of t){e.queue.read.processing=e.queue.read.processing.filter((e=>e.substring(0,36)!==s.chatId||e.localeCompare(s.newLastReadMessageId)>0));const t=null===(a=e.query.chatList.data)||void 0===a?void 0:a.find((e=>e.id===s.chatId));t&&(t.lastReadMessageId=s.newLastReadMessageId,t.totalUnreadCount=t.totalUnreadCount-s.readCount)}},member_added:(e,{chatId:t,chatName:a,account:s,me:n,message:r,withHistory:i})=>{var c,d,o,u,h;const{chats:m,messages:l,chatList:f}=e.query;null===(d=null===(c=m[t])||void 0===c?void 0:c.data)||void 0===d||d.members.push(s);const g=null===(o=null==f?void 0:f.data)||void 0===o?void 0:o.find((e=>e.id===t));return s.id!==n&&null!=g&&(g.message=r,g.totalUnreadCount++),null===(h=null===(u=l[t])||void 0===u?void 0:u.data)||void 0===h||h.unshift(Object.assign({type:"message"},r)),s.id!==n||void 0===f.data||g||f.data.unshift({id:t,name:a,message:r,totalUnreadCount:1,active:!0,lastReadMessageId:null}),s.id===n&&g&&(g.active=!0,g.message=r,g.totalUnreadCount++),e},member_removed:(e,{chatId:t,accountId:a,deleteHistory:s,me:n,message:r})=>{var i;const{chats:c,chatList:d}=e.query,o=c[t];if((null==o?void 0:o.data)&&(o.data.members=o.data.members.filter((e=>e.id!==a))),a===n&&e.query.chats[t].data&&delete e.query.chats[t],a===n&&s&&(null==d?void 0:d.data)&&(d.data=d.data.filter((e=>e.id!==t)),e.ui.chatId===t&&(e.ui.chatId=null===(i=d.data.at(0))||void 0===i?void 0:i.id)),a===n&&!s&&(null==d?void 0:d.data)){d.data.find((e=>e.id===t)).active=!1}if(a===n&&s||!e.query.messages[t].data||e.query.messages[t].data.unshift(Object.assign(Object.assign({},r),{type:"message"})),(a!==n||!s)&&e.query.chatList.data){const a=e.query.chatList.data.find((e=>e.id===t));a.message=r,a.totalUnreadCount++}a===n&&s&&e.query.messages[t].data&&delete e.query.messages[t]},chat_fetch:(e,{chatId:t,requestId:a})=>{e.query.chats[t]={isFetching:!0,uninitialized:!1,data:void 0,error:void 0,requestId:a}},chat_fulfilled:(e,{chat:t})=>{const a=e.query.chats[t.id];a.isFetching=!1,a.error=void 0,a.data=t,a.requestId=void 0},chat_rejected:(e,{chatId:t,error:a})=>{const s=e.query.chats[t];s.isFetching=!1,s.error=a,s.requestId=void 0},send_fetch:(e,{chatId:t,text:a,files:s,requestId:n})=>{var r;e.mutation.send={isFetching:!0,error:void 0},null===(r=e.query.messages[t].data)||void 0===r||r.push({type:"sending",text:a,files:s,requestId:n})},send_fulfilled:(e,{chatId:t,requestId:a})=>{e.mutation.send={isFetching:!1,error:void 0}},send_rejected:(e,{chatId:t,requestId:a,error:s})=>{var n;e.mutation.send={isFetching:!1,error:s},e.query.messages[t].data=null===(n=e.query.messages[t].data)||void 0===n?void 0:n.filter((e=>"sending"!==e.type||e.requestId!==a))},chatNameChanged_received:(e,{chatId:t,newName:a,message:s})=>{if(e.query.chatList.data){const n=e.query.chatList.data.find((e=>e.id===t));n.name=a,n.message=s,n.totalUnreadCount++}e.query.chats[t].data&&(e.query.chats[t].data.name=a),e.query.messages[t].data&&e.query.messages[t].data.unshift(Object.assign({type:"message"},s))}},E=Object.freeze({uninitialized:!1,isFetching:!0,data:void 0,error:void 0}),D={ui:{showMembers:!1},query:{messages:{},chats:{},chatList:{uninitialized:!0,isFetching:!1,data:void 0,error:void 0},accounts:{uninitialized:!0,isFetching:!1,data:void 0,error:void 0}},mutation:{fetchNext:{isFetching:!1,error:void 0},removeMember:{isFetching:!1,error:void 0},addMember:{isFetching:!1,error:void 0},updateChatName:{isFetching:!1,error:void 0},addChat:{isFetching:!1,error:void 0},send:{isFetching:!1,error:void 0}},queue:{read:{queued:[],processing:[],timestamp:0},send:{queued:[],processing:[],timestamp:0}}};function $(){const e=n(D),t=n([]),a=r((a=>{const s=function(e,t){const a=l(e,(e=>P[t.type](e,t.data)));return console.debug("[Chatify]: ",t,a),a}(e.current,a);e.current!==s&&(e.current=s,t.current.forEach((e=>e(s))))}),[]),s=r((e=>(t.current.push(e),()=>{t.current=t.current.filter((t=>t!==e))})),[]);return[e,a,s]}const K=s.createContext(null);function Y({children:t}){const a=$();return e(K.Provider,{value:a,children:t})}function W(){return i(K)[1]}function J(){const[e]=i(K);return e}function G(e,t){const[a,,s]=i(K),r=n(e(a.current)),[o,u]=c(r.current);return d((()=>{const t=e(a.current);return m(r.current,t)||(r.current=t,u(t)),s((t=>{const a=e(t);m(a,r.current)||(r.current=a,u(a))}))}),[]),o}function V(e,t){const a=W();d((()=>{let s=[];return t.connect().then((()=>{s.push(t.subscribe("chatify://new-message",(([t,s])=>{a({type:"message_received",data:{message:t,requestId:s,me:e}})}))),s.push(t.subscribe("chatify://chat-created",(([e,t])=>{a({type:"chat_created",data:{chat:e,requestId:t}})}))),s.push(t.subscribe("chatify://read",(([e])=>{a({type:"read_received",data:{events:e}})}))),s.push(t.subscribe("chatify://member-added",(([t,s,n,r,i])=>{a({type:"member_added",data:{chatId:t,chatName:s,account:n,me:e,message:r,withHistory:i}})}))),s.push(t.subscribe("chatify://member-removed",(([t,s,n,r])=>{a({type:"member_removed",data:{chatId:t,accountId:s,deleteHistory:n,me:e,message:r}})}))),s.push(t.subscribe("chatify://chat-name-changed",(([e,t,s])=>{a({type:"chatNameChanged_received",data:{chatId:e,newName:t,message:s}})})))})),()=>{s.forEach((e=>e()))}}),[])}const Q=s.createContext(null),X=s.createContext(null);function Z(){return i(X)}function ee(){return i(Q)}function te(a){const{children:s}=a;return V(ee(),Z()),e(t,{children:s})}function ae({value:t,children:a}){return e(X.Provider,{value:t.client,children:e(Q.Provider,{value:t.me,children:e(Y,{children:e(te,{children:a})})})})}function se(){return Date.now().toString(36)+Math.random().toString(36).substring(2)}function ne(e){var t;const a=n(se()),{chatId:s}=e,r=Z(),i=J(),c=null!==(t=G((e=>e.query.chats[s])))&&void 0!==t?t:E,o=W();return d((()=>{var e;!1!==(null===(e=i.current.query.chats[s])||void 0===e?void 0:e.uninitialized)&&(o({type:"chat_fetch",data:{chatId:s,requestId:a.current}}),r.chat(s).then((e=>o({type:"chat_fulfilled",data:{chat:e}}))).catch((e=>o({type:"chat_rejected",data:{chatId:s,error:e}}))))}),[s]),null!=c?c:E}function re(){var e;const t=n(se()),a=J(),s=Z(),r=null!==(e=G((e=>e.query.chatList)))&&void 0!==e?e:E,i=W();return d((()=>{!1!==a.current.query.chatList.uninitialized&&(i({type:"chatList_fetch",data:{requestId:t.current}}),s.chats().then((e=>i({type:"chatList_fulfilled",data:{chats:e}}))).catch((e=>i({type:"chatList_rejected",data:{error:e}}))))}),[]),null!=r?r:E}function ie({chatId:e}){const t=J();G((e=>e.mutation.fetchNext));const a=W(),s=Z();return[r((()=>{var n;const r=null===(n=t.current.query.messages[e].data)||void 0===n?void 0:n.filter((e=>"message"===e.type)).length;a({type:"fetchNext_fetch",data:{chatId:e}}),s.messages({chatId:e,skip:r,take:16}).then((t=>a({type:"fetchNext_fulfilled",data:{chatId:e,messages:t.slice(0,15),hasMore:16===t.length}}))).catch((t=>a({type:"fetchNext_rejected",data:{chatId:e,error:t}})))}),[e]),t.current.mutation.fetchNext]}function ce(e){var t;const{chatId:a}=e,s=n(se()),r=J(),i=W();G((e=>e.query.messages[a]));const c=Z();return d((()=>{var e;!1!==(null===(e=r.current.query.messages[a])||void 0===e?void 0:e.uninitialized)&&(i({type:"messages_fetch",data:{requestId:s.current,chatId:a}}),c.messages({chatId:a,skip:0,take:16}).then((e=>i({type:"messages_fulfilled",data:{chatId:a,messages:e.slice(0,15),hasMore:16===e.length}}))).catch((e=>i({type:"messages_rejected",data:{chatId:a,error:e}}))))}),[a]),null!==(t=r.current.query.messages[a])&&void 0!==t?t:E}function de(){var e;const t=n(se()),a=Z(),s=J(),r=null!==(e=G((e=>e.query.accounts)))&&void 0!==e?e:E,i=W();return d((()=>{!1!==s.current.query.accounts.uninitialized&&(i({type:"accounts_fetch",data:{requestId:t.current}}),a.accounts().then((e=>i({type:"accounts_fulfilled",data:{accounts:e}}))).catch((e=>i({type:"accounts_rejected",data:{error:e}}))))}),[]),null!=r?r:E}function oe(){const e=Z(),t=W(),a=J();return[r((a=>(t({type:"addChat_fetch",data:void 0}),e.addChat(a).then((e=>(t({type:"addChat_fulfilled",data:void 0}),e))).catch((e=>{throw t({type:"addChat_rejected",data:{error:e}}),e})))),[]),a.current.mutation.addChat]}function ue(){const e=Z(),[t,a]=G((e=>[e.queue.read.queued,e.queue.read.timestamp])),s=W(),r=n(null);d((()=>{0!==t.length&&(r.current&&clearTimeout(r.current),r.current=setTimeout((()=>{for(const a of t)s({type:"read_send",data:{id:a}}),e.read({id:a}).catch((()=>s({type:"read_reject",data:{id:a,timestamp:(new Date).getTime()}})))}),100))}),[a])}function he(){const e=Z(),t=W(),a=J();G((e=>e.mutation.addMember));return[r((a=>{t({type:"addMember_fetch",data:void 0}),e.addMember(a).then((()=>t({type:"addMember_fulfilled",data:void 0}))).catch((e=>t({type:"addMember_rejected",data:{error:e}})))}),[t]),a.current.mutation.addMember]}function me(){const e=J();G((e=>e.mutation.removeMember));const t=W(),a=Z();return[r((e=>{t({type:"removeMember_fetch",data:void 0}),a.removeMember(e).then((()=>t({type:"removeMember_fulfilled",data:void 0}))).catch((e=>t({type:"removeMember_rejected",data:{error:e}})))}),[]),e.current.mutation.removeMember]}function le(){const e=J();G((e=>e.mutation.send));const t=W(),a=Z();return[r((e=>{const{chatId:s,requestId:n,files:r,text:i}=e;t({type:"send_fetch",data:{chatId:s,requestId:n,files:r,text:i}}),a.send(e).then((()=>t({type:"send_fulfilled",data:{chatId:s,requestId:n}}))).catch((e=>t({type:"send_rejected",data:{chatId:s,requestId:n,error:e}})))}),[]),e.current.mutation.send]}function fe(){const e=J();G((e=>e.mutation.updateChatName));const t=W(),a=Z();return[r((e=>{t({type:"updateChatName_fetch",data:void 0}),a.updateChatName(e).then((()=>t({type:"updateChatName_fulfilled",data:void 0}))).catch((e=>t({type:"updateChatName_rejected",data:{error:e}})))}),[]),e.current.mutation.updateChatName]}const ge=s.createContext(null);function ve(){return i(ge)}const ye={isToday:e=>f(e).isSame(f(),"day"),timestamp:e=>f(e).format("HH:mm"),dateTime:e=>f(e).format("DD/MM/YYYY HH:mm"),message:{read:()=>"Read",reading:()=>"Reading...",sending:()=>"Sending..."},addChat:{title:()=>"Add chat",name:{label:()=>"Name",required:()=>"Name is required",max250:()=>"Max 250 characters allowed"},members:{label:()=>"Members",required:()=>"Members is required"},submitBtn:()=>"Submit"},system:{chatCreated:()=>"Chat created",memberAdded:()=>"New member added",memberRemoved:()=>"Member removed",chatNameChanged:e=>`Chat name changed to '${e}'`},input:{placeholder:()=>"Start typing (Ctrl/⌘Cmd + Enter to send) ..."},settings:{members:()=>"Members"}},pe=s.createContext(null);function be(t){const{children:a,value:s}=t;return e(pe.Provider,{value:s,children:a})}function Ie(t,a){const n=s.forwardRef(((s,n)=>{const r=function(e){return i(pe)[e]}(t);return null===r?null:e(r||a,Object.assign({},s,{ref:n}))}));return a.displayName=a.displayName||t,n.displayName="Customizable."+a.displayName,Object.assign(n,{key:t,Component:a})}const xe=Ie("ChatName",(a=>{const{name:s}=a;return e(t,{children:s})})),qe=Ie("ChatListItemName",(t=>{const{name:a}=t.chat;return e("div",{className:"wxchtf-chat-name",children:e(xe,{name:a})})})),Ce=Ie("ChatListItemUnreadCount",(t=>{const{totalUnreadCount:a}=t.chat;return a<=0?null:e("div",{className:"wxchtf-unread-count",children:a})}));function we(e,t){if("chatify://chat-created"===t)return e.system.chatCreated();if(t.startsWith("chatify://member-added"))return e.system.memberAdded();if(t.startsWith("chatify://member-removed"))return e.system.memberRemoved();if(t.startsWith("chatify://chat-name-changed::")){const a=JSON.parse(t.substring(29));return e.system.chatNameChanged(a.newName)}return t}const _e=Ie("SystemMessageRow",(t=>{const{message:s,containerRef:n}=t,{text:r,sentAt:i}=s,c=ve();return a("div",{ref:n,className:"wxchtf-system-message",children:[e("div",{className:"wxchtf-text",children:we(c,r)}),e("div",{className:"wxchtf-timestamp",children:c.timestamp(i)})]})})),Ne=Ie("ChatListItemLastMessageContent",(t=>{const{message:a}=t.chat,s=ve();return e("div",{className:"wxchtf-chat-last-message",children:"chatify::system"===a.sentBy.id?we(s,a.text):a.text})})),Me=t=>{const{account:a}=t;return e(g,{src:a.avatar})};Me.displayName="Avatar";const je=Ie("Avatar",Me),Oe=Ie("ChatListItemLastMessageAuthor",(t=>{const{message:s}=t.chat;return"chatify::system"===s.sentBy.id?null:a("div",{className:"wxchtf-chat-last-author",children:[e(je,{account:s.sentBy})," ",s.sentBy.name]})})),Fe=Ie("ChatListItemLastMessageSentAt",(t=>{const{chat:{message:{sentAt:a}}}=t,s=ve();return e("div",{className:"wxchtf-chat-last-sent-at",children:s.isToday(a)?s.timestamp(a):s.dateTime(a)})})),Le=Ie("ChatListItemLastMessage",(t=>a("div",{className:"wxchtf-chat-last",children:[e(Oe,Object.assign({},t)),e(Ne,Object.assign({},t)),e(Fe,Object.assign({},t))]}))),Re=Ie("ChatListItemBox",(t=>{const{message:s,lastReadMessageId:n}=t.chat,r=null!=n&&n.localeCompare(s.id)>=0;return a("div",{className:"wxchtf-chat"+(r?"":" --unread"),children:[e(qe,Object.assign({},t)),e(Ce,Object.assign({},t)),e(Le,Object.assign({},t))]})}));const ke=Ie("ChatList",(()=>{const a=G((e=>e.ui.chatId)),s=o((()=>a?[a]:[]),[a]),n=function(){const e=W();return r((t=>e({type:"chat_open",data:{chatId:t.selectedKeys[0]}})),[e])}(),i=function(){const{data:t}=re();return o((()=>null==t?void 0:t.slice().sort(((e,t)=>-e.message.id.substring(47).localeCompare(t.message.id.substring(47)))).map((t=>({key:t.id,label:e(Re,{chat:t})})))),[t])}();return e(t,{children:i&&e(v,{className:"wxchtf-chat-list",selectedKeys:s,onSelect:n,items:i})})})),Se=Ie("AddChatButton",(()=>{const t=W(),a=r((()=>t({type:"new_chat_open",data:void 0})),[t]);return e("span",{className:"wxchtf-add-btn-wrapper",children:e(y,{className:"wxchtf-add-btn",onClick:a,icon:"+",children:"Add chat"})})})),Be=Ie("Aside",(()=>a("div",{className:"wxchtf-aside",children:[e(Se,{}),e(ke,{})]}))),Ae=Ie("Header",(()=>e("div",{className:"wxchtf-header"}))),Te=Ie("Footer",(()=>e("div",{className:"wxchtf-footer"}))),Ue=Ie("CreateChatNameInput",(t=>{const{name:a}=t,s=ve();return e(p.Item,{name:a,label:s.addChat.name.label(),rules:[{required:!0,message:s.addChat.name.required()},{max:250,message:s.addChat.name.max250()}],children:e(b,{})})}));function ze(t){const{value:a,onChange:s}=t,{data:n,isFetching:r}=de(),i=ee(),c=o((()=>{var e;return null!==(e=null==n?void 0:n.filter((e=>e.id!==i)))&&void 0!==e?e:[]}),[n,i]);return e(I,{rowKey:"id",className:"wxchtf-create-chat-member-input-list",loading:r,dataSource:c,renderItem:t=>{const n=a.includes(t.id);return e(I.Item,{className:n?"--selected":"",children:e(x,{checked:n,onChange:()=>s(a.includes(t.id)?a.filter((e=>e!==t.id)):[...a,t.id]),children:e(I.Item.Meta,{avatar:e(je,{account:t}),title:t.name})})})}})}const He=Ie("CreateChatMemberInput",(t=>{const{name:a}=t,s=ve();return e(p.Item,{label:s.addChat.members.label(),rules:[{required:!0,message:s.addChat.members.required()}],name:a,children:e(ze,{})})})),Pe={name:"",members:[]},Ee=Ie("CreateChatForm",(t=>{const{value:s=Pe,onSubmit:n,busy:r=!1}=t,i=ve();return a(p,{onFinish:n,layout:"vertical",disabled:r,initialValues:s,children:[e(Ue,{name:"name"}),e(He,{name:"members"}),e(y,{loading:r,type:"primary",block:!0,htmlType:"submit",children:i.addChat.submitBtn()})]})})),De={attach:j,send:M,"remove-member":L,"remove-member-delete-history":R,"add-member":O,"add-member-with-history":F,members:k,edit:S,close:B},$e=Ie("Icon",(t=>{const{type:a}=t,s=De[a];return s?e(s,{}):null}));const Ke=Ie("CreateChatPanel",(()=>{const t=ve(),[s,n]=function(){const[e,{isFetching:t}]=oe(),a=W();return[r((t=>e({name:t.name,members:t.members,requestId:se()}).then((e=>a({type:"chat_open",data:{chatId:e}})))),[e,a]),t]}(),i=function(){const e=W();return r((()=>e({type:"new_chat_close",data:void 0})),[e])}();return a("div",{className:"wxchtf-create-chat-panel",children:[e(y,{onClick:i,className:"wxchtf-create-chat-panel-close",type:"link",icon:e($e,{type:"close"})}),e("h3",{children:t.addChat.title()}),e(Ee,{busy:null!=n&&n,onSubmit:s})]})})),Ye=Ie("MessageAuthor",(t=>{const{sentBy:a}=t.message;return e("div",{className:"wxchtf-message-author",children:e(je,{account:a})})})),We=Ie("MessageReadObserver",(a=>{const{message:s,messageRef:r}=a,i=W(),c=G((e=>{const t=e.query.chatList.data.find((e=>e.id===s.chatId)).lastReadMessageId;return null!=t&&s.id.localeCompare(t)<=0})),u=n(c);d((()=>{u.current=u.current||c}),[c]);const h=o((()=>new IntersectionObserver((([e])=>{e.isIntersecting&&!u.current&&(u.current=!0,i({type:"read",data:{id:s.id,timestamp:(new Date).getTime()}}))}))),[]);return d((()=>(h.observe(r.current),()=>h.disconnect())),[h]),e(t,{})})),Je=Ie("MessageText",(t=>{const{text:a}=t.message;return e("div",{className:"wxchtf-message-text",children:a})})),Ge=Ie("MessageContent",(t=>e("div",{className:"wxchtf-message-content",children:e(Je,Object.assign({},t))}))),Ve=Ie("MessageInfoBox",(t=>{const{message:s}=t,{id:n,sentBy:r,sentAt:i}=s,c=ee(),d=r.id===c,o=ve(),u=G((e=>e.queue.read.queued.includes(n)));return a("div",{className:"wxchtf-message-info-box",children:[!d&&a("div",{className:"wxchtf-message-author-name",children:[r.name,","]}),e("div",{className:"wxchtf-message-sent-at",children:o.timestamp(i)}),!d&&e("div",{className:"wxchtf-message-read-box",children:u?o.message.reading():o.message.read()})]})})),Qe=Ie("MessageRow",(t=>{const{message:s,containerRef:n}=t,{sentBy:r}=s,i=ee(),c=r.id===i;return a("div",{ref:n,className:"wxchtf-message"+(c?" --my":""),children:[e(Ye,Object.assign({},t)),a("div",{children:[e(Ve,Object.assign({},t)),e(Ge,Object.assign({},t))]})]})})),Xe=Ie("MessageBox",(s=>{const r=n(null);return a(t,{children:[e(We,Object.assign({messageRef:r},s)),e(Qe,Object.assign({containerRef:r},s))]})}));function Ze(s){const{count:n=1}=s;return e(t,{children:Array.from(Array(n)).map(((t,s)=>a("div",{className:"wxchtf-message-skeleton",children:[e(q.Avatar,{className:"wxchtf-avatar",active:!0}),e(q.Button,{active:!0,className:"wxchtf-content"})]},s)))})}function et(t){const{chatId:a}=t,[s,{isFetching:r}]=ie({chatId:a}),[i,u]=c(!1),h=n(null),m=n(),l=o((()=>new IntersectionObserver((([e])=>{e.isIntersecting?m.current=setTimeout((()=>u(!0)),200):clearTimeout(m.current)}))),[]);return d((()=>(l.observe(h.current),()=>l.disconnect())),[l]),d((()=>{i&&s()}),[i]),r||i?e(Ze,{count:4}):e("div",{className:"wxchtf-next",ref:h})}const tt=Ie("SendingMessageText",(t=>{const{text:a}=t;return e("div",{className:"wxchtf-sending-message-text",children:a})})),at=Ie("SendingMessageInfoBox",(t=>{const a=ve();return e("div",{className:"wxchtf-sending-message-info-box",children:e("div",{className:"wxchtf-sending-message-sending-box",children:a.message.sending()})})})),st=Ie("SendingMessageContent",(t=>a("div",{className:"wxchtf-sending-message-content",children:[e(tt,Object.assign({},t)),e(at,Object.assign({},t))]}))),nt=Ie("SendingMessageBox",(t=>e("div",{className:"wxchtf-sending-message",children:e(st,Object.assign({},t))}))),rt=Ie("SystemMessageBox",(s=>{const r=n(null);return a(t,{children:[e(We,Object.assign({messageRef:r},s)),e(_e,Object.assign({containerRef:r},s))]})})),it=Ie("ChatBody",(t=>{const{id:s}=t,{data:n}=ce({chatId:s});return a("div",{className:"wxchtf-chat-body",children:[!n&&e(Ze,{count:5}),null==n?void 0:n.map(((t,a)=>{if("message"===t.type&&"chatify::system"===t.sentBy.id)return e(rt,{message:t},t.id);switch(t.type){case"message":return e(Xe,{message:t},t.id);case"sending":return e(nt,{text:t.text,files:t.files},t.requestId);case"next":return e(et,{chatId:s},"next-"+n.length+"-"+a);default:return null}}))]})})),ct=Ie("ChatHeaderMembers",(t=>{const{id:a}=t,{data:s}=ne({chatId:a});return(null==s?void 0:s.members)?e(g.Group,{maxCount:5,children:s.members.map((t=>e(C,{title:t.name,children:e(je,{account:t})},t.id)))}):null})),dt=Ie("ChatMembersButton",(t=>{const a=W(),s=r((()=>a({type:"toggle_members_view",data:void 0})),[a]);return e(y,{onClick:s,type:"link",icon:e($e,{type:"members"})})})),ot=A("escape"),ut=A("enter");const ht=Ie("ChatHeaderName",(t=>{const{id:a}=t,s=G((e=>e.query.chatList.data.find((e=>e.id===a)))),n=s.name,[r,i]=c(""),[o,u]=c(!1),h=function(e,t){const[a]=fe();return()=>a({id:e,name:t})}(a,r);return d((()=>{o&&i(n)}),[o,n]),s.active?e(C,o?{defaultOpen:!0,title:"Press Enter to save new chat name or Escape to cancel editing",children:e(b,{value:r,onChange:e=>i(e.target.value),onBlur:()=>u(!1),onKeyDown:e=>{ot(e)?u(!1):ut(e)&&(u(!1),r!==n&&""!==r.trim()&&h())},autoFocus:!0})}:{title:"Click to edit name...",children:e("span",{className:"wxchtf-chat-name --editable",onClick:()=>u(!0),children:e(xe,{name:n})})}):e("span",{className:"wxchtf-chat-name",children:n})})),mt=Ie("ChatHeader",(t=>{const{id:s}=t,n=G((e=>e.query.chatList.data.find((e=>e.id===s))));return e("div",{className:"wxchtf-chat-header",children:a(w,{justify:"space-between",align:"middle",children:[e(_,{children:e(ht,{id:s})}),n.active&&a(_,{className:"wxchtf-chat-members",children:[e(ct,{id:s}),e(dt,{id:s})]})]})})})),lt=Ie("InputFilesBox",(()=>e("div",{className:"wxchtf-add-files-box",children:e(y,{type:"link",icon:e($e,{type:"attach"}),className:"wxchtf-add-files-btn"})}))),ft=A("ctrl+enter"),gt={maxRows:5,minRows:1},vt=Ie("InputTextBox",u((t=>{const{value:a,onChange:s,onSend:n}=t,i=ve(),c=r((e=>s(e.target.value)),[s]),d=r((e=>{ft(e)&&n(a)}),[n,a]);return e("div",{className:"wxchtf-text-input-box",children:e(b.TextArea,{value:a,onChange:c,autoSize:gt,className:"wxchtf-text-input-textarea",placeholder:i.input.placeholder(),onKeyDown:d})})}))),yt=Ie("InputSubmitButtonBox",(t=>{const{onSubmit:a}=t;return e("div",{className:"wxchtf-submit-btn-box",children:e(y,{onClick:a,type:"link",icon:e($e,{type:"send"}),className:"wxchtf-submit-btn"})})}));const pt=Ie("InputBox",(()=>{const[t,s]=c(""),n=function(e,t){const a=G((e=>e.ui.chatId)),[s]=le();return r((()=>{0!==e.length&&(t(""),s({chatId:a,text:e,files:[],requestId:se()}))}),[a,e])}(t,s);return e("div",{className:"wxchtf-input-form",children:a("div",{className:"wxchtf-input-box",children:[e(lt,{}),e(vt,{value:t,onSend:n,onChange:s}),e(yt,{onSubmit:n})]})})}));function bt(e,t,a){const[s,n]=he();return[r((()=>s({chatId:e,accountId:t,withHistory:a})),[s,e,t,a]),n]}function It(e,t,a){const[s,n]=me();return[r((()=>s({chatId:e,accountId:t,deleteHistory:a})),[s,e,t,a]),n]}const xt=Ie("ChatMemberListItem",(t=>{const{chatId:s}=t,{data:n}=ne({chatId:s}),{data:r}=de(),i=r.find((e=>e.id===t.id)),c=n.members.some((e=>e.id===i.id)),[d]=bt(s,i.id,!1),[o]=bt(s,i.id,!0),[u]=It(s,i.id,!1),[h]=It(s,i.id,!0);return e(I.Item,{className:"wxchtf-chat-members-list-item",actions:c?[e(C,{title:"Remove (keep history)",children:e(y,{onClick:u,type:"link",icon:e($e,{type:"remove-member"})})},"remove"),e(C,{title:"Remove (delete history)",children:e(y,{onClick:h,type:"link",icon:e($e,{type:"remove-member-delete-history"})})},"remove_delete_history")]:[e(C,{title:"Add (no history)",children:e(y,{onClick:d,type:"link",icon:e($e,{type:"add-member"})})},"add_no_history"),e(C,{title:"Add (share history)",children:e(y,{onClick:o,type:"link",icon:e($e,{type:"add-member-with-history"})})},"add")],children:a(N,{children:[e(je,{account:i}),e("span",{children:i.name})]})})})),qt=Ie("ChatMembersPanel",(t=>{const{id:a}=t,{data:s}=ne({chatId:a}),{data:n}=de(),r=o((()=>null==n?void 0:n.slice().sort(((e,t)=>((null==s?void 0:s.members.some((t=>t.id===e.id)))?-100:0)-((null==s?void 0:s.members.some((e=>e.id===t.id)))?-100:0)+e.name.localeCompare(t.name)))),[n,s]);return(null==s?void 0:s.members)&&n?e("div",{className:"wxchtf-chat-members-panel",children:e(I,{className:"wxchtf-chat-members-list",dataSource:r,renderItem:t=>e(xt,{id:t.id,chatId:a})})}):null})),Ct=Ie("ChatPanel",(t=>{const{id:s}=t,n=G((e=>e.query.chatList.data.find((e=>e.id===s)))),r=G((e=>e.ui.showMembers));return a("div",{className:"wxchtf-chat-panel",children:[a("div",{className:"wxchtf-chat-main",children:[e(mt,{id:s}),e(it,{id:s}),n.active&&e(pt,{})]}),r&&e(qt,{id:s})]})})),wt=Ie("Main",(()=>{const{view:t,chatId:s}=G((e=>({view:e.ui.view,chatId:e.ui.chatId})));return a("div",{className:"wxchtf-main",children:["chat"===t&&s&&e(Ct,{id:s},s),"new-chat"===t&&e(Ke,{})]})})),_t=Ie("Body",(()=>a("div",{className:"wxchtf-body",children:[e(Be,{}),e(wt,{})]})));function Nt(t){const{className:s="",style:n}=t;return ue(),a("div",{className:s+" wxchtf-chatify",style:n,children:[e(Ae,{}),e(_t,{}),e(Te,{})]})}const Mt={Header:null,Footer:null},jt=t=>{const{localizer:a=ye,customize:s=Mt}=t,n=o((()=>Object.assign({},Mt,s)),[s]);return e(ge.Provider,{value:a,children:e(be,{value:n,children:e(Nt,Object.assign({},t))})})};jt.displayName="Chatify";export{P as ACTIONS,Se as AddChatButton,je as Avatar,mt as ChatHeader,ct as ChatHeaderMembers,Re as ChatListItemBox,jt as Chatify,H as ChatifyClient,ae as ChatifyContext,E as FETCH_QUERY_STATE,Ae as Header,De as ICONS,D as INITIAL_STATE,$e as Icon,ge as LocalizerContext,Xe as MessageBox,Y as ReducerProvider,rt as SystemMessageBox,ye as defaultLocalizer,oe as useAddChatMutation,he as useAddMemberMutation,Z as useClient,W as useDispatch,ie as useFetchNextMutation,de as useGetAccountsQuery,re as useGetChatListQuery,ne as useGetChatQuery,ce as useGetMessagesQuery,ve as useLocalizer,ee as useMe,ue as useReadMonitor,$ as useReducer,me as useRemoveMemberMutation,G as useSelect,le as useSendMutation,V as useSignalRMonitor,J as useStateRef,fe as useUpdateChatNameMutation};
|
|
1
|
+
import{jsx as e,jsxs as t,Fragment as a}from"react/jsx-runtime";import*as n from"react";import s,{useContext as i,useState as r,useMemo as c,forwardRef as o,useCallback as d,memo as u,useRef as h,useLayoutEffect as l,useEffect as m}from"react";import{Button as g,Avatar as f,List as v,Tooltip as y,Space as p,Input as b,Skeleton as C,Row as w,Col as x,Form as M,Checkbox as I,Menu as O}from"antd";import R from"@ant-design/icons/SendOutlined";import N from"@ant-design/icons/PaperClipOutlined";import _ from"@ant-design/icons/UserAddOutlined";import S from"@ant-design/icons/UsergroupAddOutlined";import T from"@ant-design/icons/UserDeleteOutlined";import k from"@ant-design/icons/UsergroupDeleteOutlined";import L from"@ant-design/icons/TeamOutlined";import E from"@ant-design/icons/EditOutlined";import j from"@ant-design/icons/CloseOutlined";import q from"@ant-design/icons/EyeInvisibleOutlined";import A from"@ant-design/icons/EyeOutlined";import{createApi as B,fakeBaseQuery as D}from"@reduxjs/toolkit/query/react";import*as F from"@microsoft/signalr";import Q from"is-hotkey";import U from"dayjs";const G={saturation:100,lightness:75};function P(e,t={}){t=Object.assign({},G,t);let a=0;for(let t=0;t<e.length;t++)a=e.charCodeAt(t)+((a<<5)-a),a&=a;return`hsl(${a%360}, ${t.saturation}%, ${t.lightness}%)`}const V=s.createContext(null);function $(){return i(V)}function H(e){const t=i(V);return t?t[e]:void 0}function z(e){const t=H(e.key);return null==t?null:null!=t?t:e.Component}function K(t,a){const n=s.forwardRef(((n,s)=>{const i=H(t);return null===i?null:e(i||a,Object.assign({},n,{ref:s}))}));return a.displayName=a.displayName||t,n.displayName="Customizable."+a.displayName,Object.assign(n,{key:t,Component:a})}const W={attach:N,send:R,"remove-member":T,"remove-member-delete-history":k,"add-member":_,"add-member-with-history":S,members:L,edit:E,close:j,chat:L,watch:A,unwatch:q},Y=K("Icon",(t=>{const{type:a}=t,n=W[a];return n?e(n,{}):null})),J=s.createContext(null);function X(){return i(J)}function Z(t){const{id:a,children:n}=t,[s,i]=r(!1),o=c((()=>({id:a,showMembers:s,onShowMembers:i})),[a,s]);return e(J.Provider,{value:o,children:n})}const ee=K("ChatMembersButton",(()=>{const{showMembers:t,onShowMembers:a}=X();return e(g,{onClick:()=>a(!t),type:"link",icon:e(Y,{type:"members"})})})),te="chatify::system";function ae(e){return e.slice(0,36)}function ne(e){const[t,a]=e.split("::",2);return[t,parseInt(a,10)]}function se(e){var t,a;const n=null!=e.lastReadMessageId?ne(e.lastReadMessageId)[1]:-1;return(null!=(null===(t=e.lastMessage)||void 0===t?void 0:t.id)?ne(null===(a=e.lastMessage)||void 0===a?void 0:a.id)[1]:-1)-n}function ie(e){return e.reduce(((e,t)=>e+se(t)),0)}function re(e,t){var a={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(a[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(n=Object.getOwnPropertySymbols(e);s<n.length;s++)t.indexOf(n[s])<0&&Object.prototype.propertyIsEnumerable.call(e,n[s])&&(a[n[s]]=e[n[s]])}return a}function ce(e,t,a,n){return new(a||(a=Promise))((function(s,i){function r(e){try{o(n.next(e))}catch(e){i(e)}}function c(e){try{o(n.throw(e))}catch(e){i(e)}}function o(e){var t;e.done?s(e.value):(t=e.value,t instanceof a?t:new a((function(e){e(t)}))).then(r,c)}o((n=n.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;class oe{constructor(e){this.config=e,this._enqueued=[],this._processing=[],this._timeoutByGroup={},this._subscribers=[],this.subscribe=e=>(this._subscribers.push(e),()=>{this._subscribers=this._subscribers.filter((t=>t!==e))}),this.notify=()=>{this._subscribers.forEach((e=>e(this)))}}get units(){return[...this._enqueued.map((e=>Object.assign(Object.assign({},e),{state:"enqueued"}))),...this._processing.map((e=>Object.assign(Object.assign({},e),{state:"processing"})))]}push(e){const t=this.config.groupBy(e),a=this._enqueued.find((e=>this.config.groupBy(e.value)===t));a?this.config.compare(a.value,e)>=0&&(a.value=e,a.enqueueTime=Date.now()):this._enqueued.push({value:e,enqueueTime:Date.now()}),this._process(t)}_process(e){if(!this._enqueued.some((t=>this.config.groupBy(t.value)===e)))return;let t=this._timeoutByGroup[e];t&&clearTimeout(t),this._processing.some((t=>this.config.groupBy(t.value)===e))||(t=setTimeout((()=>{const t=this._enqueued.find((t=>this.config.groupBy(t.value)===e));this._processing.push(t),this._enqueued.splice(this._enqueued.indexOf(t),1),this.notify(),this.config.callback(t.value).then((()=>{this._processing.splice(this._processing.indexOf(t),1),this.notify(),this._process(e)})).catch((()=>{this._processing.splice(this._processing.indexOf(t),1),this.push(t.value)}))}),this.config.timeout),this._timeoutByGroup[e]=t)}}const de=20;new oe({callback:e=>ue.client.readChatMessage({id:e}),compare:(e,t)=>-e.localeCompare(t),groupBy:e=>ae(e),timeout:500});const ue={me:null,client:null},he=B({baseQuery:D(),reducerPath:"chatify",tagTypes:["chat","account","message","thread","thread-message"],endpoints:e=>({})});var le,me={exports:{}},ge={};var fe,ve={};
|
|
2
|
+
/**
|
|
3
|
+
* @license React
|
|
4
|
+
* use-sync-external-store-with-selector.development.js
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
7
|
+
*
|
|
8
|
+
* This source code is licensed under the MIT license found in the
|
|
9
|
+
* LICENSE file in the root directory of this source tree.
|
|
10
|
+
*/"production"===process.env.NODE_ENV?me.exports=function(){if(le)return ge;le=1;var e=s,t="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},a=e.useSyncExternalStore,n=e.useRef,i=e.useEffect,r=e.useMemo,c=e.useDebugValue;return ge.useSyncExternalStoreWithSelector=function(e,s,o,d,u){var h=n(null);if(null===h.current){var l={hasValue:!1,value:null};h.current=l}else l=h.current;h=r((function(){function e(e){if(!i){if(i=!0,a=e,e=d(e),void 0!==u&&l.hasValue){var s=l.value;if(u(s,e))return n=s}return n=e}if(s=n,t(a,e))return s;var r=d(e);return void 0!==u&&u(s,r)?s:(a=e,n=r)}var a,n,i=!1,r=void 0===o?null:o;return[function(){return e(s())},null===r?void 0:function(){return e(r())}]}),[s,o,d,u]);var m=a(e,h[0],h[1]);return i((function(){l.hasValue=!0,l.value=m}),[m]),c(m),m},ge}():me.exports=(fe||(fe=1,"production"!==process.env.NODE_ENV&&function(){"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error);var e=s,t="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},a=e.useSyncExternalStore,n=e.useRef,i=e.useEffect,r=e.useMemo,c=e.useDebugValue;ve.useSyncExternalStoreWithSelector=function(e,s,o,d,u){var h,l=n(null);null===l.current?(h={hasValue:!1,value:null},l.current=h):h=l.current;var m=r((function(){var e,a,n=!1,i=function(s){if(!n){n=!0,e=s;var i=d(s);if(void 0!==u&&h.hasValue){var r=h.value;if(u(r,i))return a=r,r}return a=i,i}var c=a;if(t(e,s))return c;var o=d(s);return void 0!==u&&u(c,o)?c:(e=s,a=o,o)},r=void 0===o?null:o;return[function(){return i(s())},null===r?void 0:function(){return i(r())}]}),[s,o,d,u]),g=m[0],f=m[1],v=a(e,g,f);return i((function(){h.hasValue=!0,h.value=v}),[v]),c(v),v},"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error)}()),ve);var ye=me.exports,pe="default"in n?n.default:n,be=Symbol.for("react-redux-context"),Ce="undefined"!=typeof globalThis?globalThis:{};function we(){if(!pe.createContext)return{};const e=Ce[be]??(Ce[be]=new Map);let t=e.get(pe.createContext);return t||(t=pe.createContext(null),"production"!==process.env.NODE_ENV&&(t.displayName="ReactRedux"),e.set(pe.createContext,t)),t}var xe=we();function Me(e=xe){return function(){const t=pe.useContext(e);if("production"!==process.env.NODE_ENV&&!t)throw new Error("could not find react-redux context value; please ensure the component is wrapped in a <Provider>");return t}}var Ie=Me(),Oe=()=>{throw new Error("uSES not initialized!")},Re=(e,t)=>e===t;function Ne(e=xe){const t=e===xe?Ie:Me(e),a=(e,a={})=>{const{equalityFn:n=Re,devModeChecks:s={}}="function"==typeof a?{equalityFn:a}:a;if("production"!==process.env.NODE_ENV){if(!e)throw new Error("You must pass a selector to useSelector");if("function"!=typeof e)throw new Error("You must pass a function as a selector to useSelector");if("function"!=typeof n)throw new Error("You must pass a function as an equality function to useSelector")}const{store:i,subscription:r,getServerState:c,stabilityCheck:o,identityFunctionCheck:d}=t(),u=pe.useRef(!0),h=pe.useCallback({[e.name](t){const a=e(t);if("production"!==process.env.NODE_ENV){const{identityFunctionCheck:i,stabilityCheck:r}={stabilityCheck:o,identityFunctionCheck:d,...s};if("always"===r||"once"===r&&u.current){const s=e(t);if(!n(a,s)){let n;try{throw new Error}catch(e){({stack:n}=e)}console.warn("Selector "+(e.name||"unknown")+" returned a different result when called with the same parameters. This can lead to unnecessary rerenders.\nSelectors that return a new reference (such as an object or an array) should be memoized: https://redux.js.org/usage/deriving-data-selectors#optimizing-selectors-with-memoization",{state:t,selected:a,selected2:s,stack:n})}}if(("always"===i||"once"===i&&u.current)&&a===t){let t;try{throw new Error}catch(e){({stack:t}=e)}console.warn("Selector "+(e.name||"unknown")+" returned the root state when called. This can lead to unnecessary rerenders.\nSelectors that return the entire state are almost certainly a mistake, as they will cause a rerender whenever *anything* in state changes.",{stack:t})}u.current&&(u.current=!1)}return a}}[e.name],[e,o,s.stabilityCheck]),l=Oe(r.addNestedSub,i.getState,c||i.getState,h,n);return pe.useDebugValue(l),l};return Object.assign(a,{withTypes:()=>a}),a}var _e,Se=Ne(),Te=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),ke="undefined"!=typeof navigator&&"ReactNative"===navigator.product;Te||ke?pe.useLayoutEffect:pe.useEffect,_e=ye.useSyncExternalStoreWithSelector,Oe=_e;const Le={hubUri:"/api/chatify/hub",headersFactory:()=>Promise.resolve({})},Ee=["chatify://chat-new-message","chatify://chat-created","chatify://chat-message-read","chatify://chat-member-added","chatify://chat-member-removed","chatify://chat-name-changed","chatify://thread-created","chatify://thread-message-new","chatify://thread-message-read","chatify://thread-watch-added","chatify://thread-watch-removed"];class je{constructor(e){this._connection=null,this._connectionPromise=null,this._subscribers={},this._reconnectSubscribers=[],this.connect=()=>ce(this,void 0,void 0,(function*(){if(!this._connection){if(this._connectionPromise)return yield this._connectionPromise;this._connectionPromise=this.createAndStartConnection(),this._connection=yield this._connectionPromise}})),this.createAndStartConnection=()=>ce(this,void 0,void 0,(function*(){const e=yield this._config.signalR.headersFactory(),t=(new F.HubConnectionBuilder).withUrl(this._config.signalR.hubUri,{accessTokenFactory:this._config.signalR.accessTokenFactory?this._config.signalR.accessTokenFactory:void 0,headers:e}).withAutomaticReconnect().build();return Ee.forEach((e=>{t.on(e,((...t)=>{var a;null===(a=this._subscribers[e])||void 0===a||a.forEach((e=>{try{e(t)}catch(e){console.error("Failed to notify subscriber",e)}}))}))})),t.onreconnected((()=>this._reconnectSubscribers.forEach((e=>e())))),yield t.start(),t})),this.subscribe=(e,t)=>(this.connect().then((()=>{var a;this._subscribers[e]=null!==(a=this._subscribers[e])&&void 0!==a?a:[],this._subscribers[e].push(t)})),()=>this._subscribers[e].filter((e=>e!==t))),this.subscribeReconnect=e=>(this._reconnectSubscribers.push(e),()=>this._reconnectSubscribers.filter((t=>t!==e))),this.accounts=()=>ce(this,void 0,void 0,(function*(){const{data:e}=yield this.axios.get("account");return e})),this.chats=()=>ce(this,void 0,void 0,(function*(){const{data:e}=yield this.axios.get("chat");return e})),this.chat=e=>ce(this,void 0,void 0,(function*(){const{data:t}=yield this.axios.get(`chat/${encodeURIComponent(e)}`);return t})),this.addChat=e=>ce(this,void 0,void 0,(function*(){const{data:t}=yield this.axios.post("chat",e);return t})),this.chatMessages=e=>ce(this,void 0,void 0,(function*(){const{chatId:t,skip:a=0,take:n=20}=e,s=encodeURIComponent(JSON.stringify({skip:a,take:n})),{data:i}=yield this.axios.get(`chat/${encodeURIComponent(t)}/message?pagingRule=${s}`);return i})),this.sendChatMessage=e=>ce(this,void 0,void 0,(function*(){const{chatId:t}=e,a=re(e,["chatId"]);yield this.axios.post(`chat/${encodeURIComponent(t)}/message`,a)})),this.readChatMessage=e=>ce(this,void 0,void 0,(function*(){yield this.axios.put("chat/message/read",e)})),this.removeChatMember=e=>ce(this,void 0,void 0,(function*(){yield this.axios.delete(`chat/${encodeURIComponent(e.chatId)}/member`,{data:e})})),this.updateChatName=e=>ce(this,void 0,void 0,(function*(){yield this.axios.put(`chat/${encodeURIComponent(e.id)}/name`,e)})),this.addChatMember=e=>ce(this,void 0,void 0,(function*(){yield this.axios.post(`chat/${encodeURIComponent(e.chatId)}/member`,e)})),this.sendThreadMessage=({body:e,threadId:t})=>ce(this,void 0,void 0,(function*(){const{data:a}=yield this.axios.post(`thread/${encodeURIComponent(t)}/message`,{body:e});return a})),this.readThreadMessage=e=>ce(this,void 0,void 0,(function*(){yield this.axios.put(`thread/message/${encodeURIComponent(e)}/read`)})),this.watchThreads=()=>ce(this,void 0,void 0,(function*(){const{data:e}=yield this.axios.get("thread/watch");return e})),this.thread=e=>ce(this,void 0,void 0,(function*(){const{data:t}=yield this.axios.get(`thread/${encodeURIComponent(e)}`);return t})),this.threadMessages=({threadId:e,skip:t,take:a})=>ce(this,void 0,void 0,(function*(){const n=new URLSearchParams;n.append("skip",t.toString()),n.append("take",a.toString());const{data:s}=yield this.axios.get(`thread/${encodeURIComponent(e)}/message?${n.toString()}`);return s})),this.watchThread=(e,t)=>ce(this,void 0,void 0,(function*(){yield this.axios.put(`thread/${encodeURIComponent(e)}/watch`,{watch:t})})),this.connectToThread=e=>ce(this,void 0,void 0,(function*(){this.connect().then((()=>this._connection.invoke("ConnectToThread",e)))})),this.disconnectFromThread=e=>ce(this,void 0,void 0,(function*(){this.connect().then((()=>this._connection.invoke("DisconnectFromThread",e)))})),this._config=Object.assign(Object.assign({},e),{signalR:Object.assign(Object.assign({},Le),e.signalR)})}get axios(){return this._config.axios}}function qe(...e){const t=()=>e.forEach((e=>e()));return t.when=e=>e.then(t),t}const Ae=new oe({callback:e=>ue.client.readThreadMessage(e),compare:(e,t)=>-e.localeCompare(t),groupBy:e=>ne(e)[0],timeout:500}),Be=new oe({callback:e=>ue.client.readChatMessage({id:e}),compare:(e,t)=>-e.localeCompare(t),groupBy:e=>ae(e),timeout:500}),De=he.injectEndpoints({endpoints:e=>({getAccountList:e.query({queryFn:()=>ce(void 0,void 0,void 0,(function*(){return{data:yield ue.client.accounts()}})),providesTags:["account"]}),getChat:e.query({queryFn:({id:e})=>ce(void 0,void 0,void 0,(function*(){return{data:yield ue.client.chat(e)}})),providesTags:["chat","account"],onCacheEntryAdded:({id:e},{cacheEntryRemoved:t,cacheDataLoaded:a,updateCachedData:n})=>ce(void 0,void 0,void 0,(function*(){yield a,qe(ue.client.subscribe("chatify://chat-member-added",(([t,a,s,i,,r])=>t===e&&n((e=>{e.members.push(s),e.lastReadMessageId=r?i.id:e.lastReadMessageId})))),ue.client.subscribe("chatify://chat-member-removed",(([t,a,,s,i])=>e===t&&n((e=>{e.members=e.members.filter((e=>e.id!==a)),e.lastReadMessageId=i?s.id:e.lastReadMessageId})))),ue.client.subscribe("chatify://chat-name-changed",(([t,a,s,i])=>e===t&&n((e=>{e.name=a,e.lastReadMessageId=i?s.id:e.lastReadMessageId})))),ue.client.subscribe("chatify://chat-new-message",(([t])=>e===t.chatId&&n((e=>{e.lastReadMessageId=t.sentBy.id===ue.me()?t.id:e.lastReadMessageId})))),ue.client.subscribe("chatify://chat-message-read",(([t])=>t.find((t=>t.chatId===e))&&n((a=>{const n=t.find((t=>t.chatId===e));a.lastReadMessageId=n.newLastReadMessageId}))))).when(t)}))}),addChat:e.mutation({queryFn:({name:e,members:t})=>ce(void 0,void 0,void 0,(function*(){return{data:yield ue.client.addChat({name:e,members:t,requestId:(new Date).getTime().toString()})}}))}),updateChatName:e.mutation({queryFn:({id:e,name:t})=>ce(void 0,void 0,void 0,(function*(){return yield ue.client.updateChatName({id:e,name:t}),{data:null}}))}),getChatList:e.query({queryFn:()=>ce(void 0,void 0,void 0,(function*(){return{data:yield ue.client.chats()}})),providesTags:["chat","account"],onCacheEntryAdded:(e,{cacheEntryRemoved:t,cacheDataLoaded:a,updateCachedData:n})=>ce(void 0,void 0,void 0,(function*(){yield a,qe(ue.client.subscribe("chatify://chat-created",(([e])=>n((t=>{t.push(e)})))),ue.client.subscribe("chatify://chat-new-message",(([e])=>n((t=>{const a=t.find((t=>t.id===e.chatId));a&&(a.message=e,e.sentBy.id===ue.me()&&(a.lastReadMessageId=e.id,a.totalUnreadCount=0),e.sentBy.id!==ue.me()&&a.totalUnreadCount++)})))),ue.client.subscribe("chatify://chat-message-read",(([e])=>n((t=>{for(const a of e){const e=t.find((e=>e.id===a.chatId));if(!e)return;e.lastReadMessageId=a.newLastReadMessageId,e.totalUnreadCount=e.totalUnreadCount-a.readCount}})))),ue.client.subscribe("chatify://chat-member-added",(([e,t,a,s,,i])=>n((n=>{const r=n.find((t=>t.id===e));a.id!==ue.me()||r||n.push({id:e,name:t,message:s,totalUnreadCount:i?0:1,active:!0,lastReadMessageId:i?s.id:null}),r&&(r.message=s,r.active=!0,i?(r.totalUnreadCount=0,r.lastReadMessageId=s.id):r.totalUnreadCount++)})))),ue.client.subscribe("chatify://chat-member-removed",(([e,t,a,s,i])=>n((n=>{if(t===ue.me()&&a)return n.filter((t=>t.id!==e));const r=n.find((t=>t.id===e));r&&(r.message=s,t===ue.me()&&(r.active=!1),i?(r.totalUnreadCount=0,r.lastReadMessageId=s.id):r.totalUnreadCount++)})))),ue.client.subscribe("chatify://chat-name-changed",(([e,t,a,s])=>n((n=>{const i=n.find((t=>t.id===e));i&&(i.name=t,i.message=a,s?(i.totalUnreadCount=0,i.lastReadMessageId=a.id):i.totalUnreadCount++)}))))).when(t)}))}),removeChatMember:e.mutation({queryFn:e=>ce(void 0,void 0,void 0,(function*(){return yield ue.client.removeChatMember(e),{data:null}}))}),addChatMember:e.mutation({queryFn:e=>ce(void 0,void 0,void 0,(function*(){return yield ue.client.addChatMember(e),{data:null}}))}),getChatMessageList:e.query({queryFn:({chatId:e})=>ce(void 0,void 0,void 0,(function*(){const t=yield ue.client.chatMessages({chatId:e,skip:0,take:21});return{data:{messages:t.slice(0,de),hasMore:21===t.length}}})),providesTags:["message","chat","account"],onCacheEntryAdded:({chatId:e},{dispatch:t,cacheEntryRemoved:a,cacheDataLoaded:n})=>ce(void 0,void 0,void 0,(function*(){yield n,qe(ue.client.subscribe("chatify://chat-new-message",(([a])=>{a.chatId===e&&t(Ue.util.updateQueryData("getChatMessageList",{chatId:e},(e=>{e.messages.unshift(a)})))})),ue.client.subscribe("chatify://chat-member-added",(([a,,,n])=>{a===e&&t(Ue.util.updateQueryData("getChatMessageList",{chatId:e},(e=>{e.messages.unshift(n)})))})),ue.client.subscribe("chatify://chat-member-removed",(([a,,,n])=>{a===e&&t(Ue.util.updateQueryData("getChatMessageList",{chatId:e},(e=>{e.messages.unshift(n)})))})),ue.client.subscribe("chatify://chat-name-changed",(([a,,n])=>{a===e&&t(Ue.util.updateQueryData("getChatMessageList",{chatId:e},(e=>{e.messages.unshift(n)})))}))).when(a)}))}),fetchNextChatMessageList:e.mutation({queryFn:({chatId:e},{getState:t})=>ce(void 0,void 0,void 0,(function*(){const a=Ue.endpoints.getChatMessageList.select({chatId:e})(t()),n=yield ue.client.chatMessages({chatId:e,skip:a.data.messages.length,take:21});return{data:null,meta:{messages:n.slice(0,de),hasMore:21===n.length}}})),onQueryStarted:({chatId:e},{dispatch:t,queryFulfilled:a})=>ce(void 0,void 0,void 0,(function*(){const n=(yield a).meta;t(Ue.util.updateQueryData("getChatMessageList",{chatId:e},(e=>{e.hasMore=n.hasMore,e.messages.push(...n.messages)})))}))}),sendChatMessage:e.mutation({queryFn:({chatId:e,text:t})=>ce(void 0,void 0,void 0,(function*(){const a=(new Date).getTime().toString();return yield ue.client.sendChatMessage({chatId:e,text:t,files:[],requestId:a}),{data:null,meta:{requestId:a}}}))}),readChatMessage:e.mutation({queryFn:()=>ce(void 0,void 0,void 0,(function*(){return{data:null}})),onQueryStarted:({id:e},{dispatch:t})=>ce(void 0,void 0,void 0,(function*(){Be.push(e),t(Ue.endpoints.getChatMessageReadQueue.initiate(void 0,{forceRefetch:!0}))}))}),getChatMessageReadQueue:e.query({queryFn:()=>ce(void 0,void 0,void 0,(function*(){return{data:Be.units}})),onCacheEntryAdded:(e,{dispatch:t,cacheEntryRemoved:a})=>ce(void 0,void 0,void 0,(function*(){qe(Be.subscribe((e=>{t(Ue.util.updateQueryData("getChatMessageReadQueue",void 0,(()=>e.units)))}))).when(a)}))}),getWatchThreadList:e.query({queryFn:()=>ce(void 0,void 0,void 0,(function*(){return{data:yield ue.client.watchThreads()}})),providesTags:["account","thread"],onCacheEntryAdded:(e,{cacheEntryRemoved:t,cacheDataLoaded:a,updateCachedData:n})=>ce(void 0,void 0,void 0,(function*(){yield a,qe(ue.client.subscribe("chatify://thread-created",(([e,t])=>t&&n((t=>{t.push(e)})))),ue.client.subscribe("chatify://thread-message-new",(([e,t,a])=>n((n=>{const s=n.find((t=>t.id===e));s&&(s.lastMessage=t,a===ue.me()&&(s.lastReadMessageId=t.id))})))),ue.client.subscribe("chatify://thread-message-read",(([e,t])=>n((a=>{const n=a.find((t=>t.id===e));n&&(n.lastReadMessageId=t)})))),ue.client.subscribe("chatify://thread-watch-added",(([e])=>n((t=>{t.push(e)})))),ue.client.subscribe("chatify://thread-watch-removed",(([e])=>n((t=>{const a=t.findIndex((t=>t.id===e));-1!==a&&t.splice(a,1)}))))).when(t)}))}),getThread:e.query({queryFn:({id:e})=>ce(void 0,void 0,void 0,(function*(){return{data:yield ue.client.thread(e)}})),providesTags:["account","thread"],onCacheEntryAdded:({id:e},{cacheEntryRemoved:t,cacheDataLoaded:a,updateCachedData:n})=>ce(void 0,void 0,void 0,(function*(){yield a,qe(ue.client.subscribe("chatify://thread-message-read",(([t,a])=>e===t&&n((e=>{e.lastReadMessageId=a})))),ue.client.subscribe("chatify://thread-message-new",(([t,a,s])=>e===t&&n((e=>{e.lastMessageId=a.id,e.lastReadMessageId=s===ue.me()?a.id:e.lastReadMessageId})))),ue.client.subscribe("chatify://thread-watch-added",(([t])=>e===t.id&&n((e=>{var a,n,s;e.watch=!0,e.lastMessageId=null!==(n=null===(a=t.lastMessage)||void 0===a?void 0:a.id)&&void 0!==n?n:null,e.lastReadMessageId=null!==(s=t.lastReadMessageId)&&void 0!==s?s:null})))),ue.client.subscribe("chatify://thread-watch-removed",(([t])=>e===t&&n((e=>{e.watch=!1}))))).when(t)}))}),watchThread:e.mutation({queryFn:({id:e,watch:t})=>ce(void 0,void 0,void 0,(function*(){return yield ue.client.watchThread(e,t),{data:null}}))}),getThreadMessageList:e.query({queryFn:e=>ce(void 0,void 0,void 0,(function*(){const t=Object.assign({skip:0,take:21},e),a=yield ue.client.threadMessages(t);return{data:{messages:a.slice(0,de),hasMore:21===a.length}}})),providesTags:["account","thread","thread-message"],onCacheEntryAdded:({threadId:e},{cacheEntryRemoved:t,cacheDataLoaded:a,updateCachedData:n})=>ce(void 0,void 0,void 0,(function*(){yield a,qe(ue.client.subscribe("chatify://thread-message-new",(([t,a])=>{e===t&&n((e=>{!e.messages.some((e=>e.id===a.id))&&e.messages.unshift(a)}))}))).when(t)}))}),fetchNextThreadMessageList:e.mutation({queryFn:({threadId:e},{getState:t})=>ce(void 0,void 0,void 0,(function*(){const a=Ue.endpoints.getThreadMessageList.select({threadId:e})(t()),n=yield ue.client.threadMessages({threadId:e,skip:a.data.messages.length,take:21});return{data:null,meta:{messages:n.slice(0,de),hasMore:21===n.length}}})),onQueryStarted:({threadId:e},{dispatch:t,queryFulfilled:a})=>ce(void 0,void 0,void 0,(function*(){const n=(yield a).meta;t(Ue.util.updateQueryData("getThreadMessageList",{threadId:e},(e=>{e.hasMore=n.hasMore,e.messages.push(...n.messages)})))}))}),sendThreadMessage:e.mutation({queryFn:e=>ce(void 0,void 0,void 0,(function*(){return{data:yield ue.client.sendThreadMessage(e)}}))}),readThreadMessage:e.mutation({queryFn:()=>ce(void 0,void 0,void 0,(function*(){return{data:null}})),onQueryStarted:({id:e},{dispatch:t})=>ce(void 0,void 0,void 0,(function*(){Ae.push(e),t(Ue.endpoints.getThreadMessageReadQueue.initiate(void 0,{forceRefetch:!0}))}))}),getThreadMessageReadQueue:e.query({queryFn:()=>ce(void 0,void 0,void 0,(function*(){return{data:Ae.units}})),onCacheEntryAdded:(e,{dispatch:t,cacheEntryRemoved:a})=>ce(void 0,void 0,void 0,(function*(){qe(Ae.subscribe((e=>{t(Ue.util.updateQueryData("getThreadMessageReadQueue",void 0,(()=>e.units)))}))).when(a)}))})})});function Fe(e){return Se((t=>{var a;return null!=e?null===(a=De.endpoints.getChatList.select()(t).data)||void 0===a?void 0:a.find((t=>t.id===e)):null}))}function Qe(){const e=Ue.useGetWatchThreadListQuery(),{data:t}=e,a=re(e,["data"]);return[c((()=>null!=t?ie(t):null),[t]),a]}const Ue=Object.assign(De,{settings:ue,useChatListItem:Fe,useUnreadThreadMessageCount:Qe}),Ge=o(((t,a)=>{const{account:n}=t;return e(f,{ref:a,src:n.avatar})}));Ge.displayName="Avatar";const Pe=K("Avatar",Ge);function Ve(e,t,a){const[n,s]=Ue.useAddChatMemberMutation();return[d((()=>n({chatId:e,accountId:t,withHistory:a})),[n,e,t,a]),s]}function $e(e,t,a){const[n,s]=Ue.useRemoveChatMemberMutation();return[d((()=>n({chatId:e,accountId:t,deleteHistory:a})),[n,e,t,a]),s]}const He=K("ChatMemberListItem",(a=>{const{chatId:n}=a,{data:s}=Ue.useGetChatQuery({id:n}),{data:i}=Ue.useGetAccountListQuery(),r=i.find((e=>e.id===a.id)),c=s.members.some((e=>e.id===r.id)),[o]=Ve(n,r.id,!1),[d]=Ve(n,r.id,!0),[u]=$e(n,r.id,!1),[h]=$e(n,r.id,!0);return e(v.Item,{className:"wxchtf-chat-members-list-item",actions:c?[e(y,{title:"Remove (keep history)",children:e(g,{onClick:u,type:"link",icon:e(Y,{type:"remove-member"})})},"remove"),e(y,{title:"Remove (delete history)",children:e(g,{onClick:h,type:"link",icon:e(Y,{type:"remove-member-delete-history"})})},"remove_delete_history")]:[e(y,{title:"Add (no history)",children:e(g,{onClick:o,type:"link",icon:e(Y,{type:"add-member"})})},"add_no_history"),e(y,{title:"Add (share history)",children:e(g,{onClick:d,type:"link",icon:e(Y,{type:"add-member-with-history"})})},"add")],children:t(p,{children:[e(Pe,{account:r}),e("span",{children:r.name})]})})})),ze=K("ChatMembersPanel",(()=>{const{id:t}=X(),{data:a}=Ue.useGetChatQuery({id:t}),{data:n}=Ue.useGetAccountListQuery(),s=c((()=>null==n?void 0:n.slice().sort(((e,t)=>((null==a?void 0:a.members.some((t=>t.id===e.id)))?-100:0)-((null==a?void 0:a.members.some((e=>e.id===t.id)))?-100:0)+e.name.localeCompare(t.name)))),[n,a]);return(null==a?void 0:a.members)&&n?e("div",{className:"wxchtf-chat-members-panel",children:e(v,{className:"wxchtf-chat-members-list",dataSource:s,renderItem:a=>e(He,{id:a.id,chatId:t})})}):null})),Ke=K("ChatMembersPreview",(()=>{const{id:t}=X(),{data:a}=Ue.useGetChatQuery({id:t});return(null==a?void 0:a.members)?e(f.Group,{maxCount:5,children:a.members.map((t=>e(y,{title:t.name,children:e(Pe,{account:t})},t.id)))}):null})),We=K("InputFilesBox",(()=>e("div",{className:"wxchtf-add-files-box",children:e(g,{type:"link",icon:e(Y,{type:"attach"}),className:"wxchtf-add-files-btn"})}))),Ye=s.createContext(null);function Je(){return i(Ye)}const Xe={isToday:e=>U(e).isSame(U(),"day"),timestamp:e=>U(e).format("HH:mm"),dateTime:e=>U(e).format("DD/MM/YYYY HH:mm"),message:{read:()=>"Read",reading:()=>"Reading...",sending:()=>"Sending..."},addChat:{title:()=>"Add chat",name:{label:()=>"Name",required:()=>"Name is required",max250:()=>"Max 250 characters allowed"},members:{label:()=>"Members",required:()=>"Members is required"},submitBtn:()=>"Submit"},system:{"chatify://chat-created":()=>"Chat created","chatify://member-added":()=>"New member added","chatify://member-removed":()=>"Member removed","chatify://chat-name-changed":(e,{newName:t})=>`Chat name changed to '${t}'`},input:{placeholder:()=>"Start typing (Ctrl/⌘Cmd + Enter to send) ..."},settings:{members:()=>"Members"}},Ze=Q("ctrl+enter"),et={maxRows:5,minRows:1},tt=K("InputTextBox",u((t=>{const{value:a,onChange:n,onSend:s,inputRef:i}=t,r=Je(),c=d((e=>n(e.target.value)),[n]),o=d((e=>{Ze(e)&&s(a)}),[s,a]);return e("div",{className:"wxchtf-text-input-box",children:e(b.TextArea,{ref:i,value:a,onChange:c,autoSize:et,className:"wxchtf-text-input-textarea",placeholder:r.input.placeholder(),onKeyDown:o})})}))),at=K("InputSubmitButtonBox",(t=>{const{onSubmit:a}=t;return e("div",{className:"wxchtf-submit-btn-box",children:e(g,{onClick:a,type:"link",icon:e(Y,{type:"send"}),className:"wxchtf-submit-btn"})})})),nt=s.createContext(void 0);function st(){return s.useContext(nt)}const it=K("InputBox",(()=>{const[a,{text:n,setText:s}]=function(){const{onSend:e}=st(),[t,a]=r("");return[d((()=>{0!==t.length&&(a(""),Promise.resolve(e({text:t,files:[]})).catch((()=>a(t))))}),[t,e]),{text:t,setText:a}]}(),i=h(null);return l((()=>{var e;return null===(e=i.current)||void 0===e?void 0:e.focus()}),[]),e("div",{className:"wxchtf-input-form",children:t("div",{className:"wxchtf-input-box",children:[e(We,{}),e(tt,{value:n,onSend:a,onChange:s,inputRef:i}),e(at,{onSubmit:a})]})})})),rt=K("MessageAuthor",(t=>{const{sentBy:a}=t.message;return e("div",{className:"wxchtf-message-author",children:e(Pe,{account:a})})})),ct=t=>{const{message:n,messageRef:s}=t,{onRead:i,lastReadMessageId:r}=st(),o=null!=r&&n.id.localeCompare(r)<=0,d=h(o);m((()=>{d.current=d.current||o}),[o]);const u=c((()=>new IntersectionObserver((([e])=>{e.isIntersecting&&!d.current&&(d.current=!0,i(n.id))}))),[]);return m((()=>(u.observe(s.current),()=>u.disconnect())),[u]),e(a,{})};function ot(t){const{noReadTracking:a}=st();return!0===a?null:e(ct,Object.assign({},t))}const dt=K("MessageText",(t=>{const{text:a}=t.message;return e("div",{className:"wxchtf-message-text",children:a})})),ut=K("MessageContent",(t=>e("div",{className:"wxchtf-message-content",children:e(dt,Object.assign({},t))}))),ht=K("MessageInfoBox",(a=>{const{message:n}=a,{id:s,sentBy:i,sentAt:r}=n,{lastReadMessageId:c,isReading:o,noReadTracking:d}=st(),u=Ue.settings.me(),h=i.id===u,l=Je(),m=!(null!=c&&s.localeCompare(c)<=0)&&o(s);return t("div",{className:"wxchtf-message-info-box",children:[!h&&t("div",{className:"wxchtf-message-author-name",children:[i.name,","]}),e("div",{className:"wxchtf-message-sent-at",children:l.timestamp(r)}),!h&&!d&&e("div",{className:"wxchtf-message-read-box",children:m?l.message.reading():l.message.read()})]})})),lt=K("MessageRow",(a=>{const{message:n,containerRef:s}=a,{sentBy:i}=n,r=Ue.settings.me(),c=i.id===r;return t("div",{ref:s,className:"wxchtf-message"+(c?" --my":""),children:[e(rt,Object.assign({},a)),t("div",{children:[e(ht,Object.assign({},a)),e(ut,Object.assign({},a))]})]})})),mt=K("MessageBox",(n=>{const s=h(null);return t(a,{children:[e(ot,Object.assign({messageRef:s},n)),e(lt,Object.assign({containerRef:s},n))]})})),gt=K("MessageSkeleton",(n=>{const{count:s=1}=n;return e(a,{children:Array.from(Array(s)).map(((a,n)=>t("div",{className:"wxchtf-message-skeleton",children:[e(C.Avatar,{className:"wxchtf-avatar",active:!0}),e(C.Button,{active:!0,className:"wxchtf-content"})]},n)))})}));function ft(t){const{onLoad:a,loading:n}=t,[s,i]=r(!1),o=h(null),d=h(),u=c((()=>new IntersectionObserver((([e])=>{e.isIntersecting?d.current=setTimeout((()=>i(!0)),200):clearTimeout(d.current)}))),[]);return m((()=>(u.observe(o.current),()=>u.disconnect())),[u]),m((()=>{s&&a()}),[s]),n||s?e(gt,{count:4}):e("div",{className:"wxchtf-next",ref:o})}const vt=K("SendingMessageText",(t=>{const{text:a}=t;return e("div",{className:"wxchtf-sending-message-text",children:a})})),yt=K("SendingMessageInfoBox",(t=>{const a=Je();return e("div",{className:"wxchtf-sending-message-info-box",children:e("div",{className:"wxchtf-sending-message-sending-box",children:a.message.sending()})})})),pt=K("SendingMessageContent",(a=>t("div",{className:"wxchtf-sending-message-content",children:[e(vt,Object.assign({},a)),e(yt,Object.assign({},a))]}))),bt=K("SendingMessageBox",(t=>e("div",{className:"wxchtf-sending-message",children:e(pt,Object.assign({},t))})));function Ct(e,t){const[a,n]=t.split("::",2),s=n?JSON.parse(n):null;return e.system[a](a,s)}const wt=K("SystemMessageRow",(a=>{const{message:n,containerRef:s}=a,{text:i,sentAt:r}=n,c=Je();return t("div",{ref:s,className:"wxchtf-system-message",children:[e("div",{className:"wxchtf-text",children:Ct(c,i)}),e("div",{className:"wxchtf-timestamp",children:c.timestamp(r)})]})})),xt=K("SystemMessageBox",(n=>{const s=h(null);return t(a,{children:[e(ot,Object.assign({messageRef:s},n)),e(wt,Object.assign({containerRef:s},n))]})})),Mt=K("ConversationActions",(()=>null)),It=K("ConversationBody",(()=>{const{id:a,messages:n=[],hasMore:s,onNext:i,nextLoading:r}=st();return t("div",{className:"wxchtf-conversation-body",children:[!n&&e(gt,{count:5}),null==n?void 0:n.map((t=>t.sentBy.id===te?e(xt,{message:t},t.id):e(mt,{message:t},t.id))),s&&e(ft,{onLoad:i,loading:r},n.length+a)]})})),Ot=K("ConversationName",(()=>{const{name:t}=st();return e("span",{className:"wxchtf-conversation-name",children:t})})),Rt=K("ConversationHeader",(()=>{const a=z(Mt);return e("div",{className:"wxchtf-conversation-header",children:t(w,{justify:"space-between",align:"middle",children:[e(x,{children:e(Ot,{})}),a&&e(x,{className:"wxchtf-conversation-actions",children:e(a,{})})]})})})),Nt=K("Conversation",(a=>{const{value:n,hasMore:s,messages:i,nextLoading:r,onNext:o,onRead:d,onSend:u,isReading:h,noReadTracking:l}=a,{id:m,active:g,name:f,lastReadMessageId:v}=n,y=c((()=>({id:m,name:f,active:g,lastReadMessageId:v,hasMore:s,messages:i,nextLoading:r,onNext:o,onRead:d,onSend:u,isReading:h,noReadTracking:l})),[m,f,g,o,d,u,s,i,r,v,h,l]);return e(nt.Provider,{value:y,children:e("div",{className:"wxchtf-conversation",children:t("div",{className:"wxchtf-conversation-main",children:[e(Rt,{}),e(It,{}),g&&e(it,{})]})})})})),_t=Q("escape"),St=Q("enter");const Tt=K("ChatEditableHeaderName",(()=>{const{id:t,name:a,active:n}=st(),[s,i]=r(""),[c,o]=r(!1),d=function(e,t){const[a]=Ue.useUpdateChatNameMutation();return()=>a({id:e,name:t})}(t,s);return m((()=>{c&&i(null!=a?a:"")}),[c,a]),n?e(y,c?{defaultOpen:!0,title:"Press Enter to save new chat name or Escape to cancel editing",children:e(b,{value:s,onChange:e=>i(e.target.value),onBlur:()=>o(!1),onKeyDown:e=>{_t(e)?o(!1):St(e)&&(o(!1),s!==a&&""!==s.trim()&&d())},autoFocus:!0})}:{title:"Click to edit name...",children:e("span",{className:"wxchtf-conversation-name --editable",onClick:()=>o(!0),children:a})}):e("span",{className:"wxchtf-conversation-name",children:a})})),kt=K("ChatHeaderActions",(()=>{const{active:a}=st();return a?t("div",{className:"wxchtf-chat-members",children:[e(Ke,{}),e(ee,{})]}):null})),Lt={ConversationName:()=>e(Tt,{}),ConversationActions:()=>e(kt,{})};function Et(a){const n=function(e){const{value:t}=e,{id:a,name:n,active:s,lastReadMessageId:i}=t,{data:r}=Ue.useGetChatMessageListQuery({chatId:a}),{messages:o,hasMore:u}=null!=r?r:{},[h,{isLoading:l}]=Ue.useFetchNextChatMessageListMutation(),m=d((()=>h({chatId:a})),[h,a]),[g]=Ue.useReadChatMessageMutation(),f=d((e=>g({id:e})),[g]),[v]=Ue.useSendChatMessageMutation(),y=d((e=>v(Object.assign(Object.assign({},e),{chatId:a})).unwrap()),[a,v]),{data:p}=Ue.useGetChatMessageReadQueueQuery();return c((()=>{if(!a)return null;const e={value:{id:a,name:n,active:s,lastReadMessageId:i},messages:o,hasMore:u,onNext:m,nextLoading:l,onRead:f,onSend:y,isReading:e=>p.some((t=>ae(t.value)===ae(e)&&e<=t.value))};return e}),[m,f,y,l,a,n,s,o,u,i,p])}(a),{showMembers:s}=X();return n?t("div",{className:"wxchtf-chat",children:[e(Nt,Object.assign({},n)),s&&e(ze,{})]}):null}const jt=K("ChatView",(t=>{const{value:a}=t,n=$(),s=c((()=>Object.assign(Object.assign({},null!=n?n:{}),Lt)),[n]);return e(V.Provider,{value:s,children:e(Z,{id:a.id,children:e(Et,{value:a})})})}));function qt(t){const{id:a,className:n="",customize:s,localizer:i=Xe,style:r}=t,{data:c}=Ue.useGetChatQuery({id:a});return e("div",{className:`wxchtf-chatify wxchtf-chat-panel ${n}`,style:r,children:e(Ye.Provider,{value:i,children:e(V.Provider,{value:s,children:c&&e(jt,{value:c},a)})})})}const At=K("CreateChatNameInput",(t=>{const{name:a}=t,n=Je();return e(M.Item,{name:a,label:n.addChat.name.label(),rules:[{required:!0,message:n.addChat.name.required()},{max:250,message:n.addChat.name.max250()}],children:e(b,{})})}));function Bt(t){const{value:a,onChange:n}=t,{data:s,isFetching:i}=Ue.useGetAccountListQuery(),r=Ue.settings.me(),o=c((()=>{var e;return null!==(e=null==s?void 0:s.filter((e=>e.id!==r)))&&void 0!==e?e:[]}),[s,r]);return e(v,{rowKey:"id",className:"wxchtf-create-chat-member-input-list",loading:i,dataSource:o,renderItem:t=>{const s=a.includes(t.id);return e(v.Item,{className:s?"--selected":"",children:e(I,{checked:s,onChange:()=>n(a.includes(t.id)?a.filter((e=>e!==t.id)):[...a,t.id]),children:e(v.Item.Meta,{avatar:e(Pe,{account:t}),title:t.name})})})}})}const Dt=K("CreateChatMemberInput",(t=>{const{name:a}=t,n=Je();return e(M.Item,{label:n.addChat.members.label(),rules:[{required:!0,message:n.addChat.members.required()}],name:a,children:e(Bt,{})})})),Ft={name:"",members:[]},Qt=K("CreateChatForm",(a=>{const{value:n=Ft,onSubmit:s,busy:i=!1}=a,r=Je();return t(M,{onFinish:s,layout:"vertical",disabled:i,initialValues:n,children:[e(At,{name:"name"}),e(Dt,{name:"members"}),e(g,{loading:i,type:"primary",block:!0,htmlType:"submit",children:r.addChat.submitBtn()})]})})),Ut=s.createContext(null);function Gt(){return i(Ut)}function Pt(t){const{children:a}=t,[n,s]=r({chatId:null,view:null,showMembers:!1}),i=c((()=>Object.assign(Object.assign({},n),{openChat:e=>s((t=>Object.assign(Object.assign({},t),{view:"chat",chatId:e}))),none:()=>s((e=>Object.assign(Object.assign({},e),{view:null,chatId:null}))),toggleMembers:()=>s((e=>Object.assign(Object.assign({},e),{showMembers:!e.showMembers}))),toggleNewChat:()=>s((e=>"new-chat"!==e.view||e.chatId?"new-chat"===e.view&&e.chatId?Object.assign(Object.assign({},e),{view:"chat"}):Object.assign(Object.assign({},e),{view:"new-chat"}):Object.assign(Object.assign({},e),{view:null})))})),[n]);return e(Ut.Provider,{value:i,children:a})}const Vt=K("CreateChatPanel",(()=>{const a=Je(),[n,s]=function(){const[e,{isLoading:t}]=Ue.useAddChatMutation(),{openChat:a}=Gt();return[d((t=>e({name:t.name,members:t.members}).unwrap().then((e=>a(e)))),[e,a]),t]}(),{toggleNewChat:i}=Gt();return t("div",{className:"wxchtf-create-chat-panel",children:[e(g,{onClick:()=>i(),className:"wxchtf-create-chat-panel-close",type:"link",icon:e(Y,{type:"close"})}),e("h3",{children:a.addChat.title()}),e(Qt,{busy:null!=s&&s,onSubmit:n})]})})),$t=K("CreateChatButton",(()=>{const{toggleNewChat:t}=Gt();return e("span",{className:"wxchtf-add-btn-wrapper",children:e(g,{className:"wxchtf-add-btn",onClick:t,icon:"+",children:"Add chat"})})})),Ht=K("ChatListItemName",(t=>{const{chat:a}=t;return e("div",{className:"wxchtf-chat-name",children:a.name})})),zt=K("ChatListItemUnreadCount",(t=>{const{totalUnreadCount:a}=t.chat;return a<=0?null:e("div",{className:"wxchtf-unread-count",children:a})})),Kt=K("ChatListItemLastMessageContent",(t=>{const{message:a}=t.chat,n=Je();return e("div",{className:"wxchtf-chat-last-message",children:"chatify::system"===a.sentBy.id?Ct(n,a.text):a.text})})),Wt=K("ChatListItemLastMessageAuthor",(t=>{const{message:a}=t.chat;return"chatify::system"===a.sentBy.id?null:e("div",{className:"wxchtf-chat-last-author",children:a.sentBy.name})})),Yt=K("ChatListItemLastMessageSentAt",(t=>{const{chat:{message:{sentAt:a}}}=t,n=Je();return e("div",{className:"wxchtf-chat-last-sent-at",children:n.isToday(a)?n.timestamp(a):n.dateTime(a)})})),Jt=K("ChatListItemLastMessage",(a=>t("div",{className:"wxchtf-chat-last",children:[e(Wt,Object.assign({},a)),e(Kt,Object.assign({},a)),e(Yt,Object.assign({},a))]}))),Xt=K("ChatListItemAvatar",(t=>{const{id:a}=t.chat;return e("div",{className:"wxchtf-chat-avatar",style:{"--background-color":P(a,{lightness:90}),"--color":P(a,{saturation:60,lightness:65})},children:e(Y,{type:"chat"})})})),Zt=K("ChatListItemBox",(a=>{const{message:n,lastReadMessageId:s}=a.chat,i=null!=s&&s.localeCompare(n.id)>=0;return t("div",{className:"wxchtf-chat"+(i?"":" --unread"),children:[e(Xt,Object.assign({},a)),t("span",{className:"wxchtf-chat-info",children:[e(Ht,Object.assign({},a)),e(zt,Object.assign({},a)),e(Jt,Object.assign({},a))]})]})}));const ea=K("ChatList",(()=>{const{chatId:t}=Gt(),n=c((()=>t?[t]:[]),[t]),s=function(){const{openChat:e}=Gt();return d((t=>e(t.key)),[e])}(),i=function(){const{data:t}=Ue.useGetChatListQuery();return c((()=>null==t?void 0:t.slice().sort(((e,t)=>-e.message.id.substring(47).localeCompare(t.message.id.substring(47)))).map((t=>({key:t.id,label:e(Zt,{chat:t})})))),[t])}();return e(a,{children:i&&e(O,{className:"wxchtf-chat-list",selectedKeys:n,onSelect:s,items:i})})})),ta=K("ChatGroupAside",(()=>t("div",{className:"wxchtf-aside",children:[e($t,{}),e(ea,{})]}))),aa=K("ChatGroupHeader",(()=>e("div",{className:"wxchtf-header"}))),na=K("ChatGroupFooter",(()=>e("div",{className:"wxchtf-footer"}))),sa=K("ChatGroupMain",(()=>{const{chatId:a,view:n}=Gt(),s=Ue.useChatListItem(a);return t("div",{className:"wxchtf-main",children:["chat"===n&&s&&e(jt,{value:s},a),"new-chat"===n&&e(Vt,{})]})})),ia=K("ChatGroupBody",(()=>t("div",{className:"wxchtf-body",children:[e(ta,{}),e(sa,{})]})));function ra(a){const{className:n="",style:s}=a,{data:i}=Ue.useGetChatListQuery(),{openChat:r,none:c,chatId:o}=Gt(),d=h(!1);return m((()=>{i&&!i.some((e=>e.id===o))&&(i.length?r(i[0].id):c())}),[i,o]),m((()=>{i&&!d.current&&(d.current=!0,i.length&&r(i[0].id))}),[i]),t("div",{className:n+" wxchtf-chatify wxchtf-chat-group",style:s,children:[e(aa,{}),e(ia,{}),e(na,{})]})}const ca={ChatGroupHeader:null,ChatGroupFooter:null},oa=t=>{const{localizer:a=Xe,customize:n=ca}=t,s=c((()=>Object.assign({},ca,n)),[n]);return e(Ye.Provider,{value:a,children:e(V.Provider,{value:s,children:e(Pt,{children:e(ra,Object.assign({},t))})})})},da=s.createContext(null);function ua(){return s.useContext(da)}const ha=K("ThreadActions",(()=>{const{watch:t,onWatch:a}=ua();return e(y,t?{title:"Unwatch thread",children:e(g,{type:"link",icon:e(Y,{type:"unwatch"}),onClick:()=>a(!1)})}:{title:"Watch thread",children:e(g,{type:"link",icon:e(Y,{type:"watch"}),onClick:()=>a(!0)})})}));const la={ConversationActions:()=>e(ha,{})};function ma(t){const{threadId:a,customize:n,localizer:s=Xe,className:i=""}=t,[r,o]=function(e){const{threadId:t}=e,{data:a}=Ue.useGetThreadQuery({id:t}),{data:n}=Ue.useGetThreadMessageListQuery({threadId:t}),{id:s,name:i,archive:r,lastReadMessageId:o,watch:u}=null!=a?a:{},{messages:h,hasMore:l}=null!=n?n:{},[m]=Ue.useReadThreadMessageMutation(),g=d((e=>m({id:e})),[m]),[f,{isLoading:v}]=Ue.useFetchNextThreadMessageListMutation(),y=d((()=>f({threadId:t})),[f,t]),[p]=Ue.useSendThreadMessageMutation(),b=d((e=>p({body:e,threadId:t}).unwrap()),[t,p]),{data:C}=Ue.useGetThreadMessageReadQueueQuery(),w=c((()=>{if(!s)return null;const e={value:{id:s,name:i,active:!r,lastReadMessageId:null!=o?o:null},messages:h,hasMore:l,onNext:y,nextLoading:v,onRead:g,onSend:b,noReadTracking:!u,isReading:e=>C.some((t=>ne(t.value)[0]===ne(e)[0]&&e<=t.value))};return e}),[y,g,b,v,s,i,r,h,l,o,C,u]),[x]=Ue.useWatchThreadMutation();return[w,c((()=>a?{id:a.id,watch:a.watch,onWatch:e=>x({id:a.id,watch:e}).unwrap()}:null),[a,x])]}(t),u=c((()=>Object.assign(Object.assign({},la),n)),[n]);return m((()=>(Ue.settings.client.connectToThread(a),()=>{Ue.settings.client.disconnectFromThread(a)})),[a]),r&&o?e(Ye.Provider,{value:s,children:e(da.Provider,{value:o,children:e(V.Provider,{value:u,children:e("div",{className:`wxchtf-chatify wxchtf-thread ${i}`,children:r&&e(Nt,Object.assign({},r))})})})}):null}const ga={Thread:ma,ChatGroup:oa,Chat:qt};export{Pe as Avatar,Ee as CHATIFY_SIGNALR_METHODS,Z as ChatContext,Tt as ChatEditableHeaderName,ta as ChatGroupAside,ia as ChatGroupBody,Pt as ChatGroupContext,na as ChatGroupFooter,aa as ChatGroupHeader,sa as ChatGroupMain,oa as ChatGroupPanel,kt as ChatHeaderActions,ea as ChatList,Xt as ChatListItemAvatar,Zt as ChatListItemBox,Jt as ChatListItemLastMessage,Wt as ChatListItemLastMessageAuthor,Kt as ChatListItemLastMessageContent,Yt as ChatListItemLastMessageSentAt,Ht as ChatListItemName,zt as ChatListItemUnreadCount,ee as ChatMembersButton,ze as ChatMembersPanel,Ke as ChatMembersPreview,qt as ChatPanel,jt as ChatView,ga as Chatify,je as ChatifyClient,Nt as Conversation,Mt as ConversationActions,It as ConversationBody,nt as ConversationContext,Rt as ConversationHeader,Ot as ConversationName,$t as CreateChatButton,Qt as CreateChatForm,Dt as CreateChatMemberInput,At as CreateChatNameInput,Vt as CreateChatPanel,V as CustomizeContext,Lt as DEFAULT_CHAT_VIEW_CUSTOMIZE_VALUE,W as ICONS,Y as Icon,it as InputBox,We as InputFilesBox,at as InputSubmitButtonBox,tt as InputTextBox,Ye as LocalizerContext,rt as MessageAuthor,mt as MessageBox,ut as MessageContent,ht as MessageInfoBox,ot as MessageReadObserver,lt as MessageRow,gt as MessageSkeleton,dt as MessageText,ft as NextMessagesObserver,te as SYSTEM_ID,bt as SendingMessageBox,pt as SendingMessageContent,yt as SendingMessageInfoBox,vt as SendingMessageText,xt as SystemMessageBox,wt as SystemMessageRow,ha as ThreadActions,da as ThreadContext,ma as ThreadPanel,ie as calcThreadListUnreadCount,se as calcThreadUnreadCount,ae as chatId,Ue as chatifyApi,P as color,K as customize,Xe as defaultLocalizer,Ct as formatSystemMessage,ne as parseThreadMessageId,qe as unsubscribe,X as useChatContext,Gt as useChatGroupContext,Fe as useChatListItem,st as useConversation,z as useCustomize,$ as useCustomizeContext,Je as useLocalizer,ua as useThreadContext,Qe as useUnreadThreadMessageCount};
|
|
2
11
|
//# sourceMappingURL=index.js.map
|