@webinex/chatify 1.0.2-rc3 → 2.0.0-build1

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 (317) hide show
  1. package/dist/css/chatify.css +313 -175
  2. package/dist/esm/index.js +10 -1
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/types/core/api/accountApi.d.ts +5 -0
  5. package/dist/esm/types/core/api/api.d.ts +2538 -0
  6. package/dist/esm/types/core/api/baseApi.d.ts +10 -0
  7. package/dist/esm/types/core/api/chatApi.d.ts +25 -0
  8. package/dist/esm/types/core/api/chatListApi.d.ts +6 -0
  9. package/dist/esm/types/core/api/chatMemberApi.d.ts +6 -0
  10. package/dist/esm/types/core/api/chatMessageApi.d.ts +34 -0
  11. package/dist/esm/types/core/api/index.d.ts +9 -0
  12. package/dist/esm/types/core/api/threadApi.d.ts +95 -0
  13. package/dist/esm/types/core/api/threadMessageApi.d.ts +28 -0
  14. package/dist/esm/types/core/client.d.ts +56 -9
  15. package/dist/esm/types/core/constants.d.ts +1 -0
  16. package/dist/esm/types/core/debounce.d.ts +27 -0
  17. package/dist/esm/types/core/index.d.ts +3 -16
  18. package/dist/esm/types/core/types.d.ts +105 -0
  19. package/dist/esm/types/index.d.ts +0 -1
  20. package/dist/esm/types/ui/Chat/ChatContext.d.ts +10 -0
  21. package/dist/esm/types/ui/Chat/ChatEditableHeaderName.d.ts +2 -0
  22. package/dist/esm/types/ui/Chat/ChatHeaderActions.d.ts +2 -0
  23. package/dist/esm/types/ui/Chat/ChatPanel.d.ts +13 -0
  24. package/dist/esm/types/ui/Chat/ChatView.d.ts +17 -0
  25. package/dist/esm/types/ui/Chat/Members/ChatMembersButton.d.ts +2 -0
  26. package/dist/esm/types/ui/Chat/Members/ChatMembersPanel.d.ts +2 -0
  27. package/dist/esm/types/ui/Chat/Members/ChatMembersPreview.d.ts +2 -0
  28. package/dist/esm/types/ui/Chat/Members/index.d.ts +11 -0
  29. package/dist/esm/types/ui/Chat/index.d.ts +6 -0
  30. package/dist/esm/types/ui/ChatGroup/ChatGroupContext.d.ts +12 -0
  31. package/dist/esm/types/ui/ChatGroup/ChatGroupPanel.d.ts +15 -0
  32. package/dist/esm/types/ui/ChatGroup/Create/CreateChatButton.d.ts +2 -0
  33. package/dist/esm/types/ui/{CreateChatPanel → ChatGroup/Create}/CreateChatForm.d.ts +1 -1
  34. package/dist/esm/types/ui/ChatGroup/Create/CreateChatMemberInput.d.ts +5 -0
  35. package/dist/esm/types/ui/ChatGroup/Create/CreateChatNameInput.d.ts +5 -0
  36. package/dist/esm/types/ui/ChatGroup/Create/CreateChatPanel.d.ts +2 -0
  37. package/dist/esm/types/ui/ChatGroup/Create/index.d.ts +17 -0
  38. package/dist/esm/types/ui/ChatGroup/Layout/ChatGroupAside.d.ts +2 -0
  39. package/dist/esm/types/ui/ChatGroup/Layout/ChatGroupBody.d.ts +2 -0
  40. package/dist/esm/types/ui/ChatGroup/Layout/ChatGroupFooter.d.ts +2 -0
  41. package/dist/esm/types/ui/ChatGroup/Layout/ChatGroupHeader.d.ts +2 -0
  42. package/dist/esm/types/ui/ChatGroup/Layout/ChatGroupMain.d.ts +2 -0
  43. package/dist/esm/types/ui/ChatGroup/Layout/index.d.ts +17 -0
  44. package/dist/esm/types/ui/ChatGroup/List/ChatList.d.ts +2 -0
  45. package/dist/esm/types/ui/ChatGroup/List/ChatListItemAvatar.d.ts +3 -0
  46. package/dist/esm/types/ui/ChatGroup/List/ChatListItemBox.d.ts +6 -0
  47. package/dist/esm/types/ui/ChatGroup/List/ChatListItemLastMessage.d.ts +3 -0
  48. package/dist/esm/types/ui/ChatGroup/List/ChatListItemLastMessageAuthor.d.ts +3 -0
  49. package/dist/esm/types/ui/{ChatList → ChatGroup/List}/ChatListItemLastMessageContent.d.ts +1 -1
  50. package/dist/esm/types/ui/ChatGroup/List/ChatListItemLastMessageSentAt.d.ts +3 -0
  51. package/dist/esm/types/ui/ChatGroup/List/ChatListItemName.d.ts +3 -0
  52. package/dist/esm/types/ui/ChatGroup/List/ChatListItemUnreadCount.d.ts +3 -0
  53. package/dist/esm/types/ui/ChatGroup/List/index.d.ts +29 -0
  54. package/dist/esm/types/ui/ChatGroup/index.d.ts +5 -0
  55. package/dist/esm/types/ui/Chatify.d.ts +8 -71
  56. package/dist/esm/types/ui/Conversation/Conversation.d.ts +21 -0
  57. package/dist/esm/types/ui/Conversation/ConversationActions.d.ts +2 -0
  58. package/dist/esm/types/ui/Conversation/ConversationBody.d.ts +2 -0
  59. package/dist/esm/types/ui/Conversation/ConversationContext.d.ts +20 -0
  60. package/dist/esm/types/ui/Conversation/ConversationHeader.d.ts +2 -0
  61. package/dist/esm/types/ui/Conversation/ConversationName.d.ts +2 -0
  62. package/dist/esm/types/ui/Conversation/InputBox/InputBox.d.ts +2 -0
  63. package/dist/esm/types/ui/Conversation/InputBox/InputFilesBox.d.ts +2 -0
  64. package/dist/esm/types/ui/Conversation/InputBox/InputSubmitButtonBox.d.ts +5 -0
  65. package/dist/esm/types/ui/Conversation/InputBox/InputTextBox.d.ts +8 -0
  66. package/dist/esm/types/ui/Conversation/InputBox/index.d.ts +14 -0
  67. package/dist/esm/types/ui/Conversation/Message/MessageAuthor.d.ts +3 -0
  68. package/dist/esm/types/ui/Conversation/Message/MessageBox.d.ts +6 -0
  69. package/dist/esm/types/ui/Conversation/Message/MessageContent.d.ts +3 -0
  70. package/dist/esm/types/ui/Conversation/Message/MessageInfoBox.d.ts +3 -0
  71. package/dist/esm/types/ui/{Message → Conversation/Message}/MessageRow.d.ts +1 -1
  72. package/dist/esm/types/ui/Conversation/Message/MessageText.d.ts +3 -0
  73. package/dist/esm/types/ui/Conversation/Message/index.d.ts +20 -0
  74. package/dist/esm/types/ui/Conversation/NextObserver/NextMessagesObserver.d.ts +5 -0
  75. package/dist/esm/types/ui/Conversation/NextObserver/index.d.ts +1 -0
  76. package/dist/esm/types/ui/Conversation/ReadObserver/MessageReadObserver.d.ts +6 -0
  77. package/dist/esm/types/ui/Conversation/ReadObserver/index.d.ts +1 -0
  78. package/dist/esm/types/ui/Conversation/SendingMessage/SendingMessageBox.d.ts +7 -0
  79. package/dist/esm/types/ui/Conversation/SendingMessage/SendingMessageContent.d.ts +3 -0
  80. package/dist/esm/types/ui/Conversation/SendingMessage/SendingMessageInfoBox.d.ts +3 -0
  81. package/dist/esm/types/ui/{SendingMessage/SendingMessageInfoBox.d.ts → Conversation/SendingMessage/SendingMessageText.d.ts} +1 -1
  82. package/dist/esm/types/ui/Conversation/SendingMessage/index.d.ts +14 -0
  83. package/dist/esm/types/ui/Conversation/SystemMessage/SystemMessageBox.d.ts +6 -0
  84. package/dist/esm/types/ui/Conversation/SystemMessage/SystemMessageRow.d.ts +9 -0
  85. package/dist/esm/types/ui/Conversation/SystemMessage/index.d.ts +8 -0
  86. package/dist/esm/types/ui/Conversation/index.d.ts +12 -0
  87. package/dist/esm/types/ui/{InputBox/InputFilesBox.d.ts → Thread/ThreadActions.d.ts} +1 -1
  88. package/dist/esm/types/ui/Thread/ThreadContext.d.ts +8 -0
  89. package/dist/esm/types/ui/Thread/ThreadPanel.d.ts +14 -0
  90. package/dist/esm/types/ui/Thread/index.d.ts +3 -0
  91. package/dist/esm/types/ui/color.d.ts +6 -0
  92. package/dist/esm/types/ui/common/Avatar.d.ts +6 -0
  93. package/dist/esm/types/ui/common/Icon.d.ts +20 -0
  94. package/dist/esm/types/ui/common/MessageSkeleton.d.ts +5 -0
  95. package/dist/esm/types/ui/common/index.d.ts +11 -0
  96. package/dist/esm/types/ui/customize.d.ts +5 -7
  97. package/dist/esm/types/ui/index.d.ts +9 -9
  98. package/dist/esm/types/ui/localizer.d.ts +4 -6
  99. package/package.json +12 -10
  100. package/src/core/api/accountApi.ts +13 -0
  101. package/src/core/api/api.ts +42 -0
  102. package/src/core/api/baseApi.ts +30 -0
  103. package/src/core/api/chatApi.ts +89 -0
  104. package/src/core/api/chatListApi.ts +149 -0
  105. package/src/core/api/chatMemberApi.ts +22 -0
  106. package/src/core/api/chatMessageApi.ts +156 -0
  107. package/src/core/api/index.ts +9 -0
  108. package/src/core/api/threadApi.ts +132 -0
  109. package/src/core/api/threadMessageApi.ts +127 -0
  110. package/src/core/client.ts +157 -31
  111. package/src/core/constants.ts +1 -0
  112. package/src/core/debounce.ts +90 -0
  113. package/src/core/index.ts +3 -16
  114. package/src/core/types.tsx +152 -0
  115. package/src/index.ts +0 -1
  116. package/src/styles/aside.scss +88 -21
  117. package/src/styles/chat.scss +102 -116
  118. package/src/styles/index.scss +39 -8
  119. package/src/styles/input.scss +74 -0
  120. package/src/styles/members.scss +13 -0
  121. package/src/styles/variables.scss +4 -4
  122. package/src/ui/Chat/ChatContext.tsx +30 -0
  123. package/src/ui/Chat/ChatEditableHeaderName.tsx +63 -0
  124. package/src/ui/Chat/ChatHeaderActions.tsx +19 -0
  125. package/src/ui/Chat/ChatPanel.tsx +30 -0
  126. package/src/ui/Chat/ChatView.tsx +123 -0
  127. package/src/ui/Chat/Members/ChatMembersButton.tsx +9 -0
  128. package/src/ui/{ChatPanel → Chat/Members}/ChatMembersPanel.tsx +24 -24
  129. package/src/ui/Chat/Members/ChatMembersPreview.tsx +25 -0
  130. package/src/ui/Chat/Members/index.ts +13 -0
  131. package/src/ui/Chat/index.ts +6 -0
  132. package/src/ui/ChatGroup/ChatGroupContext.tsx +50 -0
  133. package/src/ui/ChatGroup/ChatGroupPanel.tsx +73 -0
  134. package/src/ui/ChatGroup/Create/CreateChatButton.tsx +15 -0
  135. package/src/ui/{CreateChatPanel → ChatGroup/Create}/CreateChatForm.tsx +2 -2
  136. package/src/ui/{CreateChatPanel → ChatGroup/Create}/CreateChatMemberInput.tsx +6 -7
  137. package/src/ui/{CreateChatPanel → ChatGroup/Create}/CreateChatNameInput.tsx +2 -2
  138. package/src/ui/ChatGroup/Create/CreateChatPanel.tsx +45 -0
  139. package/src/ui/ChatGroup/Create/index.ts +19 -0
  140. package/src/ui/ChatGroup/Layout/ChatGroupAside.tsx +12 -0
  141. package/src/ui/ChatGroup/Layout/ChatGroupBody.tsx +10 -0
  142. package/src/ui/ChatGroup/Layout/ChatGroupFooter.tsx +3 -0
  143. package/src/ui/ChatGroup/Layout/ChatGroupHeader.tsx +5 -0
  144. package/src/ui/ChatGroup/Layout/ChatGroupMain.tsx +17 -0
  145. package/src/ui/ChatGroup/Layout/index.ts +19 -0
  146. package/src/ui/{ChatList → ChatGroup/List}/ChatList.tsx +8 -8
  147. package/src/ui/ChatGroup/List/ChatListItemAvatar.tsx +22 -0
  148. package/src/ui/{ChatList → ChatGroup/List}/ChatListItemBox.tsx +9 -5
  149. package/src/ui/{ChatList → ChatGroup/List}/ChatListItemLastMessage.tsx +3 -1
  150. package/src/ui/{ChatList → ChatGroup/List}/ChatListItemLastMessageAuthor.tsx +2 -7
  151. package/src/ui/{ChatList → ChatGroup/List}/ChatListItemLastMessageContent.tsx +3 -3
  152. package/src/ui/ChatGroup/List/ChatListItemLastMessageSentAt.tsx +22 -0
  153. package/src/ui/ChatGroup/List/ChatListItemName.tsx +8 -0
  154. package/src/ui/{ChatList → ChatGroup/List}/ChatListItemUnreadCount.tsx +1 -1
  155. package/src/ui/ChatGroup/List/index.ts +31 -0
  156. package/src/ui/ChatGroup/index.ts +5 -0
  157. package/src/ui/Chatify.tsx +8 -147
  158. package/src/ui/Conversation/Conversation.tsx +76 -0
  159. package/src/ui/Conversation/ConversationActions.tsx +5 -0
  160. package/src/ui/Conversation/ConversationBody.tsx +28 -0
  161. package/src/ui/Conversation/ConversationContext.ts +27 -0
  162. package/src/ui/Conversation/ConversationHeader.tsx +23 -0
  163. package/src/ui/Conversation/ConversationName.tsx +7 -0
  164. package/src/ui/Conversation/InputBox/InputBox.tsx +40 -0
  165. package/src/ui/{InputBox → Conversation/InputBox}/InputFilesBox.tsx +2 -2
  166. package/src/ui/{InputBox → Conversation/InputBox}/InputSubmitButtonBox.tsx +2 -2
  167. package/src/ui/{InputBox → Conversation/InputBox}/InputTextBox.tsx +8 -5
  168. package/src/ui/Conversation/InputBox/index.ts +16 -0
  169. package/src/ui/{Message → Conversation/Message}/MessageAuthor.tsx +2 -2
  170. package/src/ui/{Message → Conversation/Message}/MessageBox.tsx +4 -4
  171. package/src/ui/{Message → Conversation/Message}/MessageContent.tsx +1 -3
  172. package/src/ui/{Message → Conversation/Message}/MessageInfoBox.tsx +10 -7
  173. package/src/ui/{Message → Conversation/Message}/MessageRow.tsx +8 -4
  174. package/src/ui/{Message → Conversation/Message}/MessageText.tsx +1 -1
  175. package/src/ui/Conversation/Message/index.ts +22 -0
  176. package/src/ui/{Next.tsx → Conversation/NextObserver/NextMessagesObserver.tsx} +9 -10
  177. package/src/ui/Conversation/NextObserver/index.ts +1 -0
  178. package/src/ui/{MessageReadObserver.tsx → Conversation/ReadObserver/MessageReadObserver.tsx} +17 -13
  179. package/src/ui/Conversation/ReadObserver/index.ts +1 -0
  180. package/src/ui/{SendingMessage → Conversation/SendingMessage}/SendingMessageBox.tsx +2 -2
  181. package/src/ui/{SendingMessage → Conversation/SendingMessage}/SendingMessageContent.tsx +1 -1
  182. package/src/ui/{SendingMessage → Conversation/SendingMessage}/SendingMessageInfoBox.tsx +2 -2
  183. package/src/ui/{SendingMessage → Conversation/SendingMessage}/SendingMessageText.tsx +1 -1
  184. package/src/ui/Conversation/SendingMessage/index.ts +16 -0
  185. package/src/ui/{SystemMessage → Conversation/SystemMessage}/SystemMessageBox.tsx +4 -4
  186. package/src/ui/Conversation/SystemMessage/SystemMessageRow.tsx +28 -0
  187. package/src/ui/Conversation/SystemMessage/index.ts +10 -0
  188. package/src/ui/Conversation/index.ts +13 -0
  189. package/src/ui/Thread/ThreadActions.tsx +22 -0
  190. package/src/ui/Thread/ThreadContext.ts +13 -0
  191. package/src/ui/Thread/ThreadPanel.tsx +138 -0
  192. package/src/ui/Thread/index.tsx +3 -0
  193. package/src/ui/color.ts +20 -0
  194. package/src/ui/common/Avatar.tsx +20 -0
  195. package/src/ui/{Icon.tsx → common/Icon.tsx} +13 -6
  196. package/src/ui/{MessageSkeleton.tsx → common/MessageSkeleton.tsx} +3 -2
  197. package/src/ui/common/index.ts +13 -0
  198. package/src/ui/customize.tsx +18 -10
  199. package/src/ui/index.ts +9 -9
  200. package/src/ui/localizer.tsx +11 -10
  201. package/dist/esm/types/ChatifyContext.d.ts +0 -11
  202. package/dist/esm/types/core/action.d.ts +0 -150
  203. package/dist/esm/types/core/models.d.ts +0 -70
  204. package/dist/esm/types/core/reducer.d.ts +0 -11
  205. package/dist/esm/types/core/state.d.ts +0 -55
  206. package/dist/esm/types/core/useAddChatMutation.d.ts +0 -2
  207. package/dist/esm/types/core/useAddMemberMutation.d.ts +0 -2
  208. package/dist/esm/types/core/useFetchNextMutation.d.ts +0 -3
  209. package/dist/esm/types/core/useGetAccountsQuery.d.ts +0 -3
  210. package/dist/esm/types/core/useGetChatListQuery.d.ts +0 -3
  211. package/dist/esm/types/core/useGetChatQuery.d.ts +0 -5
  212. package/dist/esm/types/core/useGetMessagesQuery.d.ts +0 -4
  213. package/dist/esm/types/core/useReadMonitor.d.ts +0 -1
  214. package/dist/esm/types/core/useRemoveMemberMutation.d.ts +0 -2
  215. package/dist/esm/types/core/useSendMutation.d.ts +0 -2
  216. package/dist/esm/types/core/useSignalRMonitor.d.ts +0 -2
  217. package/dist/esm/types/core/useUpdateChatNameMutation.d.ts +0 -2
  218. package/dist/esm/types/ui/AddChatButton.d.ts +0 -2
  219. package/dist/esm/types/ui/Avatar.d.ts +0 -6
  220. package/dist/esm/types/ui/ChatList/ChatList.d.ts +0 -2
  221. package/dist/esm/types/ui/ChatList/ChatListItemBox.d.ts +0 -6
  222. package/dist/esm/types/ui/ChatList/ChatListItemLastMessage.d.ts +0 -3
  223. package/dist/esm/types/ui/ChatList/ChatListItemLastMessageAuthor.d.ts +0 -3
  224. package/dist/esm/types/ui/ChatList/ChatListItemName.d.ts +0 -3
  225. package/dist/esm/types/ui/ChatList/ChatListItemUnreadCount.d.ts +0 -3
  226. package/dist/esm/types/ui/ChatList/index.d.ts +0 -7
  227. package/dist/esm/types/ui/ChatName.d.ts +0 -5
  228. package/dist/esm/types/ui/ChatPanel/ChatBody.d.ts +0 -5
  229. package/dist/esm/types/ui/ChatPanel/ChatHeader.d.ts +0 -5
  230. package/dist/esm/types/ui/ChatPanel/ChatHeaderMembers.d.ts +0 -5
  231. package/dist/esm/types/ui/ChatPanel/ChatHeaderName.d.ts +0 -5
  232. package/dist/esm/types/ui/ChatPanel/ChatMembersButton.d.ts +0 -5
  233. package/dist/esm/types/ui/ChatPanel/ChatMembersPanel.d.ts +0 -5
  234. package/dist/esm/types/ui/ChatPanel/ChatPanel.d.ts +0 -5
  235. package/dist/esm/types/ui/ChatPanel/index.d.ts +0 -6
  236. package/dist/esm/types/ui/CreateChatPanel/CreateChatMemberInput.d.ts +0 -5
  237. package/dist/esm/types/ui/CreateChatPanel/CreateChatNameInput.d.ts +0 -5
  238. package/dist/esm/types/ui/CreateChatPanel/CreateChatPanel.d.ts +0 -2
  239. package/dist/esm/types/ui/CreateChatPanel/index.d.ts +0 -4
  240. package/dist/esm/types/ui/Icon.d.ts +0 -16
  241. package/dist/esm/types/ui/InputBox/InputBox.d.ts +0 -2
  242. package/dist/esm/types/ui/InputBox/InputSubmitButtonBox.d.ts +0 -5
  243. package/dist/esm/types/ui/InputBox/InputTextBox.d.ts +0 -7
  244. package/dist/esm/types/ui/InputBox/index.d.ts +0 -4
  245. package/dist/esm/types/ui/Layout/Aside.d.ts +0 -2
  246. package/dist/esm/types/ui/Layout/Body.d.ts +0 -2
  247. package/dist/esm/types/ui/Layout/Footer.d.ts +0 -2
  248. package/dist/esm/types/ui/Layout/Header.d.ts +0 -2
  249. package/dist/esm/types/ui/Layout/Main.d.ts +0 -2
  250. package/dist/esm/types/ui/Layout/index.d.ts +0 -5
  251. package/dist/esm/types/ui/Message/MessageAuthor.d.ts +0 -3
  252. package/dist/esm/types/ui/Message/MessageBox.d.ts +0 -6
  253. package/dist/esm/types/ui/Message/MessageContent.d.ts +0 -3
  254. package/dist/esm/types/ui/Message/MessageInfoBox.d.ts +0 -3
  255. package/dist/esm/types/ui/Message/MessageText.d.ts +0 -3
  256. package/dist/esm/types/ui/Message/index.d.ts +0 -6
  257. package/dist/esm/types/ui/MessageReadObserver.d.ts +0 -6
  258. package/dist/esm/types/ui/MessageSkeleton.d.ts +0 -4
  259. package/dist/esm/types/ui/Next.d.ts +0 -4
  260. package/dist/esm/types/ui/SendingMessage/SendingMessageBox.d.ts +0 -7
  261. package/dist/esm/types/ui/SendingMessage/SendingMessageContent.d.ts +0 -3
  262. package/dist/esm/types/ui/SendingMessage/SendingMessageText.d.ts +0 -3
  263. package/dist/esm/types/ui/SendingMessage/index.d.ts +0 -4
  264. package/dist/esm/types/ui/SystemMessage/SystemMessageBox.d.ts +0 -6
  265. package/dist/esm/types/ui/SystemMessage/SystemMessageRow.d.ts +0 -9
  266. package/dist/esm/types/ui/SystemMessage/index.d.ts +0 -2
  267. package/dist/esm/types/util/index.d.ts +0 -2
  268. package/dist/esm/types/util/uniqBy.d.ts +0 -1
  269. package/dist/esm/types/util/uniqId.d.ts +0 -1
  270. package/dist/index.d.ts +0 -630
  271. package/src/ChatifyContext.tsx +0 -41
  272. package/src/core/action.tsx +0 -421
  273. package/src/core/models.tsx +0 -82
  274. package/src/core/reducer.tsx +0 -87
  275. package/src/core/state.ts +0 -93
  276. package/src/core/useAddChatMutation.tsx +0 -22
  277. package/src/core/useAddMemberMutation.tsx +0 -25
  278. package/src/core/useFetchNextMutation.tsx +0 -28
  279. package/src/core/useGetAccountsQuery.tsx +0 -30
  280. package/src/core/useGetChatListQuery.tsx +0 -30
  281. package/src/core/useGetChatQuery.tsx +0 -31
  282. package/src/core/useGetMessagesQuery.tsx +0 -35
  283. package/src/core/useReadMonitor.tsx +0 -32
  284. package/src/core/useRemoveMemberMutation.tsx +0 -23
  285. package/src/core/useSendMutation.tsx +0 -24
  286. package/src/core/useSignalRMonitor.tsx +0 -66
  287. package/src/core/useUpdateChatNameMutation.tsx +0 -23
  288. package/src/styles/settings.scss +0 -5
  289. package/src/ui/AddChatButton.tsx +0 -15
  290. package/src/ui/Avatar.tsx +0 -18
  291. package/src/ui/ChatList/ChatListItemName.tsx +0 -13
  292. package/src/ui/ChatList/index.ts +0 -7
  293. package/src/ui/ChatName.tsx +0 -10
  294. package/src/ui/ChatPanel/ChatBody.tsx +0 -44
  295. package/src/ui/ChatPanel/ChatHeader.tsx +0 -33
  296. package/src/ui/ChatPanel/ChatHeaderMembers.tsx +0 -26
  297. package/src/ui/ChatPanel/ChatHeaderName.tsx +0 -67
  298. package/src/ui/ChatPanel/ChatMembersButton.tsx +0 -21
  299. package/src/ui/ChatPanel/ChatPanel.tsx +0 -27
  300. package/src/ui/ChatPanel/index.ts +0 -6
  301. package/src/ui/CreateChatPanel/CreateChatPanel.tsx +0 -33
  302. package/src/ui/CreateChatPanel/index.ts +0 -4
  303. package/src/ui/InputBox/InputBox.tsx +0 -38
  304. package/src/ui/InputBox/index.ts +0 -4
  305. package/src/ui/Layout/Aside.tsx +0 -10
  306. package/src/ui/Layout/Body.tsx +0 -10
  307. package/src/ui/Layout/Footer.tsx +0 -3
  308. package/src/ui/Layout/Header.tsx +0 -10
  309. package/src/ui/Layout/Main.tsx +0 -15
  310. package/src/ui/Layout/index.ts +0 -5
  311. package/src/ui/Message/index.ts +0 -6
  312. package/src/ui/SendingMessage/index.ts +0 -4
  313. package/src/ui/SystemMessage/SystemMessageRow.tsx +0 -43
  314. package/src/ui/SystemMessage/index.ts +0 -2
  315. package/src/util/index.ts +0 -2
  316. package/src/util/uniqBy.tsx +0 -17
  317. package/src/util/uniqId.tsx +0 -3
@@ -1,23 +1,31 @@
1
- import React, { FC, PropsWithChildren, useContext } from 'react';
1
+ import React, { FC, useContext } from 'react';
2
2
 
3
3
  export type Customizable<TComponent extends React.ComponentType<any>> = TComponent & {
4
4
  Component: TComponent;
5
+ key: string;
5
6
  };
6
7
 
7
- const CustomizeContext = React.createContext<CustomizeProviderValue>(null!);
8
+ export const CustomizeContext = React.createContext<
9
+ Record<string, React.ComponentType<any> | null | undefined>
10
+ >(null!);
8
11
 
9
- export interface CustomizeProviderValue {
10
- [key: string]: React.ComponentType<any> | null;
11
- }
12
-
13
- export function CustomizeProvider(props: PropsWithChildren<{ value: CustomizeProviderValue }>) {
14
- const { children, value } = props;
15
- return <CustomizeContext.Provider value={value}>{children}</CustomizeContext.Provider>;
12
+ export function useCustomizeContext() {
13
+ return useContext(CustomizeContext);
16
14
  }
17
15
 
18
16
  function useCustom<TComponent extends React.ComponentType>(key: string): TComponent | undefined | null {
19
17
  const value = useContext(CustomizeContext);
20
- return value[key] as TComponent | null | undefined;
18
+ return value ? (value[key] as TComponent | null | undefined) : undefined;
19
+ }
20
+
21
+ export function useCustomize<TCustom extends Customizable<React.ComponentType<any>>>(custom: TCustom) {
22
+ const Custom = useCustom<TCustom['Component']>(custom.key);
23
+
24
+ if (Custom == null) {
25
+ return null;
26
+ }
27
+
28
+ return Custom ?? custom.Component;
21
29
  }
22
30
 
23
31
  export function customize<TComponent extends React.ComponentType<any>>(
package/src/ui/index.ts CHANGED
@@ -1,11 +1,11 @@
1
+ export * from './color';
2
+ export * from './customize';
1
3
  export * from './Chatify';
2
- export * from './Avatar';
3
4
  export * from './localizer';
4
- export * from './AddChatButton';
5
- export * from './Layout/Header';
6
- export * from './ChatPanel/ChatHeader';
7
- export * from './ChatPanel/ChatHeaderMembers';
8
- export * from './ChatList/ChatListItemBox';
9
- export * from './Message/MessageBox';
10
- export * from './SystemMessage/SystemMessageBox';
11
- export * from './Icon';
5
+ export * from './Chat';
6
+ export * from './ChatGroup';
7
+ export * from './Conversation';
8
+ export * from './Thread';
9
+ export * from './common/Icon';
10
+ export * from './common/Avatar';
11
+ export * from './common/MessageSkeleton';
@@ -1,14 +1,12 @@
1
1
  import dayjs from 'dayjs';
2
2
  import React, { useContext } from 'react';
3
+ import { SystemMessageText } from '../core';
3
4
 
4
5
  export interface Localizer {
6
+ isToday: (value: string) => boolean;
5
7
  timestamp: (value: string) => string;
6
- system: {
7
- chatCreated: () => string;
8
- memberAdded: () => string;
9
- memberRemoved: () => string;
10
- chatNameChanged: (newName: string) => string;
11
- };
8
+ dateTime: (value: string) => string;
9
+ system: Record<SystemMessageText, (key: SystemMessageText, payload: any | null) => string>;
12
10
  message: {
13
11
  read: () => React.ReactNode;
14
12
  reading: () => React.ReactNode;
@@ -44,7 +42,9 @@ export function useLocalizer() {
44
42
  }
45
43
 
46
44
  export const defaultLocalizer: Localizer = {
45
+ isToday: (value: string) => dayjs(value).isSame(dayjs(), 'day'),
47
46
  timestamp: (value: string) => dayjs(value).format('HH:mm'),
47
+ dateTime: (value: string) => dayjs(value).format('DD/MM/YYYY HH:mm'),
48
48
  message: {
49
49
  read: () => 'Read',
50
50
  reading: () => 'Reading...',
@@ -64,10 +64,11 @@ export const defaultLocalizer: Localizer = {
64
64
  submitBtn: () => 'Submit',
65
65
  },
66
66
  system: {
67
- chatCreated: () => 'Chat created',
68
- memberAdded: () => 'New member added',
69
- memberRemoved: () => 'Member removed',
70
- chatNameChanged: (newName: string) => `Chat name changed to '${newName}'`,
67
+ 'chatify://chat-created': () => 'Chat created',
68
+ 'chatify://member-added': () => 'New member added',
69
+ 'chatify://member-removed': () => 'Member removed',
70
+ 'chatify://chat-name-changed': (_, { newName }: { newName: string }) =>
71
+ `Chat name changed to '${newName}'`,
71
72
  },
72
73
 
73
74
  input: {
@@ -1,11 +0,0 @@
1
- import { PropsWithChildren } from 'react';
2
- import { ChatifyClient } from './core/client';
3
- export declare function useClient(): ChatifyClient;
4
- export declare function useMe(): string;
5
- export interface ChatifyContextValue {
6
- me: string;
7
- client: ChatifyClient;
8
- }
9
- export declare function ChatifyContext({ value, children }: PropsWithChildren<{
10
- value: ChatifyContextValue;
11
- }>): import("react/jsx-runtime").JSX.Element;
@@ -1,150 +0,0 @@
1
- import type { State } from './state';
2
- import { Account, Chat, ChatListItem, Message, ReadEvent, File } from './models';
3
- export declare const ACTIONS: {
4
- update: (state: State, { mutation }: {
5
- mutation: (state: State) => State;
6
- }) => void;
7
- messages_fetch: (state: State, { chatId, requestId }: {
8
- chatId: string;
9
- requestId: string;
10
- }) => void;
11
- messages_fulfilled: (state: State, { chatId, messages, hasMore }: {
12
- chatId: string;
13
- messages: Message[];
14
- hasMore: boolean;
15
- }) => void;
16
- messages_rejected: (state: State, { chatId, error }: {
17
- chatId: string;
18
- error: any;
19
- }) => void;
20
- fetchNext_fetch: (state: State, { chatId }: {
21
- chatId: string;
22
- }) => void;
23
- fetchNext_fulfilled: (state: State, { chatId, messages, hasMore }: {
24
- chatId: string;
25
- messages: Message[];
26
- hasMore: boolean;
27
- }) => void;
28
- fetchNext_rejected: (state: State, { chatId, error }: {
29
- chatId: string;
30
- error: any;
31
- }) => void;
32
- chatList_fetch: (state: State, { requestId }: {
33
- requestId: string;
34
- }) => void;
35
- chatList_fulfilled: (state: State, { chats }: {
36
- chats: ChatListItem[];
37
- }) => void;
38
- chatList_rejected: (state: State, { error }: {
39
- error: any;
40
- }) => void;
41
- removeMember_fetch: (state: State) => void;
42
- removeMember_fulfilled: (state: State) => void;
43
- removeMember_rejected: (state: State, { error }: {
44
- error: any;
45
- }) => void;
46
- addMember_fetch: (state: State) => void;
47
- addMember_fulfilled: (state: State) => void;
48
- addMember_rejected: (state: State, { error }: {
49
- error: any;
50
- }) => void;
51
- updateChatName_fetch: (state: State) => void;
52
- updateChatName_fulfilled: (state: State) => void;
53
- updateChatName_rejected: (state: State, { error }: {
54
- error: any;
55
- }) => void;
56
- addChat_fetch: (state: State) => void;
57
- addChat_fulfilled: (state: State) => void;
58
- addChat_rejected: (state: State, { error }: {
59
- error: any;
60
- }) => void;
61
- accounts_fetch: (state: State, { requestId }: {
62
- requestId: string;
63
- }) => void;
64
- accounts_fulfilled: (state: State, { accounts }: {
65
- accounts: Account[];
66
- }) => void;
67
- accounts_rejected: (state: State, { error }: {
68
- error: any;
69
- }) => void;
70
- chat_open: (state: State, { chatId }: {
71
- chatId: string;
72
- }) => void;
73
- new_chat_open: (state: State) => void;
74
- toggle_members_view: (state: State) => void;
75
- message_received: (state: State, { message, requestId, me }: {
76
- message: Message;
77
- requestId: string;
78
- me: string;
79
- }) => void;
80
- chat_created: (state: State, { chat }: {
81
- chat: ChatListItem;
82
- requestId?: string | undefined;
83
- }) => void;
84
- read: (state: State, { id, timestamp }: {
85
- id: string;
86
- timestamp: number;
87
- }) => void;
88
- read_send: (state: State, { id }: {
89
- id: string;
90
- }) => void;
91
- read_reject: (state: State, { id, timestamp }: {
92
- id: string;
93
- timestamp: number;
94
- }) => void;
95
- read_received: (state: State, { events }: {
96
- events: ReadEvent[];
97
- }) => void;
98
- member_added: (state: State, { chatId, chatName, account, me, message, withHistory, }: {
99
- chatId: string;
100
- chatName: string;
101
- account: Account;
102
- me: string;
103
- message: Message;
104
- withHistory: boolean;
105
- }) => State;
106
- member_removed: (state: State, { chatId, accountId, deleteHistory, me, message, }: {
107
- chatId: string;
108
- accountId: string;
109
- deleteHistory: boolean;
110
- me: string;
111
- message: Message;
112
- }) => void;
113
- chat_fetch: (state: State, { chatId, requestId }: {
114
- chatId: string;
115
- requestId: string;
116
- }) => void;
117
- chat_fulfilled: (state: State, { chat }: {
118
- chat: Chat;
119
- }) => void;
120
- chat_rejected: (state: State, { chatId, error }: {
121
- chatId: string;
122
- error: any;
123
- }) => void;
124
- send_fetch: (state: State, { chatId, text, files, requestId, }: {
125
- chatId: string;
126
- text: string;
127
- files: File[];
128
- requestId: string;
129
- }) => void;
130
- send_fulfilled: (state: State, { chatId, requestId }: {
131
- chatId: string;
132
- requestId: string;
133
- }) => void;
134
- send_rejected: (state: State, { chatId, requestId, error }: {
135
- chatId: string;
136
- requestId: string;
137
- error: any;
138
- }) => void;
139
- chatNameChanged_received: (state: State, { chatId, newName, message }: {
140
- chatId: string;
141
- newName: string;
142
- message: Message;
143
- }) => void;
144
- };
145
- export type Action = {
146
- [K in keyof typeof ACTIONS]: {
147
- type: K;
148
- data: Parameters<(typeof ACTIONS)[K]>[1];
149
- };
150
- }[keyof typeof ACTIONS];
@@ -1,70 +0,0 @@
1
- export interface File {
2
- name: string;
3
- bytes: number;
4
- ref: string;
5
- }
6
- export interface Account {
7
- id: string;
8
- name: string;
9
- avatar: string;
10
- }
11
- export interface Message {
12
- id: string;
13
- chatId: string;
14
- text: string;
15
- files: File[];
16
- sentAt: string;
17
- sentBy: Account;
18
- requestId?: string;
19
- }
20
- export interface Chat {
21
- id: string;
22
- name: string;
23
- members: Account[];
24
- }
25
- export interface ChatListItem {
26
- id: string;
27
- name: string;
28
- message: Message;
29
- totalUnreadCount: number;
30
- active: boolean;
31
- lastReadMessageId: string | null;
32
- }
33
- export interface SendMessageRequest {
34
- chatId: string;
35
- text: string;
36
- files: File[];
37
- requestId: string;
38
- }
39
- export interface MessageBody {
40
- text: string;
41
- files: File[];
42
- }
43
- export interface AddChatRequest {
44
- requestId: string;
45
- name: string;
46
- message?: MessageBody;
47
- members: string[];
48
- }
49
- export interface ReadRequest {
50
- id: string;
51
- }
52
- export interface ReadEvent {
53
- chatId: string;
54
- newLastReadMessageId: string;
55
- readCount: number;
56
- }
57
- export interface RemoveMemberRequest {
58
- chatId: string;
59
- accountId: string;
60
- deleteHistory: boolean;
61
- }
62
- export interface AddMemberRequest {
63
- chatId: string;
64
- accountId: string;
65
- withHistory: boolean;
66
- }
67
- export interface UpdateChatNameRequest {
68
- id: string;
69
- name: string;
70
- }
@@ -1,11 +0,0 @@
1
- import React, { PropsWithChildren } from 'react';
2
- import { Action } from './action';
3
- import { State } from './state';
4
- export type Reducer = ReturnType<typeof useReducer>;
5
- type Subscriber = (state: State) => void;
6
- export declare function useReducer(): readonly [React.MutableRefObject<State>, (action: Action) => void, (subscriber: Subscriber) => () => void];
7
- export declare function ReducerProvider({ children }: PropsWithChildren<{}>): import("react/jsx-runtime").JSX.Element;
8
- export declare function useDispatch(): (action: Action) => void;
9
- export declare function useStateRef(): React.MutableRefObject<State>;
10
- export declare function useSelect<TResult>(select: (state: State) => TResult, deps: any[]): TResult;
11
- export {};
@@ -1,55 +0,0 @@
1
- import { Account, Chat, ChatListItem, Message, SendMessageRequest, File } from './models';
2
- export type MessageState = ({
3
- type: 'message';
4
- } & Message) | {
5
- type: 'next';
6
- } | {
7
- type: 'sending';
8
- text: string;
9
- files: File[];
10
- requestId: string;
11
- };
12
- export interface UIState {
13
- view?: 'chat' | 'new-chat';
14
- showMembers: boolean;
15
- chatId?: string;
16
- }
17
- export interface QueryState<TData> {
18
- uninitialized: boolean;
19
- isFetching: boolean;
20
- error?: any;
21
- data?: TData;
22
- requestId?: string;
23
- }
24
- export interface MutationState {
25
- isFetching: boolean;
26
- error?: any;
27
- }
28
- export interface QueueState<TValue> {
29
- queued: TValue[];
30
- processing: TValue[];
31
- timestamp: number;
32
- }
33
- export interface State {
34
- ui: UIState;
35
- query: {
36
- messages: Record<string, QueryState<MessageState[]>>;
37
- chats: Record<string, QueryState<Chat>>;
38
- chatList: QueryState<ChatListItem[]>;
39
- accounts: QueryState<Account[]>;
40
- };
41
- mutation: {
42
- fetchNext: MutationState;
43
- removeMember: MutationState;
44
- addMember: MutationState;
45
- updateChatName: MutationState;
46
- addChat: MutationState;
47
- send: MutationState;
48
- };
49
- queue: {
50
- read: QueueState<string>;
51
- send: QueueState<SendMessageRequest>;
52
- };
53
- }
54
- export declare const FETCH_QUERY_STATE: QueryState<any>;
55
- export declare const INITIAL_STATE: State;
@@ -1,2 +0,0 @@
1
- import { AddChatRequest } from './models';
2
- export declare function useAddChatMutation(): readonly [(args: AddChatRequest) => void, import("./state").MutationState];
@@ -1,2 +0,0 @@
1
- import { AddMemberRequest } from './models';
2
- export declare function useAddMemberMutation(): readonly [(args: AddMemberRequest) => void, import("./state").MutationState];
@@ -1,3 +0,0 @@
1
- export declare function useFetchNextMutation({ chatId }: {
2
- chatId: string;
3
- }): readonly [() => void, import("./state").MutationState];
@@ -1,3 +0,0 @@
1
- import { QueryState } from './state';
2
- import { Account } from './models';
3
- export declare function useGetAccountsQuery(): QueryState<Account[]>;
@@ -1,3 +0,0 @@
1
- import { QueryState } from './state';
2
- import { ChatListItem } from './models';
3
- export declare function useGetChatListQuery(): QueryState<ChatListItem[]>;
@@ -1,5 +0,0 @@
1
- import { QueryState } from './state';
2
- import { Chat } from './models';
3
- export declare function useGetChatQuery(args: {
4
- chatId: string;
5
- }): QueryState<Chat>;
@@ -1,4 +0,0 @@
1
- import { MessageState, QueryState } from './state';
2
- export declare function useGetMessagesQuery(args: {
3
- chatId: string;
4
- }): QueryState<MessageState[]>;
@@ -1 +0,0 @@
1
- export declare function useReadMonitor(): void;
@@ -1,2 +0,0 @@
1
- import { RemoveMemberRequest } from './models';
2
- export declare function useRemoveMemberMutation(): readonly [(args: RemoveMemberRequest) => void, import("./state").MutationState];
@@ -1,2 +0,0 @@
1
- import { SendMessageRequest } from './models';
2
- export declare function useSendMutation(): readonly [(args: SendMessageRequest) => void, import("./state").MutationState];
@@ -1,2 +0,0 @@
1
- import { ChatifyClient } from './client';
2
- export declare function useSignalRMonitor(me: string, client: ChatifyClient): void;
@@ -1,2 +0,0 @@
1
- import { UpdateChatNameRequest } from './models';
2
- export declare function useUpdateChatNameMutation(): readonly [(args: UpdateChatNameRequest) => void, import("./state").MutationState];
@@ -1,2 +0,0 @@
1
- /// <reference types="react" />
2
- export declare const AddChatButton: import("./customize").Customizable<import("react").ComponentType<unknown>>;
@@ -1,6 +0,0 @@
1
- /// <reference types="react" />
2
- import { Account } from '../core';
3
- export interface AvatarProps {
4
- account: Account;
5
- }
6
- export declare const Avatar: import("./customize").Customizable<import("react").ComponentType<AvatarProps>>;
@@ -1,2 +0,0 @@
1
- /// <reference types="react" />
2
- export declare const ChatList: import("../customize").Customizable<import("react").ComponentType<unknown>>;
@@ -1,6 +0,0 @@
1
- /// <reference types="react" />
2
- import { ChatListItem as ChatListItemModel } from '../../core';
3
- export interface ChatListItemBoxProps {
4
- chat: ChatListItemModel;
5
- }
6
- export declare const ChatListItemBox: import("../customize").Customizable<import("react").ComponentType<ChatListItemBoxProps>>;
@@ -1,3 +0,0 @@
1
- /// <reference types="react" />
2
- import type { ChatListItemBoxProps } from './ChatListItemBox';
3
- export declare const ChatListItemLastMessage: import("../customize").Customizable<import("react").ComponentType<ChatListItemBoxProps>>;
@@ -1,3 +0,0 @@
1
- /// <reference types="react" />
2
- import type { ChatListItemBoxProps } from './ChatListItemBox';
3
- export declare const ChatListItemLastMessageAuthor: import("../customize").Customizable<import("react").ComponentType<ChatListItemBoxProps>>;
@@ -1,3 +0,0 @@
1
- /// <reference types="react" />
2
- import type { ChatListItemBoxProps } from './ChatListItemBox';
3
- export declare const ChatListItemName: import("../customize").Customizable<import("react").ComponentType<ChatListItemBoxProps>>;
@@ -1,3 +0,0 @@
1
- /// <reference types="react" />
2
- import { ChatListItemBoxProps } from './ChatListItemBox';
3
- export declare const ChatListItemUnreadCount: import("../customize").Customizable<import("react").ComponentType<ChatListItemBoxProps>>;
@@ -1,7 +0,0 @@
1
- export * from './ChatList';
2
- export * from './ChatListItemBox';
3
- export * from './ChatListItemLastMessage';
4
- export * from './ChatListItemLastMessageAuthor';
5
- export * from './ChatListItemLastMessageContent';
6
- export * from './ChatListItemName';
7
- export * from './ChatListItemUnreadCount';
@@ -1,5 +0,0 @@
1
- /// <reference types="react" />
2
- export interface ChatNameProps {
3
- name: string;
4
- }
5
- export declare const ChatName: import("./customize").Customizable<import("react").ComponentType<ChatNameProps>>;
@@ -1,5 +0,0 @@
1
- /// <reference types="react" />
2
- export interface ChatBodyProps {
3
- id: string;
4
- }
5
- export declare const ChatBody: import("../customize").Customizable<import("react").ComponentType<ChatBodyProps>>;
@@ -1,5 +0,0 @@
1
- /// <reference types="react" />
2
- export interface ChatHeaderProps {
3
- id: string;
4
- }
5
- export declare const ChatHeader: import("../customize").Customizable<import("react").ComponentType<ChatHeaderProps>>;
@@ -1,5 +0,0 @@
1
- /// <reference types="react" />
2
- export interface ChatHeaderMembersProps {
3
- id: string;
4
- }
5
- export declare const ChatHeaderMembers: import("../customize").Customizable<import("react").ComponentType<ChatHeaderMembersProps>>;
@@ -1,5 +0,0 @@
1
- /// <reference types="react" />
2
- export interface ChatHeaderNameProps {
3
- id: string;
4
- }
5
- export declare const ChatHeaderName: import("../customize").Customizable<import("react").ComponentType<ChatHeaderNameProps>>;
@@ -1,5 +0,0 @@
1
- /// <reference types="react" />
2
- export interface ChatMembersButtonProps {
3
- id: string;
4
- }
5
- export declare const ChatMembersButton: import("../customize").Customizable<import("react").ComponentType<ChatMembersButtonProps>>;
@@ -1,5 +0,0 @@
1
- /// <reference types="react" />
2
- export interface ChatMembersPanelProps {
3
- id: string;
4
- }
5
- export declare const ChatMembersPanel: import("../customize").Customizable<import("react").ComponentType<ChatMembersPanelProps>>;
@@ -1,5 +0,0 @@
1
- /// <reference types="react" />
2
- export interface ChatPanelProps {
3
- id: string;
4
- }
5
- export declare const ChatPanel: import("../customize").Customizable<import("react").ComponentType<ChatPanelProps>>;
@@ -1,6 +0,0 @@
1
- export * from './ChatBody';
2
- export * from './ChatHeader';
3
- export * from './ChatHeaderMembers';
4
- export * from './ChatHeaderName';
5
- export * from './ChatPanel';
6
- export * from './ChatMembersButton';
@@ -1,5 +0,0 @@
1
- /// <reference types="react" />
2
- export interface CreateChatMemberInputProps {
3
- name: string;
4
- }
5
- export declare const CreateChatMemberInput: import("../customize").Customizable<import("react").ComponentType<CreateChatMemberInputProps>>;
@@ -1,5 +0,0 @@
1
- /// <reference types="react" />
2
- export interface CreateChatNameInputProps {
3
- name: string;
4
- }
5
- export declare const CreateChatNameInput: import("../customize").Customizable<import("react").ComponentType<CreateChatNameInputProps>>;
@@ -1,2 +0,0 @@
1
- /// <reference types="react" />
2
- export declare const CreateChatPanel: import("../customize").Customizable<import("react").ComponentType<unknown>>;
@@ -1,4 +0,0 @@
1
- export * from './CreateChatForm';
2
- export * from './CreateChatMemberInput';
3
- export * from './CreateChatNameInput';
4
- export * from './CreateChatPanel';