@webinex/chatify 2.0.0-alpha12 → 2.0.0-alpha14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/dist/{Chatify-CwAfN1wu.js → Chatify-CP2jgo8d.js} +191 -118
  2. package/dist/Chatify-CP2jgo8d.js.map +1 -0
  3. package/dist/Chatify.css +28 -0
  4. package/dist/audit.js +3 -2
  5. package/dist/audit.js.map +1 -1
  6. package/dist/index.js +1 -1
  7. package/dist/types/audit/index.d.ts +17 -15
  8. package/dist/types/core/api/api.d.ts +146 -0
  9. package/dist/types/ui/Chat/ChatContext.d.ts +2 -0
  10. package/dist/types/ui/Chat/ChatPanel.d.ts +7 -0
  11. package/dist/types/ui/Chat/ChatView.d.ts +4 -2
  12. package/dist/types/ui/ChatGroup/ChatGroupContext.d.ts +4 -1
  13. package/dist/types/ui/ChatGroup/ChatGroupPanel.d.ts +21 -2
  14. package/dist/types/ui/Conversation/Conversation.d.ts +1 -0
  15. package/dist/types/ui/Conversation/ConversationContext.d.ts +1 -0
  16. package/dist/types/ui/Conversation/ConversationHeader.d.ts +4 -1
  17. package/dist/types/ui/localizer.d.ts +4 -1
  18. package/dist/types/ui/useCompact.d.ts +4 -0
  19. package/package.json +81 -81
  20. package/src/audit/AuditChatList.tsx +25 -25
  21. package/src/audit/AuditConversationPanel.tsx +49 -48
  22. package/src/audit/AuditPanel.tsx +76 -76
  23. package/src/audit/AuditPanelCustomizeValue.ts +11 -11
  24. package/src/audit/AuditSearch.tsx +89 -89
  25. package/src/audit/AuditSearchValue.tsx +42 -42
  26. package/src/audit/auditApi.tsx +113 -113
  27. package/src/audit/index.d.ts +18 -18
  28. package/src/audit/index.tsx +28 -28
  29. package/src/audit/styles.scss +72 -72
  30. package/src/core/api/api.ts +675 -669
  31. package/src/core/api/baseApi.ts +38 -38
  32. package/src/core/api/index.ts +1 -1
  33. package/src/core/client.ts +298 -298
  34. package/src/core/constants.ts +1 -1
  35. package/src/core/debounce.ts +90 -90
  36. package/src/core/index.ts +4 -4
  37. package/src/core/types.tsx +182 -182
  38. package/src/index.ts +2 -2
  39. package/src/styles/aside.scss +34 -26
  40. package/src/styles/chat-list.scss +138 -138
  41. package/src/styles/chat.scss +11 -11
  42. package/src/styles/conversation.scss +199 -200
  43. package/src/styles/index.scss +227 -220
  44. package/src/styles/input.scss +148 -148
  45. package/src/styles/keyframes.scss +14 -14
  46. package/src/styles/members.scss +30 -13
  47. package/src/styles/mixins.scss +38 -25
  48. package/src/styles/variables.scss +13 -13
  49. package/src/ui/Chat/ChatContext.tsx +32 -30
  50. package/src/ui/Chat/ChatEditableHeaderName.tsx +63 -63
  51. package/src/ui/Chat/ChatHeaderActions.tsx +19 -19
  52. package/src/ui/Chat/ChatPanel.tsx +46 -30
  53. package/src/ui/Chat/ChatView.tsx +122 -115
  54. package/src/ui/Chat/Members/ChatMembersButton.tsx +9 -9
  55. package/src/ui/Chat/Members/ChatMembersPanel.tsx +128 -112
  56. package/src/ui/Chat/Members/ChatMembersPreview.tsx +25 -25
  57. package/src/ui/Chat/Members/index.ts +13 -13
  58. package/src/ui/Chat/index.ts +6 -6
  59. package/src/ui/ChatGroup/AutoReply/AutoReplyButton.tsx +21 -21
  60. package/src/ui/ChatGroup/AutoReply/AutoReplyForm.tsx +50 -50
  61. package/src/ui/ChatGroup/AutoReply/AutoReplyPanel.tsx +94 -94
  62. package/src/ui/ChatGroup/AutoReply/AutoReplyPeriodInput.tsx +22 -22
  63. package/src/ui/ChatGroup/AutoReply/AutoReplyTextInput.tsx +22 -22
  64. package/src/ui/ChatGroup/AutoReply/index.ts +19 -19
  65. package/src/ui/ChatGroup/ChatGroupContext.tsx +63 -61
  66. package/src/ui/ChatGroup/ChatGroupPanel.tsx +110 -75
  67. package/src/ui/ChatGroup/Create/CreateChatButton.tsx +15 -15
  68. package/src/ui/ChatGroup/Create/CreateChatForm.tsx +36 -36
  69. package/src/ui/ChatGroup/Create/CreateChatMemberInput.tsx +65 -65
  70. package/src/ui/ChatGroup/Create/CreateChatNameInput.tsx +25 -25
  71. package/src/ui/ChatGroup/Create/CreateChatPanel.tsx +45 -45
  72. package/src/ui/ChatGroup/Create/index.ts +19 -19
  73. package/src/ui/ChatGroup/Layout/ChatGroupActions.tsx +15 -15
  74. package/src/ui/ChatGroup/Layout/ChatGroupAside.tsx +12 -12
  75. package/src/ui/ChatGroup/Layout/ChatGroupBody.tsx +17 -10
  76. package/src/ui/ChatGroup/Layout/ChatGroupFooter.tsx +3 -3
  77. package/src/ui/ChatGroup/Layout/ChatGroupHeader.tsx +5 -5
  78. package/src/ui/ChatGroup/Layout/ChatGroupMain.tsx +21 -19
  79. package/src/ui/ChatGroup/Layout/index.ts +22 -22
  80. package/src/ui/ChatGroup/List/ChatListPanel.tsx +28 -28
  81. package/src/ui/ChatGroup/List/index.ts +8 -8
  82. package/src/ui/ChatGroup/index.ts +6 -6
  83. package/src/ui/Chatify.tsx +15 -15
  84. package/src/ui/Conversation/Conversation.tsx +96 -92
  85. package/src/ui/Conversation/ConversationActions.tsx +12 -12
  86. package/src/ui/Conversation/ConversationBody.tsx +28 -28
  87. package/src/ui/Conversation/ConversationContext.ts +31 -30
  88. package/src/ui/Conversation/ConversationHeader.tsx +35 -19
  89. package/src/ui/Conversation/ConversationName.tsx +7 -7
  90. package/src/ui/Conversation/InputBox/InputBox.tsx +126 -126
  91. package/src/ui/Conversation/InputBox/InputBoxFile.tsx +38 -38
  92. package/src/ui/Conversation/InputBox/InputBoxFileList.tsx +21 -21
  93. package/src/ui/Conversation/InputBox/InputFilesBox.tsx +78 -78
  94. package/src/ui/Conversation/InputBox/InputSubmitButtonBox.tsx +26 -26
  95. package/src/ui/Conversation/InputBox/InputTextBox.tsx +63 -61
  96. package/src/ui/Conversation/InputBox/index.ts +23 -23
  97. package/src/ui/Conversation/Message/MessageAuthor.tsx +13 -13
  98. package/src/ui/Conversation/Message/MessageBox.tsx +20 -20
  99. package/src/ui/Conversation/Message/MessageContent.tsx +15 -15
  100. package/src/ui/Conversation/Message/MessageFile.tsx +54 -54
  101. package/src/ui/Conversation/Message/MessageFileList.tsx +14 -14
  102. package/src/ui/Conversation/Message/MessageInfoBox.tsx +28 -28
  103. package/src/ui/Conversation/Message/MessageRow.tsx +28 -28
  104. package/src/ui/Conversation/Message/MessageText.tsx +7 -7
  105. package/src/ui/Conversation/Message/index.ts +28 -28
  106. package/src/ui/Conversation/NextObserver/NextMessagesObserver.tsx +47 -47
  107. package/src/ui/Conversation/NextObserver/index.ts +1 -1
  108. package/src/ui/Conversation/ReadObserver/MessageReadObserver.tsx +49 -49
  109. package/src/ui/Conversation/ReadObserver/index.ts +1 -1
  110. package/src/ui/Conversation/SendingMessage/SendingMessageBox.tsx +16 -16
  111. package/src/ui/Conversation/SendingMessage/SendingMessageContent.tsx +13 -13
  112. package/src/ui/Conversation/SendingMessage/SendingMessageInfoBox.tsx +13 -13
  113. package/src/ui/Conversation/SendingMessage/SendingMessageText.tsx +7 -7
  114. package/src/ui/Conversation/SendingMessage/index.ts +16 -16
  115. package/src/ui/Conversation/SystemMessage/SystemMessageBox.tsx +20 -20
  116. package/src/ui/Conversation/SystemMessage/SystemMessageRow.tsx +28 -28
  117. package/src/ui/Conversation/SystemMessage/index.ts +10 -10
  118. package/src/ui/Conversation/index.ts +13 -13
  119. package/src/ui/Thread/ThreadActions.tsx +22 -22
  120. package/src/ui/Thread/ThreadContext.ts +13 -13
  121. package/src/ui/Thread/ThreadPanel.tsx +128 -127
  122. package/src/ui/Thread/index.tsx +3 -3
  123. package/src/ui/color.ts +20 -20
  124. package/src/ui/common/Avatar.tsx +20 -20
  125. package/src/ui/common/ChatList/ChatList.tsx +83 -84
  126. package/src/ui/common/ChatList/ChatListItemAvatar.tsx +22 -22
  127. package/src/ui/common/ChatList/ChatListItemBox.tsx +32 -32
  128. package/src/ui/common/ChatList/ChatListItemLastMessage.tsx +15 -15
  129. package/src/ui/common/ChatList/ChatListItemLastMessageAuthor.tsx +15 -15
  130. package/src/ui/common/ChatList/ChatListItemLastMessageContent.tsx +21 -21
  131. package/src/ui/common/ChatList/ChatListItemLastMessageSentAt.tsx +22 -22
  132. package/src/ui/common/ChatList/ChatListItemName.tsx +8 -8
  133. package/src/ui/common/ChatList/ChatListItemUnreadCount.tsx +12 -12
  134. package/src/ui/common/ChatList/ChatListValue.ts +9 -9
  135. package/src/ui/common/ChatList/index.ts +32 -32
  136. package/src/ui/common/Icon.tsx +48 -48
  137. package/src/ui/common/MessageSkeleton.tsx +20 -20
  138. package/src/ui/common/index.ts +14 -14
  139. package/src/ui/customize.tsx +51 -51
  140. package/src/ui/index.ts +11 -11
  141. package/src/ui/localizer.tsx +148 -137
  142. package/src/ui/useCompact.tsx +32 -0
  143. package/src/ui/useFormatter.tsx +17 -17
  144. package/dist/Chatify-CwAfN1wu.js.map +0 -1
@@ -1,32 +1,32 @@
1
- import { customize } from '../../customize';
2
- import { ChatListItemName } from './ChatListItemName';
3
- import { ChatListItemUnreadCount } from './ChatListItemUnreadCount';
4
- import { ChatListItemLastMessage } from './ChatListItemLastMessage';
5
- import { ChatListItemAvatar } from './ChatListItemAvatar';
6
- import { ChatListValue } from './ChatListValue';
7
-
8
- export interface ChatListItemBoxProps {
9
- chat: ChatListValue;
10
-
11
- /**
12
- * If true, do not show read status.
13
- */
14
- noRead?: boolean;
15
- }
16
-
17
- export const ChatListItemBox = customize('ChatListItemBox', (props: ChatListItemBoxProps) => {
18
- const { noRead = false } = props;
19
- const { lastMessage, lastReadMessageId } = props.chat;
20
- const read = lastReadMessageId != null && lastReadMessageId.localeCompare(lastMessage.id) >= 0;
21
-
22
- return (
23
- <div className={'wxchtf-chat' + (!read && !noRead ? ' --unread' : '')}>
24
- <ChatListItemAvatar {...props} />
25
- <span className="wxchtf-chat-info">
26
- <ChatListItemName {...props} />
27
- <ChatListItemUnreadCount {...props} />
28
- <ChatListItemLastMessage {...props} />
29
- </span>
30
- </div>
31
- );
32
- });
1
+ import { customize } from '../../customize';
2
+ import { ChatListItemName } from './ChatListItemName';
3
+ import { ChatListItemUnreadCount } from './ChatListItemUnreadCount';
4
+ import { ChatListItemLastMessage } from './ChatListItemLastMessage';
5
+ import { ChatListItemAvatar } from './ChatListItemAvatar';
6
+ import { ChatListValue } from './ChatListValue';
7
+
8
+ export interface ChatListItemBoxProps {
9
+ chat: ChatListValue;
10
+
11
+ /**
12
+ * If true, do not show read status.
13
+ */
14
+ noRead?: boolean;
15
+ }
16
+
17
+ export const ChatListItemBox = customize('ChatListItemBox', (props: ChatListItemBoxProps) => {
18
+ const { noRead = false } = props;
19
+ const { lastMessage, lastReadMessageId } = props.chat;
20
+ const read = lastReadMessageId != null && lastReadMessageId.localeCompare(lastMessage.id) >= 0;
21
+
22
+ return (
23
+ <div className={'wxchtf-chat' + (!read && !noRead ? ' --unread' : '')}>
24
+ <ChatListItemAvatar {...props} />
25
+ <span className="wxchtf-chat-info">
26
+ <ChatListItemName {...props} />
27
+ <ChatListItemUnreadCount {...props} />
28
+ <ChatListItemLastMessage {...props} />
29
+ </span>
30
+ </div>
31
+ );
32
+ });
@@ -1,15 +1,15 @@
1
- import { customize } from '../../customize';
2
- import type { ChatListItemBoxProps } from './ChatListItemBox';
3
- import { ChatListItemLastMessageContent } from './ChatListItemLastMessageContent';
4
- import { ChatListItemLastMessageAuthor } from './ChatListItemLastMessageAuthor';
5
- import { ChatListItemLastMessageSentAt } from './ChatListItemLastMessageSentAt';
6
-
7
- export const ChatListItemLastMessage = customize('ChatListItemLastMessage', (props: ChatListItemBoxProps) => {
8
- return (
9
- <div className="wxchtf-chat-last">
10
- <ChatListItemLastMessageAuthor {...props} />
11
- <ChatListItemLastMessageContent {...props} />
12
- <ChatListItemLastMessageSentAt {...props} />
13
- </div>
14
- );
15
- });
1
+ import { customize } from '../../customize';
2
+ import type { ChatListItemBoxProps } from './ChatListItemBox';
3
+ import { ChatListItemLastMessageContent } from './ChatListItemLastMessageContent';
4
+ import { ChatListItemLastMessageAuthor } from './ChatListItemLastMessageAuthor';
5
+ import { ChatListItemLastMessageSentAt } from './ChatListItemLastMessageSentAt';
6
+
7
+ export const ChatListItemLastMessage = customize('ChatListItemLastMessage', (props: ChatListItemBoxProps) => {
8
+ return (
9
+ <div className="wxchtf-chat-last">
10
+ <ChatListItemLastMessageAuthor {...props} />
11
+ <ChatListItemLastMessageContent {...props} />
12
+ <ChatListItemLastMessageSentAt {...props} />
13
+ </div>
14
+ );
15
+ });
@@ -1,15 +1,15 @@
1
- import { customize } from '../../customize';
2
- import type { ChatListItemBoxProps } from './ChatListItemBox';
3
-
4
- export const ChatListItemLastMessageAuthor = customize(
5
- 'ChatListItemLastMessageAuthor',
6
- (props: ChatListItemBoxProps) => {
7
- const { lastMessage } = props.chat;
8
-
9
- if (lastMessage.sentBy.id === 'chatify::system') {
10
- return null;
11
- }
12
-
13
- return <div className="wxchtf-chat-last-author">{lastMessage.sentBy.name}</div>;
14
- },
15
- );
1
+ import { customize } from '../../customize';
2
+ import type { ChatListItemBoxProps } from './ChatListItemBox';
3
+
4
+ export const ChatListItemLastMessageAuthor = customize(
5
+ 'ChatListItemLastMessageAuthor',
6
+ (props: ChatListItemBoxProps) => {
7
+ const { lastMessage } = props.chat;
8
+
9
+ if (lastMessage.sentBy.id === 'chatify::system') {
10
+ return null;
11
+ }
12
+
13
+ return <div className="wxchtf-chat-last-author">{lastMessage.sentBy.name}</div>;
14
+ },
15
+ );
@@ -1,21 +1,21 @@
1
- import { useLocalizer } from '../../localizer';
2
- import { formatSystemMessage } from '../../Conversation/SystemMessage';
3
- import { FC } from 'react';
4
- import { customize } from '../../customize';
5
- import type { ChatListItemBoxProps } from './ChatListItemBox';
6
-
7
- export const ChatListItemLastMessageContent = customize<FC<ChatListItemBoxProps>>(
8
- 'ChatListItemLastMessageContent',
9
- (props) => {
10
- const { lastMessage } = props.chat;
11
- const localizer = useLocalizer();
12
-
13
- return (
14
- <div className="wxchtf-chat-last-message">
15
- {lastMessage.sentBy.id === 'chatify::system'
16
- ? lastMessage.text && formatSystemMessage(localizer, lastMessage.text)
17
- : lastMessage.text}
18
- </div>
19
- );
20
- },
21
- );
1
+ import { useLocalizer } from '../../localizer';
2
+ import { formatSystemMessage } from '../../Conversation/SystemMessage';
3
+ import { FC } from 'react';
4
+ import { customize } from '../../customize';
5
+ import type { ChatListItemBoxProps } from './ChatListItemBox';
6
+
7
+ export const ChatListItemLastMessageContent = customize<FC<ChatListItemBoxProps>>(
8
+ 'ChatListItemLastMessageContent',
9
+ (props) => {
10
+ const { lastMessage } = props.chat;
11
+ const localizer = useLocalizer();
12
+
13
+ return (
14
+ <div className="wxchtf-chat-last-message">
15
+ {lastMessage.sentBy.id === 'chatify::system'
16
+ ? lastMessage.text && formatSystemMessage(localizer, lastMessage.text)
17
+ : lastMessage.text}
18
+ </div>
19
+ );
20
+ },
21
+ );
@@ -1,22 +1,22 @@
1
- import { customize } from '../../customize';
2
- import { useLocalizer } from '../../localizer';
3
- import { ChatListItemBoxProps } from './ChatListItemBox';
4
-
5
- export const ChatListItemLastMessageSentAt = customize(
6
- 'ChatListItemLastMessageSentAt',
7
- (props: ChatListItemBoxProps) => {
8
- const {
9
- chat: {
10
- lastMessage: { sentAt },
11
- },
12
- } = props;
13
-
14
- const localizer = useLocalizer();
15
-
16
- return (
17
- <div className="wxchtf-chat-last-sent-at">
18
- {localizer.isToday(sentAt) ? localizer.timestamp(sentAt) : localizer.dateTime(sentAt)}
19
- </div>
20
- );
21
- },
22
- );
1
+ import { customize } from '../../customize';
2
+ import { useLocalizer } from '../../localizer';
3
+ import { ChatListItemBoxProps } from './ChatListItemBox';
4
+
5
+ export const ChatListItemLastMessageSentAt = customize(
6
+ 'ChatListItemLastMessageSentAt',
7
+ (props: ChatListItemBoxProps) => {
8
+ const {
9
+ chat: {
10
+ lastMessage: { sentAt },
11
+ },
12
+ } = props;
13
+
14
+ const localizer = useLocalizer();
15
+
16
+ return (
17
+ <div className="wxchtf-chat-last-sent-at">
18
+ {localizer.isToday(sentAt) ? localizer.timestamp(sentAt) : localizer.dateTime(sentAt)}
19
+ </div>
20
+ );
21
+ },
22
+ );
@@ -1,8 +1,8 @@
1
- import { customize } from '../../customize';
2
- import type { ChatListItemBoxProps } from './ChatListItemBox';
3
-
4
- export const ChatListItemName = customize('ChatListItemName', (props: ChatListItemBoxProps) => {
5
- const { chat } = props;
6
-
7
- return <div className="wxchtf-chat-name">{chat.name}</div>;
8
- });
1
+ import { customize } from '../../customize';
2
+ import type { ChatListItemBoxProps } from './ChatListItemBox';
3
+
4
+ export const ChatListItemName = customize('ChatListItemName', (props: ChatListItemBoxProps) => {
5
+ const { chat } = props;
6
+
7
+ return <div className="wxchtf-chat-name">{chat.name}</div>;
8
+ });
@@ -1,12 +1,12 @@
1
- import { customize } from '../../customize';
2
- import { ChatListItemBoxProps } from './ChatListItemBox';
3
-
4
- export const ChatListItemUnreadCount = customize('ChatListItemUnreadCount', (props: ChatListItemBoxProps) => {
5
- const { totalUnreadCount: unreadCount } = props.chat;
6
-
7
- if (unreadCount == null || unreadCount <= 0) {
8
- return null;
9
- }
10
-
11
- return <div className="wxchtf-unread-count">{unreadCount}</div>;
12
- });
1
+ import { customize } from '../../customize';
2
+ import { ChatListItemBoxProps } from './ChatListItemBox';
3
+
4
+ export const ChatListItemUnreadCount = customize('ChatListItemUnreadCount', (props: ChatListItemBoxProps) => {
5
+ const { totalUnreadCount: unreadCount } = props.chat;
6
+
7
+ if (unreadCount == null || unreadCount <= 0) {
8
+ return null;
9
+ }
10
+
11
+ return <div className="wxchtf-unread-count">{unreadCount}</div>;
12
+ });
@@ -1,9 +1,9 @@
1
- import { MessageBase } from '../../../core';
2
-
3
- export interface ChatListValue {
4
- id: string;
5
- name: string;
6
- lastMessage: MessageBase;
7
- totalUnreadCount?: number;
8
- lastReadMessageId?: string | null;
9
- }
1
+ import { MessageBase } from '../../../core';
2
+
3
+ export interface ChatListValue {
4
+ id: string;
5
+ name: string;
6
+ lastMessage: MessageBase;
7
+ totalUnreadCount?: number;
8
+ lastReadMessageId?: string | null;
9
+ }
@@ -1,32 +1,32 @@
1
- import { ChatList } from './ChatList';
2
- import { ChatListItemAvatar } from './ChatListItemAvatar';
3
- import { ChatListItemBox } from './ChatListItemBox';
4
- import { ChatListItemLastMessage } from './ChatListItemLastMessage';
5
- import { ChatListItemLastMessageAuthor } from './ChatListItemLastMessageAuthor';
6
- import { ChatListItemLastMessageContent } from './ChatListItemLastMessageContent';
7
- import { ChatListItemLastMessageSentAt } from './ChatListItemLastMessageSentAt';
8
- import { ChatListItemName } from './ChatListItemName';
9
- import { ChatListItemUnreadCount } from './ChatListItemUnreadCount';
10
-
11
- export * from './ChatList';
12
- export * from './ChatListItemAvatar';
13
- export * from './ChatListItemBox';
14
- export * from './ChatListItemLastMessage';
15
- export * from './ChatListItemLastMessageAuthor';
16
- export * from './ChatListItemLastMessageContent';
17
- export * from './ChatListItemLastMessageSentAt';
18
- export * from './ChatListItemName';
19
- export * from './ChatListItemUnreadCount';
20
- export * from './ChatListValue';
21
-
22
- export interface ChatListCustomizeValue {
23
- ChatList?: typeof ChatList.Component | null;
24
- ChatListItemAvatar?: typeof ChatListItemAvatar.Component | null;
25
- ChatListItemBox?: typeof ChatListItemBox.Component | null;
26
- ChatListItemLastMessage?: typeof ChatListItemLastMessage.Component | null;
27
- ChatListItemLastMessageAuthor?: typeof ChatListItemLastMessageAuthor.Component | null;
28
- ChatListItemLastMessageContent?: typeof ChatListItemLastMessageContent.Component | null;
29
- ChatListItemLastMessageSentAt?: typeof ChatListItemLastMessageSentAt.Component | null;
30
- ChatListItemName?: typeof ChatListItemName.Component | null;
31
- ChatListItemUnreadCount?: typeof ChatListItemUnreadCount.Component | null;
32
- }
1
+ import { ChatList } from './ChatList';
2
+ import { ChatListItemAvatar } from './ChatListItemAvatar';
3
+ import { ChatListItemBox } from './ChatListItemBox';
4
+ import { ChatListItemLastMessage } from './ChatListItemLastMessage';
5
+ import { ChatListItemLastMessageAuthor } from './ChatListItemLastMessageAuthor';
6
+ import { ChatListItemLastMessageContent } from './ChatListItemLastMessageContent';
7
+ import { ChatListItemLastMessageSentAt } from './ChatListItemLastMessageSentAt';
8
+ import { ChatListItemName } from './ChatListItemName';
9
+ import { ChatListItemUnreadCount } from './ChatListItemUnreadCount';
10
+
11
+ export * from './ChatList';
12
+ export * from './ChatListItemAvatar';
13
+ export * from './ChatListItemBox';
14
+ export * from './ChatListItemLastMessage';
15
+ export * from './ChatListItemLastMessageAuthor';
16
+ export * from './ChatListItemLastMessageContent';
17
+ export * from './ChatListItemLastMessageSentAt';
18
+ export * from './ChatListItemName';
19
+ export * from './ChatListItemUnreadCount';
20
+ export * from './ChatListValue';
21
+
22
+ export interface ChatListCustomizeValue {
23
+ ChatList?: typeof ChatList.Component | null;
24
+ ChatListItemAvatar?: typeof ChatListItemAvatar.Component | null;
25
+ ChatListItemBox?: typeof ChatListItemBox.Component | null;
26
+ ChatListItemLastMessage?: typeof ChatListItemLastMessage.Component | null;
27
+ ChatListItemLastMessageAuthor?: typeof ChatListItemLastMessageAuthor.Component | null;
28
+ ChatListItemLastMessageContent?: typeof ChatListItemLastMessageContent.Component | null;
29
+ ChatListItemLastMessageSentAt?: typeof ChatListItemLastMessageSentAt.Component | null;
30
+ ChatListItemName?: typeof ChatListItemName.Component | null;
31
+ ChatListItemUnreadCount?: typeof ChatListItemUnreadCount.Component | null;
32
+ }
@@ -1,48 +1,48 @@
1
- import { FC } from 'react';
2
- import { customize } from '../customize';
3
- import {
4
- SendOutlined,
5
- PaperClipOutlined,
6
- UserAddOutlined,
7
- UsergroupAddOutlined,
8
- UserDeleteOutlined,
9
- UsergroupDeleteOutlined,
10
- TeamOutlined,
11
- EditOutlined,
12
- CloseOutlined,
13
- EyeInvisibleOutlined,
14
- EyeOutlined,
15
- DeleteOutlined,
16
- DownloadOutlined,
17
- SettingOutlined,
18
- } from '@ant-design/icons';
19
-
20
- export type IconType = keyof typeof ICONS;
21
-
22
- export interface IconProps {
23
- type: IconType;
24
- }
25
-
26
- export const ICONS = {
27
- attach: PaperClipOutlined,
28
- send: SendOutlined,
29
- 'remove-member': UserDeleteOutlined,
30
- 'remove-member-delete-history': UsergroupDeleteOutlined,
31
- 'add-member': UserAddOutlined,
32
- 'add-member-with-history': UsergroupAddOutlined,
33
- members: TeamOutlined,
34
- edit: EditOutlined,
35
- close: CloseOutlined,
36
- chat: TeamOutlined,
37
- watch: EyeOutlined,
38
- unwatch: EyeInvisibleOutlined,
39
- 'delete-file': DeleteOutlined,
40
- 'open-file': DownloadOutlined,
41
- settings: SettingOutlined,
42
- };
43
-
44
- export const Icon = customize<FC<IconProps>>('Icon', (props) => {
45
- const { type } = props;
46
- const IconComponent = ICONS[type];
47
- return IconComponent ? <IconComponent /> : null;
48
- });
1
+ import { FC } from 'react';
2
+ import { customize } from '../customize';
3
+ import {
4
+ SendOutlined,
5
+ PaperClipOutlined,
6
+ UserAddOutlined,
7
+ UsergroupAddOutlined,
8
+ UserDeleteOutlined,
9
+ UsergroupDeleteOutlined,
10
+ TeamOutlined,
11
+ EditOutlined,
12
+ CloseOutlined,
13
+ EyeInvisibleOutlined,
14
+ EyeOutlined,
15
+ DeleteOutlined,
16
+ DownloadOutlined,
17
+ SettingOutlined,
18
+ } from '@ant-design/icons';
19
+
20
+ export type IconType = keyof typeof ICONS;
21
+
22
+ export interface IconProps {
23
+ type: IconType;
24
+ }
25
+
26
+ export const ICONS = {
27
+ attach: PaperClipOutlined,
28
+ send: SendOutlined,
29
+ 'remove-member': UserDeleteOutlined,
30
+ 'remove-member-delete-history': UsergroupDeleteOutlined,
31
+ 'add-member': UserAddOutlined,
32
+ 'add-member-with-history': UsergroupAddOutlined,
33
+ members: TeamOutlined,
34
+ edit: EditOutlined,
35
+ close: CloseOutlined,
36
+ chat: TeamOutlined,
37
+ watch: EyeOutlined,
38
+ unwatch: EyeInvisibleOutlined,
39
+ 'delete-file': DeleteOutlined,
40
+ 'open-file': DownloadOutlined,
41
+ settings: SettingOutlined,
42
+ };
43
+
44
+ export const Icon = customize<FC<IconProps>>('Icon', (props) => {
45
+ const { type } = props;
46
+ const IconComponent = ICONS[type];
47
+ return IconComponent ? <IconComponent /> : null;
48
+ });
@@ -1,20 +1,20 @@
1
- import { Skeleton } from 'antd';
2
- import { customize } from '../customize';
3
-
4
- export interface MessageSkeletonProps {
5
- count?: number;
6
- }
7
-
8
- export const MessageSkeleton = customize('MessageSkeleton', (props: MessageSkeletonProps) => {
9
- const { count = 1 } = props;
10
- return (
11
- <>
12
- {Array.from(Array(count)).map((_, index) => (
13
- <div className="wxchtf-message-skeleton" key={index}>
14
- <Skeleton.Avatar className="wxchtf-avatar" active />
15
- <Skeleton.Button active className="wxchtf-content" />
16
- </div>
17
- ))}
18
- </>
19
- );
20
- });
1
+ import { Skeleton } from 'antd';
2
+ import { customize } from '../customize';
3
+
4
+ export interface MessageSkeletonProps {
5
+ count?: number;
6
+ }
7
+
8
+ export const MessageSkeleton = customize('MessageSkeleton', (props: MessageSkeletonProps) => {
9
+ const { count = 1 } = props;
10
+ return (
11
+ <>
12
+ {Array.from(Array(count)).map((_, index) => (
13
+ <div className="wxchtf-message-skeleton" key={index}>
14
+ <Skeleton.Avatar className="wxchtf-avatar" active />
15
+ <Skeleton.Button active className="wxchtf-content" />
16
+ </div>
17
+ ))}
18
+ </>
19
+ );
20
+ });
@@ -1,14 +1,14 @@
1
- import { Avatar } from './Avatar';
2
- import { Icon } from './Icon';
3
- import { MessageSkeleton } from './MessageSkeleton';
4
-
5
- export * from './Avatar';
6
- export * from './Icon';
7
- export * from './MessageSkeleton';
8
- export * from './ChatList';
9
-
10
- export interface CommonCustomizeValue {
11
- Avatar?: typeof Avatar.Component | null;
12
- Icon?: typeof Icon.Component | null;
13
- MessageSkeleton?: typeof MessageSkeleton.Component | null;
14
- }
1
+ import { Avatar } from './Avatar';
2
+ import { Icon } from './Icon';
3
+ import { MessageSkeleton } from './MessageSkeleton';
4
+
5
+ export * from './Avatar';
6
+ export * from './Icon';
7
+ export * from './MessageSkeleton';
8
+ export * from './ChatList';
9
+
10
+ export interface CommonCustomizeValue {
11
+ Avatar?: typeof Avatar.Component | null;
12
+ Icon?: typeof Icon.Component | null;
13
+ MessageSkeleton?: typeof MessageSkeleton.Component | null;
14
+ }
@@ -1,51 +1,51 @@
1
- import React, { FC, useContext } from 'react';
2
-
3
- export type Customizable<TComponent extends React.ComponentType<any>> = TComponent & {
4
- Component: TComponent;
5
- key: string;
6
- };
7
-
8
- export const CustomizeContext = React.createContext<Record<string, any>>(null!);
9
-
10
- export function useCustomizeContext<TValue>() {
11
- return useContext(CustomizeContext) as TValue;
12
- }
13
-
14
- function useCustom<TComponent extends React.ComponentType>(key: string): TComponent | undefined | null {
15
- const value = useContext(CustomizeContext);
16
- return value ? (value[key] as TComponent | null | undefined) : undefined;
17
- }
18
-
19
- export function useCustomize<TCustom extends Customizable<React.ComponentType<any>>>(custom: TCustom) {
20
- const Custom = useCustom<TCustom['Component']>(custom.key);
21
-
22
- if (Custom == null) {
23
- return null;
24
- }
25
-
26
- return Custom ?? custom.Component;
27
- }
28
-
29
- export function customize<TComponent extends React.ComponentType<any>>(
30
- key: string,
31
- Component: TComponent,
32
- ): TComponent extends React.ComponentType<infer X> ? Customizable<React.ComponentType<X>> : never {
33
- const Result: FC<any> = React.forwardRef<TComponent, any>((props: any, forwardRef) => {
34
- const Custom = useCustom(key);
35
-
36
- if (Custom === null) {
37
- return null;
38
- }
39
-
40
- if (Custom) {
41
- return <Custom {...props} ref={forwardRef} />;
42
- }
43
-
44
- return <Component {...props} ref={forwardRef} />;
45
- });
46
-
47
- Component.displayName = Component.displayName || key;
48
- Result.displayName = 'Customizable.' + Component.displayName;
49
-
50
- return Object.assign(Result, { key, Component }) as any;
51
- }
1
+ import React, { FC, useContext } from 'react';
2
+
3
+ export type Customizable<TComponent extends React.ComponentType<any>> = TComponent & {
4
+ Component: TComponent;
5
+ key: string;
6
+ };
7
+
8
+ export const CustomizeContext = React.createContext<Record<string, any>>(null!);
9
+
10
+ export function useCustomizeContext<TValue>() {
11
+ return useContext(CustomizeContext) as TValue;
12
+ }
13
+
14
+ function useCustom<TComponent extends React.ComponentType>(key: string): TComponent | undefined | null {
15
+ const value = useContext(CustomizeContext);
16
+ return value ? (value[key] as TComponent | null | undefined) : undefined;
17
+ }
18
+
19
+ export function useCustomize<TCustom extends Customizable<React.ComponentType<any>>>(custom: TCustom) {
20
+ const Custom = useCustom<TCustom['Component']>(custom.key);
21
+
22
+ if (Custom == null) {
23
+ return null;
24
+ }
25
+
26
+ return Custom ?? custom.Component;
27
+ }
28
+
29
+ export function customize<TComponent extends React.ComponentType<any>>(
30
+ key: string,
31
+ Component: TComponent,
32
+ ): TComponent extends React.ComponentType<infer X> ? Customizable<React.ComponentType<X>> : never {
33
+ const Result: FC<any> = React.forwardRef<TComponent, any>((props: any, forwardRef) => {
34
+ const Custom = useCustom(key);
35
+
36
+ if (Custom === null) {
37
+ return null;
38
+ }
39
+
40
+ if (Custom) {
41
+ return <Custom {...props} ref={forwardRef} />;
42
+ }
43
+
44
+ return <Component {...props} ref={forwardRef} />;
45
+ });
46
+
47
+ Component.displayName = Component.displayName || key;
48
+ Result.displayName = 'Customizable.' + Component.displayName;
49
+
50
+ return Object.assign(Result, { key, Component }) as any;
51
+ }
package/src/ui/index.ts CHANGED
@@ -1,11 +1,11 @@
1
- import '../styles/index.scss';
2
-
3
- export * from './color';
4
- export * from './customize';
5
- export * from './Chatify';
6
- export * from './localizer';
7
- export * from './Chat';
8
- export * from './ChatGroup';
9
- export * from './Conversation';
10
- export * from './Thread';
11
- export * from './common';
1
+ import '../styles/index.scss';
2
+
3
+ export * from './color';
4
+ export * from './customize';
5
+ export * from './Chatify';
6
+ export * from './localizer';
7
+ export * from './Chat';
8
+ export * from './ChatGroup';
9
+ export * from './Conversation';
10
+ export * from './Thread';
11
+ export * from './common';