@webinex/chatify 1.0.0-rc2 → 1.0.0-rc3

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 (267) hide show
  1. package/dist/css/chatify.css +183 -141
  2. package/dist/esm/index.js +1 -1
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/types/core/action.d.ts +110 -42
  5. package/dist/esm/types/core/client.d.ts +2 -1
  6. package/dist/esm/types/core/index.d.ts +11 -8
  7. package/dist/esm/types/core/models.d.ts +10 -4
  8. package/dist/esm/types/core/state.d.ts +36 -7
  9. package/dist/esm/types/core/useAddChatMutation.d.ts +2 -0
  10. package/dist/esm/types/core/useAddMemberMutation.d.ts +2 -0
  11. package/dist/esm/types/core/useFetchNextMutation.d.ts +3 -0
  12. package/dist/esm/types/core/useGetAccountsQuery.d.ts +1 -0
  13. package/dist/esm/types/core/useGetChatListQuery.d.ts +1 -0
  14. package/dist/{cjs/types/core/useChat.d.ts → esm/types/core/useGetChatQuery.d.ts} +1 -1
  15. package/dist/esm/types/core/useGetMessagesQuery.d.ts +4 -0
  16. package/dist/esm/types/core/useRemoveMemberMutation.d.ts +2 -0
  17. package/dist/esm/types/core/useSendMutation.d.ts +2 -0
  18. package/dist/esm/types/core/useUpdateChatNameMutation.d.ts +2 -0
  19. package/dist/esm/types/ui/AddChatButton.d.ts +2 -2
  20. package/dist/esm/types/ui/Avatar.d.ts +2 -2
  21. package/dist/esm/types/ui/ChatList/ChatList.d.ts +2 -0
  22. package/dist/esm/types/ui/ChatList/ChatListItemBox.d.ts +6 -0
  23. package/dist/esm/types/ui/ChatList/ChatListItemLastMessage.d.ts +3 -0
  24. package/dist/esm/types/ui/ChatList/ChatListItemLastMessageAuthor.d.ts +3 -0
  25. package/dist/esm/types/ui/ChatList/ChatListItemLastMessageContent.d.ts +3 -0
  26. package/dist/esm/types/ui/ChatList/ChatListItemName.d.ts +3 -0
  27. package/dist/esm/types/ui/ChatList/ChatListItemUnreadCount.d.ts +3 -0
  28. package/dist/esm/types/ui/ChatList/index.d.ts +7 -0
  29. package/dist/esm/types/ui/ChatName.d.ts +2 -2
  30. package/dist/esm/types/ui/ChatPanel/ChatBody.d.ts +5 -0
  31. package/dist/esm/types/ui/ChatPanel/ChatHeader.d.ts +5 -0
  32. package/dist/esm/types/ui/ChatPanel/ChatHeaderMembers.d.ts +5 -0
  33. package/dist/esm/types/ui/ChatPanel/ChatHeaderName.d.ts +5 -0
  34. package/dist/esm/types/ui/ChatPanel/ChatMembersButton.d.ts +5 -0
  35. package/dist/esm/types/ui/ChatPanel/ChatMembersPanel.d.ts +5 -0
  36. package/dist/esm/types/ui/ChatPanel/ChatPanel.d.ts +5 -0
  37. package/dist/esm/types/ui/ChatPanel/index.d.ts +6 -0
  38. package/dist/esm/types/ui/Chatify.d.ts +45 -23
  39. package/dist/esm/types/ui/CreateChatPanel/CreateChatForm.d.ts +11 -0
  40. package/dist/esm/types/ui/CreateChatPanel/CreateChatMemberInput.d.ts +5 -0
  41. package/dist/esm/types/ui/CreateChatPanel/CreateChatNameInput.d.ts +5 -0
  42. package/dist/esm/types/ui/CreateChatPanel/CreateChatPanel.d.ts +2 -0
  43. package/dist/esm/types/ui/CreateChatPanel/index.d.ts +4 -0
  44. package/dist/esm/types/ui/Icon.d.ts +13 -4
  45. package/dist/esm/types/ui/InputBox/InputBox.d.ts +2 -0
  46. package/dist/esm/types/ui/InputBox/InputFilesBox.d.ts +2 -0
  47. package/dist/esm/types/ui/InputBox/InputSubmitButtonBox.d.ts +5 -0
  48. package/dist/esm/types/ui/InputBox/InputTextBox.d.ts +7 -0
  49. package/dist/esm/types/ui/InputBox/index.d.ts +4 -0
  50. package/dist/esm/types/ui/Layout/Aside.d.ts +2 -0
  51. package/dist/esm/types/ui/Layout/Body.d.ts +2 -0
  52. package/dist/esm/types/ui/Layout/Footer.d.ts +2 -0
  53. package/dist/esm/types/ui/Layout/Header.d.ts +2 -0
  54. package/dist/esm/types/ui/Layout/Main.d.ts +2 -0
  55. package/dist/esm/types/ui/Layout/index.d.ts +5 -0
  56. package/dist/esm/types/ui/Message/MessageAuthor.d.ts +3 -0
  57. package/dist/esm/types/ui/Message/MessageBox.d.ts +6 -0
  58. package/dist/esm/types/ui/Message/MessageContent.d.ts +3 -0
  59. package/dist/esm/types/ui/Message/MessageInfoBox.d.ts +3 -0
  60. package/dist/esm/types/ui/Message/MessageRow.d.ts +6 -0
  61. package/dist/esm/types/ui/Message/MessageText.d.ts +3 -0
  62. package/dist/esm/types/ui/Message/index.d.ts +6 -0
  63. package/dist/esm/types/ui/MessageReadObserver.d.ts +6 -0
  64. package/dist/esm/types/ui/Next.d.ts +4 -0
  65. package/dist/esm/types/ui/SendingMessage/SendingMessageBox.d.ts +7 -0
  66. package/dist/esm/types/ui/SendingMessage/SendingMessageContent.d.ts +3 -0
  67. package/dist/esm/types/ui/SendingMessage/SendingMessageInfoBox.d.ts +3 -0
  68. package/dist/esm/types/ui/SendingMessage/SendingMessageText.d.ts +3 -0
  69. package/dist/esm/types/ui/SendingMessage/index.d.ts +4 -0
  70. package/dist/esm/types/ui/SystemMessage/SystemMessageBox.d.ts +6 -0
  71. package/dist/esm/types/ui/SystemMessage/SystemMessageRow.d.ts +9 -0
  72. package/dist/esm/types/ui/SystemMessage/index.d.ts +2 -0
  73. package/dist/esm/types/{util → ui}/customize.d.ts +2 -3
  74. package/dist/esm/types/ui/index.d.ts +6 -6
  75. package/dist/esm/types/ui/localizer.d.ts +5 -0
  76. package/dist/esm/types/util/index.d.ts +0 -1
  77. package/dist/index.d.ts +353 -142
  78. package/package.json +3 -1
  79. package/src/core/action.tsx +319 -233
  80. package/src/core/client.ts +6 -0
  81. package/src/core/index.ts +11 -8
  82. package/src/core/models.tsx +11 -4
  83. package/src/core/reducer.tsx +2 -1
  84. package/src/core/state.ts +68 -14
  85. package/src/core/useAddChatMutation.tsx +22 -0
  86. package/src/core/useAddMemberMutation.tsx +25 -0
  87. package/src/core/useFetchNextMutation.tsx +28 -0
  88. package/src/core/useGetAccountsQuery.tsx +33 -0
  89. package/src/core/useGetChatListQuery.tsx +33 -0
  90. package/src/core/useGetChatQuery.tsx +34 -0
  91. package/src/core/useGetMessagesQuery.tsx +35 -0
  92. package/src/core/useReadMonitor.tsx +8 -7
  93. package/src/core/useRemoveMemberMutation.tsx +23 -0
  94. package/src/core/useSendMutation.tsx +24 -0
  95. package/src/core/useSignalRMonitor.tsx +19 -5
  96. package/src/core/useUpdateChatNameMutation.tsx +23 -0
  97. package/src/{ui/styles → styles}/aside.scss +1 -1
  98. package/src/styles/chat.scss +222 -0
  99. package/src/styles/index.scss +79 -0
  100. package/src/styles/settings.scss +5 -0
  101. package/src/ui/AddChatButton.tsx +4 -8
  102. package/src/ui/Avatar.tsx +1 -1
  103. package/src/ui/ChatList/ChatList.tsx +42 -0
  104. package/src/ui/ChatList/ChatListItemBox.tsx +22 -0
  105. package/src/ui/ChatList/ChatListItemLastMessage.tsx +13 -0
  106. package/src/ui/ChatList/ChatListItemLastMessageAuthor.tsx +20 -0
  107. package/src/ui/ChatList/ChatListItemLastMessageContent.tsx +21 -0
  108. package/src/ui/ChatList/ChatListItemName.tsx +13 -0
  109. package/src/ui/ChatList/ChatListItemUnreadCount.tsx +12 -0
  110. package/src/ui/ChatList/index.ts +7 -0
  111. package/src/ui/ChatName.tsx +3 -8
  112. package/src/ui/ChatPanel/ChatBody.tsx +44 -0
  113. package/src/ui/ChatPanel/ChatHeader.tsx +33 -0
  114. package/src/ui/{ChatHeaderMembers.tsx → ChatPanel/ChatHeaderMembers.tsx} +5 -9
  115. package/src/ui/ChatPanel/ChatHeaderName.tsx +67 -0
  116. package/src/ui/ChatPanel/ChatMembersButton.tsx +21 -0
  117. package/src/ui/ChatPanel/ChatMembersPanel.tsx +117 -0
  118. package/src/ui/ChatPanel/ChatPanel.tsx +27 -0
  119. package/src/ui/ChatPanel/index.ts +6 -0
  120. package/src/ui/Chatify.tsx +78 -36
  121. package/src/ui/CreateChatPanel/CreateChatForm.tsx +36 -0
  122. package/src/ui/CreateChatPanel/CreateChatMemberInput.tsx +66 -0
  123. package/src/ui/CreateChatPanel/CreateChatNameInput.tsx +25 -0
  124. package/src/ui/CreateChatPanel/CreateChatPanel.tsx +33 -0
  125. package/src/ui/CreateChatPanel/index.ts +4 -0
  126. package/src/ui/Icon.tsx +18 -6
  127. package/src/ui/InputBox/InputBox.tsx +38 -0
  128. package/src/ui/InputBox/InputFilesBox.tsx +9 -0
  129. package/src/ui/InputBox/InputSubmitButtonBox.tsx +17 -0
  130. package/src/ui/InputBox/InputTextBox.tsx +50 -0
  131. package/src/ui/InputBox/index.ts +4 -0
  132. package/src/ui/Layout/Aside.tsx +10 -0
  133. package/src/ui/Layout/Body.tsx +10 -0
  134. package/src/ui/Layout/Footer.tsx +3 -0
  135. package/src/ui/Layout/Header.tsx +10 -0
  136. package/src/ui/Layout/Main.tsx +15 -0
  137. package/src/ui/Layout/index.ts +5 -0
  138. package/src/ui/Message/MessageAuthor.tsx +13 -0
  139. package/src/ui/Message/MessageBox.tsx +20 -0
  140. package/src/ui/Message/MessageContent.tsx +13 -0
  141. package/src/ui/Message/MessageInfoBox.tsx +25 -0
  142. package/src/ui/Message/MessageRow.tsx +24 -0
  143. package/src/ui/Message/MessageText.tsx +7 -0
  144. package/src/ui/Message/index.ts +6 -0
  145. package/src/ui/MessageReadObserver.tsx +45 -0
  146. package/src/ui/{LoadMore.tsx → Next.tsx} +16 -8
  147. package/src/ui/SendingMessage/SendingMessageBox.tsx +16 -0
  148. package/src/ui/SendingMessage/SendingMessageContent.tsx +13 -0
  149. package/src/ui/SendingMessage/SendingMessageInfoBox.tsx +13 -0
  150. package/src/ui/SendingMessage/SendingMessageText.tsx +7 -0
  151. package/src/ui/SendingMessage/index.ts +4 -0
  152. package/src/ui/SystemMessage/SystemMessageBox.tsx +20 -0
  153. package/src/ui/SystemMessage/SystemMessageRow.tsx +43 -0
  154. package/src/ui/SystemMessage/index.ts +2 -0
  155. package/src/{util → ui}/customize.tsx +5 -5
  156. package/src/ui/index.ts +6 -6
  157. package/src/ui/localizer.tsx +12 -0
  158. package/src/util/index.ts +0 -1
  159. package/dist/cjs/index.js +0 -2
  160. package/dist/cjs/index.js.map +0 -1
  161. package/dist/cjs/types/ChatifyContext.d.ts +0 -11
  162. package/dist/cjs/types/core/action.d.ts +0 -76
  163. package/dist/cjs/types/core/client.d.ts +0 -35
  164. package/dist/cjs/types/core/index.d.ts +0 -14
  165. package/dist/cjs/types/core/models.d.ts +0 -64
  166. package/dist/cjs/types/core/reducer.d.ts +0 -11
  167. package/dist/cjs/types/core/state.d.ts +0 -25
  168. package/dist/cjs/types/core/useAccounts.d.ts +0 -1
  169. package/dist/cjs/types/core/useAddChat.d.ts +0 -2
  170. package/dist/cjs/types/core/useAddMember.d.ts +0 -2
  171. package/dist/cjs/types/core/useAddMessage.d.ts +0 -5
  172. package/dist/cjs/types/core/useChatList.d.ts +0 -1
  173. package/dist/cjs/types/core/useLoadMore.d.ts +0 -3
  174. package/dist/cjs/types/core/useMessages.d.ts +0 -15
  175. package/dist/cjs/types/core/useMutation.d.ts +0 -12
  176. package/dist/cjs/types/core/useQuery.d.ts +0 -7
  177. package/dist/cjs/types/core/useReadMonitor.d.ts +0 -1
  178. package/dist/cjs/types/core/useRemoveMember.d.ts +0 -2
  179. package/dist/cjs/types/core/useSignalRMonitor.d.ts +0 -2
  180. package/dist/cjs/types/index.d.ts +0 -3
  181. package/dist/cjs/types/ui/AddChat.d.ts +0 -1
  182. package/dist/cjs/types/ui/AddChatButton.d.ts +0 -2
  183. package/dist/cjs/types/ui/Aside.d.ts +0 -1
  184. package/dist/cjs/types/ui/Avatar.d.ts +0 -6
  185. package/dist/cjs/types/ui/Chat.d.ts +0 -4
  186. package/dist/cjs/types/ui/ChatBody.d.ts +0 -4
  187. package/dist/cjs/types/ui/ChatHeader.d.ts +0 -4
  188. package/dist/cjs/types/ui/ChatHeaderMembers.d.ts +0 -5
  189. package/dist/cjs/types/ui/ChatHeaderSettingsButton.d.ts +0 -5
  190. package/dist/cjs/types/ui/ChatListItem.d.ts +0 -11
  191. package/dist/cjs/types/ui/ChatName.d.ts +0 -5
  192. package/dist/cjs/types/ui/ChatSettings.d.ts +0 -1
  193. package/dist/cjs/types/ui/Chatify.d.ts +0 -49
  194. package/dist/cjs/types/ui/Footer.d.ts +0 -2
  195. package/dist/cjs/types/ui/Header.d.ts +0 -2
  196. package/dist/cjs/types/ui/Icon.d.ts +0 -7
  197. package/dist/cjs/types/ui/InputForm.d.ts +0 -1
  198. package/dist/cjs/types/ui/LoadMore.d.ts +0 -4
  199. package/dist/cjs/types/ui/Main.d.ts +0 -1
  200. package/dist/cjs/types/ui/Message.d.ts +0 -18
  201. package/dist/cjs/types/ui/MessageSkeleton.d.ts +0 -4
  202. package/dist/cjs/types/ui/SendingMessage.d.ts +0 -10
  203. package/dist/cjs/types/ui/SystemMessage.d.ts +0 -8
  204. package/dist/cjs/types/ui/index.d.ts +0 -11
  205. package/dist/cjs/types/ui/localizer.d.ts +0 -32
  206. package/dist/cjs/types/util/customize.d.ts +0 -12
  207. package/dist/cjs/types/util/index.d.ts +0 -3
  208. package/dist/cjs/types/util/uniqBy.d.ts +0 -1
  209. package/dist/cjs/types/util/uniqId.d.ts +0 -1
  210. package/dist/esm/types/core/useAccounts.d.ts +0 -1
  211. package/dist/esm/types/core/useAddChat.d.ts +0 -2
  212. package/dist/esm/types/core/useAddMember.d.ts +0 -2
  213. package/dist/esm/types/core/useAddMessage.d.ts +0 -5
  214. package/dist/esm/types/core/useChat.d.ts +0 -3
  215. package/dist/esm/types/core/useChatList.d.ts +0 -1
  216. package/dist/esm/types/core/useLoadMore.d.ts +0 -3
  217. package/dist/esm/types/core/useMessages.d.ts +0 -15
  218. package/dist/esm/types/core/useMutation.d.ts +0 -12
  219. package/dist/esm/types/core/useQuery.d.ts +0 -7
  220. package/dist/esm/types/core/useRemoveMember.d.ts +0 -2
  221. package/dist/esm/types/ui/AddChat.d.ts +0 -1
  222. package/dist/esm/types/ui/Aside.d.ts +0 -1
  223. package/dist/esm/types/ui/Chat.d.ts +0 -4
  224. package/dist/esm/types/ui/ChatBody.d.ts +0 -4
  225. package/dist/esm/types/ui/ChatHeader.d.ts +0 -4
  226. package/dist/esm/types/ui/ChatHeaderMembers.d.ts +0 -5
  227. package/dist/esm/types/ui/ChatHeaderSettingsButton.d.ts +0 -5
  228. package/dist/esm/types/ui/ChatListItem.d.ts +0 -11
  229. package/dist/esm/types/ui/ChatSettings.d.ts +0 -1
  230. package/dist/esm/types/ui/Footer.d.ts +0 -2
  231. package/dist/esm/types/ui/Header.d.ts +0 -2
  232. package/dist/esm/types/ui/InputForm.d.ts +0 -1
  233. package/dist/esm/types/ui/LoadMore.d.ts +0 -4
  234. package/dist/esm/types/ui/Main.d.ts +0 -1
  235. package/dist/esm/types/ui/Message.d.ts +0 -18
  236. package/dist/esm/types/ui/SendingMessage.d.ts +0 -10
  237. package/dist/esm/types/ui/SystemMessage.d.ts +0 -8
  238. package/src/core/useAccounts.tsx +0 -11
  239. package/src/core/useAddChat.tsx +0 -12
  240. package/src/core/useAddMember.tsx +0 -12
  241. package/src/core/useAddMessage.tsx +0 -40
  242. package/src/core/useChat.tsx +0 -12
  243. package/src/core/useChatList.tsx +0 -10
  244. package/src/core/useLoadMore.tsx +0 -42
  245. package/src/core/useMessages.tsx +0 -23
  246. package/src/core/useMutation.tsx +0 -48
  247. package/src/core/useQuery.tsx +0 -45
  248. package/src/core/useRemoveMember.tsx +0 -12
  249. package/src/ui/AddChat.tsx +0 -55
  250. package/src/ui/Aside.tsx +0 -41
  251. package/src/ui/Chat.tsx +0 -26
  252. package/src/ui/ChatBody.tsx +0 -43
  253. package/src/ui/ChatHeader.tsx +0 -33
  254. package/src/ui/ChatHeaderSettingsButton.tsx +0 -26
  255. package/src/ui/ChatListItem.tsx +0 -101
  256. package/src/ui/ChatSettings.tsx +0 -59
  257. package/src/ui/Footer.tsx +0 -7
  258. package/src/ui/Header.tsx +0 -14
  259. package/src/ui/InputForm.tsx +0 -51
  260. package/src/ui/Main.tsx +0 -16
  261. package/src/ui/Message.tsx +0 -118
  262. package/src/ui/SendingMessage.tsx +0 -50
  263. package/src/ui/SystemMessage.tsx +0 -32
  264. package/src/ui/styles/index.scss +0 -248
  265. /package/src/{ui/styles → styles}/keyframes.scss +0 -0
  266. /package/src/{ui/styles → styles}/mixins.scss +0 -0
  267. /package/src/{ui/styles → styles}/variables.scss +0 -0
@@ -1,18 +0,0 @@
1
- import { FC, Ref, RefObject } from 'react';
2
- import { Message } from '../core';
3
- export interface MessageBoxProps {
4
- message: Message;
5
- }
6
- export interface MessageRowProps extends MessageBoxProps {
7
- containerRef?: Ref<HTMLDivElement>;
8
- }
9
- export declare const MessageAuthor: import("../util").Customizable<FC<MessageBoxProps>, string>;
10
- export declare const MessageText: import("../util").Customizable<FC<MessageBoxProps>, string>;
11
- export declare const MessageInfoBox: import("../util").Customizable<FC<MessageBoxProps>, string>;
12
- export declare const MessageContent: import("../util").Customizable<FC<MessageBoxProps>, string>;
13
- export declare const MessageRow: import("../util").Customizable<FC<MessageRowProps>, string>;
14
- export declare const MessageBox: import("../util").Customizable<FC<MessageBoxProps>, string>;
15
- export interface MessageReadObserverProps extends MessageBoxProps {
16
- messageRef: RefObject<HTMLDivElement | null>;
17
- }
18
- export declare const MessageReadObserver: import("../util").Customizable<FC<MessageReadObserverProps>, string>;
@@ -1,4 +0,0 @@
1
- export interface MessageSkeletonProps {
2
- count?: number;
3
- }
4
- export declare function MessageSkeleton(props: MessageSkeletonProps): import("react/jsx-runtime").JSX.Element;
@@ -1,10 +0,0 @@
1
- import { FC } from 'react';
2
- import { File } from '../core';
3
- export interface SendingMessageProps {
4
- text: string;
5
- files: File[];
6
- }
7
- export declare const SendingMessageText: import("../util").Customizable<FC<SendingMessageProps>, string>;
8
- export declare const SendingMessageInfoBox: import("../util").Customizable<FC<SendingMessageProps>, string>;
9
- export declare const SendingMessageContent: import("../util").Customizable<FC<SendingMessageProps>, string>;
10
- export declare const SendingMessage: import("../util").Customizable<FC<SendingMessageProps>, string>;
@@ -1,8 +0,0 @@
1
- import { FC } from 'react';
2
- import { Localizer } from './localizer';
3
- export interface SystemMessageProps {
4
- text: string;
5
- sentAt: string;
6
- }
7
- export declare function formatSystemMessage(localizer: Localizer, text: string): React.ReactNode;
8
- export declare const SystemMessage: import("../util").Customizable<FC<SystemMessageProps>, string>;
@@ -1,11 +0,0 @@
1
- export * from './Chatify';
2
- export * from './Avatar';
3
- export * from './localizer';
4
- export * from './AddChatButton';
5
- export * from './Header';
6
- export * from './ChatHeader';
7
- export * from './ChatHeaderMembers';
8
- export * from './ChatListItem';
9
- export * from './Message';
10
- export * from './SystemMessage';
11
- export * from './Icon';
@@ -1,32 +0,0 @@
1
- import React from 'react';
2
- export interface Localizer {
3
- timestamp: (value: string) => string;
4
- system: {
5
- chatCreated: () => string;
6
- memberAdded: () => string;
7
- };
8
- message: {
9
- read: () => React.ReactNode;
10
- reading: () => React.ReactNode;
11
- sending: () => React.ReactNode;
12
- };
13
- addChat: {
14
- title: () => React.ReactNode;
15
- name: {
16
- label: () => React.ReactNode;
17
- required: () => string;
18
- max250: () => string;
19
- };
20
- members: {
21
- label: () => React.ReactNode;
22
- required: () => string;
23
- };
24
- submitBtn: () => React.ReactNode;
25
- };
26
- input: {
27
- placeholder: () => string;
28
- };
29
- }
30
- export declare const LocalizerContext: React.Context<Localizer>;
31
- export declare function useLocalizer(): Localizer;
32
- export declare const defaultLocalizer: Localizer;
@@ -1,12 +0,0 @@
1
- import React, { PropsWithChildren } from 'react';
2
- export type Customizable<TComponent extends React.ComponentType<any>, TKey extends string> = TComponent & {
3
- Component: TComponent;
4
- key: TKey;
5
- };
6
- export interface CustomizeProviderValue {
7
- [key: string]: React.ComponentType<any> | null;
8
- }
9
- export declare function CustomizeProvider(props: PropsWithChildren<{
10
- value: CustomizeProviderValue;
11
- }>): import("react/jsx-runtime").JSX.Element;
12
- export declare function customize<TComponent extends React.ComponentType<any>, TKey extends string>(key: TKey, Component: TComponent): Customizable<TComponent, TKey>;
@@ -1,3 +0,0 @@
1
- export * from './uniqBy';
2
- export * from './uniqId';
3
- export * from './customize';
@@ -1 +0,0 @@
1
- export declare function uniqBy<T, TKey extends string | number | symbol>(items: T[], selector: (x: T) => TKey): T[];
@@ -1 +0,0 @@
1
- export declare function uniqId(): string;
@@ -1 +0,0 @@
1
- export declare function useAccounts(): import("./state").QueryState<import("./models").Account[]>;
@@ -1,2 +0,0 @@
1
- import { AddChatRequest } from './models';
2
- export declare function useAddChat(): readonly [(args: AddChatRequest) => void, import("./state").MutationState];
@@ -1,2 +0,0 @@
1
- import { AddMemberRequest } from './models';
2
- export declare function useAddMember(): readonly [(args: AddMemberRequest) => void, import("./state").MutationState];
@@ -1,5 +0,0 @@
1
- import { SendMessageRequest } from './models';
2
- export interface UseAddMessageArgs {
3
- chatId: string;
4
- }
5
- export declare function useAddMessage(args: UseAddMessageArgs): readonly [(args: Omit<SendMessageRequest, "chatId">) => void, import("./state").MutationState];
@@ -1,3 +0,0 @@
1
- export declare function useChat(args: {
2
- chatId: string;
3
- }): import("./state").QueryState<import("./models").Chat>;
@@ -1 +0,0 @@
1
- export declare function useChatList(): import("./state").QueryState<import("./models").ChatListItem[]>;
@@ -1,3 +0,0 @@
1
- export declare function useLoadMore({ chatId }: {
2
- chatId: string;
3
- }): readonly [(args: void) => void, import("./state").MutationState];
@@ -1,15 +0,0 @@
1
- import { File, Message } from './models';
2
- import { QueryState } from './state';
3
- export type MessageState = ({
4
- type: 'message';
5
- } & Message) | {
6
- type: 'more';
7
- } | {
8
- type: 'sending';
9
- text: string;
10
- files: File[];
11
- requestId: string;
12
- };
13
- export declare function useMessages(args: {
14
- chatId: string;
15
- }): QueryState<MessageState[]>;
@@ -1,12 +0,0 @@
1
- import { MutationState, State } from './state';
2
- export interface MutationApi<TResult> {
3
- promise: Promise<TResult>;
4
- state: State;
5
- updateState: (mutation: (state: State) => State) => void;
6
- }
7
- export interface UseMutationArgs<TResult = unknown, TArgs = void> {
8
- key: string;
9
- queryFn: (args: TArgs) => Promise<TResult>;
10
- onQueryStarted?: (args: TArgs, api: MutationApi<TResult>) => void;
11
- }
12
- export declare function useMutation<TResult = unknown, TArgs = void>(args: UseMutationArgs<TResult, TArgs>): readonly [(args: TArgs) => void, MutationState];
@@ -1,7 +0,0 @@
1
- import { QueryState } from './state';
2
- interface UseQueryArgs<TData> {
3
- key: string;
4
- queryFn: () => Promise<TData>;
5
- }
6
- export declare function useQuery<TData>(args: UseQueryArgs<TData>): QueryState<TData>;
7
- export {};
@@ -1,2 +0,0 @@
1
- import { RemoveMemberRequest } from './models';
2
- export declare function useRemoveMember(): readonly [(args: RemoveMemberRequest) => void, import("./state").MutationState];
@@ -1 +0,0 @@
1
- export declare function AddChat(): import("react/jsx-runtime").JSX.Element;
@@ -1 +0,0 @@
1
- export declare function Aside(): import("react/jsx-runtime").JSX.Element;
@@ -1,4 +0,0 @@
1
- export interface ChatProps {
2
- id: string;
3
- }
4
- export declare function Chat(props: ChatProps): import("react/jsx-runtime").JSX.Element;
@@ -1,4 +0,0 @@
1
- export interface ChatBodyProps {
2
- id: string;
3
- }
4
- export declare function ChatBody(props: ChatBodyProps): import("react/jsx-runtime").JSX.Element;
@@ -1,4 +0,0 @@
1
- export interface ChatHeaderProps {
2
- id: string;
3
- }
4
- export declare function ChatHeader(props: ChatHeaderProps): import("react/jsx-runtime").JSX.Element;
@@ -1,5 +0,0 @@
1
- import { FC } from 'react';
2
- export interface ChatHeaderMembersProps {
3
- id: string;
4
- }
5
- export declare const ChatHeaderMembers: import("../util").Customizable<FC<ChatHeaderMembersProps>, "ChatHeaderMembers">;
@@ -1,5 +0,0 @@
1
- import { FC } from 'react';
2
- export interface ChatSettingsButtonProps {
3
- id: string;
4
- }
5
- export declare const ChatSettingsButton: import("../util").Customizable<FC<ChatSettingsButtonProps>, "ChatSettingsButton">;
@@ -1,11 +0,0 @@
1
- import { ChatListItem as ChatListItemModel } from '../core';
2
- import { FC } from 'react';
3
- export interface ChatListItemBoxProps {
4
- chat: ChatListItemModel;
5
- }
6
- export declare const ChatListItemName: import("../util").Customizable<FC<ChatListItemBoxProps>, "ChatListItemName">;
7
- export declare const ChatListItemUnreadCount: import("../util").Customizable<FC<ChatListItemBoxProps>, "ChatListItemUnreadCount">;
8
- export declare const ChatListItemLastMessage: import("../util").Customizable<FC<ChatListItemBoxProps>, "ChatListItemLastMessage">;
9
- export declare const ChatListItemLastMessageAuthor: import("../util").Customizable<FC<ChatListItemBoxProps>, string>;
10
- export declare const ChatListItemLastMessageContent: import("../util").Customizable<FC<ChatListItemBoxProps>, string>;
11
- export declare const ChatListItemBox: import("../util").Customizable<FC<ChatListItemBoxProps>, "ChatListItemBox">;
@@ -1 +0,0 @@
1
- export declare function ChatSettings(): import("react/jsx-runtime").JSX.Element | null;
@@ -1,2 +0,0 @@
1
- import { FC } from 'react';
2
- export declare const Footer: import("../util").Customizable<FC, "Footer">;
@@ -1,2 +0,0 @@
1
- import { FC } from 'react';
2
- export declare const Header: import("../util").Customizable<FC, "Header">;
@@ -1 +0,0 @@
1
- export declare function InputForm(): import("react/jsx-runtime").JSX.Element;
@@ -1,4 +0,0 @@
1
- export interface LoadMoreProps {
2
- chatId: string;
3
- }
4
- export declare function LoadMore(props: LoadMoreProps): import("react/jsx-runtime").JSX.Element;
@@ -1 +0,0 @@
1
- export declare function Main(): import("react/jsx-runtime").JSX.Element;
@@ -1,18 +0,0 @@
1
- import { FC, Ref, RefObject } from 'react';
2
- import { Message } from '../core';
3
- export interface MessageBoxProps {
4
- message: Message;
5
- }
6
- export interface MessageRowProps extends MessageBoxProps {
7
- containerRef?: Ref<HTMLDivElement>;
8
- }
9
- export declare const MessageAuthor: import("../util").Customizable<FC<MessageBoxProps>, string>;
10
- export declare const MessageText: import("../util").Customizable<FC<MessageBoxProps>, string>;
11
- export declare const MessageInfoBox: import("../util").Customizable<FC<MessageBoxProps>, string>;
12
- export declare const MessageContent: import("../util").Customizable<FC<MessageBoxProps>, string>;
13
- export declare const MessageRow: import("../util").Customizable<FC<MessageRowProps>, string>;
14
- export declare const MessageBox: import("../util").Customizable<FC<MessageBoxProps>, string>;
15
- export interface MessageReadObserverProps extends MessageBoxProps {
16
- messageRef: RefObject<HTMLDivElement | null>;
17
- }
18
- export declare const MessageReadObserver: import("../util").Customizable<FC<MessageReadObserverProps>, string>;
@@ -1,10 +0,0 @@
1
- import { FC } from 'react';
2
- import { File } from '../core';
3
- export interface SendingMessageProps {
4
- text: string;
5
- files: File[];
6
- }
7
- export declare const SendingMessageText: import("../util").Customizable<FC<SendingMessageProps>, string>;
8
- export declare const SendingMessageInfoBox: import("../util").Customizable<FC<SendingMessageProps>, string>;
9
- export declare const SendingMessageContent: import("../util").Customizable<FC<SendingMessageProps>, string>;
10
- export declare const SendingMessage: import("../util").Customizable<FC<SendingMessageProps>, string>;
@@ -1,8 +0,0 @@
1
- import { FC } from 'react';
2
- import { Localizer } from './localizer';
3
- export interface SystemMessageProps {
4
- text: string;
5
- sentAt: string;
6
- }
7
- export declare function formatSystemMessage(localizer: Localizer, text: string): React.ReactNode;
8
- export declare const SystemMessage: import("../util").Customizable<FC<SystemMessageProps>, string>;
@@ -1,11 +0,0 @@
1
- import { useClient } from '../ChatifyContext';
2
- import { useQuery } from './useQuery';
3
-
4
- export function useAccounts() {
5
- const client = useClient();
6
-
7
- return useQuery({
8
- key: 'accounts',
9
- queryFn: () => client.accounts(),
10
- });
11
- }
@@ -1,12 +0,0 @@
1
- import { useClient } from '../ChatifyContext';
2
- import { AddChatRequest } from './models';
3
- import { useMutation } from './useMutation';
4
-
5
- export function useAddChat() {
6
- const client = useClient();
7
-
8
- return useMutation({
9
- key: 'add-chat',
10
- queryFn: (args: AddChatRequest) => client.addChat(args),
11
- });
12
- }
@@ -1,12 +0,0 @@
1
- import { useClient } from '../ChatifyContext';
2
- import { AddMemberRequest } from './models';
3
- import { useMutation } from './useMutation';
4
-
5
- export function useAddMember() {
6
- const client = useClient();
7
-
8
- return useMutation({
9
- key: 'add-member',
10
- queryFn: (args: AddMemberRequest) => client.addMember(args),
11
- });
12
- }
@@ -1,40 +0,0 @@
1
- import { useClient } from '../ChatifyContext';
2
- import { SendMessageRequest } from './models';
3
- import { QueryState } from './state';
4
- import { MessageState } from './useMessages';
5
- import { useMutation } from './useMutation';
6
-
7
- export interface UseAddMessageArgs {
8
- chatId: string;
9
- }
10
-
11
- export function useAddMessage(args: UseAddMessageArgs) {
12
- const { chatId } = args;
13
- const client = useClient();
14
-
15
- return useMutation<unknown, Omit<SendMessageRequest, 'chatId'>>({
16
- key: 'add.' + chatId,
17
- queryFn: (args) => client.send({ chatId, ...args }),
18
- onQueryStarted: async (args, { updateState }) => {
19
- updateState((state) => {
20
- state = {
21
- ...state,
22
- query: {
23
- ...state.query,
24
- ['messages.' + chatId]: {
25
- ...state.query['messages.' + chatId],
26
- },
27
- },
28
- };
29
-
30
- const queryState: QueryState<MessageState[]> = state.query['messages.' + chatId];
31
- queryState.data = [
32
- { type: 'sending', text: args.text, requestId: args.requestId, files: args.files },
33
- ...queryState.data!,
34
- ];
35
-
36
- return state;
37
- });
38
- },
39
- });
40
- }
@@ -1,12 +0,0 @@
1
- import { useClient } from '../ChatifyContext';
2
- import { useQuery } from './useQuery';
3
-
4
- export function useChat(args: { chatId: string }) {
5
- const { chatId } = args;
6
- const client = useClient();
7
-
8
- return useQuery({
9
- key: 'chat.' + chatId,
10
- queryFn: () => client.chat(chatId),
11
- });
12
- }
@@ -1,10 +0,0 @@
1
- import { useClient } from '../ChatifyContext';
2
- import { useQuery } from './useQuery';
3
-
4
- export function useChatList() {
5
- const client = useClient();
6
- return useQuery({
7
- key: 'chat-list',
8
- queryFn: () => client.chats(),
9
- });
10
- }
@@ -1,42 +0,0 @@
1
- import { useClient } from '../ChatifyContext';
2
- import { useMutation } from './useMutation';
3
- import { MessageState } from './useMessages';
4
- import { useStateRef } from './reducer';
5
- import { QueryState } from './state';
6
-
7
- export function useLoadMore({ chatId }: { chatId: string }) {
8
- const state = useStateRef();
9
- const client = useClient();
10
-
11
- return useMutation({
12
- key: 'more.' + chatId,
13
- queryFn: () =>
14
- client.messages({
15
- chatId,
16
- skip: state.current.query['messages.' + chatId].data.filter((x: MessageState) => x.type === 'message')
17
- .length,
18
- take: 15,
19
- }),
20
-
21
- onQueryStarted: async (_, { promise, updateState }) => {
22
- const result = await promise;
23
- updateState((state) => {
24
- state = { ...state };
25
- state.query = { ...state.query };
26
- state.query['messages.' + chatId] = { ...state.query['messages.' + chatId] };
27
- const value: QueryState<MessageState[]> = state.query['messages.' + chatId];
28
- value.data = value.data?.filter((x) => x.type !== 'more');
29
- value.data = [
30
- ...value.data!,
31
- ...result.map((x) => ({ type: 'message' as const, ...x, proceed: true })),
32
- ];
33
-
34
- if (result.length === 15) {
35
- value.data = [...value.data!, { type: 'more' }];
36
- }
37
-
38
- return state;
39
- });
40
- },
41
- });
42
- }
@@ -1,23 +0,0 @@
1
- import { useClient } from '../ChatifyContext';
2
- import { File, Message } from './models';
3
- import { QueryState } from './state';
4
- import { useQuery } from './useQuery';
5
-
6
- export type MessageState =
7
- | ({ type: 'message' } & Message)
8
- | { type: 'more' }
9
- | { type: 'sending'; text: string; files: File[]; requestId: string };
10
-
11
- export function useMessages(args: { chatId: string }): QueryState<MessageState[]> {
12
- const { chatId } = args;
13
- const client = useClient();
14
-
15
- return useQuery({
16
- key: 'messages.' + chatId,
17
- queryFn: () =>
18
- client.messages({ chatId, skip: 0, take: 15 }).then((x) => {
19
- const result = x.map((message) => ({ type: 'message' as const, ...message, proceed: true }));
20
- return x.length === 15 ? [...result, { type: 'more' as const }] : result;
21
- }),
22
- });
23
- }
@@ -1,48 +0,0 @@
1
- import { useCallback } from 'react';
2
- import { useDispatch, useSelect, useStateRef } from './reducer';
3
- import { MutationState, State } from './state';
4
-
5
- export interface MutationApi<TResult> {
6
- promise: Promise<TResult>;
7
- state: State;
8
- updateState: (mutation: (state: State) => State) => void;
9
- }
10
-
11
- export interface UseMutationArgs<TResult = unknown, TArgs = void> {
12
- key: string;
13
- queryFn: (args: TArgs) => Promise<TResult>;
14
- onQueryStarted?: (args: TArgs, api: MutationApi<TResult>) => void;
15
- }
16
-
17
- const INITIAL_MUTATION_STATE: MutationState = { isFetching: false, error: undefined };
18
-
19
- export function useMutation<TResult = unknown, TArgs = void>(args: UseMutationArgs<TResult, TArgs>) {
20
- const { key, queryFn, onQueryStarted } = args;
21
- const dispatch = useDispatch();
22
- const state = useStateRef();
23
- const mutationState = useSelect((x) => x.mutation[args.key], []);
24
-
25
- const invoke = useCallback((args: TArgs) => {
26
- dispatch({ type: 'mutation_fetch', data: { key } });
27
- const promise = queryFn(args);
28
-
29
- promise
30
- .then(() => {
31
- dispatch({ type: 'mutation_resolve', data: { key } });
32
- })
33
- .catch((error) => dispatch({ type: 'mutation_reject', data: { key, error } }));
34
-
35
- onQueryStarted &&
36
- onQueryStarted(args, {
37
- promise,
38
- state: state.current,
39
- updateState: (mutation: (state: State) => State) => {
40
- dispatch({ type: 'update', data: { mutation } });
41
- },
42
- });
43
-
44
- // eslint-disable-next-line react-hooks/exhaustive-deps
45
- }, []);
46
-
47
- return [invoke, mutationState ?? INITIAL_MUTATION_STATE] as const;
48
- }
@@ -1,45 +0,0 @@
1
- import { useEffect } from 'react';
2
- import { useDispatch, useSelect, useStateRef } from './reducer';
3
- import { QueryState, State } from './state';
4
-
5
- interface UseQueryArgs<TData> {
6
- key: string;
7
- queryFn: () => Promise<TData>;
8
- }
9
-
10
- const INITIAL_QUERY_STATE: QueryState<any> = {
11
- uninitialized: false,
12
- isFetching: true,
13
- data: undefined,
14
- error: undefined,
15
- };
16
-
17
- function select<TData>(state: State, key: string): QueryState<TData> | undefined {
18
- return (state.query as any)[key];
19
- }
20
-
21
- function useQueryState<TData>(key: string): QueryState<TData> | undefined {
22
- return useSelect((x) => select<TData>(x, key), []);
23
- }
24
-
25
- export function useQuery<TData>(args: UseQueryArgs<TData>): QueryState<TData> {
26
- const { key, queryFn } = args;
27
- const state = useStateRef();
28
- const dispatch = useDispatch();
29
- const queryState = useQueryState<TData>(args.key);
30
-
31
- useEffect(() => {
32
- if (select(state.current, key)) {
33
- return;
34
- }
35
-
36
- dispatch({ type: 'query_fetch', data: { key } });
37
- queryFn()
38
- .then((data) => dispatch({ type: 'query_resolve', data: { key, data: data as any } }))
39
- .catch((error) => dispatch({ type: 'query_reject', data: { key, error } }));
40
-
41
- // eslint-disable-next-line react-hooks/exhaustive-deps
42
- }, []);
43
-
44
- return queryState ?? INITIAL_QUERY_STATE;
45
- }
@@ -1,12 +0,0 @@
1
- import { useClient } from '../ChatifyContext';
2
- import { RemoveMemberRequest } from './models';
3
- import { useMutation } from './useMutation';
4
-
5
- export function useRemoveMember() {
6
- const client = useClient();
7
-
8
- return useMutation({
9
- key: 'remove-member',
10
- queryFn: (args: RemoveMemberRequest) => client.removeMember(args),
11
- });
12
- }